MAME 2003Link


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.

Author(s): MAMEdev

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

See alsoLink

MAME 2000, MAME 2010, MAME 2014, MAME 2016, and MAME.


MAME Non-Commercial




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.


Feature Supported
States game-dependent
RetroArch Cheats
Native Cheats

Core optionsLink

  • 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/metadata and placed within /libretro system dir/mame2003/ e.g.:
    /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.:
    /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):

  • RetroPad
MAME 2003 RetroPad
Button 1/Right Stick Down/UI Cancel
Button 2/Right Stick Left
Coin in
Left Joystick
Button 4/Right Stick Right/UI Select
Button 3/Right Stick Up
Button 5
Button 6
Button 7
Button 8/TAB Menu
Button 9
Button 10
Left Joystick

MAME 2003 FeaturesLink

Service menuLink

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.

High scoresLink

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 hiscore.dat

Save statesLink

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 cheat.dat in: 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

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.

Pointer/Trackpad/Touchscreen supportLink

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.