How to Set Up MAME Arcade Emulator — Complete Guide 2026 (ROMs, BIOS, Controllers)
I want to use MAME to play classic arcade games — Pac-Man, Street Fighter II, Metal Slug, Mortal Kombat, Donkey Kong. How do I download MAME, organize my ROM files, place BIOS files correctly, set up a frontend so I can browse games easily, configure my controller, and fix common errors like "required files are missing" or blank screens?
Solutions
solution #755
Download MAME
Download MAME only from the official source: mamedev.org → Releases
- Windows (64-bit): download the
.exeinstaller or the portable.zip. The ZIP is portable — extract toC:\MAME\and runmame.exedirectly. - macOS: available via Homebrew:
brew install mame - Linux:
sudo apt install mame(Debian/Ubuntu) or use the AppImage from mamedev.org
Avoid "MAME + ROMs" packs from third-party sites — they bundle outdated MAME with poorly sourced ROMs and often include malware.
MAME's Required Folder Structure
MAME expects a specific layout. Create these folders inside your MAME directory:
C:\MAME\roms\— ZIP ROM files go here (one zip per game)C:\MAME\chd\— CHD disk images (for large games like hard-drive-based arcade boards)C:\MAME\artwork\— optional cabinet bezels and overlaysC:\MAME\samples\— optional audio samples for old hardware with real-audio chips
Understanding MAME ROM Sets
MAME ROMs are different from console ROMs. Key concepts:
- ROM set = a ZIP file: each arcade game is a
.zipcontaining multiple chip dump files (e.g.,pacman.6e,pacman.6f). Do NOT extract or rename these — MAME reads the ZIP directly. - Parent ROMs and Clone ROMs: many games have regional variants (Japan/US/World) or prototypes called "clones." The clone ROM (e.g.,
sf2j.zipfor Street Fighter II Japan) requires the parent ROM (sf2.zip) to be present alongside it. - BIOS ROMs: hardware platforms like NeoGeo and CPS require a BIOS ROM ZIP in the
roms\folder. See S2 for details.
Running a Game
With a ROM ZIP in roms\, you can launch it from the command line:
mame pacman— launches Pac-Man (usespacman.zip)mame sf2— Street Fighter IImame mslug— Metal Slug
To run in full-screen: mame sf2 -fullscreen
Or use a graphical frontend (see S2) to browse games without the command line.
Verify Your ROMs with MAME's Audit Tool
MAME can check if your ROMs are correct:
- Run:
mame -verifyroms(audits all ROMs in the roms\ folder) - Run:
mame -verifyroms pacman(audits one specific game)
Output: "romset pacman [PASS]" means the files are correct. "MISSING" or "WRONG LENGTH" means the ROM is corrupted or from the wrong MAME version. ROM sets are version-specific — a ROM that works with MAME 0.258 may fail with MAME 0.265 if the dump was updated.
solution #756
BIOS Files — Essential for Platform ROMs
Some arcade systems require a BIOS ROM in the roms\ folder before any games on that platform work:
- NeoGeo (SNK):
neogeo.zipmust be inroms\. This enables Metal Slug, King of Fighters, Samurai Shodown, Fatal Fury. Every NeoGeo game ZIP is a clone of this BIOS — without it, all NeoGeo games fail. - CPS-1 / CPS-2 (Capcom): some CPS-2 games require
qsound.zip(the Q-Sound chip ROM) for audio. Street Fighter games, Darkstalkers, Marvel vs Capcom. - Sega System 16 / Model 2/3: platform BIOSes for Sega arcade hardware. Model 2 games (Virtua Fighter, Daytona USA) need
model2.zip.
Place BIOS ZIPs in the same roms\ folder as your game ZIPs. Do not extract them.
NeoGeo Setup
NeoGeo is the most popular BIOS-requiring platform:
- Place
neogeo.zip(the BIOS) inroms\ - Place a NeoGeo game ZIP (e.g.,
mslug.zip) inroms\ - Run:
mame mslug
NeoGeo games often ask to "initialize memory card" on first boot — this is normal. Press OK/Start.
CHD Games — Large Disk-Based Titles
CHD (Compressed Hunks of Data) files store hard drive images for games on HD-based arcade hardware. These include Mortal Kombat (the originals), Area 51, Killer Instinct, and dozens more.
For a CHD game, you need both the ROM ZIP and the CHD folder:
- ROM ZIP →
roms\mk.zip - CHD folder →
chd\mk\mk.chd
The CHD folder name must match the ROM ZIP name. CHD files are large (1–20 GB each) because they're full disk images.
Setting Up a Frontend
MAME's default interface is minimal. Graphical frontends make browsing much easier:
- MAMEUI (Windows): a version of MAME with a built-in Windows GUI — lists all ROMs with screenshots, filters by genre/year/driver. Download from mameui.info.
- LaunchBox (Windows): a premium frontend (free tier available) that downloads box art, videos, and descriptions automatically. Popular for large collections. launchbox-app.com
- RetroFE (cross-platform): sleek, customizable frontend. Good for cabinet builds.
Frontends only need to point at your MAME executable and your roms\ folder — they don't change how MAME runs games.
solution #757
Display Settings
MAME defaults to a window. Key display options:
- Fullscreen: press Alt+Enter in-game, or launch with
mame sf2 -fullscreen - Keep original aspect ratio: add
-keepaspectto avoid stretching. Arcade games were designed for 4:3 monitors or taller vertical orientations (Pac-Man, Galaga). - CRT / scanline filter: MAME includes HLSL (Windows) and GLSL (cross-platform) shaders. In
mame.ini(auto-generated in the MAME folder), setvideo direct3dand enablehlsl_enable 1for authentic scanline effects. - Vertical games: for games with vertical screens (Pac-Man, Galaga, Donkey Kong), the screen was rotated 90°. MAME auto-rotates them, but for the authentic experience on a physical vertical monitor, add
-rotate.
Controller Setup
MAME supports XInput controllers (Xbox pads), DirectInput, and keyboard.
- Configure bindings in-game: press Tab in any game to open the MAME menu → Input (This Game) → remap any button
- Global defaults: Tab → Input (General) → applies to all games
Default keyboard layout for common controls:
- Arrow keys — joystick
- Left Ctrl — Button 1 (main fire / punch)
- Left Alt — Button 2
- Spacebar — Button 3
- 1 — Player 1 Start
- 2 — Player 2 Start
- 5 — Insert coin (Player 1)
- 6 — Insert coin (Player 2)
Xbox / PlayStation Controller: MAME auto-maps XInput controllers well. A button = Button 1; B = Button 2; X = Button 3; Y = Button 4. Start = Player 1 Start; Select = Coin Insert.
For fighting games (Street Fighter, KOF), 6-button arcade layout: use the Tab menu to map all 6 punch/kick buttons to your controller's face buttons + shoulder buttons.
solution #758
Popular Games Quick Reference
- Pac-Man —
mame pacman— classic maze game, tiny ROM, no BIOS needed - Donkey Kong —
mame dkong— vertical platformer, tiny ROM - Street Fighter II Turbo —
mame sf2t— needssf2.zip(parent) +sf2t.zip - Metal Slug —
mame mslug— needsneogeo.zipBIOS - King of Fighters 98 —
mame kof98— needsneogeo.zipBIOS - Mortal Kombat (original) —
mame mk— needs CHD file inchd\mk\ - NBA Jam —
mame nbajam— fan favourite, no special BIOS - Galaga —
mame galaga— vertical shooter, tiny ROM
Common Errors and Fixes
- "Required files are missing" / "romset [game] MISSING": your ROM ZIP doesn't have the right files. Common causes: (a) ROM version mismatch with MAME version — download a ROM set that matches your MAME version; (b) clone ROM without parent — put both ZIPs in
roms\; (c) NeoGeo game withoutneogeo.zip. - "The selected machine is missing one or more required BIOS ROMs": you're missing a BIOS ZIP. Place
neogeo.zip(for NeoGeo) orqsound.zip(for some Capcom games) inroms\. - Game shows a black screen or crashes on launch: check your MAME version — MAME regularly updates its ROM format. If your ROMs are from a different MAME era (e.g., 0.196 vs current 0.265), some may fail.
- No sound: press Tab → Audio → Enable Sound to confirm it's on. For some NeoGeo titles, the music chip (YM2610) emulation requires correct BIOS files.
- CHD game fails to load: confirm the CHD file is in
chd\[game-name]\[game-name].chd. The parent folder name MUST match the ROM ZIP name exactly. - Game too slow: MAME prioritizes accuracy and some systems (later Sega, late 1990s 3D) are genuinely heavy. Close background apps. For 3D arcade (Sega Model 2/3, Namco System 22), you need a fast GPU and CPU — these are resource-intensive even on modern hardware.
- Alt+Enter or Tab key not responding: MAME may have grabbed the keyboard. Click inside the MAME window first, then try again.
Comments (0)
Sign in to_leave_comment