Demystifying MAME ROMs

Our good friend ChoccyHobNob is the community gift that keeps on giving, this time he took the time to demystify MAME ROMs and kindly gave us permission to re-use - Many thanks Steve!

---

Demystifying MAME ROMS
A lot of people get confused about MAME ROMs, they seem so complicated and fragile.

I hear these kind of things a lot on various forums around the web and it’s true, MAME ROMs are more complicated than console ROMs, but not hugely so. There are just a few concepts you need to understand and some simple terminology and it all makes sense. Here is my guide to MAME ROMs and their associated terminology.

“Why is this so much more complicated than NES or SNES ROMs?”

“I got ROM from and it won't work”

“I upgraded my version of MAME and now none of my games work”

What is a ROM?
In simple terms, a ROM file is the code that is stored in a ROM chip (or IC) after it has been dumped. For simple systems like the NES, SNES or Megadrive this is the entire game, you can dump the cartridge into a single file and an emulator will have all of the data required to run the game.

Arcade games are more complicated than that, there are lots of IC’s and lots of those IC’s contain code or data that is required to get the game running, each must be dumped separately and all of them are required to get the emulation to work.

The file typically referred to as a MAME ROM is actually a zip (or 7z) archive of all of the ROM files for a particular arcade game and is more correctly referred to as a ROM Set.

What about Parents and Clones, what are they?
Eventually the programmers started to notice that a lot of the ROM files being dumped were the same as other ROM files for other games, and that in a lot of cases only a few of the IC’s would be different. These games are variants of one another, and so the concept of Parent/ Clone games was born.

And Split/ Merged ROM sets?
The original way ROMs were organised was the easiest to understand, every ROM file for a particular game was stored in a folder or zip file named after the game. One zip, one game. Easy!

Long ago, when disk space was expensive it seemed wasteful to store many, many copies of the same file so the concept of Split ROM Sets was born. A Parent set would contain all of the ROM files required to run a ‘master’ version of the game and all the other games based upon that game would be Split. A Split set would only contain the ROM files that are different to the Parent set. The required ROM files would be Split between the two sets. To play Pac-Man you will need the Puck-Man set (the Parent) and the Pac-Man set (the Clone)This means of course that if you want to run that Clone game now, instead of just one ROM Set you need two, the Parent and the Split set.

MAME still understands the un-split way and will look for all the required ROM files, first in the Split set zip and then the Parent set, as long as it finds the right file somewhere it will run.

The next evolution of this thinking was “If MAME will look in the Parent set for all of it’s ROM files, why bother splitting out the clones at all?” and so Merged sets were born. A Merged set contains all of the files for every Clone version of a Parent game.

Ok I got that, What about BIOS Sets?
A lot of arcade games are written for the same ‘system’, sometimes based off a home console with changes made for arcade usage. Popular examples of this are Mega-Tech (Megadrive), Playchoice (NES), NeoGEO. These systems contain a base unit and a cartridge type plugin for the games. To play ‘King of Fighters 10th Anniversary’ you will need the NeoGEO set (the BIOS), the ‘King of Fighters 2002’ set (the Parent) and the ‘King of Fighters 10th Anniversary’ set (the Clone) The ROM files for each game also need the ROM files for the system, much like for Parent/ Clones but the games need not be based off of one another. Again to save space and because they are logically (and physically) grouped this way in the real world, the ROM files for the base unit can be grouped into what is called a BIOS set.

If you have a Split ROM set, you will have separate BIOS sets as well. Now you may need three files to get a game to run.

Wow! OK, Anything else?
Yes. Devices.

To play ‘Galaga’ you will need the ‘Galaga’ set (the Parent), the ‘Namco 51xx’ set (a Device) and the Namco 54xx’ set (a Device) Devices are a MAME concept for bundling together a specific bit of functionality in a standard way. They are used as programatic constructs to make creating drivers easier and more like the real world machines. Sometimes these devices use code from ROM chips across multiple games much like BIOS sets do.

These ROM sets aren’t classed as BIOS sets, Parent sets or Clone sets.

OK I understand all that, I still don’t know why my games don’t work.
You probably got your ROMs from a ROM Site, the ROM Site doesn’t know or care what type of ROM SET they have. You downloaded some set for some version of MAME from some time in the past assuming that old versions of ROMs will work with current versions of MAME.

A lot of ROM files were badly dumped when the emulation scene started, everyone was new to it, it’s incredibly difficult and mistakes were made. The emulators were written to use the best available dump and MAME was no exception. As time marched on, redumps were done for bad dumps, badly named dumps were identified correctly and naming conventions for ROM files were changed. As this happened the developers of MAME updated the ROM Sets with the correct ROM Files, changed the names of badly named ones and generally cleaned up as things improved. Then Split sets were introduced and all the ROMs were reorganised again, then BIOS sets emerged and caused another big reorganization. Finally Devices were created and so the ROM Sets changed again. This is all still going on. New Games are added, bad dumps are replaced, files are renamed, sets are reorganised. Every time this happens, the ROM Set for that game from previous versions no longer works. So to answer the original question…


 * 1) Your ROM Set is too old.
 * 2) You have a ROM for the current version but it needs one or more Parent/ BIOS/ Device sets.

The easiest solution to either of these problems is to get a complete set of the latest version of MAMEs ROM Sets.

So which is best? Non-Merged/Split or Merged
There is no easy answer to that, it will depend on your circumstances and what you intend to do with the ROMS when you have them.


 * If disk space is an issue you can save 20GB * using a Merged set instead of a Split set but your frontend (if you use one) may not be able to tell that you have a game available if it is a clone.
 * If you want to be able to delete the ROMS you don’t want without breaking others, you need a Non-Merged set but it will take up a huge amount of space until you are done deleting.
 * If you want something between the two extremes above, a Split set is for you but deleting a Parent set, a BIOS set or a Device will kill all the other ROM sets dependent upon it.

What is a CHD?
Newer arcade machines (and Game Consoles and Computers now supported by MESS) have a lot more data to store than the classic ones, they started including Hard Disk Drives and CD’s (or DVD’s, and Laserdisks) to store their data on and use a simple ROM to boot the system and load it. These mass media storage devices are supported in MAME by using CHD’s.

CHD stands for “Compressed Hunks of Data”. They are already compressed so they don’t come zipped and they need to be stored in a ROM path in a folder named after the ROM Set they belong to.

What is a Software List?
Prior to MAME v0.162, MAME had a sister application called MESS (the Multi Emulator Super System) which attempted to do for Consoles, Computers and Handheld devices what MAME was doing for Arcade Machines. Version 0.162 saw these two applications merged into a single app dropping the MESS name in the process.

If you are emulating a console or a computer you will need software to put into it. That is what Software lists are for. They are a curated list of the available software for an emulated (formally MESS) system core.

There are two common set online Software List ROMs and Software List CHDs. If you managed to get all the way to here (well done!) you should know what both of those are now.

Reference

 * ChoccyHobNob.com - Demystifying MAME ROMS