Introduction
MAME preserves decades of computing and arcade history by emulating the original hardware as accurately as possible. Rather than reimplementing games, MAME faithfully reproduces the CPUs, sound chips, and video hardware of thousands of machines, allowing original software to run unmodified.
What MAME Does
- Emulates over 40,000 individual arcade machines and computing systems
- Reproduces original hardware at the transistor and cycle-accurate level
- Supports arcade boards, home consoles, home computers, calculators, and embedded systems
- Provides debugging tools for hardware analysis and software archaeology
- Includes a built-in frontend with input mapping, save states, and recording
Architecture Overview
MAME is written in C++ with a modular driver architecture. Each emulated machine is defined by a driver that wires together emulated CPU cores, memory maps, video and audio chips, and I/O devices. The emulation loop executes each component in lock-step, synchronized by a virtual clock. A hardware abstraction layer handles host-side rendering (via BGFX or OpenGL), audio output, and input devices. The driver system allows new machines to be added by composing existing chip emulations.
Self-Hosting & Configuration
- Available in most Linux distribution package managers or as pre-built binaries for Windows and macOS
- Build from source with make on Linux or the provided Visual Studio solution on Windows
- Configure input mappings, video output, and audio settings via the built-in UI or mame.ini
- ROM files must be sourced separately and placed in the configured rompath directory
- Artwork, samples, and CHD disk images are optional components for enhanced accuracy
Key Features
- Cycle-accurate emulation prioritizes correctness over speed for authentic reproduction
- Modular chip library allows new systems to be added by reusing existing CPU and peripheral cores
- Built-in Lua scripting engine for automation, testing, and custom tool development
- Debugger with CPU stepping, memory inspection, and breakpoint support
- Active development with monthly releases and contributions from hundreds of developers
Comparison with Similar Tools
- RetroArch — a frontend for multiple emulator cores; MAME is a standalone emulator with its own driver framework
- PCSX2/Dolphin — specialize in single console families; MAME covers thousands of diverse platforms
- DOSBox — focused on IBM PC and DOS compatibility; MAME emulates the actual hardware of many more platforms
- HBMAME — a MAME fork with gameplay hacks; MAME prioritizes unmodified accuracy over convenience
FAQ
Q: Is MAME legal to use? A: MAME itself is open source and legal. ROM files are copyrighted and must be obtained from legal sources.
Q: Why does MAME prioritize accuracy over speed? A: Accurate emulation ensures software runs exactly as on original hardware, which is critical for preservation.
Q: Can I play games with MAME? A: Yes. While preservation is the primary goal, MAME fully supports playing emulated games with configurable controls.
Q: How often is MAME updated? A: MAME releases a new version monthly, adding new machines and improving existing emulation.