From LinuxReviews
Jump to navigationJump to search
MAME icon from Hannah Montana Linux
MAME icon from Hannah Montana Linux
The French version of All Points Bulletin running in MAME on GNU/Linux.
The French version of All Points Bulletin
running in MAME on GNU/Linux.
Original author(s)Nicola Salmoria
Developer(s)Nicola Salmoria and a huge list of contributors
Initial releaseFebruary 5, 1997; 24 years ago (1997-02-05)
Written inMostly C++ (some C and Python for drivers)
Operating systemMulti-platform (Linux, BSD, Windows, macoS, Android, Amiga)
TypeFull system emulator
LicenseGNU GPL v2 with BSD licensed parts

MAME (Multiple Arcade Machine Emulator) is a complete computer emulator for so many ancient computer systems it is hard to count. Most of those systems were used in something called "arcade machines". The "arcade machines" were special computers designed to play just one video game. MAME lets you play those kinds of games on a variety of modern hardware like computers and smartphones.

There were special venues called "Arcades" with rooms full of special "arcade machine" computers systems at the end of the 20th century. MAME is really good at emulating the hardware used in those systems so you can enjoy the software on them and re-creating the gaming experience you would get at the now long-gone "arcade" venues.

The movie Terminator 2: Judgment Day from 1991 has a scene that takes place in a "arcade" that somewhat accurately depicts what these venues looked like.

Features And Usability

MAME is, from a end-users perspective, a game launcher that lets you play a vast number of older arcade games on regular desktop and laptop computer hardware as well as smartphones, tablets and other devices MAME supports - assuming you have somehow managed to acquire a complete ROM-set for it. MAME does not come with any ROMs; it is utterly useless without them.

MAME supports more than 7,000 unique games and more than 10,0000 unique ROMs (many are just clones/variants of games).

MAME - Metal Slug 5.jpg
The classic arcade game Metal Slug 5 running in MAME on GNU/Linux

MAME can either be used as a stand-alone game launcher or as a game executor launched by a variety of third-party MAME front-ends like Retroarch, Mythgame, gnome-video-arcade, GXMame (not updated since 2003, so you may want to avoid that one) and QMC2. MAME will launch its game launcher interface if you start it with no arguments. Individual game ROMs can be launched by starting MAME with a ROM name as an argument (mame mslug2).

MAME 0.229 launcher showing APB All Points Bulletin cabinet.jpg
The MAME 0.229 launcher.

The MAME launcher has a pretty clunky non-intuitive interface. Navigating between its different sections can be done by pressing Tab ↹. Moving between games, or whatever you have selected in the list of sections in on the left-hand side, is done with the and arrow keys. You can press Enter to launch games.

You can simply type in the name of the ROM of a game you should like to play to search the really long list of games that are available.

MAME will, by default, save the machine state when you quit by pressing Esc. The games will conveniently re-launch where you left off the next time you start them.

The by-far most impressive part of the MAME experience is the shear number of systems it emulates with near-perfection. The number of systems it can emulate and ROMs it can run is vast; it really is quite impressive how far this project has gotten since its inception in the late 1990s.

The actual launcher interface MAME offers is overall usable, but it isn't all that great. There are many third party MAME launchers you can install and use if you really don't like it.

Verdict And Conclusion

MAME can not just provide hours of classic arcade gaming fun, there are so many games available that you could spend years trying to play trough all of them and still be far away from having tried them all.

Some of the games aren't all that, a few are outright boring. And the older ones have poor graphics. Still, there are quite a lot of gems among the vast number of games you can play with MAME. The Metal Slug series is absolutely worth a try.

All the major GNU/Linux distributions have MAME, and a number of front-ends for it, available in their standard repositories. It is totally worth installing it if you have time to enjoy playing classic arcade games. Installing MAME itself isn't a hassle, but you may have some slight problems acquiring the ROM sets since it is not entirely legal to download or share them.

MAME can be fun on mobile phones and tablets as well. There are several packages available for Android and iOS (though there are none available in the free F-Droid Android repository, which is a shame).

You don't have to miss out if you use other operating systems, there are MAME ports for good old MS-Dos, Amiga, macOS, Windows, *BSD and some even some obscure systems you probably never heard of.

Keys and Keyboard Shortcuts

The keys or gamepad buttons used in games can be configured globally in the launcher under Configure options ▸ General Inputs.

The most important default in-game keys and shortcuts you should be aware of are:

Tab ↹ Opens the Options/Configuration interface when you are in-game. You can the configure keyboard keys and joystick buttons, and other options, either globally or just for the game you are playing.
5 and 6 Inserts "coin" for player 1&2 respectively
1 Starts a game as player 1
2 Starts a game as player 2
ctrl Fire / joystick button 1
aalt Joystick button 2
space Joystick button 3
alt+↵ Enter Toggles full-screen/windowed mode

Running Games Full-Screen

Metal Slug 2 in MAME 0.229 with cabinet and artwork.jpg
Metal Slug 2 running in MAME w/artwork available.

MAME will run games full-screen by default unless you happen to have all the artwork installed (you can press alt+↵ Enter to switch between window/fullscreen). MAME will show you the original games cabinet, a picture of a CRT-like screen with borders and a very tiny small game screen with borders around if you happen to have the cabinet image files installed and configured. You can turn that off by pressing Tab ↹ in-game. Navigate down to Video Options, select Screen #0 and disable Bezels, Control Panels and Backdrops if you don't want those things shown on the game you are playing (there may be more or fewer options available depending on the game and what artwork you have).

Choosing And Acquiring The "Right" ROM-Set

