How To: Play Non-Arcade systems with MAME or MESS
This guide describes how to setup your game files to play non-arcade systems using MAME or MESS. Many (non-arcade) old-school systems work with MESS and MAME using softlists. These sytems include (but are not limited to):
- Neo Geo CD
- Phillips CD-i
- Atari 5200
- Vectrex
- Game . com
- Emerson Arcadia
- Channel F
- Sharp X1
- And more…
Softlists allow the MAME/MESS core to load the game software based on some information in a “HASH” database. More detailed information can be found here. Suffice to say, it’s complicated. MAME or MESS or UME can be used (any version of MAME/MESS higher than .161, also referred to by 2014/2015). Both have varying success at emulating certain systems, so it’s beneficial just to setup both and see which one works the best for you.
Note that embedded systems like Raspberry Pi and Android MAME cores do not include MESS systems (the core is too large for the system to handle). Those systems typically have a seperate MESS core.
Setup
1) Get the latest MAME core or MESS2014 core
Download the latest “Arcade (MAME)” core and/or “MULTI (MESS 2014)” core from the Retroarch Online Updater
2) Create a hash folder for the core
In your retroarch system directory, you will either already have a folder named ‘mame’ or ‘mess2014’, or you will have to create the folder and add a hash folder inside it. If your using a different core, create the folder associated with that cores name (mess2015 or ume2015 for example) Your directory structure would then look like this:
...path_to_retroarch_system_directory/system (folder)
mame (folder)
hash (folder)
mess2014 (folder)
hash (folder)
3) Download and place the hash xml files into the folder
You can get individual hash files from the MAME github site here.
Alternatively, you can use an online tool like download-directory.github.io to get all the hash files at once.
As an example, I want to play Neo Geo CD games, so I’ll have to donwload the neocd.xml file and place it in my hash folder (or both the MAME and MESS2014 hash folders).
Now my hash folder contains neocd.xml:
...path_to_retroarch_system_directory/system (folder)
mame (folder)
hash (folder)
neocd.xml (hash file)
mess2014 (folder)
hash (folder)
neocd.xml (hash file)
4) Setup your directory structure for the game system(s)
It’s important to name the folder for a game system exactly to match what MESS/MAME is looking for. If the folder is not named correctly, launching will not work. The name of the folder typically matches the name of the hash xml file or the name of the bios file (but is not necessarily always exactly the same). Here’s some examples of folder names for various game systems:
System | Folder Name |
---|---|
Neo Geo CD | neocdz |
Philips CD-i | cdimono1 |
Atari 5200 | a5200 |
Vectrex | vectrex |
Game . com | gamecom |
Emerson Arcadia | arcadia |
Sharp X1 | x1 |
Super A Can | supracan |
Here’s a gist that automatically creates a table containing all softlist systems.
5) Setup your game file directories
Place your rom files, including bios files, and chd files into the appropriate folder. As an example, let’s say I want to emulate Neo Geo CD and I want to play League Bowling. My directory structure would look like this:
...path_to_my_game_system_files/neocdz (folder)
league bowling (1994)(snk)(jp-us)[!].chd (CHD File)
neocd.zip (BIOS File)
neocdz.zip (BIOS File)
neogeo.zip (BIOS File)
6) Get dummy files if needed
For CD based systems, there’s a file thats not included in your typical romset that we’ll need. That file is named the same as the game you want to launch. In the example above, the MAME hash file shows the game name as lbowling, but as you can see I don’t have a game file with that name yet, because it wasn’t in the romset. To get around this, you can create a dummy/empty file of the correct name with a zip extension. After you add this file, now your directory looks like this:
...path_to_my_game_system_files/neocdz (folder)
lbowling.zip (Dummy / Empty File)
league bowling (1994)(snk)(jp-us)[!].chd (CHD File)
neocd.zip (BIOS File)
neocdz.zip (BIOS File)
neogeo.zip (BIOS File)
For simplicities sake, I’ve created dummy / empty files for the entire romset for both Neo Geo CD and for Philips CD-i. You can download these dummy files and just place them all in the appropriate folder. For advanced users, heres a gist that makes quick work of generating all the dummy files using python.
7) Launch the game
Now you can launch the game from Retroarch, by selecting ‘Load Content’ and pointing to the lbowling.zip (empty/dummy) file. Woo hoo!
You can also launch the game from the command line, like this:
(Windows Command for MAME)
"...\path_to_program\retroarch.exe" -L "...\path_to_cores\cores\mame_libretro.dll" "...\path_to_game_files\neocdz\lbowling.zip --verbose"
(OSX Command for MESS2014)
/Applications/RetroArch.app/Contents/MacOS/RetroArch -L "/Applications/RetroArch.app/Contents/Resources/cores/mess2014_libretro.dylib" "/path_to_game_files/neocdz/lbowling.zip"
Notes:
There is a specific benefit initially to running from the command line, as the MAME / MESS2014 core will print out if it cannot find a (bios) file that it expects to run the game. This is particularly helpful when troubleshooting and making sure you’ve downloaded all the correct files. For example, if I’m trying to run a gamecom game and I happened to forget to place the bios file in the folder, the command line output would show the following:
NAME: gamecom
DESCRIPTION: Game . com
YEAR: 1997
MANUFACTURER: Tiger
[libretro INFO] Screen orientation: HORIZONTAL
Value not supported for option netdevprovider - falling back to auto
[libretro DEBUG] Screen width=208 height=160, aspect=1000/769=1.300390
[libretro INFO] OSD initialization complete
internal.bin NOT FOUND (tried in gamecom gamecom)
external.bin NOT FOUND (tried in gamecom gamecom)
Required files are missing, the system cannot be run.
This is giving me the hint that MAME tried to find a file named gamecom. So, I need a file named gamecom.zip
Additional Examples
Launch the Philips CD-i Game Hotel Mario using MESS2014
- Place the hash file cdi.xml into the hash directory:
...path_to_retroarch_system_directory/system (folder)
mess2014 (folder)
hash (folder)
cdi.xml (hash file)
- Place the game files into a folder named cdimono1, including BIOS files, CHD Files, and an empty/dummy file:
...path_to_my_game_system_files/cdimono1 (folder)
hotmario.zip (Dummy / Empty File)
hotel mario (1994)(philips)(eu)[!].chd (CHD File)
cdibios.zip (BIOS File)
cdimono1.zip (BIOS File)
cdimono2.zip (BIOS File)
- Launch the game in Retroarch by pointing to hotmario.zip, or by launching from the command line with the following:
(Windows Command)
"...\path_to_program\retroarch.exe" -L "...\path_to_cores\cores\mess2014_libretro.dll" "...\path_to_game_files\cdimono1\hotmario.zip --verbose"
(OSX Command)
/Applications/RetroArch.app/Contents/MacOS/RetroArch -L "/Applications/RetroArch.app/Contents/Resources/cores/mess2014_libretro.dylib" "/path_to_game_files/cdimono1/hotmario.zip"
Launch the Game . com Game Sonic Jam using MESS2014
- Place the hash file gamecom.xml into the hash directory:
...path_to_retroarch_system_directory/system (folder)
mess2014 (folder)
hash (folder)
gamecom.xml (hash file)
- Place the game files into a folder named gamecom, including BIOS files:
...path_to_my_game_system_files/gamecom (folder)
sonicjam.zip (Cartridge File from romset)
gamecom.zip (BIOS File)
- Launch the game in Retroarch by pointing to sonicjam.zip, or by launching from the command line with the following:
(Windows Command)
"...\path_to_program\retroarch.exe" -L "...\path_to_cores\cores\mess2014_libretro.dll" "...\path_to_game_files\gamecom\sonicjam.zip --verbose"
(OSX Command)
/Applications/RetroArch.app/Contents/MacOS/RetroArch -L "/Applications/RetroArch.app/Contents/Resources/cores/mess2014_libretro.dylib" "/path_to_game_files/gamecom/sonicjam.zip"
(Super Obscure Example) Launch the VIC-1001/VIC-20 Cartridge game Defender using MAME
- Place the hash file vic1001_cart.xml into the hash directory:
...path_to_retroarch_system_directory/system (folder)
mame (folder)
hash (folder)
vic1001_cart.xml (hash file)
- Place the game files into a folder named vic1001, including BIOS files:
...path_to_my_game_system_files/vic1001 (folder)
defender.zip (Cartridge File from romset)
vic1001.zip (BIOS File)
c1541.zip (BIOS File)
- Launch the game in Retroarch by pointing to defender.zip, or by launching from the command line with the following:
(Windows Command)
"...\path_to_program\retroarch.exe" -L "...\path_to_cores\cores\mame_libretro.dll" "...\path_to_game_files\vic1001\defender.zip --verbose"
(OSX Command)
/Applications/RetroArch.app/Contents/MacOS/RetroArch -L "/Applications/RetroArch.app/Contents/Resources/cores/mame_libretro.dylib" "/path_to_game_files/vic1001/defender.zip"
(Extra Super Obscure Example) Launch the Sharp X1 Floppy DIsk game Donkey Kong 3: Dai Gyakushuu using MAME
- Place the hash file x1_flop.xml into the hash directory:
...path_to_retroarch_system_directory/system (folder)
mame (folder)
hash (folder)
x1_flop.xml (hash file)
- Place the game files into a folder named x1, including BIOS files:
...path_to_my_game_system_files/x1 (folder)
dkong3dg.zip (Floppy File from romset)
x1.zip (BIOS File)
- Launch the game in Retroarch by pointing to dkong3dg.zip, or by launching from the command line with the following:
(Windows Command)
"...\path_to_program\retroarch.exe" -L "...\path_to_cores\cores\mame_libretro.dll" "...\path_to_game_files\x1\dkong3dg.zip --verbose"
(OSX Command)
/Applications/RetroArch.app/Contents/MacOS/RetroArch -L "/Applications/RetroArch.app/Contents/Resources/cores/mame_libretro.dylib" "/path_to_game_files/x1/dkong3dg.zip"
Happy Obscure Gaming!