This guide explains all major MAME downloads, file types, and directory structures, with practical explanations of what each part is used for and where files should be placed.
It is intended for users who want a clean, working MAME setup, not just theory.
The emulator itself:
mame.exemamemameThis binary emulates arcade hardware and loads ROMs, CHDs, and BIOS files.
Official downloads:
https://www.mamedev.org/release.html
ROMs contain the actual game code dumped from arcade boards.
joust.zip
pacman.zip
sf2.zip
Default location:
mame/roms/
Some arcade systems use shared system ROMs.
neogeo.zipcps1.zip, cps2.zip, cps3.zippgm.zip, namco51.zipBIOS ROMs go in the same folder as game ROMs:
mame/roms/
Parent ROMs contain shared data; clone ROMs contain only differences.
joust.zip (parent)
joust2.zip (clone)
joust2.zip requires joust.zip.
Each ZIP is self-contained, including all parent data.
Parent and all clones are combined into a single ZIP.
Some games require large data files called CHDs.
mame/roms/area51/area51.chd
Used for games with analog sound hardware.
mame/samples/dkong.zip
mame/artwork/
mame/snaps/
mame/titles/
mame/flyers/
mame/cabinets/
mame/cfg/
mame/nvram/
mame/sta/
mame/inp/
Used for non-arcade systems supported by MAME.
mame/hash/
mame/software/nes/smb.nes
mame/plugins/
mame -createconfig
mame/
├── mame.exe
├── mame.ini
├── roms/
│ ├── joust.zip
│ ├── neogeo.zip
│ └── area51/
│ └── area51.chd
├── samples/
├── artwork/
├── cfg/
├── nvram/
├── sta/
├── inp/
├── hash/
├── plugins/
└── ui.ini