whatisgithub

What is mame?

mamedev/mame — explained in plain English

Analysis updated 2026-06-24

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

In one sentence

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

What do people build with it?

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.

What is it built with?

C++

How does it compare?

mamedev/mamestenzek/duckstationarthursonzogni/ftxui
Stars10,13810,14010,120
LanguageC++C++C++
Setup difficultyhardmoderatemoderate
Complexity4/52/53/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get 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.

So what is it?

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?

Frequently asked questions

What is mame?

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.

What language is mame written in?

Mainly C++. The stack also includes C++.

What license does mame use?

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.

How hard is mame to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is mame for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.