This page is dedicated to beginners getting into arcade emulation for the first time and describes how to set them up for Batocera.
Todo: add consistent example demonstration throughout the article, using MAME as it is the most common.
Why are there so many arcade emulators? Which one should I use?
A lot of arcade emulators have a lot of overlap with what games they are compatible with. The preference of which to use largely depends on which game is being played:
For most “retro” arcade games (the likes of Pac-Man, Q*bert, Asteroids, etc.) MAME can be used. MAME is a demanding emulator, so for higher-requirement games it is preferable to look into other, more specialized emulators. MAME also does not support certain modern games, notably 3D ones (but there are exceptions).
In Batocera, there are five different versions of MAME, each there for its own reason:
libretro iMAME4all (ROMset version 0.37b5): A very light version only available on the weakest boards, such as the Raspberry Pi 1. Unless you are using this specific discontinued hardware, this version is not recommended for use.
libretro MAME2003plus (ROMset version 0.78+): The default version. This is light on resources, so it is suitable for weaker SBCs like the Raspberry Pi 3 and above. This should not be used on x86_64, as it has long-standing bugs and limited capability compared to the more modern versions.
libretro MAME2010 (ROMset version 0.139): A “middle-ground” version that is still fast enough to be run on weak hardware while having more modern compatibility.
libretro MAME (ROMset version changes): The latest libretro MAME version compiled at the last stable release.
MAME (ROMset version changes): The latest standalone version of MAME compiled at the last stable release.
For fighting/multiplayer “retro” arcade games (the likes of Street Fighter II, Darkstalkers, etc.), FBNeo (ROMset version changes) can be used. FBNeo has limited compatibility compared to MAME, but specialises more in the ROMs that it is compatible with. Read how it's different from MAME here.
In Batocera, there are two different versions of FBNeo. Usually, only one is included for a platform:
FBAlpha2012 (): An older version from before the rebranding that is only available on the weakest boards, such as the Raspberry Pi 1. Unless you are using this specific discontinued hardware, this version is not recommended for use.
libretro FBNeo (ROMset version changes): The latest libretro FBNeo version compiled at the last stable release.
For FMV “laserdisc” arcade games (the likes of Dragon's Lair, Space Ace, Astron Belt, etc.), DAPHNE/Hypseus can be used.
For early 3D “last generation” arcade games (the likes of House of the Dead, Daytona, Mario Kart GP, etc.), the dedicated emulator for the system which that arcade hardware was based off of is usually the best. These include Flycast, Model2emu, Supermodel or Triforce (this list is not exhaustive).
A community-driven list of which emulator should be used with which game can be found at nonMAME (its name to symbolize which games are non-MAME compatible, and the best alternative to use as a backup). A list of arcade games tested on an RPi 3 can be found on the BestArcade list.
Certain arcade boards are conversions of home consoles. These can be found on System16's base hardware list. Typically, these work best with the standalone emulator for that console, but more often than not the arcade games are in an unworking state (and some emulators do not extend their compatibility to their arcade spinoffs anyway).
ROMsets
A ROMset is a set of all the different game ROMs emulated by a particular MAME version. Essentially, the “game's files”. These are different from the typical ROMs used in convential home consoles, as instead of one ROM existing for a game, a ROMset is particular to the version of the arcade emulator being used. For instance, MAME 0.78plus is only compatible with running ROMs from the MAME 0.78plus ROMset.
It is possible to use ROMs from different sets, however this is discouraged. To avoid issues, always use the set made for the particular version of the emulator being used.
As a friendly reminder, Batocera does not provide copyrighted content. Questions asking where to download such ROMsets will be ignored. Once you have the ROMset you prefer, head over to the copying over the ROMset section.
ROMset types
In addition to there being a ROMset per version of emulator, there are many different types of ROMsets. Most users are interested in one of these types:
Full Non-merged (a.k.a. reference set): This set has everything needed to run each game in its own ZIP file, including any parent ROMs. This is the recommended format, as it is the easiest to work with.
Non-merged (a.k.a. reference set): This is the same as full non-merged, however “common” BIOS files shared by a large number of ROMs are separated out to save space. Use this only if you know which BIOS files you'll need for each ROM.
Split: Each ROM is separated and only the difference between them are stored in the ZIP files. This means one ROM may depend on another (or even multiple others) to work. For example, in a split ROMset,
pacman.zip
(a clone), will not work withoutpuckman.zip
(its parent). If using a split set, it is recommended to copy over the entire set to ensure no necessary files are missing (or use an arcade ROM manager to filter down the set). This is not recommended for new arcade users.Merged: Clones are merged into the parent ROM ZIP file, meaning that more than one game is stored per file. This relies on the frontend to select which game is to be played. Batocera does not have this functionality, thus it is not recommended to use this type of set.
Fortunately, the type of ROMset will be automatically detected by the emulator. There is no need to manually specify which type is being used.
If a ROMset does not specify what type it is, usually it is of the “split” type. Split ROMsets can be converted to non-merged ROMsets by use of the right tools.
ROMset version per stable Batocera release
MAME 2003 plus always uses the 0.78plus ROMset. MAME 2010 always uses the 0.139 ROMset.
Here is a table showing the versions of MAME (standalone and libretro (LR)) being used in each stable release of Batocera:
Batocera version | MAME standalone version | libretro: MAME version | LR-FBNeo version |
---|---|---|---|
Batocera v40 | MAME 0.265 | LR-MAME 0.265 | 1.0.0.3 (Feb 24, 2024) |
Batocera v39 | MAME 0.258 | LR-MAME 0.258 | 1.0.0.3 (Mar 26, 2023) |
Batocera v38 | MAME 0.258 | LR-MAME 0.258 | 1.0.0.3 (Mar 26, 2023) |
Batocera v37 | MAME 0.253 | LR-MAME 0.251 | 1.0.0.3 (Mar 26, 2023) |
Batocera v36 | MAME 0.251 | LR-MAME 0.251 | 1.0.0.3 (Oct 10, 2022) |
Batocera v35 | MAME 0.245 | LR-MAME 0.242 | 1.0.0.3 (Jul 21, 2022) |
Batocera v34 | MAME 0.242 | LR-MAME 0.242 | 1.0.0.3 (Apr 16, 2022) |
Batocera v33 | MAME 0.239 | LR-MAME 0.238 | 1.0.0.3 (Dec 17, 2021) |
Batocera v32 | MAME 0.232 | LR-MAME 0.228 | 1.0.0.2 |
Batocera v31 | MAME 0.229 | N/A | 1.0.0.2 |
Batocera v30 | N/A | LR-MAME 0.228 | 1.0.0.0 |
Batocera v29 | N/A | LR-MAME 0.225 | 1.0.0.0 |
Batocera 5.27 | N/A | LR-MAME 0.223 | N/A |
Batocera 5.26 | N/A | LR-MAME 0.220 | N/A |
Batocera 5.25 | N/A | LR-MAME 0.219 | N/A |
Batocera 5.24 | N/A | LR-MAME 0.214 | N/A |
Batocera 5.23 | N/A | LR-MAME 0.212 | N/A |
Batocera 5.22 | N/A | LR-MAME 0.212 | N/A |
Batocera 5.21 | N/A | LR-MAME 0.206 | N/A |
Cleaning the ROMset
Information on how to clean the ROMset to shorten it can be found on the advanced arcade emulation page. Cleaning is not required in order to use a ROMset, but can be very preferable to copying over the entire set (they can get in excess of terrabytes if you include everything).
If you simply want the easiest thing to do, use a full non-merged version of one of the ROMsets and simply pick and choose which ZIPs to transfer over. A full non-merged set should contain everything needed to run the ROM in that single ZIP.
Copying over the ROMset
Once the you have the ROMset for the intended version and have (optionally) cleaned it for use with your Batocera, it is time to copy over the data.
Most arcade ROMsets will deliver their ROMs in ZIP files. Do not uncompress the individual ROM files. They are designed to be read directly from the ZIP files, and rely on the naming structure of the ZIP files in order to function. Batocera will display the name of the game once the ROM has been scraped.
The exact folder the ROMset should be copied to depends on which emulator is being used. Check the Arcade section on the systems page for the specific folder depending on which system is being used. If you simply don't care, put them into the roms/mame
folder as that has the most emulators.
If using subfolders, be sure that all the required files are also copied to the same subfolder.
If using a full non-merged set
That's it. You may copy over the ROMs as you wish. All files necessary for each title are included in the ZIP with the title's short name, you can even pick and choose which ROMs you'd like to keep. Do not rename the ZIP files, otherwise the games will not work.
A list of the ROMs' full names can be found in the provided DAT file (may have an XML extension instead), if not wanting to use a ROM manager.
Additionally, a good resource for discovering ROM names is http://adb.arcadeitalia.net/lista_mame.php
ROMs will usually have a few variations, such as region (American release, Japanese release, etc.), revision or hack. These will usually be indicated with an additional character on the end of the short name, refer to the DAT file for the specific version.
If using a non-merged set
First, if not wanting to copy over the entire set, clean the ROMset first of unwanted files. Then, copy over the cleaned set.
It is still somewhat possible to pick and choose which ROMs to copy over, however if the ROM is dependent on a BIOS file that needs to be copied over too. Check the error logs if something fails to launch, and it will usually tell you the exact file needed.
Required BIOS files can be found by finding the game in the provided DAT/XML file. However, it is also possible to find the game on http://adb.arcadeitalia.net/lista_mame.php and scroll down to the “Bios:” section to see if there are any required BIOS files.
If you'd rather just copy over all of the shared BIOS files, here are the lists of the known shared BIOS files for each set:
MAME 2003 plus (0.78+):
acpsx.zip
,cpzn1.zip
,cpzn2.zip
,cvs.zip
,decocass.zip
,konamigx.zip
,megaplay.zip
,megatech.zip
,neogeo.zip
,nss.zip
,pgm.zip
,playch10.zip
,skns.zip
,stvbios.zip
,taitofx1.zip
andtps.zip
.MAME 2010 (0.139) common BIOS (for working systems):
acpsx.zip
,aleck64.zip
,alg_bios.zip
,ar_bios.zip
,atarisy1.zip
,atluspsx.zip
,atpsx.zip
,cpzn1.zip
,cpzn2.zip
,decocass.zip
,galgbios.zip
,kviper.zip
,maxaflex.zip
,megatech.zip
,neogeo.zip
,nss.zip
,playch10.zip
,psarc95.zip
,skns.zip
,taitofx1.zip
,taitogn.zip
,tps.zip
andvspsx.zip
.MAME 2010 (0.139) remaining BIOS (for broken or miscellaneous systems):
airlbios.zip
,awbios.zip
,bctvidbs.zip
,cd32.zip
,cdi.zip
,chihiro.zip
,crysbios.zip
,f355bios.zip
,gg863.zip
,hikaru.zip
,hng64.zip
,hod2bios.zip
,konamigv.zip
,konamigx.zip
,macsbios.zip
,megaplay.zip
,naomi.zip
,naomi2.zip
,naomigd.zip
,pgm.zip
,sfcbox.zip
,stvbios.zip
,sys246.zip
,sys256.zip
,sys573.zip
,taitotz.zip
andtriforce.zip
.FBNeo 1.0.0.0:
neogeo.zip
,pgm.zip
andskns.zip
.FBNeo 1.0.0.2:
bubsys.zip
,cchip.zip
,decocass.zip
,isgsm.zip
,midssio.zip
,namcoc69.zip
,namcoc70.zip
,namcoc75.zip
,neogeo.zip
,nmk004.zip
,pgm.zip
,skns.zip
, andym2608.zip
.
Add the rest of the sets.
If using a split set
You could try copying over the entire set, however you'll find many undesirable ROMs being included such as testing utilities (for the arcade boards, not your Batocera), prototypes, bootlegs, not to mention all the duplicated clones. If you want to avoid these, it is a requirement to clean the ROMset first before copying over.
If using a merged set
After cleaning the ROMset, copy over the ROMset to the folder. By default, Batocera will only be capable of launching the parent ROM of each ZIP, so ensure it's that version which you want to play. This will be up to your ROM cleaner to decide, if it even has such functionality.
For any type of ROMset
Artwork
Some games need extra artwork files (scans of physical media typically placed behind the screen to enhance the gameplay, required for some machines that were really rudimentary):
For MAME2003plus:
/userdata/bios/mame2003-plus/artwork
For MAME2010:
/userdata/bios/mame2010/artwork
For MAME:
/userdata/bios/mame/artwork
To use artwork in-game, open the MAME menu ( how?) and go to Video Options → Screen ## and then select the appropriate artwork for the title (some games have many variations). MAME2003plus will use artwork files if they are simply present, there is no option to turn them off outside of manually removing the files.
Samples
Some games need extra samples files:
For FBNeo:
/userdata/bios/fbneo/samples
For MAME2003plus:
/userdata/bios/mame2003-plus/samples
For MAME2010:
/userdata/bios/mame2010/samples
For the latest MAME:
/userdata/bios/mame/samples
CHD
Some more recent arcade games can use extra files (typically that were physically stored on a disc) called CHD (compressed hunks of data). To use CHD for a game, the CHD must be placed in a folder with the same name as the game's ZIP. For example, carnevil.zip
the game will be looking for carnevil/carnevil.chd
when it launches.
Scraping
Once copied over, if refresh your gamelist and go to the newly added arcade/MAME/FBNeo/etc. system you'll see a much of meaningless names for all the games. Unlike home console ROMs that are typically named after the title of the game they are for, arcade ROMs require a specific naming scheme in order to keep track of which is which. These should not be altered under any circumstances.
Then how do you get the names of the actual games to show up? Simple, scrape them. Once scraped, all titles will have their correct names. BIOS files will also be automatically hidden, very useful.
Changing the arcade emulator on Batocera
If not using the default arcade emulator, it is required to change the emulator used. This can be done by doing the following:
Navigate to the system's game list.
Press
[SELECT]
to bring up the system's view settings and go to ADVANCED SYSTEM SETTINGS (can also use[START]
→ GAME SETTINGS → PER SYSTEM ADVANCED CONFIGURATION and then go to the applicable system).Go to EMULATOR and choose which emulator to use.
Further Reading
This concludes the introduction to Arcade ROMs. However, should you be interested in learning more, you can read the following:
The advanced Arcade page. This can be useful to find out which emulators are compatible with which features, and how to access dipswitch settings.
Troubleshooting
All my games are appearing with non-sense names like "sfiiv"
Short answer: scrape your games' metadata.
Long answer: Arcade ROMsets typically require each game to have a unique name, and a short one at that to allow for differentiation of every clone/bootleg/regional variation/etc. They are usually abbreviated to allow for the most flexibility. You may be tempted to rename these files yourself, however doing so will render the game unplayable as the emulator will no longer recognize which game it is.
Fortunately, Batocera has the ability to scrape the metadata for these games, allowing it's “full” name to appear in the game list instead of its file name. It will even include some fancy artwork relevant to the title, ranging from posters advertising the arcade game to its marquee (depending on which source is chosen to scrape from).
The metadata for any given title can also be edited manually by holding down while hovering over the game.
My game isn't launching!
Check system/logs/es_launch_stderr.log
and system/logs/es_launch_stdout.log
. They'll usually tell you directly what has gone wrong, or if any alternative ROMs that are in a working state are available.
I'm using a non-merged set and a game is complaining about missing files!
Only a full non-merged set will provide all the files required in one ZIP file. You most likely have a regular non-merged set, which requires certain shared BIOS files to be present in the same folder as the ZIP itself. You can check the error logs to see which file it is requesting.
My controls are messed up!
Arcades traditionally had control panels tailored specifically to them. It would be an impossible task to try and assign them logically onto a Batocera Retropad by default, so they just use whatever the emulator itself sets up. Controls can be remapped per game.
Further troubleshooting
You can find some emulator-specific troubleshooting information in the respective system page in the Arcade section on the systems page.
For further troubleshooting, refer to the generic support pages.