MAME 0.139u3
From MAMEDEV Wiki
Release Date
MAME 0.139u3 was released on 18 September 2010.
Contributors
The known contributors for this version are, in alphabetical order:
- Aaron Giles
- AGEMAME
- Andrew Gardner
- Angelo Salese
- Atari Ace
- Brian Troha
- Charles MacDonald
- Christophe Jaillet
- Corrado Tomaselli
- David Haywood
- Fabio Priuli
- Frasher
- Guru
- Housi
- Johnboy
- MetalliC
- Palindrome
- Pete Ogoun
- plgDavid
- porchy
- R. Belmont
- Roberto Fresca
- robiza
- Sonikos
- stephh
- Tafoid
- Team Europe
- The Dumping Union
- Tomasz Slanina
- Wilbert Pol
- William Ostronic
Specific Contributions
The known contributions for this version are, in the order specified in the whatsnew:
- Wilbert Pol updated mc6845.c: Rewritten to allow mid frame changes to the counter registers. This enables drivers to use advanced split screen and scrolling effects using a regular mc6845.
- Aaron Giles changed the MACHINE_DRIVER_* macros, as follows:
- 1. Renamed MACHINE_DRIVER_* to MACHINE_CONFIG_* to match the name of the object it actually describes. The MDRV_* prefix may eventually be bulk updated at some point, but not now.
- 2. MACHINE_CONFIG_START() now takes a driver_data_t-derived class as a required second parameter. This means that MDRV_DRIVER_DATA() is no longer required, and every "root" machine config *must* specify a driver data class (or driver_data_t itself if the driver has not yet been updated to use driver data).
- 3. New MACHINE_CONFIG_DERIVED() macro defines a machine_config that is derived from another machine_config. This takes the place of the very typical MACHINE_DRIVER_START()/MDRV_IMPORT_FROM() combination.
- 4. New MACHINE_CONFIG_FRAGMENT() macro defines a partial machine_config that can only be included in another "root" machine_config. This is also used for machine_configs that are specified as part of a device.
- 5. Changed MDRV_IMPORT_FROM() to MDRV_FRAGMENT_ADD() to more accurately describe what is happening.
- 6. Added asserts to the above three macros to ensure they are properly used.
- Aaron Giles updated all machine drivers to use the new macros. Search & replace lists below cover 99% of the changes, with just a few manual fixups.
- Christophe Jaillet updated timer.c: timers get rescheduled only if enable state has changed.
- AGEMAME provided bfm_dm01 improvements: replaced the video screen hack used for the dotmatrix display with a more accurate, artwork-based version. The BFM_DM01 clocks data in one byte at a time, and the new dotmatrix render object represents the 8 dots powered by each byte.
- Frasher and [Palindrome]] updated aristmk4.c:
- Cashcade workaround for topgear.
- Improved a few memory handlers.
- Aaron Giles changed driver_data objects to be devices. Replaced the driver_data_t class with a new driver_device class, which is the base class for all driver_data objects now. The new driver devices are added as the first device in the device list, with a tag of "root"; all other devices are now owned by the driver device.
- Aaron Giles moved core callbacks (machine_start/_reset, sound_start/_reset, video_start/_reset/_eof/_update, and palette_init) into device configuration parameters on these new devices. The driver_device base class overrides device_start(), ensures all other devices have been started, and then calls, in order, the following overridable methods:
- 1. DRIVER_INIT function from the game driver.
- 2. palette_init() - by default calls the MDRV_PALETTE_INIT function.
- 3. driver_start() – new.
- 4. machine_start() - by default calls the MDRV_MACHINE_START function.
- 5. sound_start() - by default calls the MDRV_SOUND_START function.
- 6. video_start() - by default calls the MDRV_VIDEO_START function.
- Similarly, the driver_device class overrides device_reset() and then calls these methods in order:
- driver_reset() – new.
- machine_reset() - by default calls the MDRV_MACHINE_RESET function.
- sound_reset() - by default calls the MDRV_SOUND_RESET function.
- video_reset() - by default calls the MDRV_VIDEO_RESET function.
- To accommodate these changes, initialization order is slightly altered from before. The tilemap, video, sound, and debug systems are now initialized prior to the devices' start. And the user callbacks for DRIVER_INIT, PALETTE_INIT, MACHINE_START, SOUND_START, and VIDEO_START are all called back-to-back. The net effect should be similar, however.
- Aaron Giles changed device_t::subtag to only prepend a prefix if the device is not the 'root' device, in order to keep compatibility with existing tag searching.
- Aaron Giles changed device startup to actively reorder devices when they report missing dependencies. This ensures that the reset functions get called in the same order that the start functions did.
- Atari Ace removed artificial SOUND_ prefix from sound device names.
- Atari Ace converted sauro, scotrsht, segald, seicross, senjyo, shangha3, shaolins, shisen, skyraid, solomon, spcforce, speekatk, splash, sprcros2, ssozumo, suna16, suna8 to driver_data.
- Atari Ace added include files for all remaining drivers with multiple source files.
- Tafoid corrected or clarified a number of duplicated inputs for drivers up through A.
- Aaron Giles changed driver_device to expose the game_driver's ROMs through the device interface. This means all ROMs are now exposed via devices, and thus the process of enumerating ROMs gets simpler.
- Aaron Giles changed all instances of temporarily allocating machine_config objects to just put them on the stack for simplicity, letting the destructor handle the cleanup work automatically.
- Aaron Giles changed machine_config constructor to take a game_driver, from which the machine_config constructor is obtained. This also means the resulting machine_config holds a reference to the game_driver.
- Aaron Giles changed running_machine constructor to no longer take a game_driver, since the game_driver is now obtainable via the machine_config.
- Aaron Giles added two new template classes optional_device<> and required_device<>. Use these to declare the device pointers in the class. The only difference between the two is that required will fatalerror if the device is not found. These new classes are "pass-through" so the underlying pointer can be passed anywhere a regular device pointer would work.
- Aaron Giles fixed compiling on older GCCs (including OS X PowerPC).
- Aaron Giles changed shared memory regions to track their size. Added memory_get_shared() functions to retrieve a pointer to a shared region and optionally the size.
- stephh fixed Dip Switches and Inputs (after verification of the Z80 code) in pipeline (pipeline.c).
- Aaron Giles added templates required_shared_ptr<> and optional_shared_ptr<> which work just like required_device<> and optional_device<> for retrieving a pointer by tag from an address space that specifies AM_SHARE("tag"). Also added templates required_shared_size<> and optional_shared_size<> for retrieving the size of the AM_SHARE region.
- Aaron Giles created a new generic NVRAM device. It can be configured to default to 0-fill, 1-fill, random-fill, or custom fill. In all cases, a same-named memory region overrides the default fill. The address range where the NVRAM can be found is now identified by an AM_SHARE() region of the same tag as the NVRAM device. Drivers can also explicitly configure a separately-allocated NVRAM region via nvram_device::set_base().
- Aaron Giles replaced all instances of MDRV_NVRAM_HANDLER(generic_*) with MDRV_NVRAM_ADD_*("nvram"). Replaced all AM_BASE_GENERIC/AM_SIZE_GENERIC(nvram) with AM_SHARE("nvram"). For all remaining drivers that referenced the generic.nvram directly, changed them to hold a required_shared_ptr<UINTx> to the NVRAM in their driver state, and use that instead. Removed nvram and nvram_size from the generic_ptrs.
- Aaron Giles made each device create its own device_debug instead of letting the debugger do it. This allows the device to start itself up before the debugger tries to figure out what to do with it. Fixes the problem where register names were not populated into the symbol table correctly after he shuffled the initialization order.
- MetalliC updated multfish.c: Updated driver with new information and several new sets as well as several new bootlegs.
- Roberto Fresca provided a new driver for Jubilee's Double-Up Poker. Decoded graphics and colors properly. Hooked the correct TMS9980 CPU, added a preliminary memory map and some technical notes.
- Aaron Giles integrated comments into debugcpu.c, and removed debugcmt.c. Modernized the code and updated so it actually works with the modern debug classes.
- Aaron Giles added AM_DEVREAD_MODERN/AM_DEVWRITE_MODERN/etc. macros for the non-modern address map case so that updated devices can shed their old-style read/write handlers in favor of member functions.
- Aaron Giles bulk converted all okim6295_r/okim6295_w references in the address maps to call to the modern member functions.
- stephh improved Dip Switches and fixed Inputs (after verification of the M68000 code) in quizpani (quizpani.c).
- Guru renamed namcops2 DVDs to match labels.
- Aaron Giles added read_status() and write_command() methods to the okim6295_device for the common case where these are done outside the context of a read or write handler (it was annoying to pass in the fake address space for these cases).
- Aaron Giles added DEVCB_DEVICE_MEMBER() macros which allow you to specify a READ8_MEMBER or WRITE8_MEMBER in a device callback (via dynamically generated trampolines).
- Aaron Giles replaced all remaining calls to okim6295_r/okim6295_w with calls to the new methods, and removed the static functions.
- Guru updated the namcops2 driver: added dongle dump for Federation vs. Z.A.F.T.
- Tafoid corrected or clarified a number of duplicated inputs for drivers up through C.
- Angelo Salese and Charles MacDonald fixed sprite OV flag behaviour in PC Engine VDC emulation.
- Tafoid corrected or clarified a number of duplicated inputs for drivers up through G.
- Aaron Giles converted ASAP CPU core from a legacy CPU core to a modern device.
- Aaron Giles renamed device_execute_interface::m_icount to m_icountptr to avoid commonly-named device values of m_icount.
- Angelo Salese fixed a bogus Hu6280 CPU core bug with timer latch division values Readings.
- Robert Zandona' implemented implemented visible area registers in the SSV driver; now the resolution for all the games is the max visible area (the values of the registers after the boot process).
- Angelo Salese fixed missing VRAM > VRAM DMA flag clearance in PC Engine emulation.
- Pete Ogoun and Andrew Gardner updated strnskil.c: Added MCU dump for banbam.
- Aaron Giles moved sound routing for non-speaker devices over to the sound interface's post-start method. Routing from one sound device to another was broken when sound_init() was moved ahead of device startup.
- Aaron Giles removed vestigial NVRAM from starwars, which is now covered by the x2212 device.
- R. Belmont updated CHDMAN: rewrote bin/cue support from specs, more images now work.
- Atari Ace removed generic.videoram and generic.videoram_size. These generics have no core use, they are simply there for the convenience of drivers. Now that drivers are required to have devices, the data should move there.
- Palindrome added proper handling of the SRAM in Aristocrat MK-5.
- Angelo Salese removed usage of I2C in Aristocrat MK-5.
- Aaron Giles added -bench <emulated-seconds> option to standardize benchmarking.
- Aaron Giles added DECLARE/DEFINE_TRIVIAL_DERIVED_DEVICE macros to simplify the definition of devices that are based off of a parent device, but which differ in name and a single parameter.
- Aaron Giles convert ADSP21xx core to a modern CPU device.
- Aaron Giles made osd_break_into_debugger() now dump a stack crawl if there's no debugger attached in Windows. This means that asserts should have a full crawl now, for easier debugging.
- Aaron Giles replaced NVRAM_HANDLER in leland with an NVRAM device.
- Roberto Zandona’ and Corrado Tomaselli updated the SSV driver:
- Implemented y tilemap offset register.
- Implemented x and y visible area register.
- Disabled tilemap draw when mode=0.
- Confirmed visible area register with a twin eagle II PCB.
- Aaron Giles replaced largely redundant NVRAM handlers with NVRAM devices for namcos2 and a bunch of the Nichibutsu mahjong games. Also did it for the Atari games, moving the old hard-coded EEPROM data out into files finally.
- Sonikos merged ssgbl.c into megadrvb.c and moved bootleg input definitions out of megadriv.c.
- Aaron Giles made the mc146818 a proper device, modernized it, and added an NVRAM interface so that drivers don't have to ask it to be manually saved.
- Aaron Giles added definitions for [DECLARE_]READ_LINE_MEMBER and [DECLARE_]WRITE_LINE_MEMBER so that read/write line callbacks can be defined as member functions.
- Aaron Giles added stubs and new macro DEVCB_DEVICE_LINE_MEMBER to allow these to be referenced from device callbacks.
- Aaron Giles modernized the 6522 VIA device:
- Changed to use the new device timer mechanism.
- Removed all trampolines in favor of modern methods.
- Roberto Zandona' updated the SSV driver: removed kludge for sprite x offset and implemented 1 bit of 7a-7b register.
- Roberto Zandona' updated the SSV driver:
- Implemented y sprite inversion CRT register.
- Added a kludge for dynagear.
- Used CRT registers to get the sprite x offset.
- Roberto Zandona' updated the SSV driver: removed offset values from the init; the offset now are handled by the CRT registers.
- Roberto Zandona' updated the SSV driver : fixed bit #a of 7a-7b CRT register.
- Aaron Giles converted intelfsh to a device, updated all users.
- Roberto Zandona' updated the SSV driver: fixed background disable condition.
- Aaron Giles provided the new build tool makedep.c, derived from src2html.c (really!). Does basic dependency analysis and supports excluding paths.
- Aaron Giles made makefile support a depend target which will run makedep on the src/$(TARGET) tree and create dependencies. It deliberately excludes the root of src/emu as well as the osd directories in order to keep the dependency file down to a reasonable size, so if a core header file changes, you still need to clean and build all.
- R. Belmont updated CHDMAN: improved -extractcd bin/cue output, improved error handling.
- Aaron Giles added memory interface to the intelfsh device so you can access/view the data in the debugger and via the standard memory interfaces. Removed the old memory() method in favor of new functions read_raw()/write_raw() which do direct reads/writes of the data.
- Aaron Giles cleaned up CPS3 No-CD sets to break up the "ROMs" into individual flash pieces which are automatically loaded by the intelfsh device on initialization. Also split the MACHINE_CONFIG to only populate the number of SIMMs actually present for each game, as documented in the top of the file. And replaced the NVRAM_HANDLER with an NVRAM device.
- R. Belmont updated CHDMAN: support for .WAV tracks in bin/cue images.
- Johnboy provided misc updates to neogeo.c:
- viewpoint - Renamed v's to correct chip label.
- ghostlop - Renamed roms to match proto naming scheme.
- savagere, kizuna - Added correct c1.
- crsword - Tagged MVS AND AES VERSION, added correct m1.
- legendos - Added correct m1.
- plgDavid fixed and verified Triple Punch/Knock Out AY-3-8910 clock speed from real hardware.
- plgDavid verified clocks and oki pin on quiz channel question boardset.
- Aaron Giles added an integral device_timer_id to device timers. This is a cleaner way to differentiate between multiple timers rather than relying on the pointers. These values are also saved with the timers. Updated the few devices using device timers to leverage this.
- Aaron Giles added new function device_timer_call_after_resynch() which creates a temporary 0-length timer that calls back through the device's device_timer() method with a given device_timer_id.
- Angelo Salese added a function to change the MSM5205 frequency dynamically.
- Angelo Salese added a set volume function for CD-DA.
Game Support
New games added or promoted from NOT_WORKING status
- Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006)
- Poker Master (Tony-Poker V3.A, hack?)
New clones added
- Vigilante (World, set 2)
- Sega Rally Championship (Revision B)
- Touchmaster 2000 Plus (v4.63 Standard)
- Touchmaster 4000 (v6.01 Standard)
New games marked as GAME_NOT_WORKING