Fork me on GitHub

Welcome to The Official Site of the MAME Development Team

What is MAME?

MAME is a multi-purpose emulation framework.

MAME’s purpose is to preserve decades of software history. As electronic technology continues to rush forward, MAME prevents this important "vintage" software 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 software is usable serves primarily to validate the accuracy of the documentation (how else can you prove that you have recreated the hardware faithfully?). Over time, MAME (originally stood for Multiple Arcade Machine Emulator) absorbed the sister-project MESS (Multi Emulator Super System), so MAME now documents a wide variety of (mostly vintage) computers, video game consoles and calculators, in addition to the arcade video games that were its initial focus.

License

The MAME project as a whole is distributed under the terms of the GNU General Public License, 2 (GPL-2.0), since it contains code made available under multiple GPL-compatible licenses. A great majority of files (over 90% including core files) are under the BSD-3-Clause License and we would encourage new contributors to distribute files under this license.

Please note that MAME is a registered trademark of Gregory Ember, and permission is required to use the "MAME" name, logo or wordmark.

MAME 0.230

31 Mar 2021

Fasten your seatbelts and get ready for MAME 0.230! There are big changes this month, but before we get to that, let’s highlight some of the more routine additions. Several TV games featuring adaptations of popular Hasbro board games are now supported, as well as a couple of VTech systems featuring Dora the Explorer. Several electronic toys and handheld LED game from Mattel and Invicta have been emulated this month. There’s a big update for the Apple II software lists this month, with clean cracks of lots of educational software from MECC.

If you’ve been following along with development, you’re no doubt excited about the new Yamaha OPM/OPN (YM2151, YM2203, YM2608, YM2610, YM2610B, YM2612, and YM3438) sound emulation core. This addresses numerous subtle and not-so-subtle issues, particularly in Sega and Data East games. Windy Fairy and Jennifer Taylor have continued to improve MAME’s support for Konami rhythm games, making beatmania IIDX, Beatmania III, Keyboardmania and ParaParaParadise games playable. Thanks to Happy, a couple more graphics issues with the Hyper Neo Geo 64 have been fixed.

There’s been a lot of work on the Apple IIgs and 68k Mac drivers this month. As well as the flood of machines promoted to working, Apple 3.5" floppy support has been revolutionised, and improvements to ADB GLU microcontroller simulation make the IIgs control panel usable. On the console side, save EEPROM support has been fixed for several Mega Drive games.

Of course that’s not all, and you can read about all the additions, bug fixes, and enhancements in the whatsnew.txt file. You can get the source and 64-bit Windows binary packages from the download page and start playing.

Read the rest of this entry »

MAME 0.229

24 Feb 2021

It’s been an eventful month, culminating in the release of MAME 0.229 today. One change that you’ll notice straight away is that the “64” suffix is no longer added to the file name for 64-bit versions of MAME. If you’re unsure, you can see the data model at the end of the window title.

One very elusive Argentinian title has finally made it into MAME this month. We’re very proud to present Ms PacMan Twin, an extensive hack of Ms. Pac-Man with simultaneous two-player cooperative gameplay. Another rarity you can now experience is Midway’s unreleased Power Up Baseball – the NBA Jam of baseball. On the topic of prototypes, Wayne Gretzky’s 3D Hockey Fatality Edition is now supported.

Several TV games for preschool age children from JAKKS Pacific’s Sharp Cookie line have been dumped and emulated, featuring popular characters like Dora the Explorer, Scooby-Doo, Spider-Man and Thomas the Tank Engine. Travelling back a little, Mattel’s representations of Basketball, Hockey, Soccer, and Tag as electronic toys are now supported. Elektronika Autoslalom has arrived from Russia (with love). Another batch of JPM IMPACT fruit machines have been promoted to working this month, making use of new artwork engine features for their internal layouts.

Updates to the Win32 and Qt debuggers add a context menu to debugger views with an option to copy visible text to the clipboard, improve behaviour when views are scrolled to the bottom, and fix a crash when right-clicking some memory views. We’re lucky enough to have received another shader update from cgwg, improving the appearance of the popular crt-geom and crt-geom-deluxe effects. We’ve added support for the NEC/Renesas V850 family to unidasm.

