Emulator Giants - MAME

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 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.125, released May 5, 2008, the emulator now supports 3753 unique games and 7076 actual ROM image sets and is growing all the time. However, not all of the games in MAME are currently playable; 879 ROM sets are marked as not working in the current version, and 35 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.

Emulation philosophy

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.

User interface

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.



Need to say something ? Spell it out :)