Release Date

MAME 0.123u5 was released on 13 March 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:

  • Zsolt Vasvari fixed flickering in Electric Yo-Yo. Changed qix driver to use the MC6845's VSYNC notification for interrupts.
  • Aaron Giles removed machine from the parameters of some of the device_get_info and device_set_info calls because that information is stored with the device now.
  • Aaron Giles changed device interfaces to pass the device_config * rather than tokens and individual bits to the device callbacks. Updated all existing devices accordingly.
  • Zsolt Vasvari made a number of changes to remove references to screens by index and make the video system based strictly upon the screen devices:
    • changed vblank_state_changed_func to now have a device_config argument
    • removed runnning_machine as the first parameter of a VBLANK callback
    • removed video_data from running_machine
    • private state screen information now hangs off the public one, instead of the other way around
    • combined video_global and video_private into a single structure
    • moved populating screen_state from mame.c to video.c
    • removed defstate; the default screen parameters live in screen_config directly
    • moved 'refresh' from public to internal video state and renamed it to 'frame_period'
    • changed all drivers that previously accessed 'refresh' to use video_screen_get_frame_period()
    • changed VIDEO_UPDATE signature to pass the screen device
    • added const device_config *primary_screen to running_machine
    • changed first argument of video_screen_* functions to take a device_config; all callers that used 0 for the screen number now use machine->primary_screen
    • changed game info screen and overlay UI to display the screen tag instead of screen number
    • added video_screen_get_visible_area()
    • changed render.c to use screen devices
    • removed direct driver access to machine->screen[] array
    • added video_screen_auto_bitmap_alloc(screen)
    • the Dynax/Don Den Lover games now do their updating in VIDEO_UPDATE instead of VIDEO_EOF. Seems to have fixed the palette problems
    • hooked up swapped videoram in Karnov properly -- same idea as Burger Time
    • removed the public screen_state object -- all access is via functions
    • removed screen[] object from running_machine
    • removed MAX_SCREENS constant -- there is no longer a hardcoded upper bound
  • Zsolt Vasvari changed the MC6845 to take and pass device_config's only. The following shook out from this that are applicable to other devices as well:
    • running_machine is no longer taken, passed or stored
    • mc6845_t is now private
    • since passing device_config's is not device type safe, I added a get_safe_token() to mc6845.c to check the device passed in for the valid type.
  • Zsolt Vasvari removed video_data from running_machine. Private state screen information now hangs off the public one, instead of the other way around. Combined video_global and video_private into a single structure.
  • Zsolt Vasvari fixed the crash in Galaga caused by the slightly altered video timing.
  • Aaron Giles converted address maps to tokens. Changed the address_map structure to house global map-wide information and hung a list of entries off of it corresponding to each address range. Introduced new functions address_map_alloc() and address_map_free() to build/destroy these structures. Updated all code as necessary.
  • Aaron Giles fixed several instances of porttagtohandler*() in the address maps. Drivers should use AM_READ_PORT() macros instead.
  • Aaron Giles changed ADDRESS_MAP_EXTERN() so it is now required to specify the number of databits, just like ADDRESS_MAP_START.
  • Aaron Giles removed ADDRESS_MAP_FLAGS() grossness. There are now three new macros which replace its former usage. ADDRESS_MAP_GLOBAL_MASK(mask) specifies a global address-space-wide mask on all addresses. Useful for cases where one or more address lines simply are not used at all. And ADDRESS_MAP_UNMAP_LOW/HIGH specifies the behavior of unmapped reads (do they come back as 0 or ~0).
  • Aaron Giles changed internal memory mapping behavior to keep only a single address map and store the byte-adjusted values next in the address map entries rather than maintaining two separate maps. Many other small internal changes/cleanups.
  • Zsolt Vasvari changed the MC6845 to take a screen tag instead of a screen number.
  • Zsolt Vasvari changed Voodoo so it now takes a device_config for the screen.
  • Zsolt Vasvari changed TMS34010 to take a screen tag instead of screen number.
  • Aaron Giles replaced the following macros (SMH == static memory handler) to remove the silly need for a bunch of redundant constants with faux type definitions that didn't buy anything:
  • Aaron Giles moved some memory system constants into memory.c.
  • Zsolt Vasvari converted atarigen and tms34061 to be handle based.
  • Nathan Woods changed how the PowerPC MMU is enabled at compile time, to cut down on the amount of unused functions in MAME.
  • Aaron Giles did some additional memory system cleanups:
    • Made address versus byte offsets explicit throughout.
    • Removed some unused parameters.
    • Consolidated initialization process.
    • Removed maximum memory block count.
    • Centralized bank management.
    • Added masked handlers and change_pc to the accessors.
    • Added memory_get_accessors() to return a pointer to the accessors for a given address space/databus width/endian configuration.
  • Zsolt Vasvari adds some new 6845 varieties: MC6845-1, H46505, HD6845 and SY6545-1.
  • Zsolt Vasvari moved the crosshair code from video.c into its own module. Simplified crosshair logic and made it screen device based.
  • ElSemi saturated MultiPCM on clip and fixed envelope discontinuity.
  • Nicola Salmoria fixed loading mixer settings when the driver default value is calculated.
  • Aaron Giles removed cpu_scalebyfcount(). Changed input ports to register a frame callback, which is called immediately after throttling and updating. This is the proper "sync point" between emulated time and real time. Moved all analog and digital port processing into a central place here. Added tracking of time since the previous frame update and use that as an estimate for the time of the current frame. This is used to scale analog ports without the use of cpu_scalebyfcount(). This is not perfect in the case where frame rates are dynamic (vector games), but works well for other cases.
  • Zsolt Vasvari fixed VBLANK end time computation and video_screen_get_vblank() -- they weren't taking into account games that use MDRV_SCREEN_VBLANK_TIME.
  • Aaron Giles fixed 68000 prefetching operation. Previous behavior was incorrect.
  • Aaron Giles changed slapstic management to always install an opbase handler to more aggressively catch code executing in the slapstic region. Updated all drivers to separate the slapstic region of ROM into a different ROM section from the fixed ROM.
  • Mike Haaland changed superqix.c:
    • Changed vblank interrupts to 3 to fix screen drawing issues.
    • Used memory_configure_bank() to configure memory.
    • Added save states.
  • Corrado Tomaselli added some clock frequency changes which were documented in u4 but which did not apply due to operator error.
  • Mr. Do! added layout to crop corners in Electric Yo-Yo.
  • notaz added support for Sega Virtua Processor, to run Genesis/MegaDrive version of Virtua Racing, intended to be used by MESS. It consists of a CPU core SSP1601, and updates in megadriv.c:
    • SSP1601 replaces SSP1610, as it has been confirmed that SVP actually contains SSP1601. The current SSP1610 is only a placeholder (nearly completely unimplemented) anyway.
    • Changed megadriv.c add a new driver for Genesis/MegaDrive+SVP combination, also add SVP memory controller logic and memory map.
  • James Wallace completed phase 2 of the Deal 'Em input changes (these work well with the default cabinet type, I need to do some conditional input work to fix them fully), and also a conversion to the resnet code. Unfortunately, this still doesn't fix the apparently needed transparency.
  • RansAckeR simplified inputs, improved DIP switches, and added DIP locations to punchout.c, bankp.c, and baraduke.c.
  • Mike Haaland created MACHINE_START( asuka ) in asuka.c to configure cpu2 banks with memory_configure_bank(). All drivers support save states, with the exception of cadash and clones, the background does not load properly.
  • Fabio Priuli fixed the M68000 build logic to only include it if enabled.

Game Support

New games added or promoted from NOT_WORKING status

New clones added