That’s all we’ve got time for here, but there are lots of software list updates, newly dumped bootlegs, bug fixes, and other enhancements that you can read about in the whatsnew.txt file. As always, you can get the source and 64-bit Windows binary packages from the download page.

Read the rest of this entry »

Thank You, FOSDEM '21!

21 Feb 2021

In case you missed our presentation at FOSDEM ’21 (FOSDEM - Free and Open source Software Developers' European Meeting) on Saturday, February 6, 2021, we've uploaded the video that MAME's development and release manager Vas Crabb ("cuavas") contributed to our very own YouTube channel!

(Don't worry, it’s not all that technical - Vas created the presentation to be approachable no matter the skill level or whether the viewer is new to MAME or not.)

Thanks go to FOSDEM's organizers for a great weekend's worth of presentations embracing and supporting the open source community.

Due to technical issues early on Saturday, our live Q&A was not recorded.

Slides are available on FOSDEM's website.

Update: We've now also added a playlist where you can view most past presentations (CAX 2008, Summer Assembly 2009, Revision 2012, BalCCon2k15, CppCon 2016, Ekoparty 13 (2017), Ekoparty 14 (2018), FOSDEM '21) to our YouTube channel: https://www.youtube.com/playlist?list=PLMof4txXwGz3g_WJOtsX3FlGq_KT7WCeg

See you at FOSDEM!

03 Feb 2021

MAME developer Vas Crabb will be giving a talk at FOSDEM ’21. Due to the ongoing pandemic and associated movement restrictions, FOSDEM ’21 will be held online. This is great news for a lot of us, because it means we can attend without having to travel to Belgium. Vas will be speaking in the Emulator Development room, on Saturday 6 February, from 10:00 AM to 11:00 AM, Central European time (UTC+1). The hour will include a presentation followed by a live Q&A session. There’s information on how to attend and participate here.

MAME 0.228

27 Jan 2021

Has it already been an entire month? It must have been, because MAME 0.228 is ready today! We’ve added support for two very rare arcade games this month. The first is Namennayo, an overhead-view obstacle course game making unauthorised use of Satoru Tsuda’s Nameneko characters. The second is Get A Way, an overhead-view racing game made by Universal, touted as the “first game in the world to feature a 16-bit microcomputer.” Universal went on to create the much loved Mr. Do! character. Emulation is preliminary – while the game is playable, there are some graphical issues, and sound is absent.

In other arcade emulation news, Windy Fairy has made a triumphant return, bringing numerous fixes for issues affecting Bemani rhythm games running on System 573 hardware. Thanks to the persistent efforts of David “Haze” Haywood, various fruit machines from JPM are starting to become playable in MAME. Interestingly, these machines rely on similar Brooktree RAMDACs to NCD X11 terminals, and Motorola DUARTs used by numerous other systems emulated in MAME. A complete dump of the type 01 program for Zaccaria’s Cat and Mouse has finally been obtained, making both known versions of this obscure game playable at last.

For hand-held consoles, the WonderSwan and WonderSwan Color have had an overhaul, and Game Gear X-Terminator cartridges are now supported. Several Bandai RX-78 cartridges have been dumped, exercising more aspects of the emulation and allowing several shortcomings to be fixed. We’ve also made some progress on emulating Apple’s floppy drive controllers, providing a path to support for SuperDrive high-density floppy drives, and eventually the HD20 external hard disk.

There’s been plenty more happening, including a new LCD shader from cgwg, all the latest FM Towns software dumps, fixes for recent regressions, and more code modernisation. You can read all about it in the whatsnew.txt file, and get the source and 64-bit Windows binary packages from the download page.

Read the rest of this entry »

MAME 0.227

31 Dec 2020

It’s time to say goodbye to 2020, and we’re doing that with the release of MAME 0.227, the fruit of our extended November/December development cycle. A lot has happened in these two months, in terms of internal improvements to MAME as well as user-visible changes. If you’ve been following along with development, you’ll have noticed that we’ve migrated MAME to C++17, overhauled the Lua interface, further streamlined and enhanced the emulated memory system, and cleaned up a lot of ageing code.

MAME 0.227 adds preliminary support for macOS on AArch64, also known as “Apple Silicon”. Please note that we lack a native A64 recompiler back-end, and there are some issues with our C recompiler back-end. If you’re running an A64 build of MAME, you can disable recompilers for most systems that use them with the -nodrc option on the command line. You may get better performance for emulated systems with MIPS III or PowerPC processors by running an x86-64 build of MAME under Rosetta 2 with recompilers enabled. (Yo, ’sup dawg. I heard you like recompilers…)

Lots of long-standing issues have been fixed in this release. Missing platforms in stage 15 of Sega’s Quartet now appear properly. This relies on a protection microcontroller feature that we were previously unaware of. Protection features that are only used late in the game have been a recurring source of frustration not just for emulator developers, but also for arcade bootleggers, and even publishers re-issuing old games in new formats. It seems Sega missed this feature in their Astro City Mini release. Another long-standing protection issue was fixed this month that made Atari’s Rampart impossible to complete on Veteran difficulty. This one was actually a regression that managed to stay unresolved for years, possibly because the game’s high difficulty makes it difficult to reach. While we’re on the topic, protection simulation has been added for the versions of Sega’s Carnival that run on Head On hardware.

While protection emulation may encompass the most noticeable fixes, lots of other things that have been improved as well. Graphical issues have been fixed in Chase Bombers, Championship Bowling, and Prop Cycle. NFL Blitz ’99 no longer skips animations in attract mode. DIP switch descriptions have been corrected in 3-D Bowling, Bloxeed and Mahjong Tenkaigen. Game switching now works on Multipede, and Klax bootlegs are playable, with working sound.

It wouldn’t be a MAME release without new supported systems. This month we’ve got TV games from dreamGEAR, JungelTac, LexiBook and Senario. As always, the quality varies enormously. New versions of 1944: The Loop Master, Cookie & Bibi 2, F-1 Grand Prix, Forgotten Worlds, and Narc have been found and dumped. One of the newly supported Narc versions is particularly interesting, as it appears to be an early test version, lacking a substantial amount of content found in other versions of the game. Another incomplete copy of Unico’s Master’s Fury was found, which could be combined with the previous incomplete set to make the game playable.

Finally, there are a few improvements to the internal user interface. There are more controls for screenshots, aspect ratio and scaling accessible from the Video Options menu. You can now use NOT codes when assigning analog joystick axes to digital inputs. The menus for the Cheat and Autofire plugins have been made more consistent.

Of course, there’s far more that we don’t have space for here, but you can read all about it in the whatsnew.txt file, and get the source and 64-bit Windows binary packages from the download page. It’s been a very tough year for a lot of us, but it’s still been a great year for MAME development. Thanks to everyone who contributed this year, even if it was just a kind word or helping out a user on a community forum. Have a great new year, and keep the spirit of digital preservation alive!

Read the rest of this entry »

Lua in MAME: Time for an Overhaul

27 Dec 2020

If you’ve been following along during our extended November/December development cycle for MAME 0.227, you might have noticed that we’ve migrated MAME to C++17. As part of this, we’ve upgraded the C++/Lua interface library to sol3. This has necessitated a shake-up of the Lua interface code. We’ve taken this opportunity to re-think some of MAME’s Lua interfaces.

Some of the changes are not backwards-compatible and will require scripts to be migrated. However, we believe these changes make our Lua interface more robust and efficient as well as making the Lua syntax more idiomatic. We’ve exposed more functionality, too. Most of the breaking changes fall into a few categories:

  • Better aligning the Lua interface with MAME’s architecture.
  • Using container wrappers rather than building Lua tables.
  • Replacing simple getter methods with read-only properties.
  • Moving the Lua API reference to our documentation web site.

In particular, using container wrappers makes a lot of properties far more efficient because the collection no longer needs to be iterated and copied into a Lua table for every access. We’ll go through most of the breaking changes and touch on some of the new functionality here. There will still be occasional changes to the Lua APIs going forward, but we’re not anticipating another major upheaval like this soon.

Read the rest of this entry »