Skip to content

MAME

The arcade emulator that became a record of the machines

Nicola Salmoria released the Multiple Arcade Machine Emulator in February 1997 by merging his single-game arcade emulators. It aims to document how each machine works, not just to play its games. It absorbed the computer and console emulator MESS in 2015 and became free software under the BSD and GPL licences in 2016.

In July 1997 Edge called MAME “the stuff of dreams for retro fans”. It was a free program that ran “more than 100 arcade games from their original code, dumped straight from the coin-op ROM boards”, almost all of them “perfectly at their exact original speed on a super-humble 486/66”. Nearly thirty years later new versions still appear every month or so. MAME has grown from an arcade emulator into a working description of tens of thousands of machines: arcade boards, home computers, consoles, handhelds and calculators. Its developers say its main purpose is not playing games but documenting how the machines work.

Fast facts

  • First release: 5 February 1997.
  • Founder: Nicola Salmoria, an Italian programmer.
  • Name: Multiple Arcade Machine Emulator.
  • Written in: C, with its source code public from the start.
  • MESS merged in: version 0.162, 27 May 2015.
  • Licence: free software since March 2016. Most files are under the 3-clause BSD licence, and the project as a whole under the GNU GPL, version 2 or later.

From single games to one emulator

Edge’s 2002 history of the project says Salmoria began in 1996 by writing separate emulators for single arcade games on the PC. The early ones included Mr. Do!, Pengo and Lady Bug, with one program that ran several versions of Pac-Man. By January 1997 he had decided to combine them into a single program that could run many games. The first MAME appeared on 5 February 1997.

The design is what let it grow. Arcade manufacturers reused the same processors and sound chips across many boards, so a processor emulated once could serve every game built around it. Each board then needs a driver that describes how its parts are wired together.

Within weeks the project had to carry on without its founder. Edge reported in July 1997 that Salmoria had been “forced to join the Italian army for ten months of National Service” and had “left the emulator in the hands of a colleague”. Later accounts name the colleague as Mirko Buffoni. Because the program was “written in C with source code freely available”, Edge noted, it was ported to the Mac, Unix and the Amiga “within a day or two” of each new PC version.

Growth

By August 1998 Edge counted more than 590 supported ROM sets, with Salmoria back in charge. Its feature explained the limit of the time: MAME emulated “a number of hardware configurations, from Z80 to 68000 and beyond, although only CISC-based chipsets are supported at present”. Games built on RISC processors were still too much for a home PC. Because MAME emulated the whole board, it also emulated the settings arcade operators could change. In Bomb Jack, Edge pointed out, a player could change how fiercely the bird chased Jack and how often the bonus coins appeared.

By October 2002 the count had reached 3,469 ROM sets, or 1,959 distinct games. The larger number counts every regional version, revision and bootleg of a game separately. MAME keeps one “parent” set, usually the latest bug-fixed world version, and “clone” sets that hold only the chips that differ from it. Its documentation explains why sets still change between versions: early dumps missed some chips, such as colour palette data; bad dumps had to be redone; and some games were at first listed as genuine when they were bootlegs, or the other way round.

MAME also needs more than ROM images. Hard discs, CD-ROMs and laserdiscs are stored as CHD (“Compressed Hunks of Data”) files. A few old games whose sound came from analogue circuits used recorded samples instead. Edge noted this in 1997, where “the custom sound boards of some games can’t be emulated properly”.

Salmoria handed over as coordinator in 2003. David Haywood led the project from May 2003, Aaron Giles from April 2005 to April 2011, then Angelo Salese, and Miodrag Milanovic from 2012.

Documentation first

MAME’s developers describe its purpose this way: “MAME’s main purpose is to be a reference to the inner workings of the emulated machines. This is done both for educational purposes and for preservation purposes, in order to prevent historical software from disappearing forever once the hardware it runs on stops working.”

That aim has had practical results. Capcom’s CPS-2 boards kept their decryption keys in battery-powered memory, so a board whose battery ran flat stopped working. The scheme was fully worked out in 2007, when MAME’s programmers found that the keys were not random, and collectors can now revive dead boards (see arcade hardware). MAME’s drivers are also cited as a technical reference: its source file for the Williams 6809 boards records which games used the blitter chip.

Accuracy costs speed, and MAME accepts that cost. One result is that older versions live on for low-powered computers. The RetroArch project still offers a MAME based on version 0.78 of 2003, recommended for the Raspberry Pi, and it needs ROM sets made for exactly that version (see RetroArch).

Arguments about ROMs

Edge summed up the legal position in 2002: “It is completely legal to create an emulation program but there’s still a grey area when it comes to playing a game using one.” In 2002 Edge reported that the fan site mame.dk had been “threatened with legal action from a ‘copyright holder’” and had deleted more than 3,000 ROMs, leaving it “only an information repository”. A version of MAME for Microsoft’s Xbox had been taken down too, because it was built with an official Xbox development kit. The writer Stuart Campbell, who had written Edge’s first MAME article in 1997, told the magazine MAME was “by far the greatest and most important piece of videogaming code ever written”, and that “in an industry desperate to pretend that its history never happened … MAME is a beacon”.

MAME came up again in 2018, when Twin Galaxies ruled that recordings of Billy Mitchell’s Donkey Kong scores had not come from an original arcade board. It said it could not prove that MAME had been used, but it removed his scores.

MESS and the move to free software

A sister project, MESS (Multi Emulator Super System), used MAME’s code to emulate home computers and consoles. With version 0.162, released on 27 May 2015, “the MAME and MESS projects have been combined into a single emulator”. The combined program runs arcade machines, computers, consoles and handhelds from the same code. A JavaScript port of MESS had already put old computers inside the web browser at the Internet Archive in 2013.

Until then MAME’s source had been public but under its own licence, which barred selling it. On 4 March 2016 the team announced that “after 19 years, MAME is now Free and Open Source Software”. Its developers had spent ten months contacting past contributors. Over 90 per cent of the files, including the core, became available under the 3-clause BSD licence, and the project as a whole under the GNU General Public License, version 2 or later. The announcement added that the name remained “a registered trademark of Nicola Salmoria”.

Sources

  • Edge issue 47, July 1997, Retroview, Bomb Jack: MAME as a free emulator of “more than 100” games, speed on a 486/66, samples, operator settings, source code in C and quick ports, Salmoria’s national service, version 0.22.
  • Edge issue 61, August 1998, MAME feature: “over 590 arcade ROMs”, Z80 to 68000, no RISC yet, Bomb Jack operator settings. (Edge describes Salmoria as “US-based”; its October 2002 feature correctly calls him Italian.)
  • Edge issue 115, October 2002, “The MAME game”: the history box (single-game emulators from 1996, the first titles, the release on 5 February 1997, the legal position), 3,469 ROM sets or 1,959 games, the mame.dk takedown, Xbox MAME, and Stuart Campbell’s comments.
  • MAMEdev, “About MAME” (web, secondary): the statement of purpose and the current licence. https://www.mamedev.org/about.html
  • MAMEdev, “MAME is now Free and Open Source Software”, 4 March 2016 (web, secondary). https://www.mamedev.org/?p=422
  • MAMEdev, “Previous Releases” (web, secondary): release dates, including 0.162 on 27 May 2015, and roughly monthly releases up to 0.288 in May 2026. https://www.mamedev.org/oldrel.html
  • MAME 0.162 release notes, “whatsnew_0162.txt” (web, secondary): “As of 0.162 the MAME and MESS projects have been combined into a single emulator.” https://www.mamedev.org/releases/whatsnew_0162.txt
  • MAME documentation, “About ROMs and Sets” (web, secondary): parent and clone sets, why sets change, CHD files. https://docs.mamedev.org/usingmame/aboutromsets.html
  • Libretro documentation, “MAME 2003” (web, secondary): the core derived from MAME 0.78, the need for matching ROM sets, and its use on the Raspberry Pi. https://docs.libretro.com/library/mame_2003/
  • Wikipedia, “MAME” (accessed September 2026) (web, secondary): Mirko Buffoni, the later coordinators and their dates, the pre-2016 non-commercial licence, and the project’s count of more than 32,000 systems. https://en.wikipedia.org/wiki/MAME

See also

Checked. Verified against primary sources and signed off by a person.