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.


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.113u1

08 Mar 2007

A new 'u' release of MAME is now available. The biggest underlying change in this round is some internal code movement. In previous versions of MAME, the OS-specific code was responsible for all the frameskipping, throttling, fast forwarding, and timing behavior. What ended up happening is that most ports simply copied the Windows code, made a couple of tiny tweaks, and left it as-is. As of this version of MAME, all that logic has moved into the core video system, which means that there is less work for the OS-specific port maintainers to do. This is the first of a series of changes in this direction, which will mean that ports like SDLMAME and MAME OS X have less code to maintain.

As a side-effect of this change, the "frames_to_run" command line parameter has changed to "seconds_to_run", which is the same concept but uses the more neutral concept of time rather than frames. This is in preparation for a future time when games like the vector games will use asynchronous frame updating instead of using the frame rate hack we currently use.

In addition to this change, Zsolt Vasvari has been taking on the task of cleaning up the usage of video parameters in MAME. This involves converting older drivers to using the new, more accurate video timing functions. It's possible there will be some regressions as a result of this, so be on the lookout and report bugs to MAMETesters. Sebastien Volpe also submitted an improved Kaneko driver which brings several of those games closer to playable.

And finally, you may notice a slightly different look to the default font. I have been wanting to replace the default fixed-width font with a proportional font ever since the new video code went in, but have been finding it difficult to find a good BDF font editor (or a font that I liked that was compatible with the MAME license). I finally got fed up with this situation and threw together a quick PNG to BDC font converter (BDC is the binary cached version of BDF files that MAME can read) and designed a basic low-resolution font. As always, if you have a high resolution display, you are better off converting a TrueType font at high point size to BDF and using that, but for those using DirectDraw, the new font should be a good legible default, and the proportional sizing means more text will fit on those cramped game screens.

MAME 0.113

05 Mar 2007

Lucky 113! There have been a lot of changes this time around, so make sure you look over the whatsnew file to see what's been going on.

If you haven't been following the news until recently, be aware that this release contains a number of updates to both the input and sound code. The sound code in particular bears mentioning because its new behavior has tripped up a few people. Sound output is now exclusively controlled by the emulation, not by the OS layer. This means that it is very important to have accurate timing and throttling. Because of this, the throttling code has been rewritten to be more forgiving of "hiccups" and other anomalies.

One non-obvious side effect is that if you are running your games with -triplebuffer or -waitvsync on a system with a 60Hz video mode (like most LCDs have), and you are running a game with a framerate greater than 60fps (any of the common older Namco titles will do fine), then you will experience sound hiccups unless you enable a little bit of frameskipping, either automatic or a frameskip of 1. This is because you are hard-limiting the game to run at 60Hz due to your monitor's refresh, but it needs to produce more than 60 frames per second, so you are always running behind the emulation.

On the input front, Derrick Renaud has done a lot of work to try and normalize the behavior of analog inputs across the project. He has fixed and tweaked quite a number of analog controls in the system. Because of this, you may find that you need to throw away your existing calibrations and re-calibrate with the new settings. The advantage of the new system is that it fixes a number of inaccuracies in the behavior of the controls and allows games to have more flexible options when it comes to mapping controls on your PC to the controls the game used.

In addition to these changes there are quite a lot of new unplayable Bemani games that have come out of the woodwork over the past week or so, as well as an implementation of the long-desired (by pinball guys anyway) BSMT2000 ADPCM code. For this release I've also enclosed some regression testing tools I've been using for the past few months to help catch problems introduced between versions of MAME. You can see an example of the progress between 0.112 and 0.112u4 by looking here. Note that there are still a few glitches in the system, but I felt it was worth providing the code.

MAME 0.112u4

01 Mar 2007

Today we have a new update to MAME 0.112. You can grab the diff file from the Latest Release page. The sound changes have mostly settled now and this build should be a good one to test with. In fact, it would be great to get feedback on how sound and throttling are working across a number of systems before we move to a 0.113 release, which should follow soon. Please give it a try and report your bugs to MAME Testers.

Other significant improvements this time around include some more input port fixes from Derrick; discrete sound in Checkmate, again from Derrick; support for the T5182 sound MCU from Nicola, Ernesto, and Lord Nightmare, giving sound in The Lost Castle in Darkmist, Mustache Boy, and Panic Road; and tweaks to many sound cores to make them generate audio at their native frequency. Note that this latter change may have some negative performance impact, but I didn't see anything too significant in limited testing.

New ROMs and Wiki Content

27 Feb 2007

Hey, what do you know, a post that isn't about a MAME release!

I've got some exciting news. In addition to allowing the free distribution of Teeter Torture from this site, H. R. Kauffman, the president of Xidy, Inc. (formerly Exidy), has agreed to allow us to distribute many of the older released Exidy games here as well! So, over the next few weeks, we will be featuring many games from the Exidy lineup here on the site. The first of these is the classic game Circus, released in 1977.

Look for more games to appear shortly. Ultimately, it would be awesome if some of the bigger companies would recognize the historical significance of some of their older titles and allow them to be enjoyed by a wider audience in this manner.

The second bit of news is that there have been some great additions to the developer wiki since it was first created. I wanted to highlight a few of the updates:

  • Andrew Gardner has put up links to various technical articles and other details that have appeared in blogs and articles in the past, and Mike Ellery has posted an article on DIP switches in the How MAME Works section

  • Reip, Phil Bennett, and I have put up "to-do" lists on the Developer WIP page. I find this a great location to jot down random ideas I have; hopefully other devs will find it equally useful.

  • MooglyGuy has been doing a very cool job of wiki-fying the whatsnew.txt files from earlier MAME versions with annotations and links to MAWS for games referenced. See the new Previous MAME Versions section to see what has been done so far.

  • I have also started the process of migrating the MAME FAQ and updating the text to be more accurate to the current state of the project. See the current WIP version in the new Frequently Asked Questions section of the wiki.

Overall, some great content on the wiki so far! You can keep an eye on the Recent Changes page to see what's going on in finer detail, if you're interested. You can even keep an RSS feed for that page if you really want to stay on top of things!

MAME 0.112u3

26 Feb 2007

A third update to MAME 0.112 is now available on the Latest Release page. The biggest change in this release is a significant change to the way sound is generated. The previous implementation allowed the OS-specific code to control the sound, which ended up having subtle impacts on the consistency of the emulation. For example, a user running with one sample rate might get different results from a user running at a different sample rate. As of this release, the OS-specific code is no longer in control of sound generation at all. Instead, the core emulator decides how much sound to generate and hands it over 50 times/second to the OS layer. As a result, this change impacts not only the internals of the sound system, but also requires us to change the way we stream sound in the Windows-specific code (and the SDL code will need to be updated as well).

A side-effect of this change is that it is now very important for the frame rate to be as accurate as possible. This means that the behavior of the code which throttles MAME down to the proper frame rate is very important. Thus, several changes to the way MAME throttles its speed have been implemented. Hopefully this will produce more regular frame rates and fewer sound glitches. As usual, report any problems to MAME Testers.

In addition to the sound changes, Derrick Renaud has made some changes to the way analog inputs are handled. This is all to the good and improves the accuracy of the controls, but may introduce a bit of confusion. Be sure to read the whatsnew.txt file and the updated windows.txt file to see how things work in the new world.

Finally, we have some nice additions to the Konami System 573 driver from smf, discrete sound in Amazing Maze thanks again to Derrick, and some nice Eolith driver improvements. All in all, a nice release, but not for the faint of heart if big changes make you nervous!

MAME 0.112u2

18 Feb 2007

We're back to regular-sized 'u' updates again with this release. Some highlights this time around include the final death of XOR files for CPS2 games, filtering on the new Namco 54xx sound output, more improvements to the Cidelsa driver, and more infrastructure for supporting the laserdisc games. Grab the diff file from the latest release page.

MAME 0.112u1

12 Feb 2007

Now available for download is the first update to MAME 0.112. And this one's a big one. The most obvious impact is that the source code tree has been significantly reorganized. A number of changes that have been made over the past couple of years have resulted in a somewhat more modular codebase, and now is a good time to organize things accordingly. Unfortunately, due to the file movement, a diff of this release would probably be twice the size of the raw code, so you'll have to download the full set of sources.

If you are a developer, it is very important that you update to this release, as patches against 0.112 and earlier won't apply properly, and there is no guarantee that they will be accepted.

Other exciting news for this release includes actual emulation of the Namco 54xx sound chip, which turns out to be a Fujitsu MB8844 microcontroller with embedded ROM. This allows the removal of samples from Galaga, Bosconian, and Xevious, among others. We also have some nice sound core improvements from the hoot development team, some nice new input port support, a few new CPS2 keys, and a bunch of fixes for subtly (and not-so-subtly) broken drivers due to the Z80 change late in the 0.111 dev cycle. Have fun!