MAME is no good without "ROMs". These are dumps of the original software on arcade machines and other computer hardware MAME can emulate.

There are rumors that complete ROM sets can be found on sites such as That site may or may not use a BitTorrent tracker with a invalid SSL certificate that won't work with newer qBittorrent versions (qBittorrent 4.3.4+). It may work with rTorrent if it is configured to ignore SSL certificates.

MAME ROMs tend to be available in two different ways that are, in turn, available in three different kind of packages. The two main types of ROMs you will encounter are:

  • "MAME x.yyy Software List ROMs"
  • "MAME 0.230 ROMs"

The "Software List ROMs" will have the ROM .zip files in subfolders and the "regular" ROM set will have all the .zip files in one huge folder.

The standard MAME program you get when you install MAME on GNU/Linux distributions will not work with "Software List" ROM sets. You can point MAME at a "Software List ROM" folder that has all the ROMs (in sub-folders) and try to make it understand that they are actually there but it won't, MAME will just insist that your ROMs can't be found.

The "regular" not "Software List" ROMs are the ones you want. (We do not know what, if anything, the "Software List" sets are for or why they exist; all we can say for sure is that MAME won't be able to launch games if you point it at a "Software List" set)

Both the regular ROMs and the "Software List" ROM sets are available in three different packages:

Ways ROM sets are packaged
Type Size in GB
The Difference
split 71.173 A "split" MAME ROM set is a set where the zip files containing "clones" of games are reduced to the files specific to the clone. The zip file containing the original game ("parent") has all the files required to run it, zip files with clones of it don't. They will only work if the zip file with the "parent" game is present.

Game .zip files in "split" sets do not contain the BIOS files required to use the them.

merged 68.877 A "merged" set has all clones of a game placed within the "parent" games .zip file. This saves a tiny amount of space compared to the "split" approach, and it reduced the number of files in the folder where the ROM files are stored.

Game .zip files in "merged" sets do not contain the BIOS files required to use the them.

non-merged 125.915 The "non-merged" ROM sets have a zip file for each game, including "parent" games and clones of them, and all the zip files contain everything needed to run the game. That includes BIOS files and files from the "parent" set if it is a clone.

The non-merged approach has one clear advantage: You can just copy from a "non-merged" ROM set onto a Android phone with MAME and it will just work. That is not the case with "split" or "merged" ROMs, you would have to copy the clone, the parent and the BIOS file(s) to get a clone game working on devices where you can't copy the entire ROM set due to storage restrictions or other limitations.

Which of the sets you acquire makes no difference if you plan on keeping the entire set around on a desktop or laptop computer with enough storage space, "split", "merged" and "non-merged" ROMs will all work fine with MAME (as long as they are regular sets, not "Software List" sets).

The much larger "non-merged" set is the set you want if you want to be able to copy .zip files with a few games you like onto a storage-space restricted device like a smartphone or a Raspberry Pi. You can figure out what additional .zip files would be required for a game if you go with "split" or "merged" sets, but it's a hassle. Going with the "non-merged" set is just a whole lot easier.


MAME 0.229 launcher showing Great 1000 Miles Rally flyer.jpg
The MAME 0.229 launcher showing the "Great 1000 Miles Rally" flyer.

You may also encounter a ROM set called "EXTRAs". This is an archive with artwork, flyers and things like that. The "EXTRAs" make front-ends look cool, and that's it. You don't need the "EXTRAs" to play the games.

The Flyers, Cabinet and Marquees images in the EXTRAs set are zipped into archives named, and marquees. The MAME launcher can be made aware that you have the flyers and cabinet images by adding flyers_directory, marquees_directory and cabinets_directory followed by a path to a directory (it's key value, not key=value in MAME configuration files) to $HOME/.mame/ini/ui.ini.

You can't just point MAME at the .zip files so you will need to manually extract the, and files to preferably separate directories (some of the third party launchers do let you can use the .zip files directly, MAME does not).

CHD sets

CHD files are disk image dumps from newer arcade systems with hard disk drives. A complete "merged" CHD set for MAME v0.23 is a whopping 544 GiB (The "Software List" sets are even larger at 2.4+ TiB). These sets are required to play some of the newer games MAME can run. You don't need them to play the majority of the games MAME can run, and there will be a ton of games you can enjoy without acquiring a CHD set, but you will need them if you want the "complete" MAME experience.


MAME was initially created by Italian software developer Nicola Salmoria to preserve Pac-Man games in the 1990s. He changed the name to MAME when he added support for several other games. There was a sort-of public release in 1996. The first public MAME version was released on February 5th, 1997.

MAME was originally meant to be used on the MS-DOS operating system. Focused shifted over to the Windows-platform in 2001. Ports for Linux and Unix-like systems appeared under the name X/MAME, and a Macintosh port appeared under the name MacMAME (later MAME OS X). MAME has since been ported to a variety of game consoles, smart phones and there was even a port that would run on digital photo cameras. Google made a Portable Native Client (PNaCl) version for running MAME within Chrome/Chromium web browsers in 2012.

MESS (Multi Emulator Super System), a similar but different emulator aimed at consoles, was integrated into MAME on May 27th, 2015. Current MAME versions can run software for all the consoles and computer systems MESS used to support when it was a stand-alone application. MAME itself has been primarily maintained by former MESS project leader Miodrag Milanović since 2012.

Plans For The Future

See the Dragging MAME into the 21st century: Practicalities of a large project with two decades of history talk at Fosdem 2021 for a bit of MAME history, the current state of MAME and future plans for development, features and more.


Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.