MAME 0.142


Release Date

MAME 0.142 was released on 3 April 2011.


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:

  • David Haywood converted Super Shanghai Dragon's Eye to use the common deco video files functions, fixing a rowscroll bug in it.
  • Couriersud fixed font loading in sdlmame. BDF files are just loaded as TTF by TTF_OpenFont. Load is now protected by a magic check. Also fixed a bug in SDL1.3 keyboard mapping and changed SDL1.3 code to be compatible with recent 1.3 API changes.
  • Couriersud separated sdl-config flags into INCFLAGS and COMFLAGS in sdl.mak. This fixes "make depend".
  • Fabio Priuli updated softlist.c: split the <info> field (added some time ago to handle compatibility requirements) into <info> and <sharedfeat>. the former stays tied to the whole software entry, the latter gets inherited by each part.
  • Aaron Giles added device_t::memory() to fetch a reference to the memory interface, or assert if not present.
  • Aaron Giles split address_space::install_[legacy_]handler into install_[legacy_]read_handler, install_[legacy_]write_handler, and install_[legacy_]readwrite_handler.
  • Aaron Giles added variants of address_space handler installers which don't take mirror or mask parameters, since this is by far the most common case.
  • Aaron Giles provided a deprecated API cleanup.
    • cpu_suspend ==> device_suspend
    • cpu_resume ==> device_resume
    • cpu_yield ==> device_yield
    • cpu_spin ==> device_spin
    • cpu_spinuntil_trigger ==> device_spin_until_trigger
    • cpu_spinuntil_time ==> device_spin_until_time
    • cpu_spinuntil_int ==> device_spin_until_interrupt
    • cpu_eat_cycles ==> device_eat_cycles
    • cpu_adjust_icount ==> device_adjust_icount
    • cpu_triggerint ==> device_triggerint
    • cpu_set_input_line ==> device_set_input_line
    • cpu_set_input_line_vector ==> device_set_input_line_vector
    • cpu_set_input_line_and_vector ==> device_set_input_line_and_vector
    • cpu_set_irq_callback ==> device_set_irq_callback
    • device_memory(device) ==> device->memory()
    • device_get_space(device, spacenum) ==> device->memory().space(spacenum)
    • cpu_get_address_space(cpu, spacenum) ==> cpu->memory().space(spacenum)
    • cputag_get_address_space(mach, tag, spacenum) ==> mach->device("tag")->memory().space(spacenum)
    • cputag_get_clock(mach, tag) ==> mach->device("tag")->unscaled_clock()
    • cputag_set_clock(mach, tag, hz) ==> mach->device("tag")->set_unscaled_clock(hz)
  • Aaron Giles created new enum type address_spacenum for specifying an address space by index. Update functions and methods that accepted an address space index to take an address_spacenum instead. Note that this means you can't use a raw integer in ADDRESS_SPACE macros, so instead of 0 use the enumerated AS_0.
  • Aaron Giles standardized the project on the shortened constants AS_* over the older ADDRESS_SPACE_*. Removed the latter to prevent confusion. Also centralized the location of these definitions to memory.h.
  • David Haywood converted DECO BAC06 tilemap (used by dec0.c) to be a device, reducing code duplication.
  • Aaron Giles deprecated the old memory_install_* macros. Dynamic installation is now handled directly by calling methods on the address_space, which have been expanded with aliases to cover all previous situations. In addition, variants with no mirror or mask value are provided to cover the common cases:
    • memory_install_read*_handler(space, begin, end, mirror, mask, handler) ==> space->install_legacy_read_handler(begin, end [, mirror, mask], FUNC(handler))
    • memory_install_write*_handler(space, begin, end, mirror, mask, handler) ==> space->install_legacy_write_handler(begin, end [, mirror, mask], FUNC(handler))
    • memory_install_readwrite*_handler(space, begin, end, mirror, mask, rhandler, whandler) ==> space->install_legacy_readwrite_handler(begin, end [, mirror, mask], FUNC(rhandler), FUNC(whandler))
    • memory_install_read*_device_handler(space, device, begin, end, mirror, mask, handler) ==> space->install_legacy_read_handler(*device, begin, end [, mirror, mask], FUNC(handler))
    • memory_install_write*_device_handler(space, device, begin, end, mirror, mask, handler) ==> space->install_legacy_write_handler(*device, begin, end [, mirror, mask], FUNC(handler))
    • memory_install_readwrite*_device_handler(space, device, begin, end, mirror, mask, rhandler, whandler) ==> space->install_legacy_readwrite_handler(*device, begin, end [, mirror, mask], FUNC(rhandler), FUNC(whandler))
    • memory_install_read_port(space, begin, end, mirror, mask, port) ==> space->install_read_port(begin, end [, mirror, mask], port)
    • memory_install_read_bank(space, begin, end, mirror, mask, bank) ==> space->install_read_bank(begin, end [, mirror, mask], bank)
    • memory_install_rom(space, begin, end, mirror, mask, ptr) ==> space->install_rom(begin, end [, mirror, mask], ptr)
    • memory_install_ram(space, begin, end, mirror, mask, ptr) ==> space->install_ram(begin, end [, mirror, mask], ptr)
    • memory_unmap_read(space, begin, end, mirror, mask) ==> space->unmap_read(begin, end [, mirror, mask])
    • memory_nop_read(space, begin, end, mirror, mask) ==> space->nop_read(begin, end * [, mirror, mask])
  • Fabio Priuli updated uiimage.c: Improved File Manager usage (in the internal UI) by catching char inputs and searching for matching names among files and directories.
  • David Haywood did some work on the 3 games in dec8.c which use the bac06 tilemaps.
  • David Haywood converted Act Fancer, Trio the Punch and Mad Motor to use the common deco video functions.
  • David Haywood converted Stadium Hero driver to use the common Deco video functions.
  • Aaron Giles did a cleanup of machine.h. Shuffled some fields around, and moved several to private member variables with accessors:
    • machine->m_respool ==> machine->respool()
    • machine->config ==> machine->config()
    • machine->gamedrv ==> machine->system()
    • machine->m_regionlist ==> machine->first_region()
    • machine->sample_rate ==> machine->sample_rate()
  • David Haywood converted Pocket Gal to use the common deco video routines.
  • David Haywood started moving common deco MXC06 sprite controller code to it's own device files, reducing code duplication.
  • David Haywood converted Act Fancer to use common deco sprite code.
  • David Haywood converted Vapor Trail to use the common deco sprite functions.
  • David Haywood converted Stadium Hero, Cobra-Command, Psycho-Nics Oscar to use the common deco sprite functions.
  • Aaron Giles removed redundant machine items from address_space and device_t. Neither machine nor m_machine are directly accessible anymore. Instead a new getter machine() is available which returns a machine reference:
    • space->machine->xxx ==> space->machine().xxx
    • device->machine->yyy ==> device->machine().yyy
  • Aaron Giles globally changed all running_machine pointers to running_machine references. Any function/method that takes a running_machine takes it as a required parameter (1 or 2 exceptions). Being consistent here gets rid of a lot of odd &machine or *machine, but it does mean a very large bulk change across the project.
  • Aaron Giles removed redundant item cpu from address_space, in favor of space->device().
  • Aaron Giles made possible for two hash_collections to match only if they have at least one matching hash.
  • Aaron Giles updated the core to make sure that if we get an error parsing options, see if there was no command and what looks like an invalid system name. In that case, provide suggestions for the system name instead of reporting the options error.
  • Aaron Giles moved overridable device->rom_region(), device->machine_config_additions(), and device->input_ports() to protected methods. Added non-virtual wrappers around them.
  • David Haywood implemented karnov style sprites in its own file, shared with karnov and dec8 drivers.
  • David Haywood fixed multiwidth sprites in decmxc06.c, removed code which appeared to serve no purpose other than to break the birdtry gfxdecode in machine/dec0.c.
  • Aaron Giles added new macro MACHINE_CONFIG_DERIVED_CLASS() which works just like MACHINE_CONFIG_DERIVED() except you can specify an alternate driver_device class. Used this in the 8080bw.c games which require an _8080bw_state, but derive from mw8080bw_root which has the base class mw8080bw_state.
  • Brian Troha updated lordgun.c: Corrected Dipswitch names and added dipswitch locations to Lord of Gun & Alien Challenge.
  • Brian Troha updated tumbleb.c: Corrected Dipswitch names and locations for Choky! Choky!.

Game Support

New clones added

New games marked as GAME_NOT_WORKING