MAME is a probably the best known arcade game emulator available today. It literally lets you play any arcade game ever written, and runs on Windows, MacOS, Linux or Android devices. Simply install the software. Load in some game ROMs and you’re ready to play.
At least that’s what’s supposed to happen.
In reality, getting your MAME installation set up and able to play the arcade games you want can be quite a challenge. MAME ROMs don’t work the same as other emulators. You can’t just find a cartridge ROM and expect it to work straight away. In this video I’ll cover the main points of how MAME ROMs are organised and then show you how to reliably get any game you want up and running.
I have produced a few videos showing you the easy way to set this all up, and I’ll put links to those in the video description. But these all involve downloading and installing a complete romset. This takes up a lot of hard disk space and floods your emulator with around 3000 – 4000 arcade games, many of which will just sit, unplayed on your computer forever. If you’re making a streamlined or compact game list we need to work out how to get around the complete romset and start downloading only the files we want.
MAME has a much harder task to perform than normal console emulators. If you think of any game console, e.g. the Nintendo Entertainment System, there is just one set of hardware. The emulator takes care of modelling everything inside the NES box. You them just need to give it the code stored on the cartridge or CD ROM. Everything matches up and you’re ready to play.
Arcade cabinets are very different. They are basically custom computer consoles for each individual game. If we take a single cabinet it will contain a number of circuit boards each with it’s own processor system for the sound, graphics, etc. Each of these boards needs to be emulated in software and will require one or more code files for that single module.
So MAME has to be aware of what parts are needed to make any one cabinet and put all those pieces together with their software to build the emulation system from that single game.
So hopefully you’re starting the get the idea of how complex this process is.
If we start looking at an individual game, for example, Donkey Kong. We can download a copy of the game ROM. As usual I’m not able to tell you directly where to get hold of these files due to YouTube rules. Previously you would simply have gone to the Emuparadise website and downloaded any game you wanted from there, but a few years back they were forced to disable their download library. It’s a great shame that hasn’t been fixed as it was a fantastic resource for all our emulation needs.
But looking at the contents of the rom we can see there are a number of emulator files inside. Each of these relates to a piece of circuitry inside the cabinet along with any firmware or software it needs to operate. You can also see files that will probably relate to the game code itself. MAME will put all of these together to build the Donkey Kong machine in memory and let you play the game.
To test this file we need to first install a copy of MAME. You just need to download the self extracting installation file. Save it to a folder and run it. This will then create the emulator files and folders on your hard drive.
We can then install this single game into MAME by just dropping the ROM file into the roms folder inside your MAME installation location. We then run the MAME program file and we should see our game listed in the available games section. Double click it and we should get the original code version of Donkey Kong running on our PC.
This is the ideal situation for us. One ROM file and we get the game we want. Great!
But let’s now look at another 80’s classic, PacMan by Midway.
Again we can get hold of a game ROM and have a look inside. This time we see another range of files mostly relating to PacMan which makes sense. So lets load this into MAME and see what happens.
Again MAME recognises the game but when we try to play it we get an error screen saying we are missing some of the required files.
This brings us to the first complication. Clones.
Not all arcade game cabinets are unique. Naturally manufacturers tried to resuse components across cabinets or even use the same cabinet with a different game running.
Midway’s PacMan is actually a rebranded version of the original Namco game PuckMan. It’s exactly the same game with the names of the ghosts rewritten in English. In MAME we use the term Parent to signify an orginal game cabinet, and Clone to show that a game is using a modified version of that cabinet. So the game file I’ve got here is for the clone and not the parent. My clone ROM doesn’t contain all the emulator files for the hardware inside the cabinet.
This is where you need a little knowledge of MAME romsets.
The ideal situation would be where every game ROM contains all the files needed to run the game. These do exist and are generally called non merged or fully non merged romsets. As every emulator file that is needed is simply duplicated for every game that needs it these romsets can get very large. But if you want to easily get hold of a single game search around for these.
Merged sets place all the files needed for the parent game in the same romset along with all the files for each clone game. So a single file may contain a number of games, but all the files needed for each game is present in the single ROM file. Generally the whole set of games will be listed as the parent game with some front ends able to pick out individual clones through further menu settings.
Split sets just place the files unique to that game in the ROM file. If you want to run a clone you also need to get hold of the parent ROM file and any other associated files that may contain required code and hardware definitions.
So the PacMan file I have is a split file with just the Midway PacMan files. To get this to run I need to find out what other ROM files I need.
Luckily there is an amazing website that will tell you exactly what you need.
The Arcade Database – http://adb.arcadeitalia.net/
If we visit the site we can go to the games section and search for PacMan Midway.
This will bring up a list of games one of which is the Midway version we are trying to install. If we look at the detail for our game.
We can see that this is listed as a game file but that it is a clone. A bit further down we get the main data which tells us the official MAME filename for this game (pacman followed by the archive extension e.g. pacman.zip) along with some other game details.
But scrolling down even further we see the romset file hierarchy for this game.
It’s telling us PacMan is a cone of PuckMan and we need to get hold of the puckman.zip (or puckman.7z, etc) file.
So let’s go and get hold of that.
I’ve downloaded a copy into my MAME roms folder and we can have a look at the contents to confirm that there is a different set of files. If I now boot up MAME we’ll see that we also have PuckMan available for play. But if we now try to start PacMan we’ll get the fully working Midway US release version. So MAME knows that the files it needs are going to be in the puckman.zip file, so it simply uses those to fill in the missing PacMan code.
So that was quite a bit of work for one game. This obvious way around this is to try to avoid split sets and just use either non merged (easiest but hardest to find) or merged sets.
So lets try PacMan again, but this using a merged set.
So I’ve downloaded the puckman merged set archive file. And if we look inside you’ll see all the files for the parent together with all the clones.
If we copy that to our MAME roms folder (and I’ve already taken out any other game files) we’ll see PuckMan appear in our list of available games. That’s great and has given us a really easy way to play PuckMan, but we really want to play the US version, PacMan.
We can go to the clones section and find it in there but it would be much easier if this was listed as a separate game in the available games folder, especially if we are using some sort of front end package.
MAME is very clever when it comes to finding missing files. It knows that parent games usually hold any missing code from the clones. So we have a parent archive that matches the filename we found in the Arcade Database, puckman.zip. If we now create a dummy archive file called pacman.zip in the MAME rom folder it will think that this is the Midway PacMan version – remember that is the filename that specifies the version we want to run. You also have to make sure that the file is a real archive file rather than just a renamed text file.
We can then run MAME and we get the Midway version listed under available games. When MAME tries to open the game it will find all the files missing and then proceed to search for them in the parent ROM file. Of course that’s where all the files are so the game boots up fine.
So we’re almost there now.
Let’s try one more game. One of my favourites, Metal Slug.
So again I’m downloading a merged game ROM. But when I install it and try to run it I get the same missing files error.
So when I check the Arcade Database it tells me this is a parent game. So it should run by itself. But If I scoll down to the romset information we’ll see that this game requires a BIOS ROM.
Some arcade cabinets used a common main processing core. Metal Slug is based on a Neo-Geo cabinet. So we need to get hold of the BIOS code for the Neo-Geo system. Again the Arcade Database will tell you exactly which file we need. In this case neogeo.zip.
If we find this file and install it into our MAME roms folder we’ll now get our Metal Slug game up and running.
There are other files that you might come across such as CHD ROMs. Again the Arcade Database will show you what you need.
CHD files tend to be data CDs etc. used by some cabinets.
You might have noticed that I’ve been using version 0.184 of MAME. This is an old version. So lets update my installation to the latest 0.251 to take advantage of the latest developments.
So we’re now in version 0.251 and I’ve just copied over my game and BIOS ROMs from the 0.184 installation. So lets try out some of the files.
First we can try Donkey Kong. That is all OK and loads up into the game.
But if we now try Metal Slug we get our missing files error again, even though we’ve got both the game and BIOS ROMs loaded into the installation.
This is really the last piece of the puzzle in MAME gaming. Making sure you match your ROM file version to your MAME version.
The files I’ve been downloading have mostly come from Emuparadise. If you check their download pages you’ll see they generally show V0.184 game files. That’s why I started this video using 0.184.
If you match the ROM and MAME versions you’re much more likely to get working games.
So to get our 0.251 version working we need to find and install 0.251 compatible game and BIOS ROMs. As you’ve seen some older versions will work, but not all.
I’ve taken you through some of the main pitfalls you’ll come across. But here are my tips for making this whole process as easy as possible.
First find a romset that you want to use and make a note of its version number. There are many places which give you access to the game files without having to download everything.
Next install the MAME version that matches your romset. If it’s not the latest version go to the previous version page in MAME and just scroll down until you find the one you need.
Then check the Arcade Database to find out what files you need for your game.
Then download those files and put them into your MAME roms folder.
You should now have a working game.