MAME (an acronym of Multiple Arcade Machine Emulator) is an emulator application designed to recreate the hardware of arcade game systems in software on modern personal computers and other platforms. The intention is to preserve gaming history by 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 "a nice side effect".
The first public MAME release (0.1) was on February 5, 1997, by Nicola Salmoria. The emulator now supports over seven thousand unique games and ten thousand actual ROM image sets, though not all of the supported games are playable. The project is currently maintained by MESS project leader, Miodrag Milanovic.
The original program code and graphics and sound data need to be present so that the game can be emulated. In most arcade machines, the data is stored in read-only memory chips (ROMs), although other devices such as cassette tapes, floppy disks, hard disks, laserdiscs, and compact discs are also used.
The contents of most of these devices can be copied to computer files, in a process called "dumping". The resulting files are often generically called ROM images or ROMs regardless of the kind of storage they came from. A game usually consists of multiple ROM and PAL images; these are collectively stored inside a single ZIP file, constituting a ROM set.
In addition to the "parent" ROM set (usually chosen as the most recent "World" version of the game), games may have "clone" ROM sets with different program code, different language text intended for different markets etc. For example, Street Fighter II Turbo is considered a variant of Street Fighter II Champion Edition. System boards like the Neo Geo that have ROMs shared between multiple games require the ROMs to be stored in "BIOS" ROM sets and named appropriately.
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.
A number of games use sound chips that have not yet been emulated successfully. These games require sound samples in WAV file format for sound emulation.
MAME additionally supports artwork files in PNG format for bezel and overlay graphics.
For a while, the official Linux build of MAME was known as XMAME. While you can download still find distributions of XMAME for download, it is no longer being maintained, and has been replaced by SDLMAME as the official cross-platform variety of MAME since SDL is supported on a number of platforms including Linux, Windows, and Mac. There are several sources of SDLMAME including the official homepage, the Ubuntu distribution, the Debian repository, and Fedora RPMs.
All versions of SDLMAME are strictly command line driven, but there are numerous front-ends that are available for use with SDLMAME including the cross platform "MAME Plus! GUI" (linux version is Qt4 based), Qt4 based QMC2, Java based XMAME GUI, KDE based KXMAME, and Gnome based Gnome Video Arcade.