About ROMs & CHD's

If you check out the Troubleshooting page, you'll see that ROMs are the source of most problems when running MAME. This page should hopefully clear up how to manage your ROM files and give you a bit of insight into what a ROM actually is.


.

What is a ROM?

A ROM chip is a read only IC used to store data on a machines system board. The data contained on a ROM chip is normally the software and data used by the machine to make it run. They are also used in game console cartridges to hold the game data.


Amiga Kickstart ROMs

Amiga Kickstart ROMs

Amiga Kickstart ROMs

Amiga Kickstart ROMs



.

Where do I get ROMs from?

You can download ROMs from several sources including P2P networks or newsgroups like alt.binaries.games.MAME. A Google search will show you loads of sites that host ROMs. The Pleasuredome bittorrent site can also be a good place to get complete ROM sets and support files. Before you download a ROM set, there is a bit of a legal grey area about storing ROM files. Legally, you need to own the original chip or system to have a ROM on your PC. So to have the whole set of ROMs you'll need to own tens of thousands of arcade and computer systems (You'll need a big house!). You also must not distribute them or supply them with MAME. BIG NO NO! There are a few legal ROMs available on mameDEV which are free to use. I'm not going to preach too much about this as many MAME users don't own a single arcade machine or old computer system. The risks are yours!


.

Installing ROMs

ROM sets are stored as zipped files in the C:\Mame\roms folder. It is recommended that you keep them zipped, but if for some strange reason you want to extract them, the extracted files will need to be put into a folder named the same as the original zip. An example would be polepos.zip would need to be extracted into a folder called polepos in the roms folder. There isn't much point to doing this as the unzipping in MAME is so fast, you won't notice it, and extracted ROMs are up to 50% bigger than the equivalent zip file.


.

What is a ROM Set?

In MAME, ROM sets are zipped archive files which have several ROM files in them. These ROM files contain the code extracted from the physical ROM chips by a special reader. The MAME program does the hard work by emulating the processors, sound and graphics chips and uses the ROM data to supply the system code to run the machine. ROM sets can also contain other files such as BIOS images and device ROMS. These sets also exist in the main ROM folder and are required by many machines. You can find an explanation of these files below and common problems on the Troubleshooting page.

Here's what a ROM set zip file looks like...


Pacman's ROM file

Pacman's ROM file

Pacman's ROM file

Pacman's ROM file


When running and auditing ROMS, MAME checks several bits of data to determine whether the ROM is valid. MAME will check the name of each file in the archive, the size and the CRC. The name and the CRC are used to determine if the ROM file is correct and if the size is wrong there may be data missing. Use a program like CLRmame to check your ROMs for problems as it will compare what MAME is expecting, to what you've got. It can fix several problems and will highlight more serious errors.


.

Split, Merged or Non-Merged Sets?

If you are going to download some ROM sets, you will need to understand how they are organised. There are three ways that MAME supports ROM sets which are Split, Merged or Non-Merged. Different sites store ROM sets in different ways. The most common way is Split, as it is the easiest to update and the files are smaller. Here is a quick explanation of the different ROM setups...


Set Type Description
Split These sets only contain the necessary ROM files for each machine.
Merged These sets contain all the parent ROMs and all the clone ROMs in one archive. You dont get a separate clone sets.
Non-Merged These sets use the most disk space as every parent and clone set have all the necessary ROMs to run in them.

How you store your ROM sets is up to you. Each one has it's benefits and has to be managed differently. ROM managers will allow you to manage and change your ROM sets if you change your mind.


.

Parents & Clones

MAME supports a lot of variants of it's supported machines. These variant's system boards often shared the same ROM chips, with a few that were changed. What MAME does is treat one ROM set as a "Parent" set which contains all the required ROM data to run the machine. The supported variants of a machine are called "Clones" and these ROM sets only contain ROMs that are different from the main set. This saves space as MAME loads the common ROM files from the parent set and the new ROMs from the clone set. The error most people make, is that they download a clone set, install it correctly and then find the game won't work as it is missing ROMs. These ROMs are in the parent set which hasn't been downloaded. To get the game to run you need BOTH sets. Here's an example of parents and clones for Pole Postion. Pole Position's parent set is called polepos.zip. The following games require you to have polepos.zip in the C:\Mame\roms folder for them to work...


poleposa1
poleposa2
poleposj
ppspeed
topracer
topracera
topracern


.

What is a BIOS?

A BIOS is used by a machine to store settings and load it's data. Some of the emulated machines in MAME require BIOS files to get them to work. For example Metal Slug which is a NEO-GEO game requires you to have the neogeo.zip BIOS file in your C:\Mame\roms folder. BIOS files are kept separate to a system's ROM data as the contents are often common to several other systems. Not having the matching BIOS file for the machine you want to run will give you a file missing error!


.

What is a Device?

A device is a bit of hardware used in a machine. As a lot of devices are common between several machines, MAME stores device data as a ROM set. These sets contains all the extracted ROM data from the device in them and are loaded by machines as they need them. MAME handles devices in much the same way as it handles BIOS files. For example Xevious requires xevious.zip to be in the ROMs folder as well as namco50.zip, namco51.zip and namco54.zip. The namco files contain the device data. Not having the matching device file for the machine you want to run will give you a file missing error! You can find more information about devices on the About Devices page.


.

What are CHD files?

More modern machines needed megabytes or even gigabytes of space to store their data as their games and systems became more complicated. To store that amount of data on ROM chips would be expensive and newer, high capacity media was available. Hard disk and optical disk images were used by many machines store this data. MAME supports these media types in the form of CHD (Compressed Hunks of Data) files. Machines that require CHD files need both a zipped ROM set and the matching CHD file which is stored separately. For example Carnevil requires you to have carnevil.zip plus a folder called carnevil containing the file carnevil.chd. Note that a CHD file is NOT zipped as it is already compressed. Confused? Here's an example...


ROM folder with CHD

ROM folder with CHD

ROM folder with CHD

ROM folder with CHD


And the CHD folder...


CHD folder contents

CHD folder contents

CHD folder contents

CHD folder contents


It's actually fairly straightforward, but has confused so many!