MAME 0.125u2


Release Date

MAME 0.125u2 was released on 21 May 2008.


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:

  • Phil Stroffolino fixed a long-standing bug with Emeralda text colors. A sprite attribute exists which signals an alternate interpretation of palette ram. Fixed priority for the bitmap layer used in Numan Athletics.
  • Aaron Giles restructured the input port internals and cleaned up inptport.c:
    • Input ports are now maintained hierarchically. At the top level are input ports, which contain a list of fields. Each field represents one or more bits of the port. Certain fields such as DIP switches and configuration switches contain a list of settings, which can be selected. DIP switch fields can also contain a list of DIP switch locations.
    • Normalized behavior of port overrides (via PORT_INCLUDE or by defining multiple overlapping bits). All fields within a port are kept in strict increasing bit order, so altered DIP switches are now kept in the appropriate order. This addresses MAMETesters bug 01671.
    • Live port state is now fully separate from configured state. This is manifested in a similar way to devices, where a const list of ports can be managed either offline or live. Each port has a pointer to an opaque set of live state which is NULL when offline or valid when live. Each port also has a running_machine * which is also NULL when offline.
    • Because of this new arrangement, the conversion from tokens to a list of ports now requires reasonably complex memory allocation, so these port lists must be explicitly allocated and freed (they are not mantained by automatic resource allocation).
    • Custom and changed callbacks now take a pointer to a field config instead of a running machine. This provides more information about what field triggered the change notification. The machine can be found by referenced field->port->machine.
    • The inptport.c module has been cleaned up and many ambiguities resolved. Most of this is internal, though it did result in osd_customize_inputport_list() being changed to osd_customize_input_type_list(). The parameter to this function is now a linked list instead of an array, and the structures referenced have been reorganized somewhat.
    • Updated config.c to pass machine parameters to its callbacks.
    • Updated validity checks, XML output, and UI system to handle the new structures.
    • Moved large table of default input settings to a separate include file inpttype.h.
    • Removed gross hacks in trackfld and hyperspt NVRAM. These may be broken as a result.
  • Phil Stroffolino made further Namco NA-1 changes:
    • Adjusted alternate palette handling weights to more accurately match real hardware - text anti-aliasing is much more noticable.
    • Adjustment to roz layer priority - prevents roz layer from incorrectly being displayed over backgrounds in some games (i.e. numanathj)
    • Added a mask when processing the roz tilemap to avoid defects in emeraldj
  • Philip Bennett fixed black pixel patches present in the TC0100SCN fg layer of undrfire and groundfx.
  • Aaron Giles updated and improved the Universal DRC system:
    • UML:
      • Added back-end validation mechanism, and a handful of tests as examples. This will be expanded in the future.
      • Added several new opcodes:
        • SAVE dumps the entire virtual machine state to a struct
        • RESTORE applies the data in a struct to the live state
        • LZCNT counts leading zeros in an operand
        • XTRACT extracts a bitfield to another register (rlwinm)
        • INSERT inserts a bitfield into a register (rlwimi)
      • Added new back-end function get_info() which returns information from the back-end about how many actual registers will be mapped.
    • x86 back-end:
      • Implemented all new opcodes.
      • Implemented get_info() function.
      • Fixed several bugs relating to shifts/rotates and optimizing out cases incorrectly.
    • x64 back-end:
      • Implemented all new opcodes.
      • Implemented get_info() function.
      • Added defines for new Penryn opcodes to x86emit.h.
      • Added support for ROUNDSS and ROUNDSD on Penryn architectures. This hasn't been tested. If you have a Penryn-based system, give it a try.
      • Fixed several bugs relating to shifts/rotates and optimizing out cases incorrectly.
    • C back-end:
      • Implemented all new opcodes.
      • Implemented get_info() function.
      • Cleaned up operand sizing.
      • Fixed several errors that made it not work on bigendian systems
    • MIPS DRC:
      • Added some instrumentation for the MMU. To enable it, turn on PRINTF_MMU at the top of the file.
      • Fixed front-end so that virtual no-op instructions are still targeted as branch targets.
      • Fixed front-end to mark the beginning of each sequence as needing TLB validation, since any sequence can be jumped to from anywhere.
      • Redid the MIPS3 TLB implementation. Fixed the exception vector and type handling. Changed the bitfields to directly map from the MIPS TLB format. Added distinction between TLB fill and TLB valid/modified exceptions.
      • Added separate modes for user, supervisor, and kernel modes. Each mode does proper verification of addresses now and generates address errors for invalid accesses.
      • Fixed several bugs in the TLB implementation; not everything works yet but it's a lot closer.
      • Made COP0 access checking mandatory in non-kernel modes.
      • Fixed several crashes when recompiling virtual no-ops.
      • Fixed TLB bug where entries for virtual address 0 were present by default.
      • Fixed bug in the map variable implementation that would sometimes result in incorrectly recovered values.
      • Implemented IDT instructions. All invalid instruction asserts are now runtime-only.
      • Added support to map a few common registers to machine registers if the machine supports it. Currently only x64 on Windows has enough free registers to do so, though PowerPC will almost certainly be able to take advantage of this. Gives a minor speedup.
      • Updated to use INSERT and XTRACT where appropriate.
      • Cleaned up register usage to free up one machine register for x64 on Linux.
  • David Haywood fixed spikes91 sprite colours without resorting to hacks.
  • R. Belmont fixed N64 rendering on big-endian targets.
  • Curt Coder fixed CDP1869 character memory access, and Cidelsa sprite flashing.
  • Lord Nightmare added proper interpolation sub-cycles to the TMS5110 and TMS5220 ('PC' cycles and A/B subcycles of each) and updated comments.
  • R. Belmont fixed World Rally MCU comms on big-endian.
  • Aaron Giles changed defaults so that joysticks are enabled standard.
  • Roberto Fresca and f205v made some improvements to Sandii' games:
    • Confirmed the CPU clock after some PCB measurements.
    • Changed the SND clock to 1MHz to match the PCB measurement.
    • Corrected the internal OKI6295 frequency turning the pin 7 state to HIGH.
    • Inputs: Eliminated all pulse limitations. Affected buttons have a rattled sound in the real thing too.
    • Updated technical notes.
  • Antoine Mine corrected several bugs in the emulation of the saturn CPU. These corrections are needed to make new HP48 drivers (to be submitted to MESS imminently) work.
  • Atari Ace eliminated a large number of global Machine references. Added machine parameters to IRQ callbacks throughout the system to help remove more. Reduced the number of files needing deprecat.h by ~200.
  • Sonikos did some work on lwings.c: Input clean up, added dip locations, fixed lwingsb life DIP switches, and merged machine drivers.
  • Chris Law updated Gorf sample volume to match new samples from Chris Law.

Game Support

New games added or promoted from NOT_WORKING status

New clones added

New games marked as GAME_NOT_WORKING