This is a partner series to our Retro Let's Play FAQ, aiming to assist people finding ways of playing old games from these old systems. All talk of resolutions, PAL vs NTSC and upscaling are covered in the Retro Display Solutions thread. History: MAME stands for the Multiple Arcade Machine Emulator. For those not familiar with emulation: it's a method of writing a software layer that intercepts machine-language for a specific CPU, and translates that on-the-fly for a different CPU. Often it requires a host processors many times more powerful than the one being emulated, but the aim is to be able to run native software for very old CPUs on modern systems, and interact with them real time. It requires both the CPU emulation core as well as the Read-Only-Memory (or "ROM") data to accurately emulate the full system. Beginning life in 1996 as "Multi-Pac", the software written by then solo Italian developed Nicola Salmoria was designed to be modular, and emulate Pac-Man (known in Japan as Puck-Man) as well as a number of clone games and others running on similar hardware. Soon the project grew in scale, and began emulating a number of CPUs (and games as a result). In parallel, a similar project named MESS (Multi Emulator Super System) was being developed, using MAME code to emulate popular CPUs used in early home computer systems. In recent years, MAME and MESS have merged into the main MAME tree to see the project explode, with dozens of very clever developers contributing to the project. Today, the project is hosted by "MAMEDev", the team who control the project direction and do the bulk of the development. Regular updates are posted to their "whatsnew" page with progress on various cores, games, decryption, ROM dumps and other efforts: https://www.mamedev.org/release.html Project goals: MAME differs to many other emulators in that it aims to put accuracy above all other goals - including the ability to play a game at all. This means that all emulation is always done purely in software, never using hardware acceleration (3D GPU offloading, etc) as that frequently results in emulation errors in the name of framerate speedups. Despite some criticism from a vocal minority, MAME has proven to survive with this design, with many games once considered "unplayable" due to their design eventually running fine as hardware advancements catch up. As would be expected, emulating an enormous number of CPUs (everything from common-as-mud Z80 and M68K CPUs to obscure custom chips and anti-piracy encryption systems) is no trivial task. Frequently emulation of certain architectures will stall until a "breakthrough moment" occurs, and an explosion of a particular architecture, game or family of software will occur. When this happens, often more features, chips and components of a game are emulated, and typically MAME performance will *decrease* with each release. While this seems counter-intuitive at face value, it demonstrates that each release is more and more accurate, but at the same time means that for the latest release, typically more powerful hardware is needed. Conversely, older releases of MAME can be used to run on slower hardware (say, a Raspberry Pi or similar low-end hardware), as long as we recognise that those releases may also include inaccuracies in the emulation. For purists, this might be a deal breaker. But for casual play, often these inaccuracies are often not noticeable. Often these builds are labelled either by their version number or year. For example, RetroPie will include MAME 0.53 (an older build before MAME jumped to full 32bit graphics rendering, which runs much better for very old 80s games), or "MAME 2003" (an older build from that year that can play more games from the 90s without requiring enormous processing power). It should be noted that as the emulator continues in development, often faults in the ROM-dumping process (where physical ROM chips are copied to files) are discovered, and new ROM dumps are often required. With that in mind, older builds of MAME need matching ROMs. So be sure to match your MAME ROMs with your MAME version so that games run properly. Builds: MAME itself is open source (previously under its own license, more recently switching to the GPL), and as such many "builds" exist. While it's always recommended to stick with the official build if you're on a modern desktop, many other builds exist to satisfy niche requirements. An example of some builds include: WolfMAME: includes tools for saving replays of games to share for hiscore attempts GroovyMAME: Designed to spit out arcade-native resolutions (called "modelines" for analogue displays) to use on arcade monitors. Requires either custom video cards capable of the low-res native arcade modes, or hacked drivers that can under-clock modern GPUs to force low-res modes out GroovyArcade: A complete Linux distribution designed to host GroovyMAME and use arcade-native resolutions from standard PC hardware. <Todo - fill in more> Displays and graphic options: MAME offers an enormous volume of output display options. Not just for retro analogue displays, but also for modern high def displays. For users of the latter, simple pixel-scaling old games that sat somewhere in the 320x240 resolution range results in images with very jagged edges that are far too sharp for modern displays that are many times higher in pixel count. Luckily many of us today have PCs with quite powerful image post-processors (also known as "GPUs"), and even on low-end hardware like the Rasberry Pi, realtime effects can be applied to simulate the arcade CRT displays of old, making game artwork look and feel like it did "back in the day". These post-processing options are entirely subjective, and there's no right or wrong option for these. For many, scanlines and blurring options not only trigger a strong sense of nostalgia, but also bring down the brightness and sharpness of retro graphics to be more inline with what was the designed standard at the time of release. While simple options like scanlines (making every second horizontal line dark and/or black to simulate the missing line of information when a CRT ran in low-res progressive mode instead of interlaced -see the "Display Solutions Thead" linked at the very top of this document) and bilinear filtering (a fast softening affect for scaled 2D graphics) are some of the simpler effects, MAME employs a tool called "BGFX" to deliver a complex 3D shader language that allows much greater depth of customisation, including things like simulating CRTaperture grill, phosphor bloom, edge geometry curves, and more. Again, these are all subjective and completely unnecessary to enjoy the games, however they can convincingly add to the experience for those who enjoyed the games originally in arcades, or those wanting to simulate that effect for themselves. Here's Street Fighter III: Third Strike emulated with standard pixel stretching (click for bigger to see the 1920x1080 full HD screenshot): Now compare with the BGFX CRT shader, including CRT geometry and aperture grill, scanlines and phosphor bloom: Again, all entirely subjective, but thanks to our powerful modern GPUs, it adds no impact to the actual game emulation. Controls: MAME allows for extensive control mapping, and the sheer variety of games (well over 6000 unique games at last count) means that there's quite a lot of different types of devices emulated. An example of just a few of the inputs that can be used with MAME: Joysticks and buttons: Includes both digital and analogue joysticks and arcade buttons. These come in all sorts of styles, like the Japanese ones pictured to US, Australian, Korean and many other styles. Most arcades came with these controls, and games can easily be played on keyboard or gamepad due to the digital nature of the inputs. Spinner: A device that rotates on a single axis in complete 360 degrees. Can be smaller spinners that are controlled by fingertips, through to 360 degrees steering wheels for games like overhead racing games. 270 degree wheels: A wheel locked to around 270 degrees of motion (unable to turn in a full circle). Popular with modern first/third person racing games Trackball: A large ball with two axes of analogue motion. Similar in control to a computer mouse, however it allows for the player to spin a heavier trackball to give it a lot of momentum. Light guns: Whether via specific light gun hardware, or just mouse pointer, MAME allows for light gun emulation for many arcade gun games. ROM verification: I'll include a separate post later on detailing how to verify and rebuild ROM sets between versions of MAME. It's quite complex, and deserves its own dedicated post. For anyone wanting to do their own reading, head to the ClrMAMEPro website and read their documentation. Hardware: Like ROMs, hardware for MAME is an enormous subject in and of itself. I'll aim to cover links to popular vendors and hardware you can use to enhance your retro game playing on MAME in following posts.