MAME 2003-Plus (also referred to as MAME 2003+ and mame2003-plus) is a libretro multi-arcade system emulator core which prioritizes 1) usability and frontend integration, 2) performance, and 3) compatibility across the range of libretro-supported platforms including mobile devices, single board computers, and consoles. MAME 2003-Plus is part of a long tradition in arcade emulation of producing platform-specific and performance-optimized MAME builds.
Why is it called Plus?
Unlike the other 'historic' libretro MAME cores which remain fixed at one MAME version, MAME 2003-Plus is actively maintained and has to date added support for hundreds of new games along with dozens of new features.
MAME 2003-Plus is part of a lineage of codebase forks and ports: this core was forked from MAME 2003, which is itself derived from Xmame 0.78, the X11/Unix port of MAME 0.78.
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."
Some 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 romset zips have been installed:
/libretro content dir/blitz/blitz.chd
Building romsets for MAME 2003-Plus¶
MAME 2003-Plus began with the game drivers from MAME 0.78, meaning that 95% or more of MAME 0.78 romsets will work as-is in MAME 2003-Plus, where they immediately benefit from its bugfixes and other improvements. In order to play the new games and games which received ROM updates in MAME 2003-Plus, you will need to find or build MAME 2003-Plus romsets.
What is a romset?
Arcade games are packaged as zip files, most of which are composed of more than one individual 'ROM' files. That is why some resources inaccurately refer to an individual arcade game as a ROM (like people use to describe a zipped game cartridge ROM) while other resources refer to an individual game as a ROM set, ROMset, or romset.
MAME 2003-Plus has the ability to generate an XML "DAT" file directly from the MAME menu.
Step 1: Obtaining an XML DAT¶
DAT files describe the exact ROM contents that the emulator needs including filenames, file sizes, and checksums to verify contents are not incorrect or corrupt. mame2003-plus has the ability to generate an XML "DAT" file from the MAME Menu. You can also access the MAME menu by turning it on as a core option, selecting Generate XML DAT and then disabing the menu as a core option.
Step 2: Finding a source for ROMs¶
In order to build a complete MAME 2003-Plus collection, the ingredients are:
- A complete MAME 0.193 or later romset collection
- A complete MAME 0.193 or later "rollback" romset collection
- MAME 0.78 CHD collection
- The NeoGeo UniBIOS 3.3, freely available at http://unibios.free.fr/
Step 3: Building MAME 2003-Plus romsets¶
Refer to Validating, Rebuilding, and Filtering ROM Collections for details on how to configure ClrMamePro to use your sources as "rebuild" folders.
We recommend the Full Non-Merged format, where each romset zip files includes all the files needed to run each game, including any ROMs from 'parent' ROM sets and BIOS sets. To configure ClrMamePro to validate or rebuild a Full Non-Merged collection, use "Non-Merged" mode and disable "Separate BIOS Sets" from the "Advanced" menu in both ClrMamePro's Rebuild and Scanner menus.
A complete Full Non-Merged romset collection with CHDs and Samples only requires approximately 6% more storage space than the Split format romsets that are also sometimes used to structure arcade romsets. MAME 2003-Plus can read Split, TorrentZipped romsets, but the RetroArch playlist scanner only supports Full Non-Merged, TorrentZipped romsets for MAME 2003-Plus.
Recommended ClrMamePro settings¶
ClrMamePro remains the most popular tool for rebuilding MAME romsets, at least for now. That said, ClrMamePro is focused on supporting more recent MAME versions so there are at least two things to know if you are using ClrMamePro to generate a MAME 2003-Plus set:
- If you are scanning CHDs, go to
CHDMantab and change
Req. CHD Versionto
- If you are using the suggested setting of
Disable Separate BIOS Setsthen ClrMamePro will report the BIOS romset files as missing even though you told the program you don't want them. mame2003-plus incorporates 15 different kinds of BIOS romsets, so it is normal to see a ClrMamePro message like this after a clean and complete scan:
You are missing 15 of 4831 known mame2003-plus.xml sets (+ BIOS sets)
MAME 2003-Plus uses exactly the same MAME 0.78 CHDs (CHD v3) as MAME 2003.
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.
Input system, controls, and options¶
mame2003-plus emulates thousands of games, many of which have unique control layouts. These games are emulated on more than a thousand variations of arcade hardware. The purpose of the input system is to communicate input from the user's physical controls through the libretro frontend, the mame2003-plus emulator core, and into the emulated game itself.
No system of default input mappings can address the full range of emulated games and supported controls. Some degree of per-game customization should ways be expected. However, to the extent possible it is also within the purpose of the MAME 2003-Plus input system to attempt to provide predictable and meaningful defaults for input across this wide range.
Default RetroPad Layouts¶
|The Classic Gamepad is based on mainline MAME's default Xbox 360 controller layout and is also likely to suit DualShock or SNES-style gamepads.
|The Modern Fightstick layout is the fight stick and pad layout popularized by Street Fighter IV and assumes an 8+ button controller. Gamepad can also serve as an alternative Xbox/PSX-style layout for Street Fighter 2.
For arcade control panels, Modern Fightstick can be mapped in this way:
|6-button is a layout intended for SNES-type RetroPad controls as well as 6-button arcade panels arcade panels that are mapped like this:
|8-button is a layout intended for an arcade panel that is configured like this
mame_keyboard sets the core to process keyboard input directly through the legacy "MAME" keyboard interface. Use this input mode only if your input device is seen as a keyboard, including some arcade control panel hardware.
Mouse and trackball support¶
MAME 2003-Plus has support for multiple mice or touch devices in games that support trackballs, etc. MAME 2003-Plus 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.
Pointer, trackpad, touchscreen support¶
Absolute pointer devices are supported, but need to be turned on via the corresponding core option.
Because MAME 2003-Plus does not yet implement the libretro lightgun API, the core currently supports lightguns only if they are configured to emulate a mouse.
2-player dial and spinner devices¶
2-player spinner and dial devices can be represented as 1 device with 2 axes. MAME 2003-Plus 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
mame2003-plus-dialsharexy = "enabled"
Enabling this option will disable standard mouse support.
Analog controller support¶
Currently MAME 2003-Plus only supports analog controls in RetroArch by virtue of the fact that RetroArch passes on some analog input data to the core regardless of whether the core has implemented the analog interface. It is out-of-spec behavior and it also doesn’t encompass the full analog functionality of the libretro analog controls API.
4-way joystick simulation¶
4-way joysticks are an essential aspect of the gameplay for many iconic arcade titles including games like Donkey Kong, Pac-Man, and Q-Bert. Because modern joysticks generally use 8-way designs, it is usually impossible to play these games well without special hardware. MAME 2003-Plus includes a core option to simulate 4-way joysticks. When enabled, this logic analyzes input from 8-way digital joysticks in order to render its position as if the joystick had a 4-way design. This simulation is not the same as using a real 4-way joystick, but it can make a significant improvement to playability.
Content-aware control names¶
In the same way that content-aware core options only appear when they are relevant to the current game, MAME 2003-Plus has added support for content-aware control names. In other words, when remapping Street Fighter 2 controls, the libretro frontend can display the control names that were printed on the real arcade control panel like
Strong Punch and
Forward Kick instead of a generic labels like
Button 2, etc.
Because support for control names is relatively new and is derived from the third-party controls.dat project, control names need to be verified by a human being before they are activated. As of end end of 2018, dozens of games have these active control names, but hundreds more need to be double-checked before being enabled. Coders, and users who are willing to learn basic github commands, are invited to join in this effort.
Other key features¶
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 a
samples subdirectory within
/libretro system dir/mame2003-plus/.
Alternate CD soundtrack support
MAME 2003-Plus also supports alternate soundtracks for several popular arcade titles that were also released in other formats with high quality audio soundtracks. Alternate soundtracks are supported for Double Dragon, Final Fight, Mortal Kombat, Michael Jackson’s Moonwalker, NBA Jam, and Out Run.
Some games require backdrop artwork files in order to be fully emulated. Because RetroArch, the reference libretro frontend, does not yet incorporate support for so-called "backdrop" artwork, the MAME 2003-Plus github repository includes a folder of high-resolution backdrop artwork that is compatible with the core's built-in artwork display system. These artwork
zip files should be placed within
/libretro system dir/mame2003-plus/artwork.
"Armor Attack" backdrop artwork pack prepared by UDB23
Run Ahead input lag reduction¶
This core supports the RetroArch "Run Ahead" input latency reduction feature when Run Ahead is set to
Second Instance, but as of the end of 2018 there are known issues preventing Run Ahead from functioning properly and a bounty fundraiser to fix them.
The simplest way to access the "MAME menu" is by enabling it in the core options. If your input mode is set to allow input to the
mame_keyboard interface, you can also enter the menu by pressing the
Many arcade games have hardware switches for arcade owners to modify certain parameters which can be adjusted by accessing the MAME menu and selecting the 'Dip Switches' option. Dip switches often controlled features like free play (no coins needed), difficulty level, and cocktail table cabinet rotation mode.
For games where dip switches are not available directly within the MAME menu, MAME 2003-Plus the core can often access a game's internal servic menus to set options by pressing
F2 with a keyboard while
simultaneous input mode is enabled.
The hiscore.dat is compiled into MAME 2003-Plus and then spawned into
/libretro system dir/mame2003-plus/ the first time the core is run. Users do not need to install the hiscore.dat themselves. From then on, users can modify or replace this file with their own custom DAT if they choose. When high scores are saved, they are either stored as NVRAM data in
libretro system dir/mame2003-plus/nvram/ or as hiscore data in:
libretro system dir/mame2003-plus/hi/
MAME 2003-Plus supports the MAME cheat engine, allowing you to use the MAME menu to enable various in-game cheats. To activate these, there is a necessary supplementary file called
cheat.dat. This file can be downloaded from the MAME 2003-Plus 'metadata' repository. Place
libretro system dir/mame2003-plus/.
MAME 2003-Plus supports the use of the history.dat file, which displays background information about many games from within the MAME Menu. This file can be downloaded from the MAME 2003-Plus 'metadata' repository. Place
libretro system dir/mame2003-plus/.
LED output system¶
As of late 2018, MAME 2003-Plus incorporates preliminary support for the libretro LED lighting output system. Documentation is yet to be written on this topic.
Core-generated content is placed in sub-directories within
/libretro savefile dir/mame2003-plus/:
1 2 3 4 5
/libretro savefile dir/mame2003-plus/diff/ /libretro savefile dir/mame2003-plus/nvram/ /libretro savefile dir/mame2003-plus/hi/ /libretro savefile dir/mame2003-plus/cfg/ /libretro savefile dir/mame2003-plus/memcard/
Restart core indicates that the core must be restarted in order for changes to that option to take effect.
Content-aware core options
Because MAME 2003-Plus supports more than 4,000 games, there are a number of core options which only apply to a subset of its library. For example, there are several options to configure vector displays which have no effect for games with any other kind of display. MAME 2003-Plus only presents core options to the frontend that are relevant to the game that is currently loaded In other words, the vector options only appear when a vector game is currently loaded.
|4-way joystick emulation on 8-way joysticks||See 4-way joystick simulation section of this doc.|
|Mouse Device||Set mouse device input to be read either from a mouse, a pointer (pointer, trackpad, touchscreen), or to be disabled.|
|Show Lightgun crosshair||Toggle crosshair visibilty for lightgun games.|
|Skip Disclaimer||Skip the copyright disclaimer message.|
|Skip Warnings||Advanced feature: changing from the default is not recommended in most cases. Skip any driver warnings about emulation quality.|
|Display MAME menu||Enable this core option to display the core's MAME Menu and then disable it when you have finished using the MAME Menu.|
|Specify Neo Geo BIOS (Restart core)||Manually specify your choice of Neo Geo BIOS from among those supported.|
|Specify Sega ST-V BIOS (Restart core)||Manually specify your choice of ST-V BIOS from among those supported.|
|Use CD soundtrack (Restart core)||See Alternate CD soundtrack support in the Audio samples section of this doc.|
|Share 2 player dial controls across one X/Y device||See the 2-player dial and spinner devices section of this doc.|
|Dual joystick mode||Note: This option may affect stateless netplay between two users with the option set differently. Reassigns the Player 2 joystick as a second joystick for Player 1. This is intended for emulating cabints with Dual Joystick designs.|
|Map right analog stick as buttons||Provides an alternative mapping for users with unused right analog sticks.|
|Vector resolution multiplier (Restart core)||Attempts to create a higher quality emulation of vector display hardware by upscaling the emulated display to a higher resolution.|
|Vector antialiasing||Enables or disables the anti-aliasing for vector games.|
|Vector beam width||Sets the emulated width of the vector beam in pixels. This setting is only effective when anti-aliasing is enabled.|
|Vector translucency||Emulates the partial transparency of vector display hardware.|
|Vector flicker||Emulates the flicker of vector display hardware.|
|Vector intensity||Emulates the variable intensity of vector display hardware.|
|DCS Speedhack||Advanced feature: changing from the default is not recommended in most cases. Use so-called "speed hacks" to improve the performance of DCS sound hardware.|
|Locate system files within a subfolder||For historical reasons, MAME 2003-Plus reads system files within a subfolder named
|Locate save files within a subfolder||For historical reasons, MAME 2003-Plus saves files within a subfolder named
|TATE Mode||From the Japanese 縦 (ta-te) meaning "vertical", TATE Mode renders vertical games lengthwise along the display. This mode is intended for use with rotating monitors and portable devices that can make the full use of their viewable area for games which used vertical monitors.|
|Brightness||Simple brightness adjustment.|
|Gamma correction||Simple gamma adjustment.|
|Frameskip||Advanced feature: changing from the default is not recommended in most cases.|
|Sample Rate (KHz)||Advanced feature: changing from the default is not recommended in most cases.|
|Input interface||Advanced feature: changing from the default is not recommended in most cases. retropad, the default option, processes input via the libretro retropad abstraction, including from any keyboard which are bound to the retropad. The keyboard setting only sends keyboard input directly to the core, ignoring the retropad. The simultaneous setting sends inputs both ways at the same time and is not recommended. This setting exists for historical reasons.|
|Legacy Remapping||Note: Using the legacy MAME control remapper may affect stateless netplay between two users with their MAME remappings set differently.|
|Display artwork (Restart core)||Display artwork packs from within the core, particularly "backdrop" artwork.|
|Artwork resolution multiplier (Restart core)||Upscales games with artwork backs so that the artwork can be displayed at a higher resolution.|
|NVRAM Bootstraps||Advanced feature: changing from the default is not recommended in most cases.|
|Dip switch/Cheat input ports||Advanced feature: changing from the default is not recommended in most cases. Activates a few specific cheats that manipulate the dipswitch input system.|
|Bypass audio skew (Restart core)||Advanced feature: changing from the default is not recommended in most cases. Bypass the frontend's "audio skew" feature which attempts to adjust the audio for games which displayed at framerates not native to modern displays.|