| Both sides previous revision Previous revision Next revision | Previous revision |
| systems:mame [2024/10/13 14:32] – Update info about 0139(2010) version. Removed core since v41 tovarichtch | systems:mame [2026/03/31 10:44] (current) – wizzard |
|---|
| |
| ====== MAME ====== | ====== MAME ====== |
| | [[https://www.mamedev.org/|MAME]], the Multiple Arcade Machine Emulator, is a multi-purpose emulation framework which facilitates the emulation of vintage hardware and software. Originally targeting vintage arcade machines, MAME now also supports a wide variety of vintage computers, video game consoles and calculators. |
| [[https://www.mamedev.org/|MAME]], the Multiple Arcade Machine Emulator, is a multi-purpose emulation framework which facilitates the emulation of vintage hardware and software. Originally targeting vintage arcade machines, MAME has since absorbed the sister-project [[http://mess.redump.net/start|MESS]] (Multi Emulator Super System) to support a wide variety of vintage computers, video game consoles and calculators as well. | |
| |
| It was first released in 1997. In Italy! | It was first released in 1997. In Italy! |
| |
| ==== Quick reference ==== | ==== Quick reference ==== |
| |
| * **Accepted ROM formats:** ''.zip'', ''.7z'' | * **Accepted ROM formats:** ''.zip'', ''.7z'' |
| * **Folder:** ''/userdata/roms/mame'' | * **Folder:** ''/userdata/roms/mame'' |
| |
| ^ Emulators ^ Sample path ^ Artwork path ^ | ^ Emulators ^ Sample path ^ Artwork path ^ |
| | [[#libretro:_imame4all|libretro: imame4all]] | FIXME | FIXME | | | [[#libretro:_imame4all|libretro: imame4all]] | ''/userdata/bios/imame4all/samples'' | N/A | |
| | [[#libretro:_mame078plus|libretro: mame078plus]] | ''/userdata/bios/mame2003plus/samples'' | ''/userdata/bios/mame2003plus/artwork'' | | | [[#libretro:_mame078plus|libretro: mame078plus]] | ''/userdata/bios/mame2003plus/samples'' | ''/userdata/bios/mame2003plus/artwork'' | |
| | [[#libretro:_mame0139|libretro: mame0139]] | ''/userdata/bios/mame2010/samples'' | ''/userdata/bios/mame2010/artwork'' | | |
| | [[#libretro:_mame|libretro: mame]] | ''/userdata/bios/mame/samples'' | ''/userdata/bios/mame/artwork'' | | | [[#libretro:_mame|libretro: mame]] | ''/userdata/bios/mame/samples'' | ''/userdata/bios/mame/artwork'' | |
| | [[#mame1|mame]] | ''/userdata/bios/mame/samples'' | ''/userdata/bios/mame/artwork'' | | | [[#mame1|mame]] | ''/userdata/bios/mame/samples'' | ''/userdata/bios/mame/artwork'' | |
| |
| ===== BIOS ===== | ===== BIOS ===== |
| |
| Based on the [[:arcade#romsets|romset type]] used, either none is required, ones are required for each game you need to play, or a single BIOS file is needed for a group of games. | Based on the [[:arcade#romsets|romset type]] used, either none is required, ones are required for each game you need to play, or a single BIOS file is needed for a group of games. |
| |
| ==== Samples ==== | ==== Samples ==== |
| |
| Some arcade game machines featured additional storage that allowed for uncompressed audio to be utilized. These are referred to as "samples". Some machines had a backup synthesized track if the samples weren't present, others had none. | Some arcade game machines featured additional storage that allowed for uncompressed audio to be utilized. These are referred to as "samples". Some machines had a backup synthesized track if the samples weren't present, others had none. |
| |
| |
| ===== ROMs ===== | ===== ROMs ===== |
| |
| Place your MAME ROMs in ''/userdata/roms/mame''. If you'd like to, you could put ROMs intended for different versions of MAME into subfolders in this folder. For instance, you could put MAME2003-plus ROMs into the ''/userdata/roms/mame/mame2003plus''. The latest versions of which ROMset to use can be found on [[:arcade#romsets|the arcade guide]]. | Place your MAME ROMs in ''/userdata/roms/mame''. If you'd like to, you could put ROMs intended for different versions of MAME into subfolders in this folder. For instance, you could put MAME2003-plus ROMs into the ''/userdata/roms/mame/mame2003plus''. The latest versions of which ROMset to use can be found on [[:arcade#romsets|the arcade guide]]. |
| |
| * 0.37b5 ROMset for the [[#libretro:_imame4all|libretro: imame4all]] version | * 0.37b5 ROMset for the [[#libretro:_imame4all|libretro: imame4all]] version |
| * 0.78plus ROMset for the [[#libretro:_mame078plus|libretro: mame078plus]] version | * 0.78plus ROMset for the [[#libretro:_mame078plus|libretro: mame078plus]] version |
| * 0.139 ROMset for the [[#libretro:_mame0139|libretro: mame0139]] version | |
| * [[:arcade#romsets|Latest ROMset]] at the release of stable for the [[#libretro:_mame|libretro: mame]]/[[#mame1|mame]] versions | * [[:arcade#romsets|Latest ROMset]] at the release of stable for the [[#libretro:_mame|libretro: mame]]/[[#mame1|mame]] versions |
| |
| <WRAP center round info> | <WRAP center round info> |
| For MESS supported systems, each system has its own folder to use. Putting games designed for the MESS system inside of the ''mame/'' folder will not work. | For MAME-supported home computer and console systems, each system has its own folder to use. Putting games designed for these systems inside of the ''mame/'' folder will not work. |
| </WRAP> | </WRAP> |
| |
| ===== Emulators ===== | ===== Emulators ===== |
| |
| ==== RetroArch ==== | ==== RetroArch ==== |
| |
| RetroArch has [[emulators:retroarch|its own page]]. | RetroArch has [[emulators:retroarch|its own page]]. |
| |
| === libretro: imame4all === | === libretro: imame4all === |
| |
| iMame4All is an old version of MAME that's fairly easy to run, even on hardware as weak as the RPi Zero. Many games, especially newer ones, have known issues with this version. Supports the least number of games. | iMame4All is an old version of MAME that's fairly easy to run, even on hardware as weak as the RPi Zero. Many games, especially newer ones, have known issues with this version. Supports the least number of games. |
| |
| |
| == libretro: imame4all configuration == | == libretro: imame4all configuration == |
| |
| === libretro: mame078plus === | === libretro: mame078plus === |
| |
| Not to be confused with the regular [[https://docs.libretro.com/library/mame_2003/|MAME2003]]. | Not to be confused with the regular [[https://docs.libretro.com/library/mame_2003/|MAME2003]]. |
| |
| |
| == libretro: mame078plus configuration == | == libretro: mame078plus configuration == |
| |
| ^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value'' ^ | ^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value'' ^ |
| ^ Settings that apply to all systems this core supports || | ^ Settings that apply to all systems this core supports || |
| |
| Additional options can be accessed via RetroArch's Quick Menu (''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} while in-game). Its dip switch settings can be accessed by pushing in ''[L3]'' in-game, navigate with the D-pad and accept with the {{:wiki:east.png?nolink&20|East button (A SNES)}} button. Push in ''[L3]'' again to exit the menu. | Additional options can be accessed via RetroArch's Quick Menu (''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} while in-game). Its dip switch settings can be accessed by pushing in ''[L3]'' in-game, navigate with the D-pad and accept with the {{:wiki:east.png?nolink&20|East button (A SNES)}} button. Push in ''[L3]'' again to exit the menu. |
| |
| === libretro: mame0139 === | |
| |
| Internally using the name "mame0139", [[https://docs.libretro.com/library/mame_2010/|MAME 2010]] is an old version of MAME that's a halfway point of being fast while still having a large library. It should not be used on the weaker SBCs such as Raspberry Pi. **This core was removed in v41.** | |
| |
| The ROMset for this version may be referred to as "0.139". | |
| |
| == libretro: mame0139 configuration == | |
| |
| There is no configuration for this core under ES. All of its options can be altered via RetroArch's Quick Menu (''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} while in-game). Its dip switch settings can be accessed by pushing in ''[R3]'' in-game, navigate with the D-pad and accept with the {{:wiki:east.png?nolink&20|East button (A SNES)}} button. Push in ''[R3]'' again to exit the menu. | |
| |
| ''[R2]'' by default is assigned to the virtual turbo button. It is not used by games. | |
| |
| === libretro: mame === | === libretro: mame === |
| |
| The latest version of MAME at the time of stable's release. Check out the [[:arcade#arcade_emulation_on_batocera|table on the arcade guide]] for the current version. | The latest version of MAME at the time of stable's release. Check out the [[:arcade#arcade_emulation_on_batocera|table on the arcade guide]] for the current version. |
| |
| == libretro: mame configuration == | == libretro: mame configuration == |
| |
| ^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value'' ^ | ^ ES setting name ''batocera.conf_key'' ^ Description => ES option ''key_value'' ^ |
| ^ Settings that apply to all systems this core supports || | ^ Settings that apply to all systems this core supports || |
| Additional options can be accessed via RetroArch's Quick Menu (''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} while in-game). Its dip switch settings can be accessed by pushing in ''[L3]'' + ''[R3]'' in-game, navigate with the D-pad and accept with the {{:wiki:east.png?nolink&20|East button (A SNES)}} button. Push in ''[L3]'' + ''[R3]'' again to exit the menu. | Additional options can be accessed via RetroArch's Quick Menu (''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}} while in-game). Its dip switch settings can be accessed by pushing in ''[L3]'' + ''[R3]'' in-game, navigate with the D-pad and accept with the {{:wiki:east.png?nolink&20|East button (A SNES)}} button. Push in ''[L3]'' + ''[R3]'' again to exit the menu. |
| |
| For Batocera v(FIXME) and higher, further adjustments can be made to the ''/userdata/bios/mame/ini/mame.ini'' file, or the game-specific adjustments in ''/userdata/bios/mame/ini/GAMENAME.ini''. | Further adjustments can be made to the ''/userdata/system/configs/mame/mame.ini'' file, or the game-specific adjustments in ''/userdata/system/configs/mame/ini/GAMENAME.ini''. |
| |
| For Batocera v(FIXME) and lower, further adjustments can be made to the ''/userdata/bios/mame.ini'' file. | == libretro: mame custom parameters == |
| | For Batocera v42 and higher, you can customize the the parameters passed to libretro: mame. This is particularly useful when you emulate computer systems, such as Apple IIe, and want to load two disk images instead of booting from disk 1, and pause the game to load disk 2. To do so, create a ''.cmd'' file with the same name beside your first ROM file, and put customized parameters in it. |
| |
| ==== MAME ==== | For example, the directory ''/userdata/roms/apple2/Some Game (1985)/'' has these files: |
| |
| | * ''Some Game (disk 1).dsk'' |
| | * ''Some Game (disk 2).dsk'' |
| | * ''Some Game (disk 1).dsk.cmd'' |
| | |
| | And the content of ''Some Game (disk 1).dsk.cmd'' is: |
| | |
| | <code> |
| | apple2ee -gameio joy -flop1 "/userdata/roms/apple2/Some Game (1985)/Some Game (disk 1).dsk" -flop2 "/userdata/roms/apple2/Some Game (1985)/Some Game (disk 2).dsk" -rompath "/userdata/bios/" -ui_active -cfg_directory "/userdata/saves/mame/cfg/apple2ee" -inipath "/userdata/saves/mame/mame/ini" |
| | </code> |
| | |
| | When you launch disk 1 from the Apple IIe menu, Batocera will see that you have a ''.cmd'' file and use its parameters. In this example, disk 2 will be automatically loaded into floppy 2. |
| | |
| | ==== MAME ==== |
| [[#mame|As above!]] | [[#mame|As above!]] |
| |
| If you're having issues with a specific game, check the [[https://wiki.mamedev.org/index.php/FAQ:Games|MAMEdev FAQ for that game here.]] For MESS systems specifically, you might find more information on [[http://mess.redump.net/start|MESS's wiki]]. | If you're having issues with a specific game, check the [[https://wiki.mamedev.org/index.php/FAQ:Games|MAMEdev FAQ for that game here.]] |
| |
| Be sure to remember to update the ROMset when updating Batocera, as this version is bumped every stable version. | Be sure to remember to update the ROMset when updating Batocera, as this version is bumped every stable version. |
| |
| === MAME configuration === | === MAME configuration === |
| |
| Standardized features available to all MAME systems: ''mame.videomode'', ''mame.decoration'', ''mame.padtokeyboard'' | Standardized features available to all MAME systems: ''mame.videomode'', ''mame.decoration'', ''mame.padtokeyboard'' |
| |
| MAME offers a **[[https://docs.mamedev.org/usingmame/ui.html|Menu]]** in-game (push in ''[L3]'' + ''[R3]'' or press ''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}}). This can be used to [[:arcade#mame_remap_configuration_files|manually adjust inputs]] or [[:arcade#configuration_menu_dip_switches_service_mode_systemgame_configuration_diagnostic_input| game settings]]. Alternatively, all of MAME's options can be edited by opening the ''/userdata/system/configs/mame/mame.ini'' file (you may need to create this file if it's not already present). | MAME offers a **[[https://docs.mamedev.org/usingmame/ui.html|Menu]]** in-game (push in ''[L3]'' + ''[R3]'' or press ''[HOTKEY]'' + {{:wiki:south.png?nolink&20|South button (B SNES)}}). This can be used to [[:arcade#mame_remap_configuration_files|manually adjust inputs]] or [[:arcade#configuration_menu_dip_switches_service_mode_systemgame_configuration_diagnostic_input| game settings]]. Alternatively, all of MAME's options can be edited by opening the ''/userdata/system/configs/mame/mame.ini'' file (you may need to create this file if it's not already present). |
| |
| ===== Sega Model 1 ===== | == mame custom parameters == |
| | For Batocera v42 and higher, you can customize the parameters passed to standalone MAME. This is particularly useful when you emulate computer systems, such as Apple IIe, and want to load two disk images instead of booting from disk 1, and pause the game to load disk 2. To do so, create a ''.cmd'' file with the same name beside your first ROM file, and put customized parameters in it. |
| |
| | For example, the directory ''/userdata/roms/apple2/Some Game (1985)/'' has these files: |
| | |
| | * ''Some Game (disk 1).dsk'' |
| | * ''Some Game (disk 2).dsk'' |
| | * ''Some Game (disk 1).dsk.cmd'' |
| | |
| | --> Example contents of "Some Game (disk 1).dsk.cmd" # |
| | <file - Some Game (disk 1).dsk.cmd> |
| | /usr/bin/mame/mame |
| | -skip_gameinfo |
| | -rompath |
| | /userdata/roms/apple2/Some Game (1985);/userdata/bios/mame;/userdata/bios;/userdata/roms/mame |
| | -bgfx_path |
| | /usr/bin/mame/bgfx/ |
| | -fontpath |
| | /usr/bin/mame/ |
| | -languagepath |
| | /usr/bin/mame/language/ |
| | -pluginspath |
| | /usr/bin/mame/plugins/;/userdata/saves/mame/plugins |
| | -samplepath |
| | /userdata/bios/mame/samples |
| | -artpath |
| | /var/run/mame_artwork/;/usr/bin/mame/artwork/;/userdata/bios/mame/artwork;/userdata/decorations |
| | -cheat |
| | -cheatpath |
| | /userdata/cheats/mame |
| | -verbose |
| | -nvram_directory |
| | /userdata/saves/mame/nvram |
| | -cfg_directory |
| | /userdata/system/configs/mame/apple2ee |
| | -input_directory |
| | /userdata/saves/mame/input |
| | -state_directory |
| | /userdata/saves/mame/state |
| | -snapshot_directory |
| | /userdata/screenshots |
| | -diff_directory |
| | /userdata/saves/mame/diff |
| | -comment_directory |
| | /userdata/saves/mame/comments |
| | -homepath |
| | /userdata/saves/mame/plugins |
| | -ctrlrpath |
| | /userdata/system/configs/mame/ctrlr |
| | -inipath |
| | /userdata/system/configs/mame;/userdata/system/configs/mame/ini |
| | -crosshairpath |
| | /userdata/bios/mame/artwork/crosshairs |
| | -video |
| | auto |
| | -resolution |
| | 1024x768 |
| | -ui_active |
| | -plugins |
| | -plugin |
| | hiscore |
| | -dial_device |
| | mouse |
| | -trackball_device |
| | mouse |
| | -paddle_device |
| | mouse |
| | -positional_device |
| | mouse |
| | -mouse_device |
| | mouse |
| | -ui_mouse |
| | -lightgun_device |
| | mouse |
| | -adstick_device |
| | mouse |
| | apple2ee |
| | -gameio |
| | joy |
| | -flop1 |
| | /userdata/roms/apple2/Some Game (1985)/Some Game (disc 1).dsk |
| | -flop2 |
| | /userdata/roms/apple2/Some Game (1985)/Some Game (disc 2).dsk |
| | </file> |
| | <-- |
| | |
| | When you launch disk 1 from the Apple IIe menu, Batocera will see that you have a ''.cmd'' file and use its parameters. Because of these final lines in the example, |
| | <code> |
| | -flop1 |
| | /userdata/roms/apple2/Some Game (1985)/Some Game (disc 1).dsk |
| | -flop2 |
| | /userdata/roms/apple2/Some Game (1985)/Some Game (disc 2).dsk |
| | </code> |
| | disk 1 will be loaded into floppy 1, and disk 2 will be loaded into floppy 2. |
| | |
| | Notice that the format of ''Some Game (disk 1).dsk.cmd'' for native MAME is very different from the custom file for libretro: mame above, in the following ways: |
| | |
| | * The file extension must be ''.cmd'' |
| | * Each line fully translates to exactly 1 parameter. There can be spaces within each line; quotation marks are unnecessary. Make sure you don't leave unwanted spaces at the end. |
| | * The parameters MAME needs are very different from libretro: mame. MAME usually requires a lot more information. |
| | |
| | ===== Sega Model 1 ===== |
| {{ :systems:sega_model_1.jpg?200|Ahead of its time. Too far ahead.}} | {{ :systems:sega_model_1.jpg?200|Ahead of its time. Too far ahead.}} |
| |
| This infamous [[https://www.system16.com/hardware.php?id=712|Model 1 arcade board]] was a dramatic step-up above the competition in regards to 3D polygonal graphics. Thousands of vector-shaded polygons being drawn on-screen at once, with extremely responsive 60 FPS arcade feel (for some games). | This infamous [[https://www.system16.com/hardware.php?id=712|Model 1 arcade board]] was a dramatic step-up above the competition in regards to 3D polygonal graphics. Thousands of vector-shaded polygons being drawn on-screen at once, with extremely responsive 60 FPS arcade feel (for some games). |
| |
| Emulation for the Model 1 is sadly not that mature yet (such as slowdown, graphical inaccuracies and random crashes), however if you have a powerful enough machine you should be able to power through it. Model 1's ROMs are best played on [[#libretro:_mame0139|MAME 2010]] or newer. | Emulation for the Model 1 is sadly not that mature yet (such as slowdown, graphical inaccuracies and random crashes), however if you have a powerful enough machine you should be able to power through it. Model 1's ROMs are best played on [[#libretro:_mame|libretro: mame]] or [[#mame1|standalone MAME]]. |
| |
| There were only seven games (in reality, five with different variations) produced for this arcade board, most likely due to its prohibitive cost of development for each game: | There were only seven games (in reality, five with different variations) produced for this arcade board, most likely due to its prohibitive cost of development for each game: |
| |
| ===== Controls ===== | ===== Controls ===== |
| |
| Here are the default MAME's controls shown on a [[:configure_a_controller|Batocera Retropad]]: | Here are the default MAME's controls shown on a [[:configure_a_controller|Batocera Retropad]]: |
| |
| |
| ===== Troubleshooting ===== | ===== Troubleshooting ===== |
| |
| MAME is a very complicated project and issues can crop up easily. | MAME is a very complicated project and issues can crop up easily. |
| |
| ==== None of my games are booting! ==== | ==== None of my games are booting! ==== |
| |
| First check that the version of MAME you're attempting to run it with is the same as the ROMset you got it from. Mismatched versions aren't guaranteed to run, though sometimes if there were no differences made between MAME versions the game can run in both versions (though that's generally an exception, not the rule). | First check that the version of MAME you're attempting to run it with is the same as the ROMset you got it from. Mismatched versions aren't guaranteed to run, though sometimes if there were no differences made between MAME versions the game can run in both versions (though that's generally an exception, not the rule). |
| |
| ==== I have an issue with a specific game ==== | ==== I have an issue with a specific game ==== |
| | If you're having issues with a specific game, check the [[https://wiki.mamedev.org/index.php/FAQ:Games|MAMEdev FAQ for that game here.]] |
| If you're having issues with a specific game, check the [[https://wiki.mamedev.org/index.php/FAQ:Games|MAMEdev FAQ for that game here.]] For MESS systems specifically, you might find more information on [[http://mess.redump.net/start|MESS's wiki]]. | |
| |
| ==== Poor game performance ==== | ==== Poor game performance ==== |
| |
| Arcade games tend to be more difficult to emulate than regular console games in general by their very nature. | Arcade games tend to be more difficult to emulate than regular console games in general by their very nature. |
| |
| |
| ==== I can't open the MAME menu! ==== | ==== I can't open the MAME menu! ==== |
| |
| Sometimes the key needed to be pressed to access the in-game MAME menu is different depending on which version of MAME you are using. Typically, these keys can be: | Sometimes the key needed to be pressed to access the in-game MAME menu is different depending on which version of MAME you are using. Typically, these keys can be: |
| * Pushing in ''[L3]'' or ''[R3]'' | * Pushing in ''[L3]'' or ''[R3]'' |
| |
| ==== I open the MAME menu too often! ==== | ==== I open the MAME menu too often! ==== |
| |
| Aforementioned issue, you might have the MAME key set to an in-game key as well. Either set it to another key or remap the MAME menu key. | Aforementioned issue, you might have the MAME key set to an in-game key as well. Either set it to another key or remap the MAME menu key. |
| |
| ==== Further troubleshooting ==== | ==== Further troubleshooting ==== |
| |
| Most questions are answered in the [[:arcade|generic arcade guide]]. | Most questions are answered in the [[:arcade|generic arcade guide]]. |
| |
| For further troubleshooting, refer to the [[:support|generic support pages]]. | For further troubleshooting, refer to the [[:support|generic support pages]]. |
| |