MAME shows 'the selected game is missing one or more required rom or chd image' error message

Solution 1:

Some things that might have tripped you up:

MAME will show a lot of games as "available" that aren't really. I think they mean "compatible" more than "available" here. You can run MAME with the name of a ROM to start right into that game, or fail immediately if it isn't present.

You might start with one of the publicly available ROMS on the MAME website, since those are pretty much guaranteed to work. Files you find on ROM sites are a bit more suspect.

For some games (like Street Fighter 3 Third Strike), a .CHD file is required in addition to the ROM. There are rules about where this CHD file lives, you can read up on this at the FAQ.

NeoGeo games (Like King of Fighters '97) require neogeo.zip in your roms folder, but it seems like you've done that already.

Note that MAME is very picky about ROM file names - they must match exactly what MAME expects them to be. If you've renamed the files, or they downloaded with the wrong names, you'll need to fix them. mame -listfull can tell you the game name and the expected ROM name that matches, although you'll probably want to pipe this to grep or similar due to the large number of supported ROMs.

Solution 2:

The MAME FAQ covers this.

Why does MAME report "missing files" even if I have the ROMs?

In brief,

  • ROMs can change as better ROM-dumping techniques are invented or as details of game behaviour are more meticulously recorded. The latest version of MAME generally is optimised for the latest versions of game ROMs and may not work with older ROMS that lack some data.
  • ROMs for different games sometimes had a lot in common (e.g. Galaga and Galaxians) so to save space, ROMs were split so that one ROM depended on resources in a "parent" ROM. Disk space is no longer an issue but old ROMs survive. There are "unmerged", "split" and "merged" ROMS. You need the right ones.
  • ROMS sometimes depend on external data that was originally stored separately these are sometimes in CHN files.
  • Some ROMs depend on a common platform ROM, e.g. a common Atari system-ROM.
  • MAME's original objective was to document old arcade games. Providing backwards compatibility with older ROMs isn't a top priority and this is complicated by the fact that IP issues mean that MAME cannot be supplied by the developers with ROMs.

As someone else once said: "MAME's primary goal is preservation. The ability to play the games is just a nice side effect."

I find the best solution is to put those problematic ROMs to one side and obtain some better non-split unmerged ROMs for the same game from somewhere else. This is what worked for me.

There are also ROM management tools that may be able to reorganise ROMs to create new ROMs that don't have some of these problems and are playable with current MAME.