Skip to content

MAME 2003


MAME 2003 is a libretro arcade system emulator core originally derived from xmame 0.78. 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 documentation

In order to propose improvements to this document, visit it's corresponding source page on github. Changes are proposed using "Pull Requests."

See also

MAME 2000, MAME 2003-Plus, 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 options

  • 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 zip files. | - |
  • 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/
  • 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/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/memcard/

MAME menu

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. Note: If you rebind MAME global inputs ('Input (general)'), it will update a file in /libretro savefile dir/mame2003/cfg/ default.cfg.


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 Features

Service menu

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 scores

When high scores are saved, they are either stored as NVRAM data in libretro system dir/mame2003/nvram/ or as hiscore data in: libretro system dir/mame2003/hi/

Save states

MAME 2003-Plus supports save states for many, but not all games.


MAME 2003-Plus supports the MAME cheat engine, allowing you to use the MAME menu to enable various in-game cheats. To active these, there is a necessary supplementary file called cheat.dat. This file can be downloaded from the MAME 2003 'metadata' repository. Place cheat.dat in: libretro system dir/mame2003-plus/

Additionally, the 'enabled cheats' core option needs to be turned on. This option is is called: mame2003-cheats = "enabled"

Mouse/Trackball/Analog Controller support

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 support

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 devices

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 games

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.

See also

Last update: 2024-04-19