[Guide] Play Non-Arcade systems with MAME or MESS

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.


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, I’ve cloned the folder as of the writing of this guide, you can download all the hash files from here.

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

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.

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"
(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"


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
YEAR: 1997
[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

  1. 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)
  1. 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)
  1. 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"
(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

  1. 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)
  1. 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)
  1. 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"
(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

  1. 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)
  1. 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)
  1. 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"
(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

  1. 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)
  1. 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)
  1. 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"
(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!


thanks for your guide very helpful

I have found a curious situation. If the computer/console support multiple software lists and there is a rom with the same name in more than one of these multiple software lists, the emulator crashes. Only happens with Retroarch MAME.

Example with the MSX computers, tested this way: ROM: phc70fd (WAVY PHC-70FD) Game: brucelee (it appears both as cassette and/or cart) abadcrim (it appears both as cassette and/or floppy)

Hope this helps.

Very helpful, thanks!

Thanks for the guide, but it isnt working on my configuration with the cd-i emulation. I get an error that the cdimono1 is not available.

When i start mame64 without retroarch within a cmd its working and the game is playable.

Folder structure is like described in the tutorial. Did anything changed on retroarch?

Br Dox

Your bios file, cdimono1.zip, is either not found/not in the correct place or the version you have isn’t compatible with the retroarch mame / mess core version you’re using.

Hi @zachmorris thanks for your reply. Do you know a checksum from a cdimono1 for the newest version of retroarch and mame?

This site is a good reference for sets:

Go down to the section ‘Files’ and select your MAME / MESS core version to get checksum info


so checksum is okay so far. iam using Win10 1803 and Retroarch 1.7.5 with MAME 0.204.

MAME alone works with this cdimono1 file in the same folder structure like in retroarch. Did i need to change something in retroarch?

I tried a few CD-I infamous games and so far it’s working great, never tried to play anything non-arcade through MAME until now and your guide helped a lot, clear instructions and easy to understand, thanks a lot for that.

The only one not working is Zelda’s Adventure but it’s a common problem apparently, it used to work fine through MESS a good bunch of years ago, but now it’s apparently broken (game freezes when you walk off screen).

There’s a specific build of MESS from the time when it was working available called TinyCD-I available so it’s still possible to play it, but I was wondering if somehow, a solution available with Retroarch’s cores selection was found / is possible ? I tried with MAME 2016 / MAME / MESS2014, same problem on all cores.

Not that it’s pretty important concerning the “quality” of the game, but if a solution is possible, I’m interested to know.

EDIT: “The Apprentice” doesn’t seem to work either, more concerned about this one 'cause it seems to be more than decent and also one of the only really good title not available elsewhere.

Thanks for this great guide. This forum need more stuff like this. Can I request a post update on how to get the MSX and Amiga running inside MAME?

MAME can play MSX and Amiga, but in my opinion, it can’t do either of those as well as other available retroarch cores: BlueMSX or fMSX for MSX and uae for Amiga. It would probably be better to make a guide for those.

@zachmorris this is great work here. Are you familiar with http://github.com/libretro/docs, which is where a few folks maintain the libretro docs published at http://docs.libretro.com?

You have written some useful and comprehensive content here and elsewhere, so I wanted to make sure to invite you to contribute to the docs if you find yourself interested in creating more guides in the future.


Hi, thanks for your work, I have been able to use your manual for two systems that are working perfectly. My problem is with a third system “Hartung-Game Master” I have followed his steps and it does not work for this system. I have tried in several cores mame, mess2015 and ume2015. In other moms I’ve also tried it. Only the core mame is the only one that puts an image of a white border box and then it remains frozen retroarch. The rom is well named and I have its bios, I have tested them on mame64 exe from 0.201 a0.210 and the messui64 0.201 to 0.210

Heres the thing with using mess,mame, or ume in retroarch from my personal experiences on android (I assume other platforms use the same standard)…once u learn how to do 1 system, u can do them all exactly the same…an exception to this rule is neo geo CD because u need 2 bios i think unlike most other systems…u need to make a folder and name it as the softlist name…that’s where the roms for that obscure system will go…then I make another folder and name it the same as the obscure system and the bios will go inside there…and that’s all to it …this is how u will load many upon many other systems using mess or mame on android and most likely other platforms of retroarch…everything from Sony smc-777 to sharp x1 to apple 2gs, and even Sam coupe etc…now when u encounter issues and crashes , my best guess is old bios or bios is too current and lastly another issue can be the roms itself are incorrect…by that I mean the roms must be named according to the hash file…the zip file of the rom and rom inside that zip MUST match the correct naming…to avoid any confusion it’s best to get a mame software pack …that will guarantee all naming will be correct and now u just narrow the errors to mostly the bios…all u need is 1 tutorial that will span across many systems because they all follow the same structure… …handheld games follow the same process except there will be no extra folder for the bios and in retroarch settings , it needs to be set to boot to bios turned on…u do it for 1 game then make a batch script to quickly make cfg files for all your handhelds which will go in the config folder in the retroarch main folder…everything from tiger games ,konami , radica, Nintendo g&w and many other handheld titles will follow this process for android and probably all other platforms

Hope this helps, just set it up.

Im using mame .184 bios & hash file, random gmaster roms (maybe .184) and current mame core

Check the description for details

1 Like

ooooo thanks I work for my perfect.Thanks to that I could also other systems. I have not been able to answer before, because I can not connect from my ip to the web, I do not know the reason for this. Should I talk to some administrator? I do not know why I can not from my ip. but thanks for saying how to do the trick to run game master.

1 Like