MAME 0.123u4

From MAMEDEV Wiki

Release Date

MAME 0.123u4 was released on 6 March 2008.


Contributors

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 contributed MC6845 updates:
    • now signalling both 0->1 and 1->0 transitions of synching pins
    • added mc6845_assert_light_pen_input; uses a timer for latching the light pen address
    • added reset device function
    • implemented VSYNC height computation difference between the Motorola and the Rockwell devices
    • since the Commodore 40xx computers program an HSYNC width that extends past the end of the scanline, I am clamping it in lack of anything better to do
    • added support for the Commodore 6545-1 device type
    • added support for the status register
    • better variable names
    • more asserts
  • stephh updated the "Input (This Game)" menu to support conditional inputs.
  • Zsolt Vasvari converted Amiga based games to partial updating and proper scanline based timers.
  • Zsolt Vasvari began the clean-up of Space Guerilla - fixed rotation, some other stuff.
  • Zsolt Vasvari replaced mame_bitmap with direct use of bitmap_t. Removed mame_bitmap typedef.
  • Zsolt Vasvari fixed taitoic regression that caused crashes in several games.
  • Changed the way VBLANK_INTs are handled:
    • Defined a new MDRV_CPU_VBLANK_INT_HACK() (in deprecat.h) which is a copy of the current MDRV_CPU_VBLANK_INT()
    • Found all the places where VBLANK_INT is used with something other than 1 interrupt per frame and changed it to the new macro
    • Removed the "# per frame" parameter from MDRV_SCREEN_VBLANK_INT() and added a screen tag in its place; updated all callers appropriately.
    • Added some validation of the interrupt setup to validate.c
  • R. Belmont fixed SH4 refresh ticks value of 0, makes awbios not blow up the timer system.
  • couriersud updated dkong driver to use two discrete structs which were previously not being used:
    • dkong walk using a jump struct
    • radarscp using a dkong 555 struct
  • couriersud changed MACHINE_DRIVER_EXTERN so it now requires a semicolon. Removed a number of extra semicolons.
  • couriersud changed memory.c: removed some code never to be executed:
    • removed "return 0" from READ* macros since it is unreachable
    • removed comparisons of type FPTR < 0 and FPTR >= 0
  • couriersud identified code not used and marked with "#ifdef UNUSED_FUNCTION".
  • R. Belmont changed Naomi: Use defines instead of magic numbers for IRQ sources, add VBL-out.
  • kingshriek improved (not perfect) ACIA slot monitoring.
  • Roberto Fresca changed parent/clone relationship to separate SSI Poker sets from Jackpot Joker Poker.
  • Zsolt Vasvari removed a couple of unused items from the cpuexec_data structure. Added validity check that screenless drivers cannot have a VBLANK interrupt.
  • Aaron Giles added macros to define device functions. Updated existing devices to use the macros.
  • Aaron Giles added the concept of device classes. Devices specify their class in their get_info function. Classes can be used to walk through devices at a more general level than their type. Functions have been added to iterate through devices by class just as you can by type.
  • Aaron Giles removed some unused fields from device_config.
  • Zsolt Vasvari moved all video timing logic from cpuexec.c to video.c. Added a video_screen_register_vbl_cb() function for registering VBLANK callbanks. Changed inptport.c and debugcpu.c to make use the VBLANK callbacks. Added video_screen_get_time_until_vblank_start(). I did some fairly extensive testing, but this is a very signficant internal change, so some things may have broke.
  • Zsolt Vasvari removed use of cpu_scalebyfcount() from CVS driver.
  • couriersud changed a number of global functions to being static.
  • couriersud rewrote some potentially compiler specific code:
    • added ATTR_FORCE_INLINE to osdcomm.h
    • added ATTR_NONNULL
    • moved U64 S64 fram mamecore.h to osdcomm.h
    • define SETJMP_GNUC_PROTECT() in osdcomm.h for use in ppc602, ppc603
  • Zsolt Vasvari removed cpu_getcurrentframe() and replaced it with video_screen_get_frame_number(int scrnum). Updated all callers.
  • Zsolt Vasvari moved watchdog processing logic into its own module.
  • Zsolt Vasvari replaced sprite multiplexing hack in tp84.c with video_screen_update_now() on sprite RAM write. General driver clean-up.
  • Zsolt Vasvari changed Gyruss: Tilemap conversion, sprite multiplexing done properly, driver clean-up.
  • couriersud changed z80dma to new device interface, updated mario.c and dkong.c to use new interface. Illustrates how to keep existing memory read/write handlers. This is slower than caching the device interface, but does not have an impact on devices accessed at a low frequency like in this case.
  • Aaron Giles added video_screen_get_time_until_vblank_end() and video_screen_get_time_until_update().
  • Aaron Giles fixed CCPU and QB3 to no longer rely on cpu_scalebyfcount(). Fixed busted timing in the CCPU core. Changed watchdog to count internally rather than using external watchdog support. Altered CCPU to accept interrupt signals from the driver. Updated clocks in the cinemat driver to be derived from the clock crystal.
  • Aaron Giles normalized function pointer typedefs: they are now all suffixed with _func. Did this throughout the core and drivers I was familiar with.
  • Zsolt Vasvari added PORT_CHANGED macro which calls a callback if the given port changes. Usage is very similar to PORT_CUSTOM. See the Astro Invader driver for an example.
  • Zsolt Vasvari removed input_port_set_changed_callback and converted all users to PORT_CHANGED. The only difference between the old callback and the ones supplied by PORT_CHANGED is that values passed by PORT_CHANGED are normalized to start at bit 0, just like PORT_CUSTOM.
  • Zsolt Vasvari added running_machine* to the CUSTOM_INPUT callback - updated drivers to use it.
  • Zsolt Vasvari updated brkthru.c, btime.c, exerion.c, fcombat.c, astrof.c, cheekyms.c, cinemat.c to use PORT_CHANGED. Combined memory maps where applicable. Converted cheekyms.c to use tilemaps.
  • Zsolt Vasvari changed Exidy440: modernized input port handling with CUSTOM_INPUT and INPUT_CHANGED. Cleaned-up special case handling. Created better separation between driver and video code.
  • Mike Ellery verified clocks and oki pin7 for Peek-a-boo.
  • Zsolt Vasvari untangled the Fire Truck driver. Many uses of PORT_CUSTOM and PORT_CHANGED, including another good use case for the gear shift logic.
  • Zsolt Vasvari updated ladybug.c, lasso.c, m10.c, madalien.c, maxaflex.c to use PORT_CHANGED for coinage.
  • Aaron Giles added running_machine * parameter to the front of all read/write handlers. Updated all call-through handlers appropriately. Renamed read8_handler to read8_machine_func, replicating this pattern throughout.
  • Aaron Giles defined new set of memory handler functions which are similar but which pass a const device_config * in place of the running_machine *. These are called read8_device_func, etc. Added macros READ8_DEVICE_HANDLER() for specifying functions of this type.
  • Aaron Giles added running_machine * to the device_config, live while the device is live, and NULL otherwise, just like the token.
  • Zsolt Vasvari updated the Meadows driver:
    • Merged memory maps
    • Uses PORT_CHANGED for coins
    • Renamed 'Inferno (S2650) to 'Inferno (Meadows)'
    • Renamed 'Bowling 3D' to '3-D Bowling'
    • Added NO_DUMP entries for Gypsy Juggler's ball graphics and added GAME_IMPERFECT_GRAPHICS flag
  • Aaron Giles added new macros AM_DEVREAD, AM_DEVWRITE, and AM_DEVREADWRITE, which specify device read/write handlers in address maps, along with the type/tag of the device they reference.
  • Aaron Giles converted MC6845 read/write handlers to READ/WRITE8_DEVICE_HANDLERs. Updated all MC6845-using drivers to use the new macros and call the updated functions. Removed the many little helper functions that used to do this work.
  • Aaron Giles added validity checks to ensure that the devices referenced actually exist.
  • SailorSat fixed display of screen information so that it shows live information, not just the original configurations.
  • RasnAckeR improved DIP switch definitions, added DIP locations, and simplified input ports in atarisy2.c, atetris.c, avalnche.c, bagman.c, balsente.c, lasso.c, seta.c.
  • Sonikos added DIPs and locations to onetwo.c.
  • James Wallace corrected some glitches and fixed bank reading in Deal'Em.
  • Corrado Tomaselli changed/verified clocks on the following pcbs: 1943, Arkanoid, Action Holliwood GalsPanic, Ben Bero Beh, 1000 Miglia, Pit and Run, Prehistoric Isle, Rastan, Hotmind, Hardtimes, Stagger1 and Tiger Road.
  • Corrado Tomaselli changed/verified Oki pin 7 on the following pcbs: 1000 miglia, Galspanic, Action Holliwood, Hotmind, HardTimes, World Rally, Stagger1.
  • couriersud changed the internal address map constructor:
    • pass running_machine parameter to construct_map_##_name
    • change "Machine->" to "machine->" in AM_BASE_MEMBER, AM_SIZE_MEMBER
    • pass Machine in construct_address_map
  • Nicola Salmoria fixed the 8085 RST75 not working with PULSE_LINE. According to datasheet, RST7.5 is latched on rising edge, while the other maskable interrupts are sampled.
  • Aaron Giles removed AM_SPACE and matchmask support. Updated relevant drivers to use AM_MIRROR() and AM_MASK() to achieve the same thing.