MAME 2003 is an arcade system emulator that can be used as a libretro core. MAME 2003 is based on MAME 0.78 with backported patches for performance and compatibility improvements. This core is a popular choice for the Raspberry Pi family and other low-powered hardware because it supports most 2D-era arcade games and a broad set of features without requiring as much processor and memory resources as later MAME cores.
Contribute to this documentationLink
In order to propose improvements to this document, visit it's corresponding source page on github. Changes are proposed using "Pull Requests."
MAME 2000, MAME 2010, MAME 2014, MAME 2016, and MAME.
BIOS romsets are not needed when using "Full Non-Merged" arcade romsets. For "Split" and "Non-Merged" romsets, place the BIOS in the same directory as the game romset.
- Frameskip (0-5): Skips frame to make slow emulation look faster than it is while compromising playability. (Not advised)
- DCS Speedhack (On/Off): Speedhack for the Midway sound hardware used in Mortal Kombat 2, 3 and others. Improves performance in these games.
- Skip Disclaimer (On/Off): Skips the 'nag-screen'.
- Skip Warnings (On/Off): Skips the warning screen shown before games with incomplete emulation.
- Samples (On/Off): Requires valid sample zips. | - |
- Sample Rate (11025-48000): Lowering may improve performance on weaker devices.
- Cheats (On/Off): Requires a valid cheat.dat file.
- Share 2 player dial controls across one X/Y device (On/Off): Some dial/spinner hardware are actually one device with one axis for each player. This supports that setup, by breaking down the normal mouse x/y into two seperate inputs.
- Mouse Device (mouse/pointer/disabled): Switch between mouse (e.g. hardware mouse, trackball, etc), pointer (touchpad, touchscreen, lightgun, etc), or disabled.
- TATE Mode (On/Off): Enable if rotating display for vertically oriented games (Pac-Man, Galaga, etc). Requires
video_allow_rotate = "false"setting in RetroArch.cfg or core override file.
- Some MAME games require data from an internal hard drive, CD-ROM, laserdisk, or other media in order to be emulated -- those forms of media are packaged as CHD files. CHD files should be copied to subfolders within the folder where the MAME ROM zips have been installed. e.g.:
/libretro content dir/blitz/blitz.chd
- Some games require an additional zip file with recorded sounds or music in order for audio to work correctly. Audio 'sample' files should be placed in subdirectories within
/libretro system dir/mame2003/e.g.:
/libretro system dir/mame2003/samples/
- High score, cheat, and history metadata files should be moved from github's
/libretro/mame2003-libretro/tree/master/metadataand placed within
/libretro system dir/mame2003/e.g.:
1 2 3
/libretro system dir/mame2003/hiscore.dat /libretro system dir/mame2003/cheat.dat /libretro system dir/mame2003/history.dat
- User-generated content is placed in sub-directories within
/libretro savefile dir/mame2003/e.g.:
1 2 3 4 5 6 7
/libretro savefile dir/mame2003/diff/ /libretro savefile dir/mame2003/nvram/ /libretro savefile dir/mame2003/hi/ /libretro savefile dir/mame2003/cfg/ /libretro savefile dir/mame2003/inp/ /libretro savefile dir/mame2003/memcard/ /libretro savefile dir/mame2003/snap/
MAME UI menuLink
To access the MAME internal menu, press the 'TAB' key or RetroPad R2. If you rebind MAME global inputs ('Input (general)'), it will update a file in
/libretro savefile dir/mame2003/cfg/ default.cfg.
These files are not human-readable, but can be safely deleted if you get into a mess and wish to return to the default input configuration.
The core supports one controller setting(s):
|Button 1/Right Stick Down/UI Cancel|
|Button 2/Right Stick Left|
|Button 4/Right Stick Right/UI Select|
|Button 3/Right Stick Up|
|Button 8/TAB Menu|
MAME 2003 FeaturesLink
MAME 2003 can ability to access games' internal service menus to set permanent game options. This allows you to, for example, configure a game to be 'free play' (no need to insert coins). To access the MAME service, press the 'F2' key. After changing options in the service mode, the game's internal memory will be stored to an .nv file in:
/libretro savefile dir/mame2003/nvram/
Similarly to the Service menu, many arcade games had hardware switches for arcade owners to modify certain parameters. These can be adjust by pressing the 'TAB' key to access the MAME menu, and select the 'Dip Switches' option. Here you can turn them on/off.
MAME 2003 will attempt to keep a permanent record of any high scores you set, but some games will not save these by default. The supplementary file called
hiscore.dat is required for these ROMs to save scores. This file can be downloaded from the MAME 2003 'metadata' repository. Place 'hiscore.dat' in:
libretro system dir/mame2003/ When high scores are saved, they are kept in:
libretro system dir/mame2003/hi/ The
hiscore.dat file can be downloaded from the MAME 2003 'metadata' repository. Save and transfer
MAME 2003 supports save states through the usual Retroarch hotkeys. However, save state support has to be implemented per-driver, so they won't work with all games.
MAME 2003 supports the MAME cheat engine, allowing you to use the 'TAB' menu to enable various in-game cheats. To active these, there is a supplementary file that you need to transfer to your Pi, called
cheat.dat. This file can be downloaded from the MAME 2003 'metadata' repository. Place
libretro system dir/mame2003/ Additionally, the 'enabled cheats' core option needs to be turned on. This option is is called:
mame2003-cheats = "enabled" To active these, there is a supplementary file that you need to transfer to your Pi, called cheat.dat. This cheat file can be downloaded from https://github.com/libretro/mame2003-libretro/tree/master/metadata.
Mouse/Trackball/Analog Controller supportLink
MAME 2003 has support for multiple mice or touch devices in games that support trackballs, etc.
MAME 2003 also supports one or two spinners/dials via the "Share 2 player dial controls across one X/Y device" core option. By default, mice/trackballs and analog sticks (the left one, for controllers with 2) are supported in games that would have them, or equivalents. For example, Centipede supports the mouse/trackball, and Afterburner supports the stick. Lightgun games are supported by either. The left and right mouse buttons can be bound to fire/etc using the MAME menu.
Absolute pointer devices are supported, but need to be turned on via a setting in the retroarch-core-options.cfg file.
mame2003-mouse_device = "pointer"
2 player dial/spinner devicesLink
2 player spinner/dial devices can be represented as 1 device with 2 axes. mame2003 can be configured to share this device across both players: Player 1 = X axis, Player 2 = Y axis. This can be enabled via a setting in the retroarch-core-options.cfg file, found in:
mame2003-dialsharexy = "enabled" NOTE: This will disable Mouse support.
Dual stick gamesLink
The right analog stick can now be used a second joystick. This is enabled by default, via a setting in the retroarch-core-options.cfg file, found in:
mame2003-rstick_to_btns = "enabled"
The MAME 2003 core accepts MAME 0.78 ROMsets. Each version of an arcade emulator must be used with ROMs that have the same exact version number. For example, MAME 0.37b5 ROMsets are required by the MAME 2000 emulator, but MAME 0.37b5 sets will not work correctly with the MAME 2003 or MAME 2010 emulator cores. Those cores require MAME 0.78 and MAME 0.139 ROM sets, respectively.
File-not-found errors are the result of a ROMset that is wrong or incomplete, including if you're trying to run a "Split" clone .zip without the parent .zip present. Non-Merged MAME0.78 ROMsets do not require parent .zips to be present.