MAME 0.138u3


Release Date

MAME 0.138u3 was released on 6 July 2010.


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:

  • Atari Ace added many instances of missing static and const qualifiers to MAME, and disabled a fair chunk of dead code in konamiic.c.
  • Fabrizio Vasile provided confirmation (with frequency counter) of proper 68000 clock speeds (16 MHz) for Premier Soccer and Golfing Greats.
  • Oliver Stoneberg updated expat library match the latest released version. (2.0.1)
  • Robbbert made the natural keyboard status be saved in options when changed.
  • David Haywood provided improvements to the Pinkiri 8 video emulation.
  • Angelo Salese hooked up inputs and Dip-SW for Ron Jan and Pinkiri 8.
  • Harmony added a skeleton driver for Philips CD-i-based arcade series, Quizard.
  • Miodrag Milanovic moved softlist implementation from MESS:
    • Moved image related UI from MESS to emu core.
    • Reimplemented filename related image device calls.
  • Miodrag Milanovic moved listsofware command line option from MESS, and added softlist in XML output.
  • Lord Nightmare made TMS52xx use proper IP/PC/Subcycle counting for audio generation.
  • hap updated video/cclimber.c: cclimber/ckong sprite X was off by 1.
  • David Haywood rewrote video emulation to use the device system in Little Robin.
  • Dr. Decapitator added proper i8751H MCU dump to Legend of Hero Tonma (Japan).
  • Aaron Giles C++-ified the debugger views. Split implementation of individual view types out to separate files. Updated all callers.
  • Aaron Giles changed emualloc to free resource pools from earliest to latest so that early objects can safely clean up stuff they allocated.
  • Aaron Giles changed device name from an overridable function to a parameter passed to the device_config constructor. In situations where the proper name is not known at construction time, a generic name can be specified and then overridden later once the configuration is complete.
  • Dr. Decapitator updated metro.c: Added Puzzlet's MCU internal ROM. Zilog Z8 8-bit family MCU requires a new CPU core to be written.
  • hap made redufo Artic version the parent and bootleg version a clone.
  • Tafoid added DIP LOCATIONS for xain.c.
  • FrasheR and Palindrome updated aristmk4: various improvements:
    • Fixed VIA for good. 5010 - 501F.
    • Hooked up push button inputs.
    • Hooked up ports for the PML 2852 U3.
    • Implemented coin input.
    • Lamp output and button layout.
    • NVRAM backup.
    • Connected SW7 for BG colour map select.
    • Added LK13. 3MHz or 1.5 MHz CPU speed select.
    • Added sound sample for mechanical meter pulse.
    • Replaced custom RTC code with MC146818.
  • f205v updated naomi.c: Corrected and updated some game names and cartridge descriptions.
  • Johnboy provided neodrvr.c updates:
    • Tagged kof2003h AES VERSION.
    • Tagged the following sets as MVS AND AES VERSION: aodk, lbowling.
    • Renamed P1 in sengoku3 to correct chip label.
    • Marked v2 in strhoop BAD_DUMP.
    • Marked P1 in flipshot BAD_DUMP.
    • Identified kof98n as AES version, renamed to kof98h.
  • Luca Elia provided an igs011.c update:
    • Emulated IGS011 protection.
    • Emulated IGS012 protection.
    • Removed 149 rom patches.
  • gregf updated cps2.c: Correct the release order for the Xmen: Cota (Hispanic) sets.
  • Aaron Giles made the machine_config a proper object. Added detokenize method to this object which can be called multiple times to append new devices after the initial machine configuration is set up. Updated member variables to match new naming convention.
  • Aaron Giles changed the running_machine to take a constructed machine_config object in the constructor, instead of creating one itself, for consistency. Also added machine->total_colors() as a shortcut to machine->config->m_total_colors.
  • Guru updated firetrap.c: Added PCB documentation, corrected ROM names, corrected clocks.
  • Kevin Eshbach updated idsoccer: Improved DIP locations, confirmed MSM5205 clock.
  • Miodrag Milanovic modified way device_type constants are defined in order to get unidasm Compile.
  • Tafoid changed autmoon (aristmk4) romload to proper crc/sha hashes. The submitted romset contained a 32kb (u87.bin) which actually appeared to be an 8k overdumped.
  • Brian Troha and Guru updated slapfght.c: Corrected rom names for the Slap Fight sets and added PCB locations to any set where possible. Added Dipswitch locations to Slap Fight. Moved PCB information down to matching rom sets.
  • Aaron Giles split mame.c into mame.c and machine.c, the latter containing the running_machine definition and implementation.
  • Aaron Giles moved global machine-level operations and accessors into methods on the running_machine class. For the most part, this doesn't affect drivers except for a few occasional bits:
    • mame_get_phase() == machine->phase()
    • add_reset_callback() == machine->add_notifier(MACHINE_NOTIFY_RESET, ...)
    • add_exit_callback() == machine->add_notifier(MACHINE_NOTIFY_EXIT, ...)
    • mame_get_base_datetime() == machine->base_datetime()
    • mame_get_current_datetime() == machine->current_datetime()
  • Aaron Giles cleaned up the region_info class, removing most global region accessors except for memory_region() and memory_region_length(). Again, this doesn't generally affect drivers.
  • Aaron Giles resurrected the old sampling profiler, and improve it to be useful:
    • Always available now, just specify -profile <n> to enable it.
    • Supports stack walking to uniquely identify call chains; the <n> parameter to the -profile option specifies how deep to go.
    • Automatically turns off throttling and multithreading, and sets the number of processors available to 1 (since we only sample the main thread).
    • Output now uses the common symbol lookup, which actually uses the PDB for MSVC builds and sym files for gcc builds.
    • The top 30 unique call chains are output.
  • Aaron Giles fixed performance regression for PowerPC games. The timing made heavy use of cpu_get_total_cycles() which is now slow. Better to use the legacy_cpu_device directly and call device->total_cycles() which avoids the dynamic_cast to find the execute interface from a generic device.
  • Aaron Giles added cycles_to_attotime() and attotime_to_cycles() which is more often what is requested. (Clocks are the raw input clock, while cycles are internal clock after dividers/multipliers.)
  • Aaron Giles removed most other instances of cpu_get_total_cycles.
  • Aaron Giles removed the following functions:
    • cpu_get_total_cycles() == cpudevice->total_cycles()
    • cpu_clocks_to_attotime() == cpudevice->cycles_to_attotime()
    • cpu_attotime_to_clocks() == cpudevice->attotime_to_cycles()
  • Brian Troha corrected dipswitch location order in World Rally to match actual dips as seen by the game / service menu.
  • Fabio Priuli updated namcos22.c: updated ridgerac, raveracw and acedrvrw to use keys instead of dipswitches for shifters.
  • hap added COPX romloading for sets that didn't have it, marked as BAD_DUMP until the assumption that they're the same is (un)confirmed.
  • Aaron Giles provided a Winmain cleanup:
    • Created dynamic_bind<> template class to handle dynamically binding to optionally-supported functions.
    • Wrapped stack walking code in a class.
    • Wrapped symbol lookup code in a class.
    • Added support for parsing objdump-produced symbol dumps which include non-global functions for much better stack dumps and profiling in gcc builds.
  • Aaron Giles modified makefile for win32 targets to automatically run objdump and produce a .sym file if SYMBOLS is enabled.
  • Miodrag Milanovic updated cheat loading to support image devices (moved implementation from MESS), use only CRC of first found image.
  • Aaron Giles added overrides to fetch the execute, memory and state interfaces without doing a dynamic_cast<> to speed up common legacy operations.
  • Aaron Giles created CPU-specific device types for all CPUs, using new macros DECLARE_LEGACY_CPU_DEVICE and DEFINE_LEGACY_CPU_DEVICE. Changed CPUs to be their own device types, rather than all of type CPU with a special internal subtype. Note that as part of this process I removed the CPU_ prefix from the ALL-CAPS device name, so CPU_Z80 is just plain old Z80 now. This required changing a couple of names like 8080 to I8080 so that there was an alphabetic first character.
  • robiza updated cb2001: added 2 new opcodes.
  • Bryan McPhail reimplemented Meikyuu Hunter G I8751 MCU according to schematics.
  • Wilbert Pol provided a software list update:
    • Software list xml files are now read in full such that information for clone and parent sets is available.
    • Added validity check to check for existence of parent sets.
  • Nicola Salmoria added support for Sega 317-5000 decryption (same as 315-5177). Reorganised decryption code.
  • Aaron Giles moved debugging structure away from CPUs only and attached to all devices. Debugger now creates one for each device. C++-ified most debugger operations to hang off the debugging class, and updated most callers.
  • Aaron Giles got rid of cpu_count, cpu_first, cpu_next, etc. as they were badly broken. Also removed cpu_is_executing, cpu_is_suspended, cpu_get_local_time, and cpu_abort_timeslice.
  • Miodrag Milanovic provided software list improvements:
    • Support for multiple software list per driver.
    • Added MDRV_SOFTWARE_LIST_COMPATIBLE_ADD for adding compatible software lists (for documentation purposes).
    • listsoftware option now returns only original software lists.
    • UI is updated to enable mounting software items per device, it will display only items from list that are for specific device*
    • Separated compatible software lists in UI.

Game Support

New games added or promoted from NOT_WORKING status

New clones added

New games marked as GAME_NOT_WORKING