explaingit

mamedev/mame

10,138C++Audience · developerComplexity · 4/5LicenseSetup · hard

TLDR

MAME is an open-source emulation framework that preserves old arcade machines, consoles, and vintage computers by accurately recreating their hardware in software so their original software can still run today.

Mindmap

mindmap
  root((repo))
    What it does
      Arcade emulation
      Console emulation
      Vintage computer support
    Scope
      Decades of hardware
      Large system database
      Since 1997
    Technical
      C++ codebase
      Cross-platform build
      BSD and GPL license
    Requirements
      ROM or disc images
      Legal hardware dump
    Use Cases
      Game preservation
      Historical research
      Retro gaming cabinet
    Build Options
      Linux and macOS make
      Windows MinGW
      Visual Studio files
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run classic arcade game ROMs from machines you legally own on a modern computer for preservation or study.

USE CASE 2

Build a retro gaming cabinet that runs MAME to play a large library of classic arcade and console titles.

USE CASE 3

Research the hardware behavior of a specific vintage computer or console by examining MAME's emulation code.

USE CASE 4

Study how obscure vintage electronics worked using MAME's accurate hardware documentation in software form.

Tech stack

C++

Getting it running

Difficulty · hard Time to first run · 1h+

Building from source requires a C++ toolchain and takes significant time, legal ROM files must be obtained separately from hardware you own.

Core files use BSD 3-clause, overall project is GPL v2 or later, free to use and share, but derivative works must also be open source.

In plain English

MAME is an emulation framework whose main purpose is preserving old software by documenting the hardware it originally ran on. The source code itself is the documentation: by writing software that accurately reproduces how old machines worked, the project keeps a record of their behavior that would otherwise be lost as the physical hardware ages and disappears. It originally focused on arcade games, which is where the name "Multiple Arcade Machine Emulator" came from, but it has since expanded to cover vintage home computers, video game consoles, calculators, and other electronic devices. In practice, MAME lets you run software from those older systems on a modern computer. If you have ROM files or disc images from old arcade machines or consoles you legally own, you can load them in MAME. The project maintains a large database of documented systems, and coverage spans several decades of hardware history. Building MAME from source requires a C++ compiler and some supporting libraries. On Linux and macOS the build process is a single terminal command. Windows users need a provided MinGW-based build environment, though Visual Studio project files can also be generated from the same toolchain. Pre-built binaries for common platforms are available from the official MAME website rather than through this repository. The project is open source and has been running since 1997. The core files use a three-clause BSD license, and the project as a whole is covered by the GPL version 2 or later due to contributions under other compatible licenses. MAME is a registered trademark, and use of the name requires permission from the trademark holder. Active development is tracked on GitHub, with separate bug tracking handled through the MAME Testers site.

Copy-paste prompts

Prompt 1
I have ROM files for a classic arcade machine I legally own. Walk me through setting up MAME on Linux to run them, including the correct folder structure.
Prompt 2
How do I build MAME from source on macOS? List the dependencies I need to install and the exact command to compile.
Prompt 3
I want to emulate a specific vintage home computer in MAME. How do I check if it is supported and what software images I need to find?
Prompt 4
Explain the difference between MAME's accuracy-first approach and faster emulators like RetroArch, when should I choose MAME over a faster alternative?
Open on GitHub → Explain another repo

← mamedev on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.