FAQ:About
Return to the main Frequently Asked Questions page.
What is MAME?
MAME stands for Multiple Arcade Machine Emulator. When used in conjunction with an arcade game's data files (ROMs, CHDs, samples, etc.), MAME attempts to reproduce that game as faithfully as possible on a more modern general-purpose system. MAME can currently emulate many thousands of classic arcade video games from the the very earliest CPU-based systems to much more modern 3D platforms.
The ROM and CHD images that MAME requires are "dumped" from arcade games' original circuit-board ROM chips, hard disks, and CD-ROMs. MAME becomes the "hardware" for the games, taking the place of their original CPUs and support chips. Therefore, these games are NOT ports or rewrites, but the actual, original games that appeared in arcades, complete with all the bugs, glitches, slowdowns, and subtleties of the original game as it appeared in the arcade.
MAME's purpose is to preserve these decades of video-game history. As gaming technology continues to rush forward, MAME prevents these important "vintage" games from being lost and forgotten. This is achieved by documenting the hardware and how it functions. The source code to MAME serves as this documentation. The fact that the games are playable serves primarily to validate the accuracy of the documentation (how else can you prove that you have recreated the hardware faithfully)?
Also see: About MAME
Is MAME a simulator or an emulator?
That depends entirely on the definition of those words. In electrical engineering, the word "emulation" has traditionally been used to mean a very low-level reproduction of real life electrical signals. For example, professional microprocessor emulator software comes with a processor-shaped connection, which you can actually plug into a motherboard and run instructions with it.
MAME runs simulated CPU instructions on top of simulated memory maps and I/O spaces. If simulation had to be defined, there could be three levels:
- Signal level. At this level, all the inputs and outputs of each chip on the board would be simulated. Believe it or not, given current processing power available, this would likely not run at anything close to full speed even for the simplest games. Simulation at the signal level would be required to produce a truly accurate emulation of microprocessor-less games such as Pong and Monaco GP.
- Logical level. At this level, there is an assumption that one or more CPUs is running the show, and those CPUs are emulated as a single unit, as accurately as possible based usually on the specs for the CPU, and sometimes based on actual probing of the CPU itself. Furthermore, mapping of memory and behaviors of other chips (audio/video) are replicated to varying degrees of accuracy. All games in MAME currently run simulations at this level.
- HLE level. At this level, a High Level Emulation of large portions of the game are used to simulate the behavior of multiple chips and often even entire CPUs. Simulation at this level is usually very game-specific and often behaves in noticeably different ways than the original. For the most part, MAME tries to avoid using HLE unless necessary, and it definitely does not support its use as a means of accelerating the emulation.
Most people make the simulation/emulation cut based on a couple of factors. One such factor is determining whether you can support all the same games the original hardware did without any game-specific hacks. MAME's CPU and sound cores pass that test literally every day as new games are added. Some other emulators that rely on a HLE approach fail it badly. A descriptive comment about the detail level of MAME's drivers is "if someone can make an FPGA version of the game, the driver documents it well enough", and that's actually happened for Pacman using MAME as a reference.
In other words, MAME is against simulating games, but it's not against simulating components. The only way you can emulate a game is to simulate all the components. All those chips weren't really created in C.
What do I need to run MAME?
MAME is written in fairly generic C, and has been ported to numerous platforms. Over time, as computer hardware has evolved, the MAME code has evolved as well to take advantage of the greater processing power and hardware capabilities offered.
The official MAME binaries are compiled and designed to run on a standard Windows-based system. The minimum requirements are:
- Any MMX-capable AMD or Intel processor (Pentium III or later recommended for current versions)
- Windows 98 or later (Windows 2000 or later preferred)
- DirectX 5.0 or later (included with all versions of Windows 98 or later)
- A DirectDraw or Direct3D capable graphics card
- Any DirectSound capable sound card
Of course, the minimum requirements are just that: minimal. You may not get optimal performance from such a system, but MAME should run. Modern versions of MAME require more power than older versions, so if you have a less-capable PC, you may find that using an older version of MAME may get you better performance, at the cost of lowered accuracy and fewer supported games.
As of MAME 0.106 and later, MAME will take advantage of 3D hardware for compositing artwork and scaling the games to full screen. To make use of this, you should have a modern Direct3D 8-capable video card with at least 16MB of video RAM.
Around the same time, MAME added minimal multi-processor support, if you use the -mt flag. This means that some of the video processing can be done on a second CPU core if it is available. To take advantage of this, you should run MAME on a dual core (or greater) system.
Keep in mind that even on the fastest computers available, MAME is still incapable of playing some games at full speed. The goal of the project isn't to make all games run playably on your system; the goal is to document the hardware and reproduce the behavior of the hardware as faithfully as possible.
What platforms does MAME run on?
The official build of MAME is targeted for Windows platforms.
Other popular up-to-date MAME ports include:
- SDLMAME is an SDL-targeted port of MAME maintained by R. Belmont. SDL is a platform-independent library, and so SDLMAME can be configured to run on Linux, Windows, MacOS X, and many other platforms.
- MAME OS X is a native MacOS X port of MAME maintained by Dave Dribin.
A number of additional MAME ports are available, but not updated as frequently. These include:
- MacMAME, a MacOS X port of MAME maintained by Brad Oliver.
- XMAME, an X11 port of MAME maintained by Laurent Desnogues.
- AdvanceMAME, a DOS/Linux port of MAME optimized for arcade monitors that was maintained by Andrea Mazzoleni. Note the 'was'. This port is no longer maintained. The last official release was on 25-06-2006, AdvanceMAME v0.106.0 (R.I.P).
In addition, people have ported MAME to various cameras, PDAs, game consoles, and other platforms. Search the web to find more details on these more obscure ports.
Are there versions of MAME in other languages?
While the MAME core is getting more localization-friendly by itself, the leader in multi-language MAME remains MAME Plus!. Note that it is not officially supported by MAMEdev (ask questions about it on it's own forum), and it contains other changes from baseline MAME which mean it's not optimal if you are only seeking a non-English version of MAME.
MESS (Multiple Emulator Super System) is a sister project to MAME that shares the core MAME emulation engine, but provides drivers and additional tools that are focused on the emulation of console and computer systems. The MESS project keeps up-to-date with changes to the core MAME system, and generally releases shortly after each major MAME release.
PinMAME (Pinball MAME) is a MAME-derived project that aims to emulate the circuit boards that ran the displays and produced the sound for most modern-era pinball machines. Of course, with only the sound effects and score displays, you can't actually play the pinball game, so there are mechanisms to connect PinMAME to various pinball simulators to complete the picture. PinMAME releases on its own schedule and has not kept sync with recent MAME developments, instead using the source code from an older MAME release as its basis.
Is MAME Open Source?
MAME's License is a modified version of the standard BSD license. The primary modification is that we do not allow commercial distribution or use of MAME, in order to limit some of the obvious abuses of the code. Because of this modification, MAME's license does not fall under the definition of an Open Source (uppercase) license. This is one of the reasons you don't see the MAME source code hosted on sites such as SourceForge.
Confusingly, MAME is often referred to as open source (lowercase), as its development shares much in common with other open source projects. However, in spite of its freely available source code, MAME may not be used in a commercial setting, as specified by its license.
Is MAME free?
Yes, MAME is really free. The source code is freely available, too, though it is not Open Source.
According to the license, it is illegal to sell MAME or its source.
Is MAME illegal?
No. Emulating another platform, in itself, is perfectly legal. This is established US case law from the Sony v. Connectix and Sony v. bleem! cases.
ROM and CHD images are a different matter. There is a separate FAQ available on this site that deals with common questions surrounding the legality of owning and copying ROM and CHD images.
What games does MAME emulate so far?
Each version of MAME includes support for additional games. If you run MAME with the -listfull option, it will display a list of all supported games.
On the web, there is an excellent searchable database of the games that MAME supports, called MAWS. You can search games by name, manufacturer, year, etc.
Another very helpful site is Bobby Tribble's page of unemulated arcade games. It contains numerous screen shots and descriptions of yet-to-be emulated games.
Also take a look at System16 - The Arcade Museum. It is a very detailed site about the games made by several of the biggest manufacturers and it also contains lots of hardware information.