MAME is an emulator application designed to recreate the hardware of arcade game systems in software, with the intent of preserving gaming history and preventing vintage games from being lost or forgotten. The aim of MAME is to be a reference to the inner workings of the emulated arcade machines; the ability to actually play the games is considered as "a nice side effect" . The name is an acronym for Multiple Arcade Machine Emulator.
The first public MAME release (0.1) was on February 5, 1997, by Nicola Salmoria. As of version 0.127, released Aug 19 2008, the emulator now supports 3827 unique games and 7185 actual ROM image sets and is growing all the time. However, not all of the games in MAME are currently playable; 930 ROM sets are marked as not working in the current version, and 38 are not actual games but BIOS ROM sets. The project is currently coordinated by Aaron Giles.
The MAME core coordinates the emulation of several elements at the same time. These elements replicate the behavior of the hardware present in the original arcade machines. MAME can emulate many different central processing units (CPUs), both in number or types, including processors, audio and video specific chips, integrated circuits, microcontrollers, etc., including the needed elements for them to communicate together such as memory regions, RAM, data buses, peripherals, storage devices, etc. These elements are virtualized so MAME acts as a software layer between the original program of the game, and the platform MAME runs on.
Individual arcade systems are specified by drivers which take the form of C macros. These drivers specify the individual components to be emulated and how they communicate with each other.
The stated aim of the project is to document hardware, and so MAME takes a somewhat purist view of emulation, prohibiting programming hacks that might make a game run improperly or run faster at the expense of emulation accuracy (see UltraHLE, a project aimed to run games at a playable speed). In MAME every emulated component is replicated down to the smallest level of individual registers and instructions. Consequently, MAME emulation is very accurate (in many cases pixel- and sample-accurate), but system requirements can be high. Since MAME runs mostly older games, a large majority of the games run well on a 2 GHz PC. More modern arcade machines are based on fast pipelined RISC processors, math DSPs, and other devices which are difficult to emulate efficiently. These systems may not run quickly even on the most modern systems available.
The MAME team has not diverged from this purist philosophy to take advantage of 3D hardware available on PCs today. It is a common but incorrect assumption that performance problems are due to some games' use of 3D graphics. However, even with graphics disabled, games using RISC processors and other modern hardware are not emulated any faster. Thus taking advantage of 3D hardware would not speed these games up significantly. In addition, using 3D hardware would make it difficult to guarantee identical output between different brands of cards, or even revisions of drivers on the same card, which goes against the MAME philosophy. Consistency of output across platforms is very important to the MAME team.
There are several types of MAME release depending on how frequently users wish to update and the level of code maturity each user feels comfortable running:
MAME has been ported to many different platforms. The X11 port for Unix-like systems, named XMAME, is currently undergoing a major rewrite and will not have any public releases in the near future. The SDL port is SDLMAME The discontinued Mac OS X port MacMAME has been replaced by another port for that platform, MAME OS X. In addition, different versions of MAME have been ported to many other computers, PDAs, digital cameras and game consoles. Most of these ports, however, are based on very old versions of MAME because current versions would run very slow due to being more accurate, and many of them are not under active development anymore.
To play a particular game, MAME requires a set of files called a ROM set. They contain all the data from the original machine; for legal reasons, however, MAME itself does not include any of these files.
Some arcade machines use analog hardware, including laserdiscs and magnetic tape, to store and play back audio/video data such as soundtracks and cinematics. This data must be ripped and encoded into digital files that can be read by MAME, ordinarily involving lossy compression. Consequently, the digital copy is not a perfect reproduction of the analog source.
MAME uses two different file types for storing ROMs depending on the original medium:
A single supported game is usually referred to as a ROM set. Usually each game will consist of multiple ROM files, each of which represents a single device (usually ROM, but sometimes other devices such as PALs). The MAME developers assign each ROM set an 8-letter name for identification as well as a description associated with that 8-letter name. Examples:
Individual ROM files are often named after labels found on the ROM chips and the position they are located on the board in the format "label.position". Sega for example use a standard labeling scheme for all the ROMs found on their arcade boards giving each unique ROM chip a unique label. "mpr12380.b2" is a ROM from the Golden Axe romset. This implies that the ROM was labeled "mpr12380" and located in position "b2" on the PCB. By using such a naming scheme it makes it easy to use MAME to identify, and often help repair, non-working PCBs.
The 8-letter identification tags are less standardized and usually left to the discretion of individual developers. Although some standards do exist, the descriptive long names often follow naming conventions set by the original game manufacturers. For example, Sunset Riders by Konami:
Konami gave each revision of their later games a very specific and clearly visible version number, from the mid 90s onwards. As these represent an easy way to identify each version of the game, including the region in which it was available and the revision of the code, MAME uses this information to identify each set. UAA is American revision A, while ABD is Asian revision D. For companies where it is less clear sets are often simply labeled as "(set 1)" and "(set 2)". Unreleased games are labeled as "(Prototype)" and non-original versions of games are labeled as "(Bootleg)"
Although the main MAME program was once only made available as a command-line application for Microsoft Windows and DOS, there has been a minimalist GUI added to version .118 of the Windows distribution. In addition to the standard GUI there are several popular frontends which allow MAME to be launched from a more familiar graphical environment as well as providing facilities such as auditing ROMs. Additionally, the front ends make available more information about the games themselves, contributing significantly to the experience, such as history information and images of the arcade cabinets.
Some frontends have the sole purpose to launch games and hide the operating system. These frontends are generally used in MAME arcade cabinets, to enhance the illusion that the cabinet is a real arcade machine.
Owning and distributing MAME itself is legal in most countries, as it is merely an emulator. Some companies (notably Sony and Nintendo) have attempted in court to prevent emulators from being sold, but they have been ultimately unsuccessful. As yet, no legal action has been brought against the MAME team.
The situation regarding ROM images of games is less clear-cut. Most arcade games are still covered by copyright.
Some copyright holders have been indecisive regarding making licensed MAME ROMs available to the public. For example, in 2003 Atari made MAME-compatible ROMs for 27 of its arcade games available through the internet site Star ROMs. However, a status check in March 2006 revealed a reversal of that decision, and the ROMs are no longer being sold there.
Other copyright holders have released games which are no longer commercially viable free of charge to the public. Games including Alien Arena, Gridlee, Robby Roto, Teeter Torture and a number of early games by Exidy have been released by their copyright holders under non-commercial licenses. These games may be downloaded legally from the official MAME web site. As of the 0.125u1 release, Gaelco's World Rally is supported and fully working thanks to the ROMs and protection data being made freely available for non-commercial use from their website.
While MAME is available at no cost, including its source code, it is not free software because commercial use and redistribution are prohibited. That is, its license does not meet the conditions of the Open Source Definition, nor is it "free software" as defined by the Free Software Foundation.
In particular, MAME may be redistributed in source or binary form, either modified or unmodified, but: "Redistributions may not be sold, nor may they be used in a commercial product or activity." The main goal of this is to prevent arcade operators from installing MAME cabinets and profiting from the works of the original manufacturers of the game.
Also, redistributions of modified versions (derivative works) must include the complete corresponding source code (similar to a copyleft).
There exist, however, a number of derivative versions that violate the license by not releasing the full and complete source code, including multiplayer builds that support the Kaillera server protocol, or others that add newer games.
MAME arcade cabinets are meant to provide the experience of an entire video arcade in one unit. They can come in many different flavors, such as upright cabinets which are the full-size cabinets many people are used to, cocktail cabinets which are similar to tables with a glass top that players look down on to play on, and bar-top machines which are miniature versions of the uprights.
Mame enthusiasts will either build their own cabinets from scratch or they will restore an old second hand cabinet with a computer at its central core in place of the original circuit boards. When constructing a cabinet in this fashion there are many considerations to be made on the parts and methods of connecting the internal computer components to the external joysticks pushbuttons, monitor and speakers.