MAME

related topics
{system, computer, user}
{math, number, function}
{game, team, player}
{law, state, case}
{album, band, music}
{@card@, make, design}
{work, book, publish}
{company, market, business}
{theory, work, human}
{language, word, form}

MAME is a software application designed to emulate the hardware of arcade game systems 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"[2]. 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.140, released October 21, 2010, the emulator now supports 4510 unique games and 9012 actual ROM image sets. However, not all of the games in MAME are currently playable; 1391 ROM sets are marked as not working in the current version, and 53 are not actual games but BIOS ROM sets. The project is currently coordinated by Aaron Giles.

Contents

Design

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, contrary to an emulator such as PocketNES, 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 1 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.

Full article ▸

related documents
IBM System i
Computer file
Hypertext Transfer Protocol
Microkernel
Bulletin board system
Digital Imaging and Communications in Medicine
High-Level Data Link Control
SECAM
Intel 80486
Device driver
Insulated-gate bipolar transistor
DEC Alpha
Windows Media Audio
Magnetic core memory
Video compression
Trillian (software)
MVS
NAPLPS
Screensaver
Router
Software performance testing
Public land mobile network
Spread spectrum
Xerox Star
Graphical Environment Manager
Video game console
SIMD
Communications protocol
Transaction Processing Facility
Amateur radio