MAME 0.129

From MAMEDEV Wiki

Release Date

MAME 0.129 was released on 4 January 2009.


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:

  • Aaron Giles significantly optimized the inner execution loop. arknoid2 is ~2.5x faster with maximum interleave now.
  • Aaron Giles did a CPU interface organization shuffle. The file cpuintrf.h now merely describes the interface, but does not contain any implementation. All remaining bits of implementation have been migrated either to cpuexec.c or to debugcpu.c. Specifically, cpu_dasm() is now debug_cpu_disassemble(), and cpu_set_dasm_override() is now debug_cpu_set_dasm_override(). Also moved memory_address_physical() to debug_cpu_translate(), since it was only ever used for debugging.
  • Aaron Giles changed all CPU and sound cores to use memory_find_address_space() instead of cpu_get_address_space(). The former is reliable even during early initialization when the CPU cores generally need it.
  • Aaron Giles changed the core execution loop to directly call the execute function instead of using the inline helper (which has been removed).
  • Aaron Giles turned on perfect interleave for remaining tnzs games, and for qix hardware games.
  • Aaron Giles enabled perfect synchronization for thunderj, which has always been iffy. Removed synchronization hacks.
  • robiza updated wc90b2 to use newly-dumped roms.
  • Wilbert Pol changed the F3853 implementation into a device.
  • Aaron Giles put some namcos21 logging behind a (disabled) compile-time define.
  • Phil Bennett corrected cpu_attotime_to_clocks() calculation.
  • Phil Bennett correctly setup the MC6845 device in the rockola, usgames, coinmstr, carrera drivers.
  • Atari Ace updated all the sound core header files to declare their SND_GET_INFO functions, which will be needed once the sound cores become proper devices. It also makes a handful of other header declaration fixes in emu/sound, and makes one SND_RESET routine static. Note: votrax.h is a new include file altogether.
  • Mamesick converted the following drivers to use scanline interrupts, partial updates, and raw video parameters:
    • ddragon
    • gstream
    • vball
    • xain
    • chinagat
  • Smitdogg and Guru replaced the bad (likely hacked) Gururin dump with a fresh one, and fixed some rom names in Double Axle according to the pcb.
  • Aaron Giles cleaned up mcs48 to be dependent on a single makefile define, rather than separate defines for each CPU which didn't really buy us anything in terms of code size or performance.
  • Roberto Fresca correctly setup the MC6845 device in the Funworld driver. Added common device interface and eliminated the screen size & visible area parameters to Magic Card 2.
  • Roberto Fresca correctly setup the MC6845 device in the Goldnpkr driver. Added common device interface, merged witchcrd and sloco93 machine drivers, and added/corrected the 50/60 Hz. DIP switches to all games. The 50hz mode needs to be corrected. Some games as most bsuerte sets have the 50/60 Hz. DIP switch connection patched.
  • Roberto Fresca correctly setup the MC6845 device in the Calomega driver. Added common device interface.
  • Phil Bennett fixed crash when mouse-clicking without a valid mouse_target set (typically after startup when no mouse movement events have occurred).
  • Roberto Fresca provided improvements to lucky8:
    • Fixed memory map.
    • Fixed NVRAM (please delete the old .nv).
    • Added sound through sn76496.
    • Added 3x PPI 8255.
    • Created basic inputs from the scratch to match the PPI connections.
    • Defined the output port.
    • Change description to "New Lucky 8 Lines"
    • Change manufacturer to Wing Co.Ltd.
    • Added an alternate set.
  • Roberto Fresca fixed Cherry Bonus III and Cherry Bonus III (Version 1.40) colors.
  • Angelo Salese added preliminary sound & colors to the Mahjong Shiyou driver, game now throws a sound error. Merged Mahjong Shiyou to the Royal Mahjong driver, graphics are improved because of that.
  • Roberto Fresca provided Cherry I Gold improvements:
    • Completed the missing inputs.
    • Mapped 4 of the 5 DIP switches banks (can't find the 5th).
    • Worked out the conditional DIPs.
    • Documented all DIP switches bank.
    • Added PORT_DIPLOCATION to all switches.
  • Roberto Fresca provided Cherry Bonus III (Version 1.40) improvements:
    • Worked the remaining inputs.
    • Mapped and documented all 5 DIP switches banks.
    • Worked out the conditional DIPs.
    • Added PORT_DIPLOCATION to all switches.
    • The game is working, but need a workaround for the status connection. Each time the player press 'Take' to get the credits, a "call attendant" msg appear and credits must be taken pressing 'Key Out'.
  • Roberto Fresca provided improvements to New Lucky 8 Lines:
    • Proper 3x PPI 8255 connections.
    • Created a new AY8910 interface due to different ports addressing.
    • Hooked all the input banks (8).
    • Improved DIP switches with main game and D-UP rates, keyin values, D-UP game type (reels/cards) and other options to both sets.
    • Added PORT_DIPLOCATION to all DSW banks.
    • Promoted both sets to working state.
    • The game has 2 sets of controls. Once coined, both players can switch control through their own 'BIG' key. If the game boots with 'Coin Jam' error, press RESET to normalize. Please delete your old .nv and .cfg files before run this update.
  • smf implemented GTE divider using reciprocal table derived by pSXAuthor, this should allow the results to be calculated as inaccurately as the real hardware.
  • smf fixed AT28C16 so that a write isn't allowed to start if there is one in progress and a write isn't started if the data is already correct. This allows my dream horse to boot again. Further investigation is needed.
  • smf and David Haywood mapped all docastle.c games' third CPU rom to 0x0000 so that MAME doesn't log unmapped reads constantly.
  • Roberto Fresca provided improvements to goldstar.c driver:
    • Added another set of Cherry Bonus III.
    • Reworked and cleaned ncb3, cb3a, lucky8 and lucky8a inputs.
    • Added the 2nd set of controls to the above games.
    • Removed the OKI references from machine driver and rom load for the above games.
    • Promoted ncb3 and cb3a to working status.
    • Reparented sets.
  • Luca Elia improved bishjan.c:
    • Converted the tilemaps chip to an 8-bit bus width, and added 16-bit handlers using the macros in memconv.h.
    • Improved bishjan memory map.
    • Implemented line scroll emulation.
  • Aaron Giles merged i8x41 (UPI-41) core into MCS-48 core:
    • All code now lives in mcs48.c.
    • Rewrote disassembler as unified MCS-48/UPI-41 disassembler.
    • Changed UPI-41 interfaces to match MCS-48.
    • Added new master read/write interfaces for external access.
    • Unified interface to 8243 expander chip.
    • Converted tnzs and decocass to the new interfaces.
  • Aaron Giles provided DECO Cassette fixes/cleanups:
    • Converted tape handling to a device.
    • Changed tape handling to use a timer callback.
    • Updated to work with new UPI-41 core.
    • Corrected clock speeds for all chips (esp. the 8041).
    • Fixed very wrong CRC implementation (how did it ever work?).
    • Corrected sound IRQ rate.
    • Corrected video timing.
  • Aaron Giles provided Burger Time hardware fixes:
    • Corrected sound IRQ rate and handling.
    • Removed lnc audio reset hack.
    • Full audio memory maps based on schematics.
    • Corrected video timing.
  • Aaron Giles made disassembled PCs be forcibly aligned to the minimum opcode size and explicitly masked.
  • Aaron Giles normalized the CPU cores to always do while (icount > 0), in order to remove the kludge in cpuexec.c that caused us to overeat by 1 cycle to accommodate those cores that there looping while (icount >= 0).
  • Aaron Giles fixed System 18 rendering so that System 16 sprites don't attempt to shadow VDP pixels (causes crash downstream in debug builds).
  • Aaron Giles hooked up DSA/ESA instructions for PowerPC 602 (as no-ops for now). Also hooked up PPC602 IBR. polystar gets a little farther but crashes due to a TLB issue.
  • Aaron Giles removed HAS_PPC* in favor of a single HAS_POWERPC, and a single definition in cpu.mak for all PowerPC variants.
  • Aaron Giles made xsleena run at perfect interleave and simplified the shared RAM. Also moved to modern banking and cleaned up memory maps a bit.
  • Aaron Giles added two new Windows OSD options: -debugger_font and -debugger_font_size, which control the font and size used in the debugger text Windows. These default to "Lucida Console" and 9pt, which is the same face as previously hard-coded but 1pt larger. Personally, he prefers "Consolas" 9pt, which is one of the new "C" fonts included with Windows Vista and later (also available for free download on older systems). Note that only fixed-width fonts really work here, for obvious reasons.
  • Aaron Giles added new frontend option -listbrothers. This will list all "brothers" of a given driver, meaning those drivers that come from the same source file, along with their parent names if they are clones. If a wildcard name is specified for the driver, then the first driver in a given source file will trigger a list of his brothers, and any other drivers in the same source file which match the wildcard will be flagged.
  • Aaron Giles corrected Mr. Do clocks, video parameters, merged memory maps.
  • Aaron Giles fixed i86 core so that REP instructions with high interleave actually make forward progress. Also fixed cpu.mak dependencies for i286.
  • Aaron Giles added polling hooks for SP0250 DRQ line. The callback is now optional. If not provided, then the kick timer is not used. Converted gottlieb speech driver to use polling for SP0250 DRQ line.
  • Aaron Giles added kludge to 6502 core such that CLI followed by RTI does not allow any interrupts through. In the future, the 6502 interrupt handling needs further revisiting.
  • Aaron Giles added the ability for a ROMset to specify a default BIOS. Use ROM_DEFAULT_BIOS("biosname") in the ROM definition. This can be used to ensure a correct default BIOS for ROM versions that care.
  • Kevin Eshbach provided atarisy1 changes:
    • Support for new Atari System 1 TTL Motherboard dump (previously MAME would crash when using it and now it just seems to hang).
    • PROMs dumped from Atari System 1 TTL Motherboard (one PLA needs dumping though).
    • Added notes on the Atari System 1 Motherboard and some of its supported games.
  • Kevin Eshbach added placeholders for various PALs on the following systems: balsente, galaga, ms32, namcofl, rocnrope, tx1.
  • Kevin Eshbach provided popeye.c improvements:
    • Corrected the rom names for Popeye.
    • Added save state support to Popeye.
    • Added the dip location to the encrypted Popeye and fixed the coin settings according to the manual (unencrypted Popeye not changed).
  • Aaron Giles provided some minor MCS-48 cleanup. Added 8040/8050 variants.
  • Phil Bennett fixed buggyboy I/O, engine sound and tilemap scrolling.
  • Aaron Giles made ldplayer work again. Added MDRV_LASERDISC_GET_DISC callback hook which allows for dynamically finding the CHD, rather than relying on the DRIVER_INIT hackery that was there before.
  • Angelo Salese added a work-around for 2 Minute Drill, to get it booting again.
  • Aaron Gilesfixed rendering of slider controls so it doesn't overlap when menus get large.
  • Aaron Giles cleaned up the profiler. Reduced its runtime overhead significantly by inlining the check to see if it is running. Removed obsolete entries and updated the text to more accurately describe each one. Added CPU tags to the CPU names. Switched to using an astring for building the final string. Unfortunately, still a bit too much overhead to leave it on in all builds.
  • Angelo Salese added NO_DUMPS for the VHS on hnxmasev, hnageman, av2mj1bb and av2mj2rg.
  • Aaron Giles fixed auto_malloc() to randomize its memory when allocated in the debug build. This used to be the standard, but it seems to have been removed when the pool allocation was moved into the library. Also changed rand_memory() to use a fixed seed for consistent behavior.
  • Aaron Giles removed a couple of unnecessary typedefs from mamecore.h. Updated romload to use an astring for accumulating errors (I always feared busting that buffer with some huge romlist).
  • Aaron Giles provided romload cleanups:
    • Added running_machine to internal structure, removed as explicit parameter.
    • Added new function rom_file_size() to compute the size of a ROM.
    • Removed rom_first_chunk() and rom_next_chunk() which are no longer needed (all users can use rom_file_size() now).
    • Changed progress display to be based on size of ROMs loaded.
    • Changed temporary load buffer to be dynamically allocated.
    • Fixed reload logic to handle skipped BIOSes.
  • Angelo Salese fixed layer enable,flip x & x/y position in goodejan.c driver.
  • Aaron Giles added simple built-in layout for polepos showing the position of the shifter. Removed debug build hack to popmessage the shifter state.
  • MooglyGuy added savestate support to all games in mrdo.c: mrdo, mrdoy, mrdot, mrdofix, mrlo, mrdu, yankeedo.
  • MooglyGuy added savestate support to all games in docastle.c: docastle, docastl2, docastlo, douni, dorunrun, dorunru2, dorunruc, dorunrca, spiero, dowil, jjack, kickridr, idsoccer.
  • MooglyGuy added savestate support to all games in statriv2.c: statusbj, hangman, trivquiz, statriv2, statrv2v, statriv4, sextriv, quaquiz2, supertr2, supertr3.
  • Roberto Fresca and David Haywood provided lots of improvements to the different Cherry Master hardware: added new sets, created new machine drivers, fixed colors, added PPI devices, created new 8255 and ay8910 interfaces, worked out inputs and DIP switches from the scratch, fixed memory maps, merged the cherrym2.c driver with goldstar.c and much more.
  • MooglyGuy added savestate support to 4enraya.
  • Aaron Giles changed videopkr MCS-48 P4 control register to the PROG line, which is more likely. The way to toggle the PROG line is to read/write/and/or to ports 4-7. Since the board doesn't list an 8243 port expander, it is likely the "writes" to port 4 are really just a mechanism to get the PROG line to toggle to clear the interrupt.
  • robiza discovered numerous new opcodes for cb2001.
  • Luca Elia improved mgcs. It now runs through attract mode. It still locks up as soon as one coins up though, due to the unemulated IGS029 protection.
  • Angelo Salese fixed more stuff with Diamond Derby, game is playable but not yet working (due of a subtle bug, see source)
  • Roberto Fresca updated Slot Carnival:
    • Added gfxdecode & palette length to the machine driver, so tiles can be viewed through F4 in case of someone wants to help.
    • Defined SND_CLOCK for the ay8910.
  • Aaron Giles removed bogus port 4-7 definitions from MCS-48. Added i8243 implementation. Connected 8243 properly to monsterb and system 16a sound. Changed draw80pkr to connect the PROG line like videopkr.
  • MooglyGuy changed Status Trivia 2 (and related games) clock to 13.684MHz to fix game speed. Still wrong, but better than before.
  • Aaron Giles fixed a few out-of-bounds errors revealed by randomly initializing auto_malloc() memory. These would manifest themselves as difficult-to-reproduce crashes on some systems. Affects laserbat, progolf, seta2 and cubeqst drivers.
  • Aaron Giles removed dangling old obsolete code from scramble.c, scobra.c, and galaxold.c.
  • MooglyGuy added savestate support to the TTL74148 and TTL74153 devices.
  • MooglyGuy removed anonymous timers from gridlee and added savestate support.
  • MooglyGuy added savestate support to all games in 40love.c, 88games.c, 1943.c, carpolo.c, circus.c and exidy.c: 40love, fieldday, undoukai, 88games, konami88, hypsptsp, 1943, 1943j, 1943kai, carpolo, circus, circusse, robotbwl, crash, ripcord, sidetrac, targ, targc, spectar, spectar1, rallys, phantoma, mtrap, mtrap3, mtrap4, venture, venture2, venture4, teetert, pepper2, hardhat, fax, fax2.
  • Oliver Stoeneberg cleaned up some memory and file handles in the error cases of ldverify.


Game Support

New games added or promoted from NOT_WORKING status


New clones added


New games marked as GAME_NOT_WORKING