MAME 0.69a


Release Date

MAME 0.69a was released on 31 May 2003.

Major Announcement

This version is provided marks the beginning of interim updates, released as source diff only. This has become the favored style of releases of the MAME project for many years. It was intended to allow people to have the latest code without the hassle and bandwidth requirements of a new binary.

The now familiar convention of having "u" updates was introduced with MAME 0.69u3, because people were getting confused and thinking (mame 0.69 _b_inary) was the updated version when it wasn't.


The known contributors for this version are, in alphabetical order:

Specific Contributions

The known contributions for this version are, in the order specified in the whatsnew:

  • Aaron Giles made a few tweaks/minor optimizations to MIPS3 Dynacrec
  • MAME32Plus improved the Save-State support for NeoGeo games.
  • David Haywood changed the NeoGeo Resolution to be 320 wide, this is correct, the glitches it causes are verified against a real MVS
  • Guru verified and corrected clock speeds etc. for NeoGeo
  • Jarek Burczynski removed the analog input definition and encoded it directly from Joystick input in Metal Soldier Isaac II
  • Aaron Giles updated the IDE with support for a few things needed in the future
  • C 68k core is now default, this fixes collisions in Assault
  • Leon van Rooij fixed a bug causing timings to be broken when using D3D
  • Andrea Mazzoleni added optional XML output and xml to info converter (see xmlinfo.txt). use -listxml, converter isn't fully set up yet.
  • Aaron Giles made a number of changes to the timer system
    • All the CPU scheduling has moved into cpuexec.c and been taken out of timer.c. A number of bugs relating to time tracking for suspended CPUs have been fixed.
    • A side effect of all this is a change in the behavior of the CPU scheduling. For the most part, games are fine with this. However, there were a few exceptions:
      • taitosj.c: timing of the MCU communication broke
      • arkanoid.c: timing of the MCU communication broke
      • harddriv.c: stunrun timing glitches, racedriv/steeltal/hdrivair broken
      • (There may be more, but I haven't found them yet.)
    • The first two problems have been fixed, as has racedriv, but steeltal, hdrivair, and stunrun still have issues.
    • Oh, one other useful function I added is this:
      • cpu_boost_interleave(double timeslice_duration, double boost_duration);
      • You call this if you need to temporarily crank up the interleave for a short period of time in order to get CPU synchronization working. I used this in arkanoid and taitosj to get the MCU communications working. For example, you could say:
      • cpu_boost_interleave(TIME_IN_USEC(1), TIME_IN_USEC(100));
      • which would interleave the CPUs on 1 usec boundaries for the next 100 usecs. Even more useful is this:
      • cpu_boost_interleave(0, TIME_IN_USEC(10));
      • A very small value (0) for the first parameter means "use perfect synchronization", which should guarantee cycle-accurate synchronization for the specified duration. Note that this is *really* slow, so you don't want to be doing it too much!
    • Let us know ASAP if anything else is broken as a result of this update

Game Support

New Games supported or promoted from GAME_NOT_WORKING status

New clones added