Mameinfo.dat v0.189
Updated - 21st September 2017

Homepage -
E-Mail -



What's New

*NEW* Mameinfo + MAMEUI-inifiles-0190GIT (16th Sep) (3.30 Mb)

Mameinfo 0.189 (2.72 Mb)

MAMEUI 0.189 Category-, Version and Alltime inifiles (683 kB)

MAME NEWS from 0.37b1 - 0.189 (4.00 MB)

PCB-infos 0.153 (2.11 MB)

MAME listinfos from 0.25 to 0.170 (153 MB)

New in MAME:    
0.190GIT - New games: unknown Italian poker game - New Working games: Alligator Hunt (Spain, protected), Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994), Glass (Ver 1.0, Break Edition, Checksum C5513F3C), Glass (Ver 1.0, Break Edition, Checksum D3864FDB), Great Guns, Maniac Square (protected, Version 1.0, Checksum CF2D), Slap Fight (A76 set, GX-006-A PCB) and Virtual Pool - New Non-Working games: Bingo Wave, Cisco/Fisco 400 [TTL], Gaelco Football, Gran Trak 10/Trak 10/Formula K [TTL], Gran Trak 20/Trak 20/Twin Racer [TTL], Le Mans [TTL] and Qwak!/Quack [TTL] - New clones: Alligator Hunt (World, protected), Beast Busters (Japan, Version 2, 3 Player), Big Buck Hunter - Shooter's Challenge (v1.60.01), Chuka Taisen (Japan) (P0-025-A PCB), Iron Horse (version K), Kick Off (bootleg), Lady Master of Kung Fu (set 2, older), Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 1.0) (AT89c52 protected), Maniac Square (protected, Version 1.0, Checksum DEEE), Robot Hunting (bootleg of Death Race) [TTL], Royal Card / Royal Jackpot (with a third draw)(encrypted), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B -P, Syvalion (US, PS2 Taito Legends 2) and Syvalion (World, PS2 Taito Legends 2) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Bomberman 93, Die Hard, Hit The Ice and Knight Rider Special - New PinMAME games: Guns N Roses (2.00) and Meteor (Stern, set 2) - New drivers: bingowav.cpp - New devices: amd_29f800b_16bit, arm946es, deco_irq, i82072, mc68340duart, mc68340sermod, mc68340timmod and mea8000 - ADSP21062 CPU: Removed leftover debug code - ARM7 CPU: Various changes. Added ARM946ES variant. Fixed up CPU ID values. - COP400 CPU: . Emulated COP402 MCU in Quiz Punch II . Rewrote the execution control logic to fetch each byte of an instruction separately in one pass of the main loop. This provides EEPROM-compatible timing for the SIO shift register, allowing the 93C46 on Quiz Punch II to be read and written properly (though its default contents are a bad dump). . Added M pseudo-register (internal RAM referenced by B) to debugger state . Added T register to debugger state on devices where it only affects SKT . The SIO state is now displayed in binary when it is defined as a shift register . Skipped instructions and the SKIP flag can be debugged by compile-time switch (disabled by default) - M68000 CPU: Fixed abcd/sbcd/nbcd to pass 68k-bcd-verifier (cpu\m68000\m68k_in.cpp). Flamewing has a test that claims to exhaustively test BCD instructions: Verified the test on MegaDrive Model1 (68000). - M68705 CPU: Fixed corrupt bytes in two MC68705 dumps of clones Arkanoid (Japan, newer) and Nekketsu Kouha Kunio-kun (Japan) after re-analysis of raw dump data. - MC68340 CPU . Fixed MCR register enum error and silented some logerror spam by turning them into LOGx statements (machine\68340tmu.h) . Deskeletonized the serial module as a device derived from the DUART device defined in mc68681.cpp (machine\68340.cpp and 68340ser.cpp). Fixed SIM module read register bug and added informative chip select logic LOG messages (machine\68340sim.cpp). Fixed -validate errors and made slight cleanup. . Simplified code by making the timer module implementation a device and created two independent instanses, as it should be. - MN1020012A CPU: Fixed savestate issue - uPD7725 CPU . Updated OV1 and S1 flag calculation to be correct based on AWJ's NESdev forums post and the original datasheets. . DPL bits of the instruction field are ignored if DP is the destination register of the current opcode. Similarly, RPDCR bit is ignored if RP is the destination register of the current opcode. - SAA1099 sound: Removed unnecessary device tag from logerror messages - Sound Interface . Soundlatch modernization in 1942.cpp, airbustr.cpp, aquarium.cpp, astrocde.cpp, bking.cpp, bombjack.cpp, dacholer.cpp, ddragon3.cpp, deniam.cpp, exterm.cpp, gaelco3d.cpp, gaiden.cpp, karnov.cpp, lkage.cpp, m90.cpp, mainsnk.cpp, mazerbla.cpp, onetwo.cpp, seicupbl.cpp, segajw.cpp, seta.cpp, shadfrce.cpp, snowbros.cpp, spartanxtec.cpp, spbactn.cpp, spyhuntertec.cpp, sub.cpp, suprridr.cpp, tecmosys.cpp, thedeep.cpp, vball.cpp and wwfsstar.cpp . Added 74LS259 device to balsente.cpp, munchmo.cpp, pitnrun.cpp and sub.cpp . aquarium.cpp: Soundlatch modernization. Use BITSWAP8 to implement MSM6295 line swap. . dblewing.cpp: Modernized soundlatch. Improved IRQ arbitration for (hopefully) less dropped sound commands. . karnov.cpp and mugsmash.cpp: Use MCFG_GENERIC_LATCH_DATA_PENDING_CB for soundlatch . sub.cpp: Soundlatch modernization. Added watchdog timer. Acknowledge all interrupts. - YMF271 sound: Added slot end status bits, fixes at least missing shots samples for Desert War. - 6840 PTM and 6850 ACIA: Fixed so that LOG_OUTPUT_FUNC can be defined as printf. Removed c_str() in 6840 LOG statements. - 68681 DUART: Added the DUART compatible 68340 serial module (machine\mc68681.cpp) - 8155 RIOT: Cleanup timer start, a clock of 0 causes MAME to freeze. - 8250 UART: Added and use INS8250 register defines. Replaced LCR, LSR and MCR bits by defines. - 8251 USART: Fixed setup for sync byte - 8259 PIC: Break up the MCFG_PIC8259_ADD macro - DECO Custom: Use DEVCB for DECO 146 input ports and explicitly define these in all drivers (machine\deco146.cpp) - EEPROM: Improvements to 28XX parallel EEPROM emulation. Emulated direct manipulation of /OE line for read/write mode control. Special handling for data polling before a write has completed. Allow optional configuration of device to lock EEPROM after each write, as often used by Atari. Eliminate the Atari EEPROM interface devices, since their special features have been incorporated into the base device. To continue using old NVRAM files, renamed them from eeprom_eeprom to eeprom (machine\eeprompar.cpp; drivers\arcadecl.cpp, atarig1.cpp, atarig42.cpp, atarigt.cpp, atarigx2.cpp, atarisy1.cpp, atarisy2.cpp, badlands.cpp, batman.cpp, blstroid.cpp, cyberbal.cpp, eprom.cpp, gauntlet.cpp, klax.cpp, mastboy.cpp, offtwall.cpp, rampart.cpp, relief.cpp, shuuz.cpp, skullxbo.cpp, thunderj.cpp, toobin.cpp, vindictr.cpp, xybots.cpp, includes\harddriv.h and machine/atarigen.cpp). - Flash ROM: Added 29F800B flash boot device for (MESS) D-box - Floppy: Added drive LED callback. This currently only works if you set the drive select lines correctly, which the upd765 does now. Hook it up to (MESS) Kontron PSI98 and use the TEAC FD-55F drive instead of the generic one. - MB3773 Power Supply: Added watchdog device to aquarium.cpp and gcpinbal.cpp - Programmable Logic Device (PLD): Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101 (tools\jedutil.cpp). - Voodoo GFX . Removed wrapping after y origin conversion so that proper y-clipping is performed (video\vooddefs.h and voodoo.cpp). Fixes pool cue wrapping out of top the screen in Virtual Pool. . Changed 2x2 dither matrix values. Allows ITEagle driver power-on video memory tests to pass (video\voodoo.h). . Fixed depth buffering for Voodoo 2 cards and greater (video\voodoo.cpp) - cninja.cpp and deco32.cpp . Added 'Data East IRQ Controller' device. This implies proper VBlank IRQ ack for all games now. Use a device map, move screen include to header (machine\deco_irq.cpp). . Added and improved raw screen parameters for various games. - deco_mlc.cpp: Removed erroneous I/O ports - f1gp.cpp: ACIA interrupt goes to second CPU - flstory.cpp: Merged memory maps and fixed gfx bank default (fixes Onna Sanshirou POST messages). Added screen raw parameters. - gaelco2.cpp . Added DS5002FP SRAM dump to Maniac Square (protected, Version 1.0, Checksum CF2D) (Games now playable) . Added DS5002FP SRAM dumps to Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994) and clones (Ver 1.0, Break Edition, Checksum C5513F3C) and (Ver 1.0, Break Edition, Checksum D3864FDB). . Base Gaelco game's CPU clock speed on actual OSCs - galaxian.cpp . Miscellaneous configuration cleanups and corrections . 555 star blinking timer is only present on Scramble, Super Cobra and similar hardware. . Scramble clone Explorer (bootleg of Scramble) uses two AY-3-8912 and no 555 timer . Added the (first) two 8255 PPIs only in konami_base and stop removing and readding these in derivative configurations . Safer order for static definitions - gstriker.cpp . Fixed MB60553 Zooming Tilemap compared against visible area. Improved MB60553 zooming alignment, mostly noticeable in Tecmo World Cup '94. . Added buffered spriteram (sprites being ahead 2 frames; video\gstriker.cpp) . Tecmo World Cup '94: Added MCU simulation to clone (set 2). Fixed tournament logic. Added input labels. Replaced MACHINE_NOT_WORKING flag with MACHINE_UNEMULATED_PROTECTION. . Fixed dipswitches for V Goal Soccer and added DIP locations . Added rotation to MB60553 core, used by V Goal Soccer during display of football field. . Serial link preparation (6850 ACIA) for Grand Striker - homedata.cpp: Fixed sound I/O write in Homedata driver (affected hourouki, mhgaidenm, mjhokite, mjclinic and mrokumei). This fixed missing voices of "Reach", "Ron" etc. in Mahjong Hourouki (ID 00490). - iteagle.cpp . Changed 2x2 dither matrix values. Allows ITEagle driver power-on video memory tests to pass (video\voodoo.h). . Added vblank handling, updated gun control and added proper eagle1 (Virtual Pool) battery ram functionality (machine\iteagle_fpga.cpp). . Virtual Pool: Removed wrapping after y origin conversion so that proper y-clipping is performed (video\vooddefs.h and voodoo.cpp). Fixes pool cue wrapping out of top the screen in Virtual Pool. Set "Medium" resolution as default for Virtual Pool. Setting to VGA is buggy and low resolution will hang the game. Removed MACHINE_NOT_WORKING and IMPERFECT_GRAPHICS flags - Game now playable. . Updated DIP settings for Big Buck Hunter series and Virtual Pool. . Set MIPS3DRC_STRICT_VERIFY option. Sees to eliminate game hangs in Big Buck Hunter series. . Set Carnival King to start at medium resolution by default - kaneko16.cpp . Berlin Wall clearly uses 4way sticks . Made dial/paddle optional for Great 1000 Miles Rally, fixes INP playback. - ladyfrog.cpp: Added missing DAC sound chip, fixes death scream in Touche Me. Added screen raw parameters. - leland.cpp: Fixed missing DAC sounds in later Ataxx-era audio - mazerbla.cpp . Added multi-layer drawing (video\mb_vcu.cpp) . Improved layer clearances for Mazer Blazer . Fixed layer clearances for Great Guns (video\mb_vcu.cpp). Fixed lightgun inputs. Soundlatch modernization. . Added backup RAM . Improved collision detection and fixed layer 0 data setups. Driver and input cleanup. . Promoted Mazer Blazer sets from NOT_WORKING to UNEMULATED_PROTECTION - megaplay.cpp . Try make start buttons work properly through BIOS. Demoted Mega Play to not working. Note: Driver is marked as NOT WORKING because interaction between BIOS and 68k side is not fully understood. The BIOS often doesn't register that a game has been started and leaves the 'PRESS P1 OR P2 START' message onscreen during gameplay as a result. If this happens, the games usually then crash when you run out of lives as they end up in an unknown state. . Log the internal P1/P2 Start activity to make it more obvious where things are going wrong - midzeus.cpp: Map proper * key to keypad - model2.cpp . Fixed luma overflow (Virtua Striker flag colors) (video\model2rd.hxx) . fixed Model2 address map, the framebuffer for Last Bronx title screen is not a mirror. - ninjaw.cpp: Saner interleave CPU timings, attempt to fix missing enemies bug in Ninja Warriors. - seattle.cpp and vegas.cpp . Adjust tx interrupt status to mirror tx buffer empty (machine\smc91c9x.cpp). Fixes linking boot hang on Cart Fury. . Added Denver UARTs, gearshift and updated input dips for various Vegas games. . Clean up timer code in VRC5074 controller - segas24.cpp: Added uPD4701A devices for analog input. Updated documentation. - seta.cpp . Use uPD4701A device for analog input in Krazy Bowl . Added uPD4701A device with multiplexing to U.S. Classic . Replaced bogus "kiwame_nvram" with TMP68301 parallel interface in Pro Mahjong Kiwame - superqix.cpp . Correctly implemented 8751 port2 latch based on PCB tracing. Fixed semaphores implementation to match PCB tracing. Got rid of z80<->mcu 'pending' communication hacks by using synchronize calls. Moved superqix specific variables and member functions to its own subclass. Consolidated the 8031 bootleg and 8751 protected set port2 handling code. Removed some unnecessary trampoline functions. . Added a sync trampoline for reading the semaphores via the AY-3-8910 #1, MCFG_QUANTUM_PERFECT is no longer needed. - taitosj.cpp: Added synchronize calls on soundlatch write and bit7 clear, as well as for writing and clearing the secondary sound semaphore. Use input_merge for both NMI enable and the secondary semaphore. Added sound cpu mirroring. - tnzs.cpp: Removed outdated comments - tourvis.cpp: Added new BIOS dump, clarified BIOS names and updated several games with newly discovered ID codes. - Alcon: Added MCU to clone Slap Fight (A76 set, GX-006-A PCB) (Game now playable) - Alligator Hunt: Added new DS5002FP SRAM dump to Alligator Hunt (Spain, protected) (Game now playable). Data was verified using a 2nd board, only 1 byte changed in the code area, data table is also verified by checksum in the code, and by the unprotected set as reference. This is a good read. - Ameri-Hockey . Make Z8 CPU data space optional and fixed stack pop semantics. Mask addresses for external memory accesses based on P0 control bit and external stack accesses. . Fixed C flag polarity for CP, SBC, SUB and actually subtract with carry in SBC. This lets Ameri-Hockey pass its initial checksum calculation. . Interrupts are working now (Z8681 CPU; cpu\z8\z8.cpp) - Big Event Golf: Added DAC (cup in, crowd applauses samples) - Blood Bros: Prevent mistimed interrupts that were killing sound in clone West Story (bootleg of Blood Bros.) - Borderline: Added sound samples ( - Buggy Challenge . Removed NMI trampolines. Added details and mirrors to memory map based on schematics. Added note about the maybe unused scoreboard hookup, similar to Grand Champion. . Fixed sound timer irq frequency, fixes enter initials BGM tempo. . Fixed background pen and clipping enable (fixes title screen and stage 3 graphics). Converted accelerator to analog, proper sound irq frequency. - Capriccio Spin 2: Some rather blind guesses that don't help much now - Caveman Ninja: Fixed sound banking in clone Tatakae Genshizin Joe & Mac (Japan, bootleg) - Chain Reaction: Game uses 4-way joystick and 2 buttons - Championship Bowling: Separated trackball reset handler - Cool Minigame Collection: Added speedup - Demons & Dragons (prototype): Added MACHINE_IS_INCOMPLETE flag since sound program is missing - Dinosaur King - Operation: Dinosaur Rescue: Dumped Compact Flash card - Exterminator: Soundlatch modernization and save state support. Might as well make the IRQ line explicit. - F1 Super Battle: Fixed extra VRAM boundaries and inputs. Added coin counters. - Grand Champion: Fixed the sound latch system such that the bit 7 clearing actually works and properly synchronized the sound latch writes and bit 7 clears. Added memory map comment for sound cpu. Added missing sound NMI enable and hooked sound NMI to the sound semaphore. Added sound semaphore readback. Minor format changes to ease potential future code merge. - Guzzler: Added PAL dump to clone Guzzler (Swimmer Conversion) - Heavy Unit: Added more generic latch devices for inter-CPU communication - Hexion: Fixed music speed by hooking up the INT_TIME callback from the K053252 CCU properly. Fixed music pitch for clone Hexion (Asia ver AAA, bootleg). - King Derby: More plausible method of generating NMI on sound CPU - Lunar Lander: Changed Language rom which passes now self-test (former source built attempt had 2 bytes differing) - Metal Hawk: Fixed missing sound (ID 06680) - Ninja Clowns . Fixed palette read accesses, fixed many color bugs (title screen fade-in, water spray properly blue and color cycle effects in bonus stage). . Fixed 0x40000-0x7ffff constant area, now program ROM checksum correctly returns OK status. . Moved vblank irq generation for Ninja Clowns, fixes frames per second jerkiness. - QB-3: Fixed missing AY-3-8910 sound (ID 06682) - Quiz Punch II: Emulated COP402 MCU. Rewrote the COP400 execution control logic to fetch each byte of an instruction separately in one pass of the main loop. This provides EEPROM-compatible timing for the SIO shift register, allowing the 93C46 on Quiz Punch II to be read and written properly (though its default contents are a bad dump). - Panic Road: Demoted Panic Road to MACHINE_NOT_WORKING. Playtesting shows that the collisions aren't right. - PinMAME: Added meat to the bones to inderp.cpp and stargame.cpp - Return of the Invaders: Fixed colors in clone (bootleg no MCU set 3) - Rock'n Rage: fixed priorities and text tile banking for Rock'n Rage. Fixes stage 1 boss eyes flashing and Shena display inside the bubble at stage 5 boss. - Star Wars: Fixed missing sounds by restoring the old boost_interleave method as an annex to the modern soundlatch semaphore handling (ID 06672) - Stunt Air: Added 74LS259, NVRAM and watchdog timer. Attempt at improving sound communication. - Super Qix: Traced out correct clock divider for CPU and MCU from PCB. Fixed issue with clone Super Qix (bootleg of V1.0, 8031 MCU) not working with the correct clock speed and synchronize fences. Added emulation of the 8031 bootleg MCU port 3 output latch. - Ultraman: Sound IRQ modernization - Input port . Using a better overload of utf8_from_uchar() in ioport_field::key_nam (emu\ioport.cpp) . Removed really bad usage of machine->rand() (emu\ioport.cpp) - Dipswitch fixes in champbwl.cpp, gstriker.cpp, inderp.cpp, iteagle.cpp, legionna.cpp, mazerbla.cpp, seattle.cpp, subsino.cpp (ID 06673) and vegas.cpp - Fixed rom names in inderp.cpp, tnzs.cpp, tourvis.cpp, tsamurai.cpp and zn.cpp - Description changes of Ace Driver: Racing Evolution (Rev. AD2, World), Ace Driver: Victory Lap (Rev. ADV2, World), Alpine Racer (Rev. AR2 Ver.C, World), Alpine Racer (Rev. AR2 Ver.D, World), Alpine Racer 2 (Rev. ARS2 Ver.A, World), Alpine Racer 2 (Rev. ARS2 Ver.B, World), Alpine Surfer (Rev. AF2 Ver.A, World), Aqua Jet (Rev. AJ2 Ver.B, World), Armadillo Racing (Rev. AM1 Ver.A, Japan), Beast Busters (Japan, Version 2, 2 Player), Chuka Taisen (Japan) (P0-028-A PCB), Chuka Taisen (US) (P0-028-A PCB), Chuka Taisen (World) (P0-028-A PCB), Cyber Cycles (Rev. CB2 Ver.C, World), Dai Ressya Goutou (Japan, version K), Dinosaur King - Operation: Dinosaur Rescue (USA, Export) (MDA-C0021), Dirt Dash (Rev. DT2, World), Glass (Ver 1.0, Break Edition, Checksum C5513F3C), Glass (Ver 1.0, Break Edition, Checksum D3864FDB), Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994), Glass (Ver 1.1, Break Edition, Checksum D419AB69, Version 1994) (censored, unprotected), Grand Striker (Europe, Oceania), Graplop (DECO Cassette) (US) (Prototype?), Iron Horse (version H), Lady Master of Kung Fu (set 1, newer), Maniac Square (protected, Version 1.0, Checksum CF2D), Maniac Square (unprotected, Version 1.0, Checksum BB73), Meteor (Stern, set 1), Ninja Clowns (27 oct 91), Prop Cycle (Rev. PR2 Ver.A, World), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) (Rev A), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B, Slap Fight (A76 set, GX-006-A PCB), Slap Fight (A77 set, 8606M PCB), The NewZealand Story (Japan, new version) (P0-043A PCB), The NewZealand Story (Japan, old version) (P0-041A PCB), The NewZealand Story (US, old version) (P0-041A PCB), The NewZealand Story (World, new version) (P0-043A PCB), The NewZealand Story (World, old version) (P0-041A PCB), The NewZealand Story (World, prototype) (P0-041-1 PCB), The NewZealand Story (World, unknown version) (P0-041A PCB), Time Crisis (Rev. TS2 Ver.A, World), Time Crisis (Rev. TS2 Ver.B, World) and Tokyo Wars (Rev. TW2 Ver.A, World) - Renamed (aligator) to (aligators), (bbhsc) to (bbhsca), (ironhors) to (ironhorsh), (maniacsq) to (maniacsqu), (mp_twc) to (mp_twcup), (tecmowcm) to (twcupmil), (twrldc94) to (twcup94), (twrldc94a) to (twcup94a), (tws96) to (twsoc96), (wc90) to (twcup90), (wc90a) to (twcup90a), (wc90b) to (twcup90b), (wc90b1) to (twcup90b1), (wc90b2) to (twcup90b2), (wc90ba) to (twcup90ba) and (wc90t) to (twcup90t) - MAME . VIDEO RENDERING SYSTEM . PNG . Make verify_header public (util\png.cpp) . Detect image format(png) before loading image. No PNG error message anymore when loading JPG (emu\rendlay.cpp). . Multi-Language: Updated Dutch, Turkish and Russian translations . Returning a reference from various corestr.cpp calls to avoid unnecessary string copies (util\corestr.cpp) . Fixed warning message (ui\info.cpp) . PLUGINS . Fixed is_oneshot() (cheat\init.lua). Fixed cheats driven by _("") ) . Updated hiscore.dat . LUA engine: Translation support . Validity . MAME -validate will now report an error if no matches occur. Fixed exit status (emu\validity.cpp). . Added a natural keyboard validation to check for valid natural keyboard (uni)codes (emu\ioport.cpp and validity.cpp) . UI . Don't translate info box titles twice (ui\datmenu.cpp, ui\selmenu.cpp) . Bug fix for network menu (ui\miscmenu.cpp) . Merged duplicate code for drawing UI palette menu . Use std::unique_ptr to manage instances of slider_state (ui\slider.h). Eliminate now-unnecessary machine parameter (ui\ui.cpp). . Don't use auto_alloc for temporary bitmaps (ui\selmenu.cpp). Eliminated last use of auto_alloc in frontend (ui\ui.cpp). . AUDIT/ROMLOAD . Defer decoding DOS timestamps (util\unzip.cpp) . Turn most of the ROM entry accessor macros into templates, and make them work on tiny_rom_entry/rom_entry pointers/references, also claw back a little performance lost in the ROM entry refactoring. . Make ROM BIOS reported in listxml output match what ROM loading does. This is the soure of the "BIOS can only apply to one region" meme - it actually works for all regions, but the listxml output was wrong, making it look like it didn't work. . Attempted to sanitize/rationalize how we access UTF-8 command line arguments. Specifically, this creates a call osd_get_command_line() that returns UTF-8 command line arguments as std::vector. On non-Windows platforms, this does nothing more than build the vector. On Windows, this invokes GetCommandLineW() and CommandLineToArgvW(). This also attempts to unwind usage of wmain()/_tmain() on Windows, which is not standard. Related to this, this fixes a bug in Imgtool; specifically, non-7 bit ASCII was not being handled correctly in Windows. This is really an admission that the way that Windows handles Unicode and command line arguments sucks, and it is my belief that having a wmain() or _tmain() declaration specific for Windows is a worse solution [Nathan Woods]. . Added support for C++ output streams using LOG_OUTPUT_STREAM instead of using printf as LOG_OUTPUT_FUNC (emu\logmacro.h) - SDLMAME: Make the C-like parts more consistent with MAME (tools\ - Compiling: Fixed compling on OS X Sierra (machine\diablo_hd.cpp) 0.189 - New games: Kick Ball, Poosho Poosho, Tekken Battle Scratch and 'unknown 'Space Invaders' gambling game' - New Working games: Football Power, Forty-Love (Japan), International Toote II (v1.24, P387.V01), Night Gal Summer, TH Strikes Back and Virtua Bowling (Hong Kong, V101HJS) - New Non-Working games: Konnano Hajimete! (Japan), Magic Reels, Nurete Mitaino... - Net Idol Hen (Japan), Sengoku Mahjong Kurenai Otome-tai (Japan), Sexy Gal Tropical [BET] (Japan 850805 SXG T-02), Super Game (Sega Master System Multi-game bootleg) (alt games) - New clones: 1943: Midway Kaisen (Japan), Alligator Hunt (unprotected, set 2), B.Rap Boys Special (World), Carrier Air Wing (USA 901130), Cool Minigame Collection (Italy), Crash Road (bootleg of Space Chaser), Crazy Climber (US set 2), Crime Fighters 2 (Japan, 4 Players, ver. N), Daiku no Gensan (Japan, M82), Derby Owners Club World Edition (Rev B), Dirt Devils (Japan, Revision A), DoDonPachi III (World, 2002.05.15 Master Ver), Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 2), Mega Zone (program code L), Ordyne (World), Popeye (Japan, Sky Skipper hardware, Older), Port Man (Japan), Print Club (World), Street Fighter (World) (protected), Street Fighter II: The World Warrior (Quicken, bootleg), Super Athena (bootleg), Super Chase - Criminal Termination (1992/01/18 18:29:18 CHASE 3 VER 1.3O, prototype), Trigger Heart Exelica (Japan) (GDL-0036), Vamf x1/2 (Europe, version 1.0.0903), Virtua Fighter 4 Evolution (Version B) (Japan) (GDS-0024C) and WWF Superstars (US revision 6) - New AGEMAME games: Honey Pot (03J00241, NSW/ACT), Koala Mint (CHG1573, US) and Venice (02J02056, Venezuela) - New PinMAME games: Goldeneye (4.02) and Star Wars (1.06, Display S1.05) - Removed games: Koala Mint (CHG1573, US, set 2) - New drivers: magreel.cpp - New devices: cd4099, f9334, hc259, hct259, ipt_merge_all_hi, ipt_merge_all_lo, ipt_merge_any_hi, ipt_merge_any_lo, ls259, mb8421_mb8431_16, taitoio_yoke and tmpz84c015 - HD44801 CPU: Workaround related to MT #06638 (Exception when using -debug); this disables a poorly implemented disassembly feature to prevent assertion failures and crashes when debugging drivers using HD44801 CPU (champbas.cpp, equites.cpp and shougi.cpp). Get rid of next_pc tables (cpu\hmcs40\hmcs40d.cpp) - I386 CPU: Created explicit i386dasm include for x86 DRC - I8086 CPU: Added support for IF status and segreg address spaces - M6502 CPU: Corrected cycle counts for undocumented $BF instruction (om6502.lst). Note: Passes now the Lorenz testsuite-2.15's cputiming.prg and does not break laxay.prg. Ref: NMOS 6510 Unintended Opcodes no more secrets (v0.91 - 24/12/16) page 14 ($BF) cycles = 3 to read and 4+1 if page boundary. - MC68340 CPU: Added implementations for VCO clock synthesizer and Timer module Counters, IRQs and one operational mode. - V25 CPU: Make IDB register state visible to debugger - Irem M72 Audio: ACCESSING_BITS cleanup (m72_audio_device; m72.cpp, m90.cpp, shisen.cpp and vigilant.cpp) - MSM5205 and MSM6585 sound: Delay data capture timing (should help with synchronization later) - Seibu Sound System: Use 8-bit handlers for main CPU accesses (audio\seibu.cpp) - Sound Interface . Soundlatch modernization in amspdwy.cpp, brkthru.cpp, btime.cpp, buggychl.cpp, dassault.cpp, dec0.cpp, flstory.cpp, gaelco.cpp, lsasquad.cpp, m107.cpp, madalien.cpp, nycaptor.cpp, progolf.cpp, rpunch.cpp, shangha3.cpp, sidepckt.cpp, splash.cpp, tagteam.cpp, tbowl.cpp, toaplan2.cpp and tubep.cpp . Synchronize machine\gen_latch.cpp at start to ensure broadcast of initial "not written" state. This fixes sound in Onna Sanshirou and makes the N.Y. Captor hack unnecessary. - Yamaha YMW-258-F sound: Confirmed Sega/Yamaha 315-5560 MultiPCM as Yamaha YMW-258-F - YM2151 sound: Emulate reset line - 8259 PIC: Removed hack used by M92 driver (HACK_get_base_vector(); machine\pic8259.h) - CD-ROM: Added cdrom_get_chd (Get a handle to a CHD from a cdrom; util\cdrom.cpp) - HuC6260 video: Fixed B&W mode in (MESS) PC Engine 'Son Son II' causes total palette corruption (ID 06641) - Imgtool . Changed a pointer to a reference and fixed a std::string(nullptr) bug (imgtool\imgtool.cpp) . Proper cleanup of floppy object after create/open failure (imgtool\iflopimg.cpp) . Merged normalize_filename() into cannonicalize_path() and C++-ification . Eliminated Imgtool-specific rand() function. Changed another charconverter access. . C++-ification of imgtool_forkent structure . Made the logic for B&W icon able to handled non-masked set pixels for (MESS) Classic MacOS images (imgtool\modules\mac.cpp) . Fixed features.supports_geticoninfo. Fixed the "GET" command (imgtool\imgtool.cpp) - Irem Custom: VCK modernization and removed unnecessary subdevice resets (audio\irem.cpp and sound\msm5205.cpp; m52.cpp, m57.cpp, m58.cpp, m62.cpp and travrusa.cpp) - MOS6526 CIA: Show state of registers that can be read without side effects in debugger - TTL . New 74LS259/9334/CD4099 devices . These humble 16-pin logic devices were commonly used in 8-bit arcade games to control coin counters/lockouts, IRQ flipflops, graphics banking, slave CPU reset lines, discrete audio triggers, screen flipping, serial EEPROMs and much else. Over 100 drivers and a few bus devices have been updated to use the new implementation, and a great deal of research has gone into documenting the physical location of these devices on actual PCBs in the source. Write handlers have been provided for both orthodox and somewhat less conventional memory mappings. . Added coin counters and/or lockouts to Atari System 1 games, Basketball, Gauntlet, Gyruss, Hana Yayoi, Hole Land, Jr. Pac-Man, Mahjong Sisters, Pooyan, Roc'n Rope, Squash, Thunder Hoop, Time Limit, Time Pilot '84 and many others. This also cleans up coin counter behavior in Sauro and Rally Bike. . Note: The purpose of committing this change, which has been several months in the making, early in the 0.189GIT cycle will be to allow time for fixing potential regressions; I've fixed a number of drivers that lost sound from this for various reasons (hnayayoi.cpp having missing or garbage ADPCM was particularly painful, since the three games in that driver all work slightly differently), but I can't test all affected drivers exhaustively. @Tafoid, don't bother running automated screen capture comparison tests on this, as many drivers are now expected to have the screen flipped for the first few seconds after reset. . Make 74LS259 configuration member const, avoid Object and object distinguished only by case in one line, use MAME_ prefix on all include guards to make it easier to deal with them in -dM (dump preprocessor macros) output. . Added write_d1 handler . Added 74LS259 device to ambush.cpp, asteroid.cpp, atarisy1.cpp, bagman.cpp, cclimber.cpp, centiped.cpp, champbas.cpp, changela.cpp, cinemat.cpp, circusc.cpp, cloak.cpp, cloud9.cpp, clshroad.cpp, cortex.cpp, crgolf.cpp, ddenlovr.cpp, dynax.cpp, equites.cpp, fastfred.cpp, firefox.cpp, freekick.cpp, funkybee.cpp, gaelco.cpp, gaelco2.cpp, gaelco3d.cpp, galaga.cpp, gauntlet.cpp, gladiatr.cpp, glass.cpp, gng.cpp, gomoku.cpp, gridlee.cpp, gyruss.cpp, harddriv.cpp, hnayayoi.cpp, holeland.cpp, hyperspt.cpp, jedi.cpp, joctronic.cpp, jp.cpp, jpms80.cpp, jrpacman.cpp, junofrst.cpp, kchamp.cpp, kyugo.cpp, ladybug.cpp, liberatr.cpp, looping.cpp, m63.cpp, mappy.cpp, marineb.cpp, mario.cpp, mastboy.cpp, megazone.cpp, mermaid.cpp, mikie.cpp, mirax.cpp, mjsister.cpp, mouser.cpp, nemesis.cpp, pacman.cpp, pandoras.cpp, pengo.cpp, playch10.cpp, polepos.cpp, pooyan.cpp, punchout.cpp, rallyx.cpp, retofinv.cpp, rocnrope.cpp, rollrace.cpp, sauro.cpp, sbasketb.cpp, shangkid.cpp, shougi.cpp, skyarmy.cpp, slapfght.cpp, sonson.cpp, spcforce.cpp, splash.cpp, stactics.cpp, targeth.cpp, thepit.cpp, thoop2.cpp, timelimt.cpp, timeplt.cpp, toaplan1.cpp, tomcat.cpp, tp84.cpp, trackfld.cpp, tsamurai.cpp, tubep.cpp, turbo.cpp, tutankhm.cpp, vastar.cpp, warpwarp.cpp, wiping.cpp, wrally.cpp, xorworld.cpp, zaccaria.cpp and zaxxon.cpp . Added 74HC259 device to de_3.cpp (video\decodmd1.cpp) and neogeo.cpp . Added F9334 device to avalnche.cpp, bsktball.cpp, canyon.cpp, copsnrob.cpp, destroyr.cpp, dragrace.cpp, flyball.cpp, orbit.cpp, sbrkout.cpp, skydiver.cpp, sprint2.cpp, sprint4.cpp, sprint8.cpp, starshp1.cpp, starwars.cpp, subs.cpp, triplhnt.cpp and ultratnk.cpp . Added CD4099 device to tankbatt.cpp . Driver and audio cleanups for asteroid.cpp, avalnche.cpp, copsnrob.cpp and playch10.cpp . dynax.cpp: Fixed blitter IRQ acknowledgment in most games. Use bankdev for gekisha and tenkai. . jp.cpp: Added ADPCM sound system used by some game . mappy.cpp: Clean up I/O handlers. Don't pulse the reset line when it's already being asserted. This allows Mappy and Pac & Pal to boot again (machine\namcoio.cpp). . mario.cpp: Added coin counters . spcforce.cpp: Added coin counters, start lamps and addressable latch device. . starwars.cpp: Put 'esb' bank2 in memory map so DEVCB can find it . tankbatt.cpp: Improved handling of sample triggers (fire sound is no longer doubled) - uPD4701 counter: Added read-triggered X reset & Y reset routines to device - V-System C7-01 GGA: Document some pins and clocks - Voodoo GFX: Updated comments for PCI config registers (video\voodoo_pci.cpp) - aerofgt.cpp, f1gp.cpp, pipedrm.cpp, rpunch.cpp, tail2nos.cpp and welltris.cpp: Clock all Video System GGAs - aristmk5.cpp . Driver update. Fixes some sets. . Redumped Koala Mint - atlantis.cpp: Use standard way of handling keypad inputs - bublbobl.cpp and missb2.cpp . Reimplemented sound cpu semaphores and sound NMI according to schematics. . Implemented sound semaphores into Tokio / Scramble Formation as well, fixing SOUND ERROR in test mode. Added notes about sound cpu addressing. . Reimplemented /SRESET as a separate function called on sound cpu reset according to schematics. . Added correct watchdog to Bubble Bobble and Tokio and disabled it on clone Bubble Bobble (prototype on Tokio hardware). . Added proper 'wired-or' sound cpu IRQs to Bubble Bobble. Renamed 'slave' cpu to 'subcpu' to match schematics. . Added NMI back to Miss Bubble II. Fixed some potential reset issues and made 'soundnmi' a required device. - bwing.cpp: PSG and DAC correction - csplayh5.cpp: Added dipswitches - dec8.cpp: Sound IRQ timing from schematics; eliminate timer_set. - deco32.cpp . Rewritten interrupt handling. Input repetition removal and labels. . Locked 'n Loaded: Improved X axis gun input. Added raw_params and fixed second OKI frequency, matching other games in the driver. Improved lightgun support. Note: It's now possible to actually play the game to some extent assuming you recalibrate the guns by holding both service buttons. Game randomly crashes tho so not yet markable as working. - decocass.cpp . Major improvements to colors and graphics layer priorities . Implement the PRI2 pen modification effect. This makes the tunnels and headlight in Highway Chase look much more accurate, and makes some color changes work in Astro Fantasia. . Shadow color in Skater is now properly black (not a pen modification effect) . Correct background fill color, making high score screen in Super Doubles Tennis properly blue. - dynax.cpp . Reduced log spam in Mahjong Gekisha. Added alternate flyer title note: Mahjoung Exposť. . Changed CPU type to TMPZ84C015 in mjelctrn, mjembase, majxtal7 and neruton and improved interrupt handling . Use address map bank device for most games in this driver. Many of these games will now successfully retrieve the local time at the start through an RTC device previously treated as read-only. . Added blitter IRQ ack to Mahjong Tenkaigen; doesn't fix interrupt problems. - flstory.cpp . Fixed CPU communication issue that sometimes caused sound to disappear entirely . Eliminated NMI trampolines - fromance.cpp: Use gen_latch and added GGA clocks - gaelco2.cpp . Added some workarounds to Play 2000 so that it actually boots. Fixed gfx rom loading. . Bang! supposed to have not PORT_IMPULSE - gaelco3d.cpp . Increased TMS ROM region, makes Football Power players models visible. . Added analog inputs. Better Football Power ball mechanic simulation (Game now playable). . Fixed EEPROM access (MCFG_EEPROM_SERIAL_ENABLE_STREAMING) - gaiden.cpp: Acknowledge main IRQ - galaxia.cpp: Restored original refresh rates to Galaxia/Astro Wars, fixes wrong sound for time being. Speed issues still need to be figured out, perhaps something relating to S2650 interrupts?. - galpanic.cpp and kaneko16.cpp: Disentangle dependencies - igs011.cpp . Decrypted clone Virtua Bowling (Hong Kong, V101HJS) and added its own bitswaps for IGS003 and IGS011 . Found dipswitches to perform a protection test in Virtua Bowling. Changed IGS012 mode toggling to pass the test. . Changed IGS003 command 48 in Long Hu Bang II and Virtua Bowling to potentially work in more cases (based on Long Hu Bang II tables) - jangou.cpp and nightgal.cpp . Rewritten blitter setters (video\jangou_blitter.cpp) . Fixed Night Gal Summer GFX ROM out of bounds accesses. Fixed rom loading. Added preliminary protection emulation (Game now playable). . Fixed gfxs for Sexy Gal and clone Sweet Gal. Added audio CPU (NSC8105) to Sexy Gal. For clone Sweet Gal this definitely doesn't exist (PCB photo). - kaneko16.cpp . Further organizational cleanups . Removed shadowing RAM with ROM in sound CPU. - m107.cpp: Removed IRQ hacks - midvunit.cpp: Better documentation for Midway V-Unit wheel board. Added part numbers. - mlanding.cpp and taitoair.cpp . Wrote a new device for Taito yoke-based inputs (found in Midnight Landing and Top Landing). . Added screen raw parameters to Taito Air System, fixes pilot acknowledge sound sample timing. Mark missing Mecha rom as undumped. . Added coin counters and Yoke device to Midnight Landing, fixed throttle counter (it's 12 bits). - naomi.cpp: Atomiswave security notes (machine\awboard.cpp) - royalmah.cpp . Changed CPU type to TMPZ84C015 in Janputer '96 and Janputer Special (Japan). Changed drive interrupts through internal CTC. . Completed dipswitches for Mahjong If (ID 05608) . HOLD_LINE cleanup - seattle.cpp . Buffer multiple writes for PCI stall (machine\gt64xxx.cpp). Fixes triangles flicker in California Speed (ID 06636). . Set proper NFL Blitz '99 dipsettings . Added gearshift to California Speed (ID 00975) . Fixed Hyperdrive brake button doesn't function in calibration (ID 00470) - seibuspi.cpp: Provide full chip name and standard oscillator frequency (machine\ds2404.cpp) - shangkid.cpp: . Redo interrupt handling based on Chinese Hero schematics. This fixed sounds get really screwy in the later levels of Shanghai Kid (ID 01005). . Added coin counters - spinb.cpp: Correct ADPCM type for jolypark and vrnwrld - supbtime.cpp: IRQ modernization - toaplan2.cpp . Added HD647180X MCU dumps to Ghox and Pipi & Bibis / Whoopee!! (Teki Paki hardware), allowing for sound emulation in both of them. This also fixes the high score table background in Ghox, which was also MCU related (ID 04024). . Corrected the decryption of some V25 opcodes used in the EEPROM service routine. Removed the ugly FixEight EEPROM routine that hardcoded a region for each set. Added and document a secret input that rewrites the EEPROM for any region. - vegas.cpp . Re-added blitz00_nov30_1999.u27 rom. Mark as BAD_DUMP and added patch to fix. . Correct DIPs for Gauntlet Dark Legacy and Road Burners . Added 16550 UART subdevice (machine\vrc5074.cpp). This fixed Gauntlet Legends randomly freezes (ID 01991). - zaccaria.cpp: Improved documentation. Note: The protection device at 1A on the ROM board (1B11147) is unidentified on the schematics but appears to be a PAL16L8 or PAL16R4. It sits on bits 4-7 of the data bus, and is read from locations where only bits 0-3 are connected to regular devices (6400-6407 has 4-bit RAM, while 6c00-6c07 has a 4-bit input port). - Beraboh Man: Fixed joystick dropping inputs bug for crouching/running actions - Buggy Challenge: Corrected clocks and added sound semaphores. Replaced AY-3-8910A sound with YM2149. - Chanbara: Identified sprite flip X bit (player sword thrusts) - Change Lanes: Changed default DIP setting to keep coin counters separate. Workaround for mistaken activation of test switch due to LS259 changes. - Combat School . Fixed wrong priority in the drill instructor screen (ID 06259) . Improved interrupt handling in clone Combat School (bootleg) - Deco Cassette System Multigame . Replaced gross hack for banking "dongle" with something likelier . Fixed Treasure Island sprites and removed stray Unicode character - Desert Gun: Replaced bad rom in clone Road Runner (Midway) and added notes - Dragonball Z: Fixed 'Language' and 'Demo Sounds' dipswitches (ID 05788) - Forty-Love: Added input labels, promoted clone Forty-Love (Japan) as working. - Funny Strip: Separate driver state class - Gyruss: Added missing DIP location for DSW3. Fixed dipswitches for clone Gyruss (Centuri). Added correct labels and locations to clone Gyruss (Centuri). Fixed labels for clone Gyruss (bootleg?). Updated diagnostic ROM info. Adjust some memory region sizes. Removed unused DRIVER_INIT. - Hanafuda Hana Tengoku: Use address map bank device - Hebereke no Popoon: Better documentation - Jockey Club . Added layout with keyboards. Clean up inputs and added own dipswitches. Correct RTC and emulated hoppers. Hook up outputs, NVRAM and trackball (for hidden editor). . Promoted clone International Toote II to working - Jockey Club II: Greatly simplify the layout files jclub2.lay and jclub2o.lay thanks to the new group feature - Karate Champ and King of Boxer: Identified DAC type - King of Boxer: NMI modernization - Legend of Silkroad: Base OKI clocks on OSC values. Note: PCB pic reveals no resonators so the clock is based off of either 32MHz or 3.579545MHz. Old guessed values where 1.056MHz and 2.112MHz so new values are 32MHz/32 & 32MHz/16 for 1 & 2 MHz respectively. - Midnight Landing: Added coin counters - Mirax: Changed PSG type to AY-3-8912A and use device finders - Ninja-Kid II: Fixed missing sound in Ninja-Kid II and clones (ID 06645) - Ordyne: Ordyne and clones uses an older IO MCU ROM (sys2_c65b.3f). Clean ROM labels as per PCB photos. Documented sprite zoom table rom. - Pengo: Added partial dipswitches for clones Pengo (bootleg on Pac-Man hardware, set 1) and (bootleg on Pac-Man hardware, set 2) (ID 05945) - Penguin Adventure: Added start/continue button, this partially fixes game resets itself in stage 4 (see MT #04528). Note: A timer apparently expires when beating stage 4 (signalled by a long beeping sound). Player needs to insert another credit and press start button (?) in order to continue. Is this timer supposed to be shown on screen or there are additional 7-LEDs not handled? - Poker Ladies: Added PALs and EEPROM dumps to clone Poker Ladies (Leprechaun ver. 401), also corrected rom labels. - Return of Lady Frog: Added NMI ack - Salamander: Improved VLM5030 control - Shadow Warriors: Implemented dual OPN + dual MSM5205 ADPCM sound system for clone Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden) as in Automat - Shock Troopers: Swapped Shock Troopers sets since what was known as set 2 is actually a newer revision than set 1, as per MAME parent-clone policies parent must be the newer revision. - Street Fighter II': Champion Edition: Correct dipswitches for clone (Accelerator Pt.II, bootleg) (ID 05277) - Teki Paki: MCU soundlatch modernization and cleanup - Tetris (Japan, System E): Fixed 2-Player mode (ID 06644) - TH Strikes Back . Added new DS5002FP SRAM dump (Game now playable). Note: Dumped from 3 boards, reconstructed with 2/3 wins rule, all bytes verified by hand as correct. There is a priority bug on the title screen (Gaelco logo is hidden by black borders). It seems sprite priority is hacked around on most of the older Gaelco drivers. . Added PCB layout - Thunder Zone . Created MB8421/MB8431 16-bit expanded variant and added it to Thunder Zone/Desert Assault . Acknowledge IRQs - Trick Trap: Fixed tile-sprite priorities, mostly visible when exiting an area in most stages (ID 04872). - Virtua Striker 4 Ver.2006 (Japan): Redumped GDROM - Input port . Fixed up input_merger: Added more variants, synchronisation and save state support and removed dubious reset behaviour (machine\input_merger.cpp; drivers\aristmk5.cpp, beezer.cpp, buggychl.cpp, rpunch.cpp, includes\btime.h, bublbobl.h, flstory.h, kingobox.h, lsasquad.h, nycaptor.h and audio\efo_zsu.h (cedar_magnet.cpp and play_3.cpp)). . Use input merger device for btime.cpp . Return explicit "file not found" error if inp file isn't found on playback, added error code number to any other error found (emu\ioport.cpp). - Save state: Fixed new load/save state menu does not respect -statename (ID 06621) - Dipswitch fixes in changela.cpp, cps1.cpp, csplayh5.cpp, dbz.cpp, dynax.cpp, gyruss.cpp, m90.cpp, namcos2.cpp, pacman.cpp, royalmah.cpp, seattle.cpp and vegas.cpp - Fixed rom names in gyruss.cpp, kaneko16.cpp, mitchell.cpp, pacman.cpp, pastelg.cpp, segae.cpp, seta.cpp, shangha3.cpp and snk6502.cpp - Description changes of 1943: Midway Kaisen (Japan, no protection hack), Ai-mode - Pet Shiiku (Japan), Alligator Hunt (unprotected, set 1), Brave Firefighters, Cosplay Tengoku 7 - Super Kogal Ranking (Japan), Crazy Climber (US set 1), DoDonPachi Dai-Ou-Jou V101 (Japan, 2002.04.05.Master Ver), DoDonPachi Dai-Ou-Jou V100 (Japan, 2002.04.05.Master Ver), DoDonPachi Dai-Ou-Jou (Japan, 2002.04.05 Master Ver), DoDonPachi Dai-Ou-Jou (Japan, 2002.10.07.Black Ver), DoDonPachi Dai-Ou-Jou (Japan, 2002.10.07 Black Ver), DoDonPachi Dai-Ou-Jou (Japan, 2002.10.07 Black Ver., bootleg Knights of Valour Super Heroes conversion), Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 1), Donkey Kong Junior (Japan set F-1), Goldeneye (4.04), Koala Mint (CHG1573, US), International Toote (Germany, P523.V01), International Toote II (v1.24, P387.V01), Jockey Club (v1.18), Mahjong Mogitate (Japan), Mario Bros. (Japan, Revision C), Mega Zone (program code I), Mega Zone (unknown program code 2), Mega Zone (program code J), Mega Zone (program code H), Mega Zone (unknown program code 1), Neo Geo CTHD Protection (bootleg) (ID 06649), Nibbler (Pioneer Balloon conversion - rev 6), Nibbler (rev 9, alternate set), Night Gal Summer [BET] (Japan 850702 NGS 0-01), Star Wars: Racer Arcade, Star Wars Trilogy Arcade (Revision A), Star Wars Trilogy Arcade (ID 06659), Vamf x1/2 (Europe, version 1.1.0908), Vamp x1/2 (Korea, version 1.1.0908), WWF Superstars (US revision 4) and WWF Superstars (US revision 7) - Renamed (1943ja) to (1943jah), (brapboysj) to (brapboyspj), (brapboysu) to (brapboyspu), (cawingu) to (cawingur1), (inttootea) to (inttoote2), (ordyne) to (ordyneje), (podrace) to (swracer), (grtesoro) to (play2000a), (grtesoro4) to (play2000), (megazonec) to (megazoneh), (megazoneb) to (megazonej), (megazonea) to (megazoneb), (megazonei) to (megazonea), (megazone) to (megazonei), (shocktro) to (shocktroa), (shocktroa) to (shocktro), (vendetta2p) to (vendetta2pw), (vendettaj) to (vendetta2pp), (vf4evo) to (vf4evob), (wwfsstaru) to (wwfsstaru7) and (wwfsstarua) to (wwfsstaru4). - MAME . VIDEO RENDERING SYSTEM . Reduced weight of render.h by moving component specialisation declarations into emu\rendlay.cpp . Added support for layout item groups, replaced simple_list with more appropriate containers, removed misleading const qualifiers and reduced repeated XML walking (build\, emu\render.cpp/h and rendlay.cpp). Groups aren't parameterised, so they aren't as useful as they could be. However, it's already useful for putting a common set of elements in multiple views, potentially at different locations/scales. See intlc44.lay and intlc440.lay for examples of the level of copypasta this can eliminate. Be aware that groups with explicit bounds don't clip thair content, it's only used for calucating the transform matrix. Get rid of string hashes when fetching output values in layout rendering. . Get rid of forced sleep in emu\video.cpp . PNG . Added minimal support for reading Adam7 interlaced PNG (emu\rendutil.cpp and util\png.cpp). Note: Decompression and unfiltering is fully supported, at least for all the pixel formats that previously worked. Expanding 1/2/4bpp to 8bpp should work properly, too. Bitmap mapping for Adam7 is only implemented in rendutil.cpp which is whate everything in MAME uses. The function in png.cpp (used by pngcmp) has not been updated. At some point I'll unify at least one of the functions in rendutil.cpp with the one in png.cpp and we can go from three functions that need to do the mapping down to two at the most. . Unified code for copying PNG data into bitmap for MAME and pngcmp. Fixed upsampling of monochrome PNGs (need to splat across byte). Added support for greyscale+alpha. Detect more unsupported conditions rather than just behaving badly. Support 16-bit samples. . Support greyscale with transparent pen, encode/decode text chunks as UTF. Fixed indexed transparency. . DEVICE . Fixed -slot card, bios=rev (selected BIOS was being applied to slot itself, not card) . Added address-shifted versions of AM_DEVREAD/_DEVWRITE/_DEVREADWRITE. These new macros make it easy to map devices addressed using higher address lines (which on actual HW helps to reduce loads on the lowest address lines) without needing to set up custom handlers and associated device finders. The implementation should not impact the efficiency of the core memory system since the semantic details are contained within C++11 lambdas. Improved way to transform offsets for AM_DEVREAD/_DEVWRITE. Replaced AM_DEVREADWRITE_RSHIFT with a similar but more functional-looking interface (now known as AM_DEVREADWRITE_MOD), which also now supports address line inversion as well as shifting (drivers\equites.cpp, gaelco.cpp, gaelco3d.cpp, goodejan.cpp, gridlee.cpp, legionna.cpp, r2dx_v33.cpp, raiden2.cpp, splash.cpp, taito_l.cpp, thoop2.cpp, timeplt.cpp and wrally.cpp). . UI . Eliminated use of hairline spaces for alignment in the info box (ui\selgame.cpp, selmenu.cpp and ui\text.cpp) . Use aggregate emulation status in UI menus, expose more flags in info box. Use aggregate flags for -ui simple as well. . Added indication for presence of analog controls and keyboard inputs in info box (ui\selgame.cpp). . Greatly reduce copy/paste code for drawing menu header/footer boxes. Display full name of selected slot device below slots menu. Fixed spacing on dircetory configuration menu. Fixed minimum/maximum for UI font rows per screen setting. . Fixed info box navigation when system selection menu doesn't have focus . Make filter names localisable, fixed keyboard navigation of software filter box, encapsulate a couple more things in selmenu and friends, get rid of hacks in selector tying it to implementation details of other menus. Note: This turns the filters into polymorphic objects that will be more manageable and not require so much copy/pasting when updating APIs. . Polymorphic machine/software list filters: Localisable filter names. Uniform interface for most filters without far less special-casing. Stacking year/manufacturer/etc. does OR rather than useless AND. Prevent stacking contradictory filters (e.g. parents and clones). Fixed alignment of filter list. Removed most of the lambdas added the other day. There's no longer an implicit "not BIOS" filter. Can't add (un)available to custom machine filter (will address). . Improved layout of art/info box, support mouse wheel scroll in info text, allow home/end to jump to beginning/end of filter list, consolidate logic. A number of vestigial constants have been removed. Some hacky input types that were just used as a trick to pass information between menu functions are gone. MACHINE_NO_STANDALONE is a relic from when drivers were used as arbitrary ROM containers, and in a world of first-class devices this is no longer necessary. . Don't process every character individually when searching, this reduces lag if you keep typing while a big list is searched. . Make category filter work like all the other filters: Category filter is now saved/restored if it's last used. Category filter can be used in composite custom filters. Less confusing when no categories found. De-duplicated code for drawing category list. . Fixed software art/info display when keyboard focus leaves software selection list, consolidate more logic, more code deduplication, fixed gutters on dats view and fallthrough from dats to save. There's some weirdness with shortcust for dats/export/favourite toggle if they result in a character being typed. . Save/restore images/info selection in right panel . Fixed selecting a slot to fill for "EXP" causes Fatal Error in (MESS) C64 (ui\slotopt.cpp) (ID 06657). Note: The source of the issue is that the logic for rotating slot options was broken. It would count selectable options and skip over options that were not selectable, except for the specific scenario where the index was zero. I ended up largely replacing the logic to be more C++-ish. . Added a not BIOS machine filter (useful in composite filters), support RGB PNG with transparent pen because why not. . Clean up some of the UI filter stuff, show list descriptions rather than names when choosing list to filter on. Fixed a localisation issue and a loop bounds issue. . Make (Un)Available a polymorphic filter (works in custom filter again). Fixed bugs and improved performance of code for detecting systems without ROMs. Show progress while auditing ROMs. Use actual INI file format for mame_avail.ini. . Fixed crash on invalid/empty/outdated ui.ini . LUA engine . Added debugger manager support . Refactor server_{ws,http}.hpp into separate interface and implementation headers. When shutting down the HTTP server, also explicitly stop the asio::io_context (emu\http.cpp). . PLUGINS . Catch errors in cheat scripts and preliminary breakpoint/watchpoint support (cheat\init.lua) . Added GDB stub plugin . Use 2 column format and clean up some parse errors (plugins\data\data_story.lua and load_dat.lua) . Added MARP scores plugin . Updated hiscore.dat . Moved unimplemented/imperfect flags from machines into devices. Allows dynamic warning flags depending on slot configuration. Unclutters GAME/CONS/COMP/etc. definitions where a family of machines or a device have the same flags. Allows more combinations of flags. Right now, flags for unemulated/imperfect features apply at system level. This falls over quickly with systems that have slot devices. For example you can plug in a broken sound card or keyboard on a PC or Amiga driver and get no warnings. There's also no way to propagate these flags from a device to all systems using it. This changeset addresses these issues. It's now possible to report unemulated/imperfect features on a device level with static unemulated_feeatures() and imperfect_features() member functions. So far the only thing using this is the votrax device. To support front-ends, this is exposed in -listxml output as a new "feature" element that can appear in system/device descriptions. It has a "type" attribute indicating which feature it is, potentially a "status" attribute if the device itself declares that the feature is unemulated/imperfect, and potentially an "overall" attribute if the device inherits a more severe indication from a subdevice. The embedded DTD describes possible values. Example: device/machine declares imperfect sound: . Example: device/machine declares unemulated keyboard: . Example: device declares imperfect controls but inherits unemulated controls from a subdevice: . Example: device doesn't declare imperfect LAN but inherits it from a subdevice: . It's still possible to add these flags to machines in the GAME/COMP/CONS macro. If the state class declares them with static member functions, the two sources will be combined. If you subclass a device, you inherit its flags if you don't redefine the relevant static member functions (no override qualifier is necessary since they're static). The UI has been updated to display appropriate warnings for the overall machine configuration, including selected slot devices, at launch time. The menus don't display overall status, only status for the machine itself. We can make it scan subdevices if we decide that's desirable, it just needs caching to enure we don't take a huge performance hit. Trade MACHINE_IMPERFECT_KEYBOARD, MACHINE_NODEVICE_CAMERA and MACHINE_NODEVICE_WAN for MACHINE_IMPERFECT_CONTROLS: MACHINE_IMPERFECT_KEYBOARD is more applicable on keyboard devices - most of them should be devicified eventually. MACHINE_NODEVICE_CAMERA tends to apply across a family of machines, so it's easy to apply at state class level. MACHINE_NODEVICE_WAN isn't even used. MACHINE_IMPERFECT_CONTROLS is widely applicable, knock yourselves out adding it to GAME macros. Updated machines that were using MACHINE_IMPERFECT_KEYBOARD or MACHINE_NODEVICE_CAMERA to apply it at device or state class level. Added flag for imperfect timing. . Multi-Language . Update localisation .po files. Our localisations are rotting badly, so please update what you can for recent UI changes. Note that to run make translation you need to patch GNU gettext to support C++14 digit grouping. See the attached patch here: . Updated Chinese (simplified/traditional), German, Greek, Italian, Japanese, Portuguese (Brazil), Russian, Serbian, Serbian (Cyrillic), Spanish, Swedish and Turkish translations. . Added "minimaws" scripts, a reference -listxml consumer (implemented with Python/WSGI and JavaScript): Provides verbs for loading data, some basic batch queries and an interactive web server mode. Serves linked HTML pages for machines, devices and source files. Demonstrates how to dynamically discover slot/BIOS options from static -listxml output. Allows user to build a slot configuration and shows necessary command-line arguments or INI lines to produce it in MAME. As a side effect, this provides additional validation of -listxml output, several issues and limitations were addressed [Vas Crabb]. . Fixed -sleep and -refreshspeed options (MAME will no longer use 100% of a CPU core for the least demanding systems; emu\emuopts.cpp) . Validity . Fixed description check (emu\validity.cpp) . Validate BIOS names and fix most errors found: Error on characters other than [a-z0-9.-_] in name. Error on duplicate name or description and Error on non-existent default BIOS. - MAC OS X . Use proper font metrics and handle space glyphs with null bounding box on OS X. . Handle fonts where space glyphs return a null bounding box (e.g. Hiragino family) restore ability to localise info box headings (font\font_osx.cpp). - Android: Modification for Android build (NDK r14b, build-tools 21.1.2 and gradle 2.2.1) - Compiling . Work around GCC ambiguous template error (emu\output.h) . Removed a whole lot of I64 from format strings. There are a couple of issues here: Firstly, the determining factor for whether I64 or ll is needed as the size qualifier doesn't depend entirely on whether you're using MSVC or not, it depends on the the C runtime library. The msys64 C runtime apes the Microsoft runtime and requires I64 as well, so a lot of files where LLFORMAT had been copy/pasted wouldn't work right if you depeneded on it anyway. Secondly, one of the major benefits of util::string_format, util::stream_format and logerror in their current forms is that you don't need size specifiers for integers at all (unless you're using them to truncate a value, but in that case you're better off casting the argument for clarity). If you do use them, logerror and friends will accept both Microsoft- and SUS-style independently of the C runtime. . Moved additional content for release archive from build repository to main repository (artwork\apertureXXXXX.png, artwork\scanlines.png, ctrlr\hotrod.cfg, hotrodse.cfg, scorpionxg.cfg, slikstik.cfg, ctrlr\xarcade.cfg and dist.mak). - Debugger: In the windows debugger log window added a Log/Clear menu to removed all logged messages 0.188 - New games: Deco Cassette System Multigame (ROM based), Go Go Cowboy (English, prize) and Legend (SNES bootleg) - New Working games: Black Touch '96, Explorer (DECO Cassette) (US), Frogger (bootleg on Amigo? hardware), Mega Double Poker (conversion kit, version 2.3 MD), Ron II Mah-Jongg, The Roulette (Visco), Sega Ninja (315-5113), Touch & Go and World Rally 2 - New Non-Working games: Abnormal Check, Ai-mode - Pet Shiiku, Block Pong-Pong, Casino Strip, Casino Strip IX, Casino Strip VIII, Dam Dam Boy, DVD Select (Japan), Mahjong Gal-pri - World Gal-con Grandprix (Japan), Mahjong Hanafuda Cosplay Tengoku 6 - Junai-hen (Japan), Mahjong Mogitate, Need for Speed - 4 Cab Link (2 Discs) (v1.0.1 Rev B), Need for Speed GT (Hard Drive+2 Discs) (v1.1.0 Rev C), Percussion Freaks 4th Mix (G*A25 VER. AAA), PokoaPoka Onsen de CHU - Bijin 3 Shimai ni Kiotsukete! (Japan), Renai Mahjong Idol Gakuen (Japan), Super Derby II, Tsuugakuro no Yuuwaku (Japan) and WaiWai Drive - New clones: Act-Fancer Cybernetick Hyper Weapon (World revision 3), Bubble Bobble (prototype on Tokio hardware), Cobra-Command (World/US revision 4), Fighting Vipers (Revision B), Golden Poker Double Up (bootleg), Kageki (World), Logger (Rev.2), Motocross Go! (MG2 Ver. A, set 2), New Super Triv III, The Ninja Warriors (World, earlier version), Operation Wolf (Japan, SC), Return of the Invaders (bootleg no MCU set 3), Return of the Invaders (bootleg w/MCU), Silk Worm (prototype?), Solar Assault (ver JAA), Solar Assault Revised (ver JAA), Space Invaders (Nas Corp bootleg), Street Fighter II: The World Warrior (Japan 911210, CPS-B-17), Super Triv (English questions), Taisen Idol-Mahjong Final Romance 2 (Japan, newer), Tazz-Mania (Rodmar bootleg), Tetris (v341R), Triv Five Special Edition, Virtua Striker 4 (Export) (GDT-0014), Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B), War: The Final Assault (EPROM 1.91 Apr 13 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999), World Kicks PCB (World, WKC2 Ver.A) and Xevious 3D/G (World, XV32/VER.A) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Doraemon - Nobita no Dorabian Night and Majin Eiyuu Den Wataru - New PinMAME games: Beat the Clock (with flasher support), Dirty Harry (LF-2) and MAC Jungle - New PEPlus games: Player's Edge Plus (PP0006) Standard Draw Poker - New drivers: sderby2.cpp - New devices: cchip, deco_rmc3, fe2010_pit, gaelco_ds5002fp, i4040, m37720s1, nichisnd, ub8830d, upd78c11, z8601, z8611 and z8681 - New mame.ini options: dtd = 1 (FRONTEND COMMAND OPTIONS) - New artworks . aztarac, cfboy0a1, clowns, cocean1a, dankuga, dariusgx, decocass, dkongpe, dragrace, redalert, mslug2, solarq, spacedx, sprint1 and starshp1 . Updated default.lay for armora, astdelux, cobram3->cobra, gokuparo->fantjour, dfeveron->feversos, vfive->grindst, invaddlx, invaders, machridr->nvs_machrider, mahoudai->sstriker, motorace->travrusa, shippumd->kingdmgp, omegrace, warzard->redearth, seawolf, seawolf2, slyspy->secretag, solarq and vfive->grindstm - New Cheat.dat: - DS5002FP CPU . Added dumped Dallas DS5002FP chips to TH Strikes Back, Touch & Go and World Rally 2 using the method published by Morten Shearman Kirkegaard and Peter Wilhelmsen as documented at . Touch & Go and World Rally 2 are now playable. A 2nd verification pass is still needed on them from additional boards, as bad bits existed in World Rally 2 even prior to extraction (steering logic was broken but bad byte was identified and fixed as the code for that command handler was identical to World Rally 1) and TH Strikes Back is crashing at the first boss (could also be a CPU core issue). . The DS5002FP SRAM for World Rally 2 has been dumped from 2 PCBs. The first had unused space filled as 0x00, the 2nd space was filled as 0xff. In addition, the first had 2x bad bytes and was partially patched out, so we're using the 2nd dump. . Glass was also dumped, but at the time the data wasn't extracted, only the code, and the board has since died, so needs redoing. Alligator Hunt was dumped and works, but not yet added, want to verify on a 2nd PCB first as the process does corrupt some bytes and a couple had to be handfixed, so the only way to know for sure is multiple dumps. . Made DS5002FP store battery-backed internal RAM and SFR registers as NVRAM. Made SFR defaults configurable in ROM loading like NVRAM defaults. Made external SRAM persistent as well (some games store scores etc. in it). Cleaned up Touch & Go dump and added preconfigured internal RAM. Created device for Gaelco protection module and removed remaining simulation code. . Clean up Galeco Dallas hookup device: There is no need for a second device for World Rally and Glass, it's the same thing. How the address lines are hooked up for host memory access is part of the driver and can be done with a mirror/mask in the address map provided by the driver. There's also no need for the SRAM trampolines in the device, that can be done entirely through address maps. The drivers need trampolines to do the address swizzling. We should be able to get rid of these when we get better support for 8-bit views of 16-bit components (dooyong drivers also have ugly trampolines for doing this kind of thing). - I4004 CPU . Rewrote 4004 core and disassembler: Renamed to MCS-40. Emulated 8-clock instruction cycle, interruptible at any point. Converted TEST input to an input line. Added SYNC and CM output lines. Added support for 4040 CY output, logical operations, extended registers, ROM banking and disassembly. Made I/O space mapping more flexible to support the variety of peripherals available. Notable missing features are 4040 interrupt and halt, and "program memory" space. . Make disassembler/debugger use syntax closer to what ASL accepts. Use 2D lookup to make debugger tables more compact. Allow 4-bit registers to be set independently. Save state fixes. Implemented WPM/RPM instructions. Expose some signals from a 4008/4009 or 4289. Can't use opram when program and opcodes are not related in the slightest. Check for disabled side-effects! Better reflection of 4289 timings for performing program read/write. . Added support for 4040 stop/ack and HLT instruction, hook up stop/single step buttons in (MESS) INTELLEC 4/MOD 40. . Splitted ROM and RAM port address spaces. Splitted RAM memory and status address spaces (no more read/modify/write). Fixed bug in FIN handling. Exposed cycle callback. - M377xx CPU: Preliminary M37720 support - M6800 CPU: Fixed LSR/ROR/ASR instructions set overflow flag (V flag) to 'N' XOR 'C' (ID 06624). Document more CPU types. - MB88XX CPUs: Converted MB88XX ports to DEVCB and removed generic device type (audio\namco52.cpp, namco54.cpp, drivers\arabian.cpp, strnskil.cpp, machine\namco50.cpp, namco51.cpp, namco53.cpp and namco62.cpp) - MC68340 CPU: Added configuration macros and callbacks for 8 bit ports A and B (machine\68340.cpp). Added 8 bit ports A and B, updated LOG system (machine\68340sim.cpp). - N2A03 CPU: Added auxillary output callback (machine\midwayic.cpp) - PIC16C74 MCU: Load recent CAPS0ff PIC16C74 MCU dump for croupier and croupiera, not hooked up for now. - TMP68301 CPU: Interrupt cleanups - DCS sound . Get audio to start working (audio\dcs.cpp) in Skins Game (1.06) . Re-enable speedups for external ram - Namco CUS30, YM2151 and YMF271 sound: Support dynamic changes to clock frequency - OKI6376 sound: Replaced custom handlers with device_clock_changed - Sound Interface . Soundlatch modernization in starwars.cpp and xain.cpp . exprraid.cpp: Use MCFG_GENERIC_LATCH_DATA_PENDING_CB . firetrap.cpp: Sound-related modernization. Use callback for soundlatch interrupt. Use modern MSM5205 callback and LS157 selector, and eliminate an instance of HOLD_LINE. Clean up some names. Added placeholder 8751 device. . gcpinbal.cpp: Modernized the callback of the MSM6585 sound . gladiatr.cpp: Hook up SSRST (sound reset) according to badly scanned schematics . magmax.cpp: Soundlatch modernization & various stuff from schematic . Make a few more methods const (emu\disound.cpp) . Added machine().side_effect_disabled to machine\gen_latch.cpp - TMS5110 and YMZ280B sound: Implemented device_clock_changed - TMS5220 sound: Use device_clock_changed instead of custom method and misc. modernization - 6532 RIOT: Added some WRITE_LINEs to set individual port lines through callbacks - 6821 PIA: Logging improvements: Use logmacro.h interface. Removed device tags superfluous with modern logerror. Make LOG_SETUP actually handle something. - 8253 PIT: Handle slight Faraday FE2010 PIT incompatibility for (MESS) Commodore PC10 - Flash ROM: Fixed global variables (machine\intelfsh.cpp) - ISA: Added unmap_device method and in install16_device use I/O space width - Nintendo Custom: Fixed cpu\m6502\n2a03.cpp/h - NCR 5390 SCSI: Improved initiator transfer information logic. Split transfer count/counter. Added rudimentary 53c90a/53c94 support. Reworked initiator transfer information state machine: should now support all SCSI phases. Improved handling of dma/non-dma commands. Added an undocumented hack to make (MESS) InterPro work. Match updated 5390 device. Inherit memory map. Implemented interrupt status flag in status register for 53c90a, this is critical for (MESS) InterPro. Improved tcounter and dma/drq handling. - Taito Custom . Created C-Chip device with correct CPU type in it and a bunch of notes (pinout etc.) (asuka.cpp, opwolf.cpp, rbisland.cpp, taito_f2.cpp, taito_x.cpp and volfied.cpp) . Created a uPD78C11 derived CPU type for this purpose, with internal ROM map. . Use internal ROM map for other uPD78C10 chips as it's always present . Added missing NO_DUMP definitions to various games using C-Chips with correct size etc. (bonzeadv, megablst, rbisland, superman and volfied) . Pump Mega Blast through the device code as really all it ever does is bank the C-Chip window and test the RAM . Load CAPS0ff C-Chip dumps for Operation Wolf and clones, checksum on MASK rom part passes, but game specific EPROM is still bad for the time being. Added small note about what's wrong with the C-Chip EPROM dump. . Put C-Chip stuff in Type X driver. Removed outdated comments. . Hooked up the four 'asic ram' shared bytes/semaphores/command registers between external cpu and the C-Chip and got rid of the 'return 0x01' hack for Mega Blast (achine\taitocchip.cpp). - Voodoo GFX: Fixup logging and implement actual vRetrace and hvRetrace functions - Z80 SCC: Basic wait/dma request implementation. Renamed WRDY to WREQ to match datasheet, minor touch-up. - atlantis.cpp: Save states supports static vectors natively (machine\vrc4373.cpp). Use actual M48T37 timekeeper. Minor cleanups. - csplayh5.cpp and niyanpai.cpp . Moved around DVD firmwares into 'nichidvd' BIOS set since it's common component. Parallel port is connected, unknown purpose tho. . Wrote a new device container for Nichibutsu sound HW, merged usage for csplayh5 and Niyanpai driver. . Added Nichibutsu High Rate DVD BIOS - crystal.cpp: Document P's Attack edge connector pinout which is non JAMMA. Correct pinout for gun connector & changed JAMMA to 56PIN connector. - dec8.cpp and karnov.cpp . Made DECO RM-C3 (custom palette) into a device used by DEC8 games . All Karnov driver games use now the DECO RM-C3 palette. This is really just a documentation change as the previous colour weighting was correct so there is no visual difference with this change. - decocass.cpp . Identified dipswitches for a number of DECO Cassette sets . Split decocass state class up so that the dongle types aren't polluting base class. Also added support for bootleg multigame and fixed regression caused by change in draw order. . Added roms from the DECO GRO DE-0091C-1 overlay PCB to Explorer (DECO Cassette) (US) - docastle.cpp: Weird and inefficient way of reading inputs based on schematics, but code seems to agree. Clarify reset behavior. - ettrivia.cpp, usgames.cpp and wallc.cpp . PSG type correction (AY-3-8910A -> AY-3-8912A) . Use object finders in ettrivia.cpp - gaelco2.cpp . Fixed protection in Touch & Go and World Rally 2 (Games are now playable) . Swap left/right channels on Touch & Go and World Rally 2 to match screens - galaxian.cpp . Clean up driver by using device arrays . Added preliminary controls/dips for clone Frogger (bootleg on Amigo? hardware) through I8255 PPI. Game has sound now. - iteagle.cpp: Save states supports static vectors natively (machine\vrc4373.cpp) - kinst.cpp . Added AnyIDE roms, switched to BIOS system. Merged Killer Instinct (v1.5d), (v1.3), (v1.4), (proto v4.7) and BIOS (v1.5d AnyIDE) to 'Killer Instinct'. Merged Killer Instinct 2 (v1.4), (v1.0), (v1.1), (v1.3) and BIOS (v1.4 AnyIDE) to 'Killer Instinct 2'. Merged clones Killer Instinct 2 (v1.3k, upgrade kit), (v1.4k, upgrade kit) and BIOS (v1.4k, upgrade kit AnyIDE) to 'Killer Instinct 2 (Upgrade kit)'. . Updated hardware info - legionna.cpp and seicupbl.cpp: Initialized tile banks to 0, this should fix problems on Linux & debug builds (includes\legionna.h). - m62.cpp: Split PROM regions up by function (legacy from when MAME only allowed a single PROM region per system). Made use of multiple palettes and gfxdecode structures. - mappy.cpp: Use LS157 TTL device for DSW2 mux - namcond1.cpp . YGV608 video accessors are 8-bits not 16. Moved a few statics out from r/w handlers. Converted ports to AM_DEVICE. . Log registers into own space, handling will follow up. Added CRTC function and moved irqs in handler callbacks. Added preliminary raster irq hookup (limited usage in NCV2). . Moved YGV608 base address out of legacy switch case and ROZ registers out of the legacy code. Return h/vblank status bits. Misc IRQ changes. Address pointer clean-ups. Silence some ports in driver. . YYGV608 pattern name table pointer access, log mosaic and added border color (makes the POST screens to be black and not green). Added 3rd button. - naomi.cpp . Dumped earlier Sega Gun Board firmware (hod2bios) . Reverted MIE back to higher clock (Z80 CPU 13.5->16MHz) and added notes about CPU core - neogeo.cpp: Reintegrated NeoGeo romdefs in the source (neodriv.hxx -> neogeo.cpp) - paranoia.cpp, tourvis.cpp and uapce.cpp: Standardize button layout for Arcade PCE - segae.cpp: Modernized driver - stv.cpp: Experimental force resync on DMA completed (machine\saturn.cpp) - tehkanwc.cpp: Fixed dipswitches for clone (set 4, earlier) (different setup to other sets). Added DIP locations for all sets in driver. - seattle.cpp and vegas.cpp: Improved wheel board - vegas.cpp . Save states supports static vectors natively (machine\vrc5074.cpp) . Added I40 board. Added keypad. Use standard way of handling keypad inputs. . Mark BIOS in clone 'San Francisco Rush 2049: Special Edition' as BAD_DUMP (ID 06370) . Added layout for sf2049 - AGEMAME: Put mpu4 back into how it should be (mpu4.hxx -> mpu4.cpp, mpu4avan.hxx -> mpu4avan.cpp, mpu4bwb.hxx -> mpu4bwb.cpp, mpu4concept.hxx -> mpu4concept.cpp, mpu4crystal.hxx -> mpu4crystal.cpp, mpu4empire.hxx -> mpu4empire.cpp, mpu4mdm.hxx -> mpu4mdm.cpp, mpu4misc.hxx -> mpu4misc.cpp, mpu4mod2sw.hxx -> mpu4mod2sw.cpp, mpu4mod4yam.hxx -> mpu4mod4yam.cpp, mpu4sw.cpp -> mpu4sw.cpp and mpu4union.hxx -> mpu4union.cpp) - Ameri-Hockey and Bozo's Pail Toss . Attempt at CPU identification . Make some educated guesses regarding manufacturer, decade, MCU and sound chip types. A few technical modifications to Z8 CPU memory interface and added Z8681 type for Ameri-Hockey. - Arkanoid: Added M68705P3 MCU and AY-3-8910 machine definition for clone Arkanoid (bootleg with MCU, harder), matching real hardware. Added some notes about bootleg roms and what sets they are copied from or derived from. Updated note about hidden credits with hiscore initials. - Bionic Commando: Fixed screen misalignment regression - Black Touch '96: Added flip screen and coin counter support. Rewritten text layer to tilemap. Added notes and promoted game with MACHINE_IS_INCOMPLETE, bugs like the timer not decrementing are actually caused by sloppy coding. Converted sound command port to 8-bits and lowered difficulty default (Games now playable). - Bongo: Map jump as a button and not as up direction - Candy Crane: Document MCU type that isn't emulated - Clown Roll Down: Flesh this skeleton driver out slightly - Crude Buster . Fixed colours (verified against real hardware). Added documention. . Added a x3 hack to the YM2203 clock frequency to fix incorrect pitch - Fantasy: Made Fantasy (US) the parent for consistency, since up until now the parent was the German version. - Fast Lane: Removed imperfect colors flag, Kold verified it and there's no issue with colors. - The First Funky Fighter: Fixed missing music and partial sound FX (ID 05900). Correct 'Country' dipsetting. - Forty-Love: Clone (Japan) needs MCU double check - Funny Strip: Added serial EEPROM for high score entries - Game Magic . Do not always assert on unimplemented PCI configuration registers (Intel 82439TX Northbridge; bus\lpci\i82439tx.cpp). Log a message in the error log instead. Also put writes to 0x58 and 0x5c in their own case. Give derived classes the ability to intercept writes to debug port 0x80 (lpci\southbridge.cpp). Added boot_state_hook devcb to receive writes to debug port 0x80 (lpci\i82371sb.cpp). . Splitted the single rw handler to io ports 60 and 61 into two separate handlers one for each port. To support systems in the future where the southbridge does not contain a keyboard controller (lpci\southbridge.cpp). - Gladiator: Inverted coin counters and minor HW note - Golden Axe: Replaced bad dump 317-0122 i8751 MCU in clone Golden Axe (set 2, US) (8751 317-0112) with working redump from undamaged chip. Removed MCU simulation code. - Gun & Frontier: Fixed 'Upright Controls' dipswitch (OFF is Single and should not be the default). - Lady Bug: Documented a different program ROMs arrangement - Levers and Nibbler: Changed joysticks to 4-way as documented in manuals - Mahjong Chinmoku no Hentai: Removed DSW B, this does not exist on a real PCB (ID 06592). - Marchen Maze: Added default NVRAM - Master Boy: Use parallel EEPROM type for "EAROM" rather than generic NVRAM - Mega Double Poker: Load recent CAPS0ff 68705P5 MCU dump for Mega Double Poker and clone. Hook up 68705P5 MCU, figure out banking and added timekeeper RAM and inputs. Merged driver with Golden Poker driver to get working sound (graphics and sound should be identical) (Game now playable). - Miss Bubble II: Fixed OKI read/write bitswap so what seem to be the correct sound effects are played. Used the OKI rom from clone 'Bubble Pong Pong' in place of the badly dumped missb2 OKI rom due to all non-corrupted areas being identical, so they're most likely supposed to be the same, but marked it as BAD_DUMP until redump. Added watchdog (same as parent bublbobl hardware has). - Mr. Do!: Load protection PAL data (not used at the moment) - N.Y. Captor: Fixed colors in clone Colt - Ninja Clowns: Fixed potentially crash during fighting the final boss 'Twisto'. The blitter code was writing outside the limits of the VRAM (ID 06620). - Omega: Dumped the color proms, correcting the colors. Minor updates to dipswitches. Set default values for unknown dipswitches to "Off". Correct coin counter polarity; name config structures more consistently. - Parodius: Fixed 'Bonus Life' dipswitch - PinMAME . joctronic.cpp: Added new maincpu to Punky Willy. Callback modernization for its own sake. . wpc_dcs.cpp: Added new DCS roms to Judge Dredd (L-7) and clones (L-4), (L-5) and (L-6). . flicker.cpp: Updated Flicker (prototype) to use new MCS-40 core. Added save state support. Removed NVRAM - it's unlikely a dynamic PMOS RAM would be battery-backed. Hook up the rest of the inputs (operator adjustments). React to input changes on test line. Added notes. Re-implemented I/O based on how hardware actually works. Corrected RAM size. Hooked up playfield lamp outputs - this really needs PWM. - Pole Position II: Fixed crowd cheering sounds are messed up at the chequered flag goal (ID 06261) - PT Reach Mahjong: Added samples and cleanup driver ( - Quest of D (CDV-10005C): Added Firmware Update DVD dump - Return of the Invaders . Added original Taito 68705 MCU dump to Return of the Invaders . Moved bootleg 68705 MCU to its own new set 'Return of the Invaders (bootleg w/MCU)'. Renamed sets to make it more obvious which are bootlegs. . Verified XTAL, dividers and SN76489A type from PCB pictures. Added missing original Taito CLUT PROMs and fixed video driver to be able to use those or the single bootleg CLUT prom. . Added DIP locations and document edge connectors - Rod-Land: Added information regarding clone 'R&T (Rod-Land Prototype)' - see - Ron II Mah-Jongg: Ron II actually works, promoted to working. - Rotary Fighter: Added PPI and coin counter - The Roulette (Visco): Fixed interrupts, graphic and input&dips. Added new Seta X1-010 rom and PCB layout (Game now playable) - Schmeiser Robo: Game sets rowscroll to be bigger than assumed size of tilemap. This fixed exception on exit on Linux 64bit and Windows XP (ID 06613). - Sega Ninja: Decrypted SEGA 315-5133 used by clone Sega Ninja (315-5113), promoted it to working. Shares identical code with other sets, just encryped with a different key. - Shoot Away II: Added AT28C64 EEPROM dump - Soreike Kokology Vol. 2: Redumped sound data ROM. Fixed missing voice (ID 06627). - Steel Force: Switched to OKI map instead of ROM_COPY - Super Real Darwin: Replaced MCU simulation in Super Real Darwin with internal ROM dump. Handcraft MCU rom for clone Super Real Darwin (Japan) like was done for other games in the driver so the old simulation can be killed off, marked as BAD_DUMP. Fixed incorrect behaviour for 6th boss (no longer skips first form). - Superbike: Kludged a protection check that was resetting the machine under certain conditions. Also demoted to MACHINE_UNEMULATED_PROTECTION since game can lock indefinitely under a particular condition. - Super Chase: Fixed shifter display in layout - Target Hits: Added PCB layout and base CPU clocks on actual OSC/Resonator. Corrected OKI clock and program rom labels. - Time Limit: Redumped color proms. Promoted colors after counter-check with real screens. - Tsukande Toru Chicchi: Added dipswitches - unknown TMS9980 Poker Game: Fixed maincpu rom loading - Victory: Added PIO devices - Victory Road: Added PAL dumps - Wolf Pack: Fixed missing torpedo trail - World Rally: Added PCB layout - Save state . Added a menu listing existing state files displayed when choosing a position to save/load. Any position may be selected with keyboard 0-9/A-Z or joystick buttons. Existing positions may be selected using UI navigation controls. . Moved save state registration to interface post start. Plays nicely with device_missing_dependencies exceptions. Frees implementation from having to call save state registration method. Improved save state support in devices that neglected to call method. . Explicit sizes for enums and enum class used in save states, one should always do this to maximise save state compatibility. Fix up a couple in src\mame as well. - Dipswitch fixes in decocass.cpp, ddenlovr.cpp, freekick.cpp, galaxian.cpp, konmedal.cpp, m14.cpp, parodius.cpp, seta.cpp, taito_f2.cpp, tehkanwc.cpp and vegas.cpp - Fixed rom names in retofinv.cpp, seta.cpp, stv.cpp and targeth.cpp - Description changes of Cobra-Command (World/US revision 5), The First Funky Fighter (USA, Canada, Mexico / Japan, set 1), The First Funky Fighter (USA, Canada, Mexico / Japan, set 2), Lee Trevino's Fighting Golf (World?), Lee Trevino's Fighting Golf (US), Lee Trevino's Fighting Golf (US, Ver 2), Killer Instinct, Killer Instinct 2, Killer Instinct 2 (Upgrade kit), Logger (Rev.3), Mega Double Poker (conversion kit, version 2.3 MD), Mega Double Poker (conversion kit, version 2.1 MD), Motocross Go! (MG2 Ver. A, set 1), The Ninja Warriors (World, later version), The Ninja Warriors (US, Romstar license), Play 2000 (Super Slot & Gran Tesoro) (v5.01) (Italy), Play 2000 (Super Slot & Gran Tesoro) (v4.0) (Italy), R&T (Rod-Land prototype), Return of the Invaders (bootleg no MCU set 1), Return of the Invaders (bootleg no MCU set 2), The Roulette (Visco), Street Fighter II: The World Warrior (Japan 911210, CPS-B-13), Super Triv (French questions), Taisen Idol-Mahjong Final Romance 2 (Japan, older), Tehkan World Cup (set 4, earlier), Trigger Heart Exelica Ver.A (Japan) (GDL-0036A) and Vince (bootleg of Red Hawk) - Renamed (actfancr) to (actfancr2), (fantasy) to (fantasyg), (kageki) to (kagekiu), (kinst2k3) to (kinst2uk), (retofinv1) to (retofinvb1), (retofinv2) to (retofinvb2), (sderby2) to (sderby2s), (striv) to (strivf) and (xevi3dg) to (xevi3dgj) - MAME . UI . Overhauled MAME options handling. The new options system is more dynamic and should detect errors earlier. The slot menu now shows updated options in response to selections made by the user. This fixed loading softlist items from the command line with changed slot options (ID 06588) and various problems with software loading/unloading (ID 06581). Don't lose the system inipath when looking for hashpath (mame\mameopts.cpp). . Fixed options regression (ui\selsoft.cpp) . Allow experimental overclocking of sound devices through UI sliders with -cheat enabled (ui\ui.cpp) . Fixed slot unmount issue: Start (MESS) mame sorcerer, then enter the slots menu, empty the RS232 slot, then choose Reset. It crashes with an access violation (emu\image.cpp). . Made internal UI list missing/incorrect files when audit fails. Also consolidated selgame/selsoft code for actually launching systems into one place. Reduced header clutter (ui\selmenu.cpp). . Fixed fatal error on selecting software part from internal UI. Sort software part menu in internal UI (was ordered by hash). This preserves the option priority behaviour from 0.187 when setting the instance option to the desired part. Note that software part selection from internal UI doesn't actually work. For example with zorba:cpm, no matter which part you select, you'll always end up with flop1 in A: and flop2 in B:. This actually did work properly in 0.187, so something has gone wrong in between (ui\selmenu.cpp). . DEVICE . Fixed issue loading reset_on_load() images (emu\diimage.cpp). Fixed custom instance names and slot devices don't work properly with the current MAME options code (emu\diimage.cpp). Fixed media option numbering with custom instance names (emu\diimage.cpp). . Fixed scheduler overflow when a device executes for more cycles than there are in a second . Fixed Clang build (emu\device.h) . Lift the cap on the number of address spaces per device (emu\dimemory.cpp). Make device_memory_interface slightly less of a special case, use a typedef to avoid nested templates everywhere. Made device_memory_interface own its address space objects. Kill a trampoline (memory.dump(); debug\debugcmd.cpp and emu\emumem.cpp). . Make machine().describe_context() a const function returning a std::string. As part of this change (because std::string is not printf-compatible), several devices have been updated to use the modern logmacro.h logging system. . Save partname to inifile, so that the correct part is loaded next time (emu\image.cpp). . PLUGINS . Fixed NESS Game Genie decoder and link simple cheats (plugins\cheat\cheat_simple.lua). Added UI support for joystick hotkeys (plugins\cheat\init.lua). Poll for setting hotkeys. Create dirs. Popmessage for hotkey setting. . Updated hiscore.dat . Initialization ordering fixes (emu\emumem.cpp/h and machine.cpp) . Improved -romident performance by dynamically allocating large arrays at device_start time (sound\ay8910.cpp, audio\taito_en.cpp and video\powervr2.cpp) (ID 04355) . Removed redundant flags MACHINE_NOT_WORKING and MACHINE_NO_SOUND and replaced them with MACHINE_IS_SKELETON. . Fleshed out network output provider so it has the same capability as legacy Win32. Clients: Connect to TCP port 8000. Messages will be of the form "verb = value\1"; if your client is busy when MAME is spamming, you may get multiple messages glued together by \1 separators. (\1 was chosen because it's neutral on Win32/Mac/Linux). You will get a "hello = 1" message upon connection to MAME, and a "mamerun = 0" message when MAME shuts down. You may send "send_id = n" to MAME to get IDs where n=0 means ROM set name of current game, 1-? = output node names. MAME will reply "req_id = string\1"; this is currently the only case where a string will be returned instead of an integer value. A working example POSIX client will be released soon (output\network.cpp). . Include -output option in documentation (docs\source\commandline\commandline-all.rst) . XML listing enhancements: The -listxml command will try to find and list any devices whose shortnames are specified on the command line. Any number of devices can be listed at once, and wildcards will be compared against device names as well as driver names. DTD output for -listxml, -listsoftware and -getsoftlist can be disabled by a new -nodtd option. It remains enabled by default. . Better handle the case where HTTP is not enabled (emu\http.cpp) . Switched to delegate timers. Frees implementations from having to call timer method. Eliminates risk of ID conflicts with implementations/other interfaces. . Layout . Made scripts do substantial validation of layouts at build time (scripts\build\ Removed vestigial exception class. Comment out problematic parts of internal layouts detected by build-time validation (layout\checkma5.lay, and tisub.lay) . Don't drop an entire layout if one view fails to load - it breaks (MESS) intlc44/intlc440 with null_modem (emu\rendlay.cpp) . Changed backslash to unicode in some layouts . Made parent/clone loops raise a fatal error rather than hanging in a loop appending to a string (emu\driver.cpp) . Validity: Removed validation check - it causes MSVC release builds to crash, and the things it flags usually get detected elsewhere (emu\validity.cpp). . VGM player . Added YMF271 and YMZ280B support to VGM player. Added sound cores needed to allow virtual subtarget to compile (YMF271 and YMZ280B; scripts\target\mame\virtual.lua) . Fixed playing .vgm/.vgz files containing 2 X POKEY (ID 06631). Fixed clock speed for dual POKEY. Produce error message when nonexistent file specified rather than create a spurious empty file and segfault trying to read it. . LUA engine: Safer cleanup and fixed leak . Changed Romload to show all actual hashes on a mismatch (emu\romload.cpp) . travis.yml: Fixed QT 5.5.1 for Ubuntu 14.04 "Trusty Tahr" (allows Travis CI build to complete) - SDLMAME . Added SDL_WINDOW_BORDERLESS for fullscreen, required by some window managers on Linux. Breakage was in MAME 0.160. . Fixed sound_sdl::sdl_callback, fill buffer with silence when underflow. The problem is most noticeable when you are saving state and the save takes a relatively long time, short period of audio gets played repeatedly, which is usually unpleasant. I found out it's caused by sdl_sound::sdl_callback not fill the audio buffer with silence when underflow occurs. According to, if there's nothing to play, the callback should fill the buffer with silence. I tested this change and the problem is gone. . Updated compiling instructions for Fedora Linux. DNF is now preferred package manager. alsa-lib-devel is also required (not mentioned in the current docs) (initialsetup\compilingmame.rst). - MAC OS X . Added basic support for saving/restoring Cocoa debugger window state, compatible with Qt debugger where possible. . Fixed some Cocoa debugger desync issues. Scroll to selection on gaining focus by keyboard (e.g. tab) only. Fixes jump on clicking a memory or disasm view that you've scrolled. . Make XML file a class of its own managed with smart poitners. Added a method for copying part of an XML tree into another tree and use it to fix Cocoa debugger fatal error (util\xmlfile.cpp). . Save/restore console split positions . Fixed include path with USE_LIBSDL on macOS. The cflags will contain an include path ending in "SDL2", not just "SDL", and removing just the latter leaves a stray "2" on the end (osd\sdl_cfg.lua). - Compiling . Fixed tiny build (missing Z80PIO; scripts\target\mame\tiny.lua) . Renamed AS_DECRYPTED_OPCODES to AS_OPCODES . C++14 constexpr doesn't cooperate with universal references (bus\isa\isa.h, machine/gt64xxx.h, pci.h, vrc4373.h and vrc5074.h) . Clean up inlines for MSVC. No reason to prefer inline assembly over MSVC _BitScanReverse intrinsic on x86 (osd\eivcx86.h) . c_str() is no longer needed with emu_file::open since it now takes a std::string (emu\machine.cpp) . Fixed save/load states in Emscripten build. Simplified Emscripten integration points. Moved standalone JS functions to be static member functions of running_machine. Improved Emscripten main loop. Use convenience functions for cleaner code. As an added bonus, this now allows for proper shutdown of the running machine when running in the Emscripten environment - previously, attempts to exit the program were just being ignored. Export soft_reset, hard_reset, exit, load and save functions for Emscripten builds (scripts\resources\emscripten\emscripten_post.js). . Convenience macro for enum bitwise operators (ENUM_OPERATORS -> ENUM_INCDEC_OPERATORS; cpu\tlcs90/tlcs90.h, emu\emucore.h, input.h, ioport.h, profiler.h, render.h and mame\cheat.h) - Debugger . Simplify by decoupling information creation and display rendering (debug\dvdisasm.cpp) . Eliminated direct() from read_opcode (debug\debugcpu.cpp) . Reverted debugger F8 behaviour, to run until next start of vblank, by re-adding a check that was removed in MAME 0.175. . Made the length parameter for debugger 'load' command optional (defaults to lenth of file), converted code from stdio to iostream. . In class consolewin_info method set_cpu does nothing if the cpu to be set is the current one. This solves a problem in the windows debugger where the registers view would always return to the topafter being scrolled down (debugger\win\consolewininfo.cpp). . Don't assume a watch point exists for the address space passed to watchpoint_update_flags(), which fixes the hotspot command. Stop hotspot from crashing when you start running (debug\debugcpu.cpp). 0.187 - New games: Jump Kun (prototype), Ron II Mah-Jongg, Sel-Jan [BET], Victory (Comsoft) and Waku Waku Ultraman Racing - New Working games: Treasure Island (DECO Cassette) (Region D) - New Non-Working games: Bel Slots Export (5.01), Big Deal Belgien (5.04), Ez2dancer 2nd Move, Jack Potten's Poker (set 10, ICP-1 PCB), Percussion Freaks 5th Mix (G*B05 VER. KAA), Pingu's Ice Block and Quingo Export (5.00) - New clones: Animal Basket (19 Jan 2005), The Bounty (set 2), Burnin' Rubber (DECO Cassette) (Japan), Danger Track (Rally X bootleg), E-Swat - Cyber Police (bootleg, set 2), Forty-Love (Japan), Gingateikoku No Gyakushu (bootleg set 3), Graplop (DECO Cassette) (Japan), Guerrilla War (Version 1, set 2), Lock'n'Chase (DECO Cassette) (Japan), Mach-9 (bootleg of Vulgus), Macross II (Korea), Marchen Maze (Japan, hack?), Money Money (set 2), Motor Raid - Twin/DX, New Century (Spanish bootleg of Scramble), Offensive (Spanish bootleg of Scramble), Operation Thunderbolt (Japan, SC), OutRun 2 Special Tours (Japan) (GDX-0011), Palamedes (US), Pengo (set 5), Power Instinct (USA, prototype), Pro Tennis (DECO Cassette) (Japan), Spectar (revision 2, bootleg), Tehkan World Cup (set 4, earlier?), Time Killers (v1.32I) and Victory (Comsoft) (bootleg) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Ankoku Densetsu, Batman, Burning Angels, Cadash, Gradius, Toilet Kids and World Jockey - New PEPlus games: Player's Edge (PK1002-PC082) Jake's Jacks Bonus Poker - New PinMAME games: Black Knight 2000 (PF-1) and Spirit of 76 - New drivers: ez2d.cpp, ron.cpp and spirit76.cpp - New devices: 74hc157, taitosjsecmcu, tc0040ioc, tc8521 and te7750 - ADSP2100 CPU: Make HALT_LINE halt the cpu and added function for get base address of circular buffer - M68705 CPU . Use actual M68705 dump in Field Day/Undoukai, Onna Sanshirou and Rumba Lumber, replaces inaccurate simulation. . Replaced MCU simulation with new M68705 dump in Chack'n Pop, Get Star (Japan), Guardian (US), Nekketsu Kouha Kunio-kun (Japan) and Prebillian . Replaced hand crafted MCUs with dumped 68705 dumps for clones Arkanoid (US, newer), Arkanoid (Japan, newer) and Tournament Arkanoid (US) . Added an unused (not programmed) 68705P5 MCU dump to Tetris (D.R. Korea) . Use new 68705 image that includes the bootstrap code in The FairyLand Story . Replaced MC68705P3 CPU3 with MC68705P5 in Taito SJ - S2650 CPU . I/O modernization. Replaced fake S2650_SENSE_PORT address with line read callback (set_input_line should also work). There are still some doubts regarding whether VBLANK should be inverted in various drivers. . Replaced fake S2650_CTRL_PORT and S2650_DATA_PORT addresses with... well, these aren't dedicated parallel ports, so they actually haven't gone away. They have, however, been moved to a new 1-bit address space, since the ports share the main data bus and are distinguished from each other by an address line. . Allow program counter to be properly tracked by debugger. A few small status register-related refinements. - TLCS-90 CPU . Replaced fake TLCS-90 I/O space with callbacks (cpu\tlcs90\tlcs90.cpp, drivers\dynax.cpp, royalmah.cpp and machine\nmk004.cpp) . Forwarding and some other stuff (cpu\tlcs90\tlcs90.h) - AY-3-8910 sound . Added pinout and removed outdated comments from .h . Updated/fixed documentation and comments and added additional pinouts and links to decaps and documentation. Document device names. . Fixed device_clock_changed to respect the YM2149_PIN26_LOW flag. Fixes sound pitch is too high in Arkanoid, clones and Tournament Arkanoid. . Replaced AY-3-8910A sound with YM2149 in arkanoid.cpp, bigevglf.cpp, calorie.cpp, cchance.cpp, flstory.cpp, fromance.cpp, ginganin.cpp, goldstar.cpp, hotblock.cpp, lsasquad.cpp, ojankohs.cpp, shangha3.cpp and tehkanwc.cppt . Replaced AY-3-8910A sound with AY-3-8912A in funkybee.cpp, spartanxtec.cpp and spyhuntertec.cpp - AY-3-8913 sound: Added diagram - CD Audio: Improved CD audio play track/index command handling (machine\mb89352.cpp and t10mmc.cpp). kokoroj2 needs mods in the MB89352 core that won't break (MESS) Sharp X68000 as well. kokoroj2 requires the printer interface, a command to stop current track is sent with CD & printer disabled in dipswitches. - DMA-driven DAC sound: Check if list item exists before calling member function (sound\dmadac.cpp) - MSM5205 sound: New callback implements accurate VCK timing. The old "VCLK" method with no duty cycle is now deprecated. - OKI6295 sound: Simplify logerror messages - SAA1099 sound: Created standard write handler; substitute for bogus YM2413 in Magic Card. Zero writes are not errors (logerror()). - Sound Interface: . Allow device to be configured for acknowledgement to occur separately from data reads (machine\gen_latch.cpp); use this for Armed Police Batrider. . Use MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE for clones Gran Premio F1 (Italian bootleg of Pole Position II) and Gran Premio F1 (Spanish bootleg of Pole Position II) and for all aerofgt.cpp games except bootlegs which need more research. . Use callback for soundlatch interrupt in actfancr.cpp . Soundlatch modernization in aerofgt.cpp, blockout.cpp, crshrace.cpp, f1gp.cpp, gstriker.cpp, inufuku.cpp, pipedrm.cpp, psikyo.cpp, renegade.cpp, spdodgeb.cpp, suprslam.cpp, tail2nos.cpp, taotaido.cpp, wc90.cpp and welltris.cpp - Taito Ensoniq ES5505-based sound: Use MB8421 for communication RAM (audio\taito_en.cpp; drivers\galastrm.cpp, groundfx.cpp, gunbustr.cpp, superchs.cpp, taito_f3.cpp, taitojc.cpp and undrfire.cpp) - Williams sound: Handler cleanup (audio\williams.cpp) in mcr68.cpp, midtunit.cpp, midvunit.cpp and williams.cpp - 8255 PPI . Added tristate outputs . Use 8255 PPI devices (most of which are only used for input) and use the new 8255 tristate callbacks to removed some workarounds in subsino.cpp. . Use 8255 PPI devices for I/O in mjkjidai.cpp and piggypas.cpp . Replaced soundlatch with 8255 PPI device that runs in mode 2 in suprloco.cpp - Discrete Netlist: Added Zaccaria driver to mamenl build (sound\dmadac.cpp) - Kaneko Custom: Eliminate driver_data dependency (video\kan_pand.cpp, drivers\airbustr.cpp and snowbros.cpp) - MB3773 Power Supply: Added MB3773 device to aerofgt.cpp, gstriker.cpp and taotaido.cpp - PCI-IDE controller: Added writing to subsystem id register (machine\pci-ide.cpp). Fixes power-on PCI Data Test in NBA Showtime Gold. - RP5C01 RTC: Added TC8521 device type as alias for RP5C01. Added TC8521 RTC to yesnoj (though the game remains stuck in the 20th century). - Taito Custom . Replaced TC0220IOC with TC0510NIO (newer I/O version) in Space Gun . Added port 3 write callback for TC0220IOC and TC0510NIO in othunder.cpp and taito_z.cpp . Use callbacks to set coin counters and coin lockouts from Taito I/O devices. This is a largish and not particularly elegant change, but those outputs aren't exactly internal. . Made TC0040IOC its own device type and separated its functionality from TC0220IOC (ninjaw.cpp, taito_b.cpp, taito_h.cpp, taito_l.cpp, taito_z.cpp and topspeed.cpp) . Use TC0510NIO device for inputs in 2mindril.cpp, galastrm.cpp, groundfx.cpp, gunbustr.cpp, superchs.cpp and undrfire.cpp . Added MACHINE_NODEVICE_LAN flag to Chase Bombers, Ground Effects and Gunbuster - Timekeeper: Added watchdog function to M48T37. M48T08 doesn't have watchdog. - TTL: 74157 developments. Added more read/write handlers, optional input callbacks and HC157 variant. Prevent unnecessary reads. plotting, puzznic and horshoes: Use a quartet of LS157s to multiplex the YM2203 inputs. - uPD4701 counter: Use uPD4701 device for analog input in arknoid2, fiveside, jpopnics and plumppop. - Voodoo GFX . Calculate dither pointer when needed for fogging. Fixes graphics crash in San Francisco Rush 2049. . Separate vblank (external) and PCI interrupt (internal) callbacks . Extended PCI interrupt support to Voodoo 2 and above . Write register data to intrCtrl - Z80 SCC . Added support for resetting RX interrupts/status by reading Rx FIFO through RR3 . Moved rearming of tx interrupt from tx buffer write to transmit complete when using WR0_RESET_TX_INT - aerofgt.cpp: Video and sound refinements: Fixed sound loss in Spinal Breakers and clones caused by misconfigured ROM bank. Work towards flip screen support for most games; clone Aero Fighters (Taiwan / Japan, set 1) is nearly correct now. - balsente.cpp: Minor doc update - cps1.cpp: Interrupt acknowledge routine based on schematics - csplayh5.cpp: Clean-ups and notes updates and added system inputs - cubo.cpp: Demoted Laser Quiz Italy and Laser Quiz 2 Italy, they never really worked. - exidy440.cpp: Partial revert of timer_set removal. This needs to be studied better. This fixed mouse trigger doesn't work correctly (ID 06596). - f1gp.cpp: Preliminary RS232 device hookups for multiboard communications - gaelco3d.cpp: Load correct roms for Football Power - gstriker.cpp: Undumped MCUs can be difficult to cooperate with - ice_tbd.cpp, mmm.cpp and mpu2.cpp: Rattled a few old bones - jack.cpp: IRQ acking done right - konamigx.cpp: Get rid of old popmessage. Stop logging spam. - m72.cpp: Put IRQ hacks out of their misery. Fixed V35-based games (Cosmic Cop, Ken-Go and Lightning Swords). Restore text layer (if scanline == 256; Dragon Breed). - m90.cpp: Use 4-way joysticks (as service manuals suggest) in Dynablaster, Bomber Man World and clones - m92.cpp: Put IRQ hacks out of their misery. Cleanup and kludge removal. - magicard.cpp . Created standard write handler for SAA1099 sound; substitute for bogus YM2413 in Magic Card. . Fixed address map in Hot Slots. Replaced SAA1099 sound with YMZ284. - mitchell.cpp: Sound improvements in clones Pang (bootleg, set 3 and set 5) and Super Pang (World 900914, bootleg). Reduced ADPCM rate to make music speed sound more like the original. Use callback for audio IRQ. - model1.cpp: Readded TGP roms 315-5571.bin, 315-5572.bin and 315-5573.bin to netmerc, swa, vf, vformula, vr and wingwar - mtouchxl.cpp: Initial support for SiS85c496/497 PCI chipset and first pass shadow RAM and SM RAM support - naomi.cpp . Added real dump of SPI EEPROM used in M1/171-7978B-type cartridge to gram2000, kick4csh, mtkob2, shootpl and tduno2. Updated docs. . Converted existing M1-type cart SN# EEPROM data to be like real dump in clubkprz, clubkpzb, hopper, kick4csh and mvsc2. . Identified "Airline Pilots" sets as domestic Japan and World versions, according to information from Sega. . Removed "empty ROMs" in 'The Typing of the Dead (Rev A)' and clone, actually not populated on real ROM boards. - neodriv.hxx: Updated video\neogeo_spr.cpp. Corrected Neo Geo sprite tile code mask to 20 bits (was previously 19 bits), stop masking MSB. - norautp.cpp . Make 8255 PPI handshaking work in Noraut Poker. Restored some 8255 inputs in Noraut Poker that were disconnected since MAME 0.134u3 due to failed attempts to simulate a 8255 PPI configured in an unusual mode. The readout switch (Key 9) is now working again (ID 03585). . Don't hardcode "Readout" inputs in driver - psikyo.cpp: Some basic driver cleanup - system16.cpp . Added preliminary sound to clone Alien Storm (bootleg, set 2) and corrected clocks . Added preliminary sound to clone Michael Jackson's Moonwalker (bootleg) instead of cheating by loading the sound ROMs of the original. There's probably something wrong with rom loading / OKI banking, since I don't believe the correct BGMs are always playing. Left as MACHINE_IMPERFECT_SOUND because of this. - taito_b.cpp: Removed "bypass" that was made superfluous many years ago - taito_f2.cpp . General documentation update. Added TE7750 Super I/O Expander device. . Added Player 3 and 4 inputs to Dead Connection shown in test mode (and otherwise unused) . Added TC8521 device type as alias for RP5C01. Added TC8521 RTC to Yes/No Sinri Tokimeki Chart (though the game remains stuck in the 20th century) and test switch is 'NO TOGGLE'; note lack of printer emulation. - taito_l.cpp: 74157 developments. Added more read/write handlers, optional input callbacks and HC157 variant. Prevent unnecessary reads. plotting, puzznic and horshoes: Use a quartet of LS157s to multiplex the YM2203 inputs. - taitosj.cpp: Made security MCU hookup a device - terracre.cpp . Actual hookup for protection data and fixed potential buffer overflow . Fixed clone Booby Kids regression and clean-ups . Discard protection reading for clone Kid no Hore Hore Daisakusen (bootleg), memory map cleanups. - toaplan2.cpp: Generate (and acknowledge) video interrupts within VDP (video\gp9001.cpp) - vegas.cpp . Added writing to subsystem id register (machine\pci-ide.cpp). Fixes power-on PCI Data Test in NBA Showtime Gold. . Calculate dither pointer when needed for fogging (video\voodoo.cpp and vooddefs.h). Fixes graphics crash in San Francisco Rush 2049. . Added watchdog function to M48T37 timekeeper - zaccaria.cpp: Clear up some stuff with board photo (audio\nl_zac1b11142.cpp) - zaxxon.cpp . Make "Universal Sound Board with ROM" work again (see Ixion and Razzmatazz) (ID 06599) . Use WRITE_LINE instead of INTERRUPT_GEN - Ace Attacker: First stab at I/O board - Air Combat 22: Changed auto-centring throttle from Pedal to AD_STICK_Z - Arkanoid: Fixed device_clock_changed to respect the YM2149_PIN26_LOW flag. Fixes sound pitch is too high in Arkanoid, clones and Tournament Arkanoid (ID 06614). - Bubble Bobble II: Added address map for clone Bubble Symphony (bootleg with OKI6295) - Dragon Treasure: Bruteforced main unit DES key - Hyper Crash: Fixed missing VLM5030 speech since 0.176. Also increased VLM volume. - Imekura Mahjong: Fixed graphic corruption (ID 06617) - Karate Blazers: Fixed sound regression in clone Karate Blazers (bootleg with Street Smart sound hardware) - Karate Champ: Fixed distorted ADPCM sound in clones kchampvs, kchampvs2 and karatevs (ID 06479) - Kusayakyuu: Acknowledge main interrupt - Little Robin: Use more likely clocks for Little Robin based on PCB XTALS (main CPU is more likely 8MHz than 12MHz). Also use a hack to overclock the TMS to 120% so that the map screen renders properly, points at possible timing errors in the core? Note: Various scenes flicker to the point of graphics being invisible (eg. the map screen at the very start of a game). Unless you overclock the TMS34010 to 120%, possible timing bug in the core? this is a hack. - Mahjong Kyou Jidai: Identified the memory reset input - Mighty Guy: Added notes about sound "protection". Improved sound. - PinMAME . Added new sound_m3.bin rom to Metal Man . Modernized MSM5205 callback in inder.cpp and spinb.cpp - Prebillian: Fixed vblank input so game doesn't hang with new real MCU dump, fixed player 2 spinner input and added ball launch button. - Quiz Show . Changed fake tape input back to old pseudo-random values that program handles better for some reason . Driver cleanup. Removed unnecessary prefix from function names. Removed unused I/O space. Added dummy callback for flag output (which is used). - Red Corsair: Fixed gfxdecode and use more likely CPU types - Royal Mahjong: Added MC6845 CRT controller to clone Janyou Part II (ver 7.03, July 1 1983) - Royal Poker V 1.85: Push emulation a little further along - Side by Side: Fixed POST failure in debug build - Space Gun: Replaced TC0220IOC with TC0510NIO (newer I/O version) - Spectar: Added PROMs taken from clone (revision 2, bootleg) to Spectar - Star Audition: Flag game with no printer/camera - Starship 1: Fast/Slow control from toggled to momentary, as in real game. Updated clocks per latest information. Added note about Throttle Level behaviour. Changed format of comments (ID 03041). - Tail to Nose . Added flip screen support and document non-effect of "Country" switch . Preliminary RS232 device hookups for multiboard communications. - Taisen Mahjong Final Romance 4: Preliminary step towards 4-player link support. Some serial INS8250 interrupts for future use. - Treasure Island (DECO Cassette): Handcraft a BIOS rom for clone ctisland3 (the only difference between the A/B BIOS roms is the single byte it checks in the header anyway). Compared to the other ctisland sets it uses a different encryption and has a region code of 'D' in the header. Changed description of clone (unk) to 'Treasure Island (DECO Cassette) (Region D)'. - Video Poker: First attempt at proper configuration the clone Video Poker (v1403) - Dipswitch fixes in 2mindril.cpp, csplayh5.cpp, pacman.cpp and taito_f2.cpp - Fixed rom names in arkanoid.cpp, gottlieb.cpp, minivadr.cpp, s11b.cpp and taito_l.cpp - Description changes of Airline Pilots (Japan, Rev A), Airline Pilots (World, Rev B), Alien Crush (United Amusements PC Engine), Animal Basket (24 Jan 2005), Blazing Lazers (United Amusements PC Engine), The Bounty (set 1), E-Swat - Cyber Police (bootleg, set 1), Flash Boy (vertical) (DECO Cassette MD) (No.12/Ver.0/Set.1,Japan), Forty-Love (World), Gradius IV: Fukkatsu (ver JAC), Guerrilla War (Version 1, set 1), Gun Dealer (Yam! Yam!? hardware), Keith Courage In Alpha Zones (United Amusements PC Engine), Money Money (set 1), Onna Sanshirou - Typhoon Gal, Onna Sanshirou - Typhoon Gal (bootleg), Pac-Land (United Amusements PC Engine), Sega Rally Championship - Twin/DX (Revision B), Sega Rally Championship - Twin/DX (Revision C), Silent Scope 2 : Dark Silhouette (ver UAD), Spelunker II - 23 no Kagi (Japan), T.T Block [TTL], T.T Defender, T.T Fitter (Japan), Treasure Island (DECO Cassette) (Region D) and unknown Labeled 'WU- MARY-1A' Music by: SunKiss Chen - Renamed (alpilota) to (alpilotj), (alpiltdx) to (alpilot), (gteikob2) to (gteikokub2), (gteikokb) to (gteikokub) and (palamed) to (palamedj) - MAME . VIDEO RENDERING SYSTEM . Make the palette optional (emu\drawgfx.cpp). device_gfx_interface does two things: Go from a possibly weird rom layout to a one-byte-per-pixel tiled layout and draw the tiles so created. The second part requires a palette, but the first doesn't. And low-level emulations of individual graphic chips (konami tilemap or sprite generators for instance) are not supposed to care about the palette. They just output bits which are partly indexes into palettes, and partly not, and in any case become pen ids only much further in the rendering chain. But they need access to the decoding step, because one-byte-per-pixel is real nice. So now such a device, which inherits from device_gfx_interface, can call set_palette_disable(true) and no palette tag will be required. Calling the draw functions will segfault though. As a side effect, the gfx_element constructor now takes a palette pointer instead of a reference, since it's now optional. . Fixed the case when a gfx element has no palette (ui\viewgfx.cpp) . BGFX: Fixed xBR-lv2-multipass, xBR-lv2-fast, xBR-lv2-noblend, xBR-lv2, xBR-lv3-noblend and xBR-lv3 shaders . Changed the profiler to use std::ostringstream as the text sink (instead of std::string) (emu\profiler.cpp) . Validity . Added validation check for contradictory flags, fix things it caught. . Attempt basic validation of slot cards. Note that this currently segfaults on anything ISA and probably other stuff. For example, any of the following will crash: mame -valid c386sx16, mame -valid 386i and mame -valid b128. Pushing before dinner so others can take a look. Fixed vas' problem, region_length() is expected to return 0 if the region doesn't exist, not crash. . Improved code for instantiating slot devices for validation. Fixed region validation for slot devices. Fixed the missing default subslot devices on slot card validation . Further improvements to slot option validation: All slot options are now validated whether or not they are user-selectable. This has already exposed a bug in one MSX-Audio device. Slots within slots, however, get added for validation only if they are declared fixed. Various Commodore floppy drives have been affected by this, since it doesn't look as if the current FDC emulation allows for detachability. . Improved validation checking for address ranges (emu\addrmap.cpp) . Multi-Language: Attribution correction for Hungarian language translation . DEVICE . Updated devices\cpu, devices\machine and devices\bus\* devices to use device_add_mconfig insted of device_mconfig_additions. Got rid of machine_mconfig_additions in devices\bus\*. . Better detection of bad -ramsize strings, move some private code to anonymous namespace. There was a longstanding bug where '-ramsize 16kfoo' would be treated as '-ramsize 16k'. Changed parse_string() to explicitly look for the suffixes "[k|m][|b|ib]" (machine\ram.cpp). . Device name changes: AY-3-8910A to AY-3-8910A PSG, AY-3-8912A to AY-3-8912A PSG, AY-3-8913A to AY-3-8913 PSG, AY-3-8930A to AY8930 EPSG, YM2149 to YM2149 SSG and YMZ284 to YMZ284 SSGL . PLUGINS . Added hotkey support to cheat plugin. Be more careful with unpack (plugins\cheatfind\init.lua). . Added NES, SNES, Genesis and Game Genie support to cheat plugin. More Game Genie and NES Action Replay cheat format decoder. . Fixed erroneous space padding before linefeed on -listclones and -listbrothers output (mame\clifront.cpp) . Added line hold capability. Note: Whoever feels like saying that "HOLD does not exist in hardware", I invite to admire the beautiful TTL circuit to the left of the 68000s in the Over Drive schematics (emu\devcb.cpp). . UI: Fixes a crash when returning to the front end when a system was launched from favorites. This bug could be reproduced with the following steps: 1. Put 'nes' in 'Favorites'. 2. Launch 'nes'. 3. Choose something from the software menu and run the emulation. 4. Escape back... CRASH. . Sort slot options by name in -listslots. Device names can be obtained without instantiation now (mame\clifront.cpp) . Fixed address_map configure (emu\addrmap.cpp) . Disable side effects in some read handlers (machine\msm6253.cpp and upd4701.cpp) - Compiling . Coverity (software) . Fixed errors about unintended truncation (machine\cs4031.cpp and genpc.cpp) . Cleanup and constructor delegation (video\poly.h, includes\orbit., includes\pass.h, machine\bfm_bd1.cpp, bfm_bda.cpp and taitoio.cpp) . Compile fix for machine\ldvp931.h and pdc.h . Fixed etc\template_driver.cpp compile . Verify some same label different hash (sldh) rom parts and commented following established procedures - Debugger . Windows debugger: Added ability to load software-list items. Mount File/Create default to swpath instead of randomness (win\consolewininfo.cpp). . Changed 'enum read_or_write' to be 'enum class' (debug\debugcmd.cpp, emu\emumem.cpp and machine\fddebug.cpp) . Don't try to read past the end of a memory space in debug view (debug\dvmemory.cpp) . Removed "Mount Item" for now due to bugs, also removed internal media slots from images menu (win\consolewininfo.cpp). . Changed a few 'const char *' ==> 'const std::string &' in the MAME debugger . Fixed an issue that could cause the debugger 'source' command to falsely display I/O error 0.186 - New games: Gunstar Heroes (Mega Play), Hashire Patrol Car (J 990326 V1.000), Jang Taku (V 1.3) and Space Cyclone - New Working games: 7 Smash, Heated Barrel, Jockey Club II, Legionnaire, Mahjong Yarou, MegaTouch XL, MegaTouch XL 6000, Microman Battle Charge, Poker Genius, Revenger '84, T.T. Defender, Technical Bowling and Tetris Fighters - New Non-Working games: A-Plan, Dream Hunting (US), Dragon Treasure (Rev B) (GDS-0030B), Football Power, Mushiking The King Of Beetles 2004 Second (Japan), Quest of D Oukoku no Syugosya Ver. 3.02 (CDV-10026D), Quest of D The Battle Kingdom (CDV-10035B), Royal King Jang Oh 2 (v4.00 1984 Jun 10th), Shoot Away II and Hog Wild (US) - New clones: Bagman (Taito), Bucky O'Hare (ver JAA), Cadillacs and Dinosaurs (Asia TW 930223, bootleg?), Capcom Vs. SNK 2 Mark Of The Millennium 2001 (GDL-0008), Captain Silver (Japan, revision 1), Dottori-Man Jr., Dragon Treasure (Rev A) (GDS-0030A), Galaxy Wars (Taito), Jackal (bootleg, Rotary Joystick), King of Boxer (Japan), Mahjong Yarou [BET] (Japan, set 2), Mandinga (bootleg of Amidar), Mega Force (World), MegaTouch XL 6000 (Version r04), Mouse Trap (version 4, bootleg), Nebulous Bee, Nibbler (rev 7), Ojanko Club (Japan, Program Ver. 1.2), Pang (bootleg, set 5), Penky (Italian), Phoenix (Hellomat Automaten bootleg), Rastan Saga (Japan Rev 1), Real Mahjong Haihai (Japan, older), Revenger '84 (newer), Shiritsu Justice Gakuen: Legion of Heroes (Japan 971216), Space War (Leisure and Allied), Space Wipeout, Special Forces Elite Training (v01.02.00), Star Sweep (World, STP2/VER.A), Star Trek: Voyager (stand-up version 1.002), Super Street Fighter II: The Tournament Battle (Asia 931005), Tatacot (JA 951128 V1.000), Thrill Drive 2 (ver JAA), Top Landing (Japan), Touchmaster 2000 (v4.XX3 Spanish Evaluation), Touchmaster 3000 (v5.02 Spanish), Touchmaster 3000 (v5.XX Standard AMOA Evaluation) and Wonder Boy (set 6, 315-5179) - New AGEMAME games: Bachelorette Party (BHG1579, US), Betting Zoo - Mr. Cashman (0251064, US), Big Ben (20126911, NSW/ACT), Big Red (1J009211, NSW/ACT), Buccaneer (0252523, US), Canyon Rose (AHG1463, US), Cash Crop (0300447V, NSW/ACT), Diamond Destiny (AHG1533, US), Dynamite Jack (CHG1562, US), Enchanted Forest - Cash Express (CHG1536, US), Fortune Fever (BHG1566, US), Geisha - Jackpot Carnival (0351033, US), Helen of Troy (1J008311, NSW/ACT), Inca Sun (DHG1577, US), Jumping Beans (0100161V, NSW/ACT), King Penguin (20109021, NSW/ACT), Koala Mint (CHG1573, US, set 2), Loco Loot (AHG1513, US), Margarita Magic (EHG1559, US, set 2), Mountain Money (BHG1465, US), Mountain Money - Cash Express (AHG1629, US), One For All (0101503V, New Zealand), Party Gras (AHG1568, US), Peacock Magic (0151352, US), Penguin Pays (0300113V, NSW/ACT), Pompeii (0151158, US), Queen of the Nile (0301059V, Holland), Queen of the Nile Special Edition (20102811, NSW/ACT), Return of the Samurai (10117211, NSW/ACT), Scatter Magic III (0452569, US), Sun & Moon (0251303, US), Super Bucks II (0300006V, NSW/ACT), Sweet Liberty Deluxe (AHG1575, US), Toucan Tango (0301388V, Holland), Unicorn Dreaming (BHG1584, US), Wild Coyote (AHG1515, US) and Wild Thing (0201176V, NSW/ACT) - New PEPlus games: Player's Edge Plus (PS0629) Double Hot Peppers Slots - New PinMAME games: Teenage Mutant Ninja Turtles (1.04) Germany - New drivers: scyclone.cpp, shootaway2.cpp and unianapc.cpp - New devices: cheekyms_audio, gt64xxx, k054321, mb89352, mc8123, s29190_16, s29290_16, s29390_16, ttl166, usb_connector and vrc5074 - New Cheat.dat: - New ClrMamePro version: - ADSP21062 / SHARC CPU: Fixed SHARC disassembly in debug build (cpu\sharc\sharc.h) - H8 CPUs . Fixed H8 instruction eepmov.b (used r4h instead of r4l). Added support for non-autorequest DMA (DREQ edge, DREQ level) in H8. . Added support for H8/300H to h8_dma (previously only H8/300S supported) . Added DMA channels and RTMCSR register to H8/3002 - I80186/286 CPU: Added opcodes config stuff - M6800 CPU . Fixed invalid instruction length / Program counter behavior. Fixed random crash while drawing characters at the screen borders. draw_char_40 & draw_char_80 : use of std::min. Fixed invalid instructions length. Each 6800 invalid opcodes have a different behavior. This commit fix the PC increment of each invalid opcode execution. There is three groups of invalid opcodes: One byte invalid opcodes/instructions: 00,02,03,04,05,12,13,15,18,1A,1C,1D,1E,1F,21, 38,3A,3C,3D,41,42,45,4B,4E,51,52,55,5B and 5E. Two bytes invalid opcodes/instructions: 61,62,65,6B,83,93,A3,C3,D3,DC,E3,EC and ED. Three bytes invalid opcodes/instructions: 71,72,75,7B,B3,CC,CD,F3,FC and FD. Behavior checked from the Visual 6800 and the real hardware (goupil computer) Invalid opcodes renamed. . Quick and dirty split of most MC6801/MC6803/HD63701 features from base M6800 class. The code remains generally archaic and awful and in need of a sweeping rewrite. At least one static variable is no more. - MC-8123 CPU: Make MC-8123 into a device (chinsan.cpp, freekick.cpp, ninjakd2.cpp, segae.cpp, segas16b.cpp and system1.cpp). Fixed IRQ-related regression in Gigas (freekick.cpp). - MCS-48 CPU: Converted MCS-48 ports to devcb: T0, T1 and PROG handlers are now 1-bit rather than 8-bit. Eliminate several T0/T1 handlers that DEVCB macros can take care of now. T0 CLK output emulation. - SPC700 CPU: Get rid of unneeded shifts. Fixed N flag in OP_LSRM. - TMS32031/2 CPUs: RTPS should be RPTS - TMS34010 CPU: Fixed DASM of MOVB/MOVE absolute to absolute - Z180 CPU . Added support for DREQ and TEND signals. Fixed DMA0 count and DREQ handling. . Fixed obvious type detected by Coverity (software) . Tried to make Z180 table allocation/setup a bit safer - BSMT2000 sound: Changed DECO BSMT2000 ready callback into a device delegate - MSM5205 sound: Use clocks_to_attotime - Q-Sound: Updated QSound/DL-1425 ROM and comments with corrections from recent decap - SCSP sound: Fixed SCSP UNPACK sign extension (sound\scspdsp.cpp) - SN76477 sound: Unconnected resistor treated as invalid even though it's the initial value - uPD7759 sound: Fixed/Reduced logging - Y8950, YM2608 and YM2610/B sound: Tidy up some code (sound\ymdeltat.cpp) - YM2203 sound: Fixed crash on fatal errors (sound\2203intf.cpp) - 6522 VIA . Refactored shifter supporting more fetures and fixed a few bugs. Removed old code and cleaned up a bit. . Tuned shifter IRQ timing to be more cycle accurate . Fixed the flank timer value which improved but not completelly reverted the Vectrex regression - 8255 PPI . Hook up 8255 PPIs to chinsan.cpp, igspoker.cpp, jackie.cpp, megaphx.cpp, segae.cpp, taito_l.cpp, tatsumi.cpp (apache3 and roundup5), thief.cpp (thief) and upscope.cpp . Use 8255 PPIs for interboard communication and PIC for sub interrupt in mrflea.cpp - CHDMAN: Minor improvement to CHD metadata loading. Writing into an std::string is now legal with C++11 (util\chd.cpp). - Discrete Netlist . Changed Solver.PARALLEL parameter logic: 0 = Parallel processing of solvers disabled. 1 = One processor parallel processing. Can be used to measure OPENMP overhead. >1 = Solve n analog subnets in parallel. Previously, all available processors were used which caused performance to degrade on hyperthreading. . Netlist refactoring: OPENMP refactored. All OPENMP operations are now templatized in pomp.h. We don't need thread-safe priority queue. Event code updating analog outputs now runs outside the parallel code. . Reordered members to be more cache friendly (devices\nld_7493.cpp and nld_9316.cpp) . Cleanup of solver code. Various code alignments across solvers. Added Cheeky Mouse to mamenl build. Fixed state saving for pfunction lfsr. . Fixed debug assert in many drivers using netlist (netlist\nl_setup.cpp; atarittl.cpp, hazeltin.cpp, m62.cpp, mario.cpp and pong.cpp) (ID 06538) - EEPROM: Added support for Seiko S-29X90 16-bit EEPROMs (machine\eepromser.cpp) - Imgtool . Cleanups to validity code and transitioned to std::wcerr. Windows doesn't like mixing std::wc[out|err] and printf(). . Fixed issue with 'listfilters' command. Extremely basic fix to the Imgtool <==> CHD HD bridge. This really needs much more work (MT #06576). - Konami Custom . Implemented K054321 as a device (gijoe.cpp, lethal.cpp, moo.cpp, mystwarr.cpp, rungun.cpp, xexex.cpp and xmen.cpp). Fixed validation for drivers\xmen.cpp. Fixed K054321 for Lethal Enforcers and Monster Maulers. . Added save state support to K054321. Also removed unneeded includes from the driver where the generic soundlatches were removed. - MC6845 CRT: Added (partial) correct register mappings to HD6345 - Nintendo Custom . Added wrappers for SNES PPU operations so members can be made protected (video\ppu2c0x.cpp and video\snes_ppu.cpp) . Basic VT03 video support. Some support for extended sprite addressing used by (MESS) Cyber Arcade 120-in-1 - PCI-IDE controller: Added save states to machine\pci-ide.cpp. Allow for setting the top 12 decode address bits in legacy mode. Moved default legacy address assignment from device_start to device_reset. Allow for address size resolving even in legacy mode. Added function to set default PIF byte (machine\pci-ide.cpp). - Seta Custom: Added 4 tilemaps and switchable resolution to ST-0020. ST-0032 video on par with ST-0020. - TTL: Added SN54/74166 8-Bit Parallel-In/Serial-Out Shift Register (machine\74166.cpp) - uPD4701 counter: Partially rewrite uPD4701 device and hook it up to cabal (trackball sets), calibr50, eaglshot, fbaitbc, forgottn, horshoes, poundfor, ridleofp, sonic and wwallyj - Voodoo GFX: Some more Voodoo cleanup - Z80 DART: Improved encapsulation of Z80DART channels - Z80 CTC: Minor clock cleanup - Z80 SCC: Implemented Reset Tx Interrupt Pending Command (machine\z80scc.cpp) - aleck64.cpp: Wrap PC to 12 bits in a few more places (cpu\rsp\rspdrc.cpp and rspfe.cpp) - atlantis.cpp and midzeus.cpp . Added save state support to machine\pci-ide.cpp, pci.cpp, pci9050.cpp, vrc4373.cpp, video\zeus2.cpp and drivers\atlantis.cpp . Atlantis driver cleanup - battlex.cpp: Fixed graphics decode issues and improved palette generation in Dodge Man and Battle Cross - bingor.cpp: Random cleanups - chihiro.cpp: Migrated PCI devices to new PCI bus framework (machine\xbox.cpp). Some USB/OHCI renaming. USB hotfix. USB devices are now slot devices. - chinsan.cpp . Inputs cleanup, added flip flop and statistics buttons. Use tilemap system for rendering and general driver cleanup. . Identify coinage and demo sound dipswitches . Set YM2203 clock to a more likely 10MHz/8, restore PCB number. . Merged mayumi.cpp with chinsan.cpp driver. Interrupt enable, flip screen hooked up and NVRAM support for chinsan. - clshroad.cpp: Init background VRAM to 0xf0 and assume common divider for all Z80s - cobra.cpp: Fixed some input issues - epos.cpp . Added flip screen support . Fixed Revenger EPOS TRISTAR 9000 board clocks and rom labels. Combined, refined and expanded README's for both Revenger sets. . Fixed RAM based colors and added backup RAM to dealer, revngr84/revenger and beastf . Fixed Z80 CPU1 and AY-3-8910A clock speeds in dealer and revngr84/revenger . Fixed input. I/O map 0x38 is actually AY8910 read in dealer. . Implemented Tristar 9000 hardware AY-3-8910 port A 'multiplexer', PSG REGISTERS test can (in theory) pass with dipswitches set now. . Switched Tristar 8000 hardware to use AY-3-8912 as shown on schematics (catapult, igmo, megadon and suprglob). - flkatck.cpp: Fixed old regression when memorymaps were merged - iteagle.cpp . Set correct UART crystal frequency and added CPU delay to prevent TX UART timeouts (machine\iteagle_fpga.cpp) . Added save states to sound\es1373.c, video\voodoo_pci.cpp, machine\iteagle_fpga.cpp and drivers\iteagle.cpp - lastfght.cpp, subsino.cpp and subsino2.cpp: Used ramdac_device instead of custom implementations - legionna.cpp: Fixed Legionnaire and Heated Barrel scenery walking bug (a different 138e trigger is used; machine\seibucop\seibucop.cpp/h and seibucop_cmd.hxx) (Games now playable) - liberate.cpp: All PSGs are AY-3-8912A - m52.cpp, m57.cpp, m58.cpp, m62.cpp and travrusa.cpp: Replaced generic latch with more accurate emulation. Fixed missing d7 on sound latch, device_reset to correctly clear sound latch and a potential situation where sound CPU/IRQ could be incorrectly cleared. - megatech.cpp: Fixed Free Play regression - micro3d.cpp: Untangled Microprose 3D noise from driver state - mitchell.cpp: Fixed NVRAM saving - model1.cpp . Implemented workaround for race condition to fixed broken sound in Virtua Fighter (ID 06587). This fix causes 'Star Wars Arcade' to show an error message before booting normally, due to the I/O board not being emulated properly in the first place. . Preliminary configuration of I386SX Polhemus CPU in Sega NetMerc - mtouchxl.cpp: Fixed buttons, coins and key stuff - multfish.cpp: Converted driver to use hopper device - namconb1.cpp: Everyone gets all 4 player inputs. All games (even 2 player games) can test for all 4 player inputs and TEST switch. So for everything except Gun Bullet use the standard Namco System NB-1 inputs. - namcos12.cpp . Correct Asia "2" region to World . Notes about S12 Network area stuff - ojankohs.cpp: Rewrote input handling: Added missing player 2 controls. Verified and removed non-existing keys from games. Added dipswitch locations to all games. Identified some of the unknown dipswitches. Clean up and correct code. Removed tagmap lookups. - royalmah.cpp: Removed aysnd tagmap lookups, partial move to configured banking and save state preparation. - seattle.cpp . Updated driver to new PCI bus system . Galileo GT-64xxx Controller: Removed address map trampolines and added save state support to machine\gt64xxx.cpp. Changed physical memory configuration to fixed crashes with Wayne Gretzky's 3D Hockey and NFL Blitz (machine\gt64xxx.cpp). Cap memory space mapping to physical memory bounds. Reduced Seattle board to 8 MB ram. Changed SDRAM configuration options (machine\gt64xxx.cpp). - segae.cpp: Added coin counters. Minor clarification. - segas32.cpp . Replaced protection MCU simulation with emulation of actual program in Arabian Fight. Make more sense of unused MCU routines (ga2- and arabfgt opcode table). . Converted classes in segas32.cpp to device_add_mconfig . Base MB89352 SCSI hookup in 'Soreike Kokology Vol. 2', disabled by default. - segam1.cpp: Hook up video devices, sound and much else. bingpty and unkm1 both boot to error screens now. - seta.cpp: Added IRQ acks for Caliber 50 and U.S. Classic - ssfindo.cpp: Added preliminary EEPROM hook up. Tetris Fighters is now playable (coins work). Left as not working since EEPROM isn't correctly saved, thus the inputs are screwed on reset. - ssv.cpp . Updated SSV driver to new Seta ST-0020 Sprite video . Promoted Microman Battle Charge and Technical Bowling to working. Thanks Osso for pointing similar to Hashire Patrol Car medal cabinets. - taito_l.cpp . Added custom I/O chips TC0220IOC and TC0510NIO . Reduced coin impulse in Evil Stone . Use MB8421 for Taito_L, less HOLD_LINE (fixes sound in Evil Stone). - vegas.cpp . Added working controls for Road Burners and 'War: The Final Assault' . Added new NEC VRC 5074 System Controller System Controller device. Added save states to VRC5074 and fixed serial register handling. Converted Vegas driver to use new PCI bus. . Added additional PCI configuration registers for Vegas support (video\voodoo_pci.cpp) . Added some logic to get 'warfa' to start booting . Set link to be unconnected by default to keep warfa (drivers\vegas.cpp) from hanging (machine\smc91c9x.cpp) . Added proper IOASIC shuffling for NBA Showtime Gold and added SIO FPGA register reset. - viper.cpp: Gun triggers for Jurassic Park 3 and Police 911 - williams.cpp and wmg.cpp . Williams Special Chip 1/2: Added pinout diagram and clarify the abbreviations to reduce confusion with similarly named chips. Fixed a comment error about SC1 vs SC2 behavior. . Added a note and flag that Williams' Mayday has unemulated protection which is currently hacked around . Reduced tagmap lookups and identified some dips for Jin (drivers\williams.cpp) - zaccaria.cpp: Preliminary netlist sound for the Zaccaria 1B11142 board: * Tromba (trumpet) sound is not working - requires Schmitt trigger device. * Connecting cassa (bass drum) swamps other instruments so it's disconnected for now. * Mixing melody sound with speech/SFX is not done in netlist (should be). * Relative levels of melody/speech/SFX are probably still wrong. A good test case for this is Money Money. There's a bit of buzzing on this one as well. The problem with the cassa could be caused by running into non-ideal characteristics of opams again (the LM3900 seems to ignore the V+ value supplied to it). When the netlist library gets Schmitt trigger support, the tromba can be completed. Unfortunately, the tromba is a key part of the characteristic sound of these boards, so you really notice when it's lacking. Bump up accuracy on audio\nl_zac1b11142.cpp netlist - runs slower but sounds a lot better. Added a crude TTL schmitt trigger model and hook up in audio\nl_zac1b11142.cpp sound board, completing the tromba circuit. Fixed typo in audio\nl_zac1b11142.cpp schematics. 7414/7474 combo now actually works. - 7 Smash: added DIPs and layout for '7 Smash' (Game now playable) - AGEMAME . Added extra sets. Improved documentation for aristmk4, aristmk5 and aristmk6. . Added correct maincpu rom to fvrpitch . Correct some fruit machine driver classes (drivers\bfm_sc4.cpp and jpmimpctsw.cpp) - Alien Command: Untangle devices switch-case. Fixed sprite flip x & background pen. Put score 7segs in internal layout. Use tilemap device. - Bad Lands: Make bootlegs to actually boot. Base audio hookup. Fixed tilemap gfxs and sprites are different from original hardware. Added coin counters and freeze switch, moved sound related irq generation into audio CPU block. Converted bootleg to mimic irq 0 sound generation. - Bonus Chance: Fixed CPU clock and added undumped MCU - Captain Flag: Fixed input labels & hookup - Cheeky Mouse . Added netlist sound based on schematics provided by Sam Grech. It doesn't work quite right yet. The "Hammer" and "Pest" sounds are generated by free-running 555/556 timers and gated with LM324 applifiers. For whatever reason, the netlist system produces a kind of buzzing from the "Hammer" circuit when it's supposed to be suppressed, and it doesn't think the pest sound should be suppressed completely so you can always hear it at a low level in the background. The "Cheese" circuit is a bit weird - either they're using the base-emitter junction of a 2SC945 as a signal diode, or there's an error in the schematic (collector is shown unconnected). Connecting this part of the circuit causes the netlist system to hang, so R2/R3/C8/Q2 are not connected for now. . Explain the pest and hammer circuits. Increase solver accuracy to reduce number of false solutions. The usual 1e-8 is not enough here, we need 1e-10. . Added rand() function to pfunction expression parser. Use this to simulate E-B noise in Cheeky Mouse and fix the "cheese" choose. Fixed issues identified by Vas and LordKale4: Made local netlists in Cheeky Mouse static. Replaced stdlib rand by 16 bit galois lfsr. - Critter Crusher: Improved gun control - Daytona USA: Added feedback driver board (including ROM) - Defender: Redumped bad maincpu rom in clone T.T. Defender (Game now playable) - Dream Soccer '94: Removed redundant DSWs - Flower: Scroll, inputs and sprites. Added sprite sizes. - Football Champ: Changed clone 'Euro Champ '92 (World)' to a parent set - Frogger: Fixed long standing background_draw_colorsplit regression. According to schematics it is at 128+8, but it has been verified different on real machine. Video proof: - Fruit Fresh: Added some sound - Jockey Club II . Splitted sets by software revision. Added default EEPROMs and document the procedure. . Finish I/O and added layout for on-screen keyboards . Added sound communication. Fixed backgrounds and colors. . Splitted 'Jockey Club II (older hardware)' into 'Jockey Club II (v1.12X, older hardware)', 'Jockey Club II (v1.10X, older hardware)', 'Jockey Club II (v1.01, older hardware)' and 'Jockey Club II (v1.00, older hardware)'. Changed 'Jockey Club II (older hardware, set 2)' into 'Jockey Club II (v2.03X RC, older hardware, prototype)'. Splitted 'Jockey Club II (newer hardware)' into 'Jockey Club II (v2.00, newer hardware)', 'Jockey Club II (v2.01X, newer hardware)', 'Jockey Club II (v2.04, newer hardware)', 'Jockey Club II (v2.05, newer hardware)' and 'Jockey Club II (v2.20X, newer hardware)'. - Kusayakyuu: Videoram bit 6 isn't flip Y - Laser Battle and Tora Tora: Unconnected SN76477 resistor treated as invalid even though it's the initial value. This fixed debug assert when starting emulation in Laser Battle/Lazarian and Tora Tora (ID 06541) (ID 06542). - Mahjong Dunhuang: Added missing OKI6295 hook up, now the game has speech. Used ramdac_device instead of custom implementation. Reduced tagmap lookups. - Mahjong Yarou: Redumped Mahjong Yarou [BET] (Japan, set 1) and verified it only has 1 Z80 (Game now playable) - Mega Phoenix: Removed Mega Phoenix PIC MCU simulation. It's now emulated using the existing PIC16C54 dump. Clean up dipswitches and added DIP locations. Added documentation. - Monaco GP: Fixed PCB table - Mouse Trap: Added PROMs from clone (version 4, bootleg) to all other Mouse Trap sets and marked them as bad dumps. The Mouse Trap manual confirms it has 3 PROMs. They also match the Teeter Torture ones. - Nintendo Custom: Privatized video\ppu2c0x.h & includes\vsnes.h variables - Pang: Demoted all MSM5205 Pang clones to MACHINE_IMPERFECT_SOUND, since music speed, which is actually set by the MSM5205 VCK output, is likely too fast for all of these. The sound CPU probably does run at 4MHz, since it's a Z80A. - Pata Pata Panic: Fixed OKI6295 audio - PinMAME: Added missing ROM dump for clone Flash Gordon (prototype rev. 1) - Poker Genius: Hook up devices and improved documentation. Graphics decoded. Added coin counter and hopper. Identified dipswitches and double-up game controls. Promoted to working (Game now playable). - Pound for Pound: Rewrote uPD4701 device and hook it up to Pound for Pound. This fixed the arrow didn't move on the menu screens to choose the other boxer or game (ID 00599). - PT Reach Mahjong: Revised PT Reach Mahjong, making it actually working. Added ball and paddle screen drawing (ID 06471), green background as per flyer pics, reach button, flip screen support and updated input labels. - Puzzle Club (Japan prototype): Added ROM FILL (region gfx2) to fixed title screen corruption since MAME 0.178 (ID 06589) - Puzzlet: Identified Player 2 inputs and a couple of DIPs - The Real Ghostbusters: Confirmed that the fake MCU ROM is the cause of clone 'The Real Ghostbusters (US 3 Players, revision ?)' not working - SD Gundam Psycho Salamander no Kyoui: Added base clocks on actual OSCs - Shadow Dancer: Dumped/added later version of sound CPU ROM to Shadow Dancer (World), document main program EPR labels. - Space Invaders: Updated some documentation for clone Space Ranger and added 'CV Version' color proms. Note: A PCB set (CVN 3-layer) was found with a 'Shinnihon Kikaku' sticker on the top board. - Starship 1: Removed hack to restore correct behavior. This fixed also the speed problem (ID 03041). Note: Some mysterious game code at address $2CCE is causes erratic images in the target explosion sequence. But this is the way the actual game worked! - Super Poker (v306US): Identified some dips - Taiwan Chess Legend: Better decode of gfx2 region, borrowed from Goldstar driver. - Thief: Verified XTALs and clean up machine configs - Unknown 'VIP 2000' game: Hook up a few devices (MSM6242 RTC, Intel Flash etc.). More driver progress. - Video Poker: Identified DAC (MC1408) - X-Men: Implemented K054321 as a device. This fixed service menu's "Sound Volume" setting does not affect sound volume (ID 04762). - Input port: Added hopper-like mode to ticket dispenser device (drivers\stv.cpp, machine\ticket.cpp) - Dipswitch fixes in aristmk4.cpp, chinsan.cpp, cischeat.cpp, clpoker.cpp, flower.cpp, galaxian.cpp, luckgrln.cpp, m107.cpp, metro.cpp, namconb1.cpp, ojankohs.cpp, royalmah.cpp, spoker.cpp, ssfindo.cpp and williams.cpp - Fixed rom names in aristmk4.cpp, epos.cpp, kingobox.cpp and royalmah.cpp - Description changes of Battle Gear (Ver 2.40 A), Beastie Feastie, Buffalo (0252636, US), Captain Silver (Japan, revision 3), Dark Horse (USA v4.00, bootleg of Jockey Club II), Ehrgeiz (World, EG2/VER.A), Fever Pitch (2VXEC534, NSW), Football Champ / Euro Football Champ (World), Football Champ / Euro Football Champ (World) (bootleg), Ghoul Panic (World, OB2/VER.A), Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E), Jansou (V 1.1), Johnny Nero Action Hero (v01.01.08), Kiki-Ippatsu Mayumi-chan, King of Boxer (World), Koala Mint (CHG1573, US, set 1), Landing High Japan (Ver 2.01 OK), Mahjong Yarou [BET] (Japan, set 1), Margarita Magic (EHG1559, US, set 1), Mazan: Flash of the Blade (World, MAZ2 Ver.A), Mega Force (US), MegaTouch XL (Version R1, prototype?), Mushiking The King Of Beetle (2K3 2ND, World), Mushiking The King Of Beetles 2005 First (Japan), Ojanko Club (Japan, Program Ver. 1.3), Libero Grande (World, LG2/VER.A), Ninja Assault (World, NJA2 Ver.A), Ninja Assault (Asia, NJA4 Ver.A), Operation Tiger (Ver 2.14 O) (ID 06103), Pata Pata Panic, Penguin Pays (0200113V, NSW/ACT), Poker Genius, Rastan Saga (Japan, Earlier code base), Rastan Saga (Japan Rev 1, Earlier code base), Real Mahjong Haihai (Japan, newer), Revenger '84 (older), Space Ranger, Special Forces Elite Training (v01.01.01), Stunt Typhoon Plus (Ver 2.04 J), Thunder Heart (10173811, NSW/ACT), Touchmaster 7000 (v8.1X ASI Standard Evaluation), Tonton [BET] (Japan, set 1), Dunk Mania (World, DM2/VER.C), Sega NetMerc, Soul Edge (World, SO2/VER.A), Soul Edge Ver. II (Asia, SO4/VER.C), Tekken (Asia, TE4/VER.C), Tekken (World, TE2/VER.B), Tekken (World, TE2/VER.C), Tekken 2 (World, TES2/VER.A), Tekken 2 Ver.B (World, TES2/VER.B), Tekken 3 (World, TET2/VER.E1), Tekken 3 (World, TET2/VER.A), Tekken 3 (World, TET2/VER.B), Tekken Tag Tournament (World, TEG2/VER.C1, set 1), Tekken Tag Tournament (World, TEG2/VER.C1, set 2), Tenkomori Shooting (World, TKM2/VER.A1), U.S.A. Football, World Cup (L-1), World Kicks (World, WK2 Ver.A) and World Kicks (US, WK3 Ver.A) - Renamed (acchi) to (patapata), (adustcm) to (aduskcm), (cvs2gd) to (cvs2mf), (ehrgeiz) to (ehrgeizua), (ehrgeizaa) to (ehrgeiz), (hlntroy) to (hlntroyu), (jgakuen) to (jgakuen1), (kingpeng) to (kingpengsp), (lovestrk) to (lovestuk), (marmagicua) to (marmagicu), (marmagicu) to (marmagicua), (mazan) to (mazanu), (mazana) to (mazan), (megaforc) to (megaforcu), (ninjaslt) to (ninjaslta), (ninjaslta) to (ninjaslt), (pompeia6u) to (pompeia6ua), (qnilese) to (qnilesea), (qsheeba) to (qsheba), (rastsagaa) to (rastsagab), (rastsaga) to (rastsagaa), (souledgeaa) to (souledgea), (specfrce) to (specfrceo), (starswep) to (starswepj), (sunmoon) to (sunmoona), (tekken) to (tekkenac), (tekkenac) to (tekken), (tekken2aa) to (tekken2a), (tekken2ab) to (tekken2b), (tekken3) to (tekken3je1), (tekken3ae) to (tekken3), (tekken3aa) to (tekken3a), (tekken3ab) to (tekken3b), (tektagt) to (tektagtuc1), (tektagtac) to (tektagt), (tektagtac1) to (tektagtc1), (wldkicks) to (wldkicksu) and (wldkicksa) to (wldkicks) - MAME . Disambiguated the WINOPTION_YIQ_PHASE_COUNT option. "yiqp" was used for WINOPTION_YIQ_PVALUE and WINOPTION_YIQ_PHASE_COUNT. Removed redundant ";global_inputs" (windows\winmain.cpp). . rand() corrections in src\devices\* and src\mame\* . NPOT subunit compromise: Handlers with a non-power-of-2 number of subunits are allowed once again. However, the offset multiplier will be rounded up to the nearest power of 2 (emu\addrmap.cpp). . DEVICE . Fixed an issue that could cause problems when loading reset_on_load devices (like cartridges) from softlists at runtime. This was not guaranteed to cause a problem; the specific issue here was reported by mr_gw in the context of the CoCo, and the proximate issue (hanging) was in CoCo-specific code. That said, this could cause problems elsewhere (emu\diimage.cpp). . Defend clocks_to_attotime and attotime_to_clocks against the possibility of the device clock being 0 (emu\device.cpp) . Mechanism for devices to generate clocks for other devices. Have set_unscaled_clock and set_clock_scale not call notify_clock_changed unless the device has been started. Owner-derived clocks are now updated whenever the owner's clock is changed, including at configuration time. This simplifies the configuration of various (MESS) NES clones. Added clock_update_delegate type to represent device-generated clock outputs that may be dynamically modified. The model implementation of this is the CLK output in I8085A. DERIVED_CLOCK now updates in response to clock changes and changed (MESS) CoCo to use this mechanism. . Use a proper error message in emu\emumem.cpp . Copy longname, manufacturer, year, filetype, etc. for image info in all softlisted cases (emu\diimage.cpp) . Moved static data (short name, full name, source file) out of devices into the device types . Core changes: * Short name, full name and source file are no longer members of device_t, they are part of the device type. * MACHINE_COFIG_START no longer needs a driver class. * MACHINE_CONFIG_DERIVED_CLASS is no longer necessary. * Specify the state class you want in the GAME/COMP/CONS line. * The compiler will work out the base class where the driver init member is declared. * There is one static device type object per driver rather than one per machine configuration. . Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type. * DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders. * DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type. . Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types. * These macros declare storage for the static data, and instantiate the device type and device finder templates. The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate. . Other things: * More descriptive names for a lot of devices. * Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes. * Used object finders for Irem sound subdevices. * Started to break out common parts of Samsung ARM SoC devices. * Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++. * Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant. * Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size. * Factored out some boilerplate for YM chips with PSG. * Toaplan2 gfx. * Video System video. * Out Run/Y-board sprite alignment. * GIC video hookup. * SMS passthrough control devices starting subslots. . Device name changes: 53C7xx SCSI to NCR 53C7xx SCSI, AMD Am29000 to AMC Am29000, ARM to ARM (little), ARM7 to ARM7 (little) or ARM7 (big endian) to ARM7 (big), AY8930 to AY-3-8930A, C140 to Namco C140, C352 to Namco C352, C69 (M37702) to Namco C69 (M37702), C70 (M37702) to Namco C70 (M37702), C74 (M37702) to Namco C74 (M37702), C75 (M37702) to Namco C75 (M37702), C76 (M37702) to Namco C76 (M37702), CDP1802 to RCA CDP1802, CDP1863 to RCA CDP1863, DAC-76 COMDAC to PMI DAC-76 COMDAC, Digitalker to MM54104 Digitalker, DISCRETE to Discrete Sound, ES5505 to Ensoniq ES5505, ES5506 to Ensoniq ES5506, ES8712 to Excellent Systems ES8712 ADPCM, ESRIP to Entertainment Sciences RIP, FD1089A to Hitachi FD1089A Encrypted CPU, FD1089B to Hitachi FD1089B Encrypted CPU, FD1094 to Hitachi FD1094 Encrypted CPU, H6280 to HuC6280, HuC6280 to Hudson HuC6280, I5000 to Imagetek I5000 Sound, i960kb to i960KB, Intel 8257 to Intel 8257 DMA Controller, Intel I4004 to Intel 4004, Irem M72 Audio Custom to Irem M72 Audio, MAS3507D to MAS 3507D MPEG decoder, MEDIAGX to Cyrix MediaGX, MOS656X to MOS 656X VIC (Attack UFO), MOS6581 to MOS 6581 SID, MOS8520 to MOS 8520 CIA, Namco 15XX to Namco 15xx, NiLe to Seta ST-0026 NiLe, OKI6295 to OKI MSM6295 ADPCM, OKI6376 to OKI MSM6376 ADPCM, OKI9810 to OKI MSM9810 ADPCM, PENTIUM to Pentium, POKEY to Atari C012294 POKEY, PowerPC 603e to PowerPC 603E, PXA255 to Intel XScale PXA255, RCA CDP1869 to RCA CDP1869 VIS, RF5C400 to Ricoh RF5C400, RF5C68 to Ricoh RF5C68, S14001A to SSi TSI S14001A, SAA1099 to Philips SAA1099, SCSP to YMF292-F SCSP, SCUDSP to Sega SCUDSP, SEGA VDP PSG to Sega VDP PSG, Sega/Yamaha 315-5560 to Sega/Yamaha 315-5560 MultiPCM, Signetics 2636 to Signetics 2636 PVI, SN76477 to TI SN76477 CSG, SP0250 to GI SP0250 LPC, SP0256 to GI SP0256 Narrator Speech Processor, SPU to PlayStation SPU, ST0016 (Audio) to Seta ST0016 (Audio), TC8830F to Toshiba TC8830F, TIA to Atari TIA (Sound), uPD7756 to NEC uPD7756, uPD7759 to NEC uPD7759, VLM5030 to Sanyo VLM5030, X1-010 to Seta X1-010, Y8950 to Y8950 MSX-Audio, Yamaha YMZ770 to Yamaha YMZ770 AMMS-A, YM2151 to Yamaha YM2151 OPM, YM2203 to YM2203 OPN, YM2413 to Yamaha YM2413 OPLL, YM2608 to YM2608 OPNA, YM2610 to YM2610 OPNB, YM2610B to YM2610B OPNB, YM2612 to YM2612 OPN2, YM3438 to YM3438 OPN2C, YM3526 to YM3526 OPL, YM3812 to YM3812 OPL2, YMF262 to YMF262 OPL3, YMF271 to Yamaha YMF271, YMF278B to Yamaha YMF278B OPL4, YMZ280B to Yamaha YMZ280B PCMD8, Z8002 to Zilog Z8002 and ZSG-2 to ZOOM ZSG-2. . Worked around for Street Drivin' (prototype) sound regression and fixed Steel Talons regression . Support -listroms for devices (e.g. mpu401 or m68705p3) . Fixed a regression in -listmedia/-listslots. The issue is that -listmedia/-listslots were not honoring command line options specified on the slot. This works around the problem. . Extend slot option processing to the -listdevices command as well. Don't try adding any system-specific options when a wildcard is specified. . Have -listroms display a user-friendly message when no ROMs are required (mame\clifront.cpp) . Updated mame\audio, devices\sound, devices\video, mame\video, mame\drivers and mame\machine devices to use device_add_mconfig insted of device_mconfig_additions . Fixed emu\image.cpp: 1. If either a multipart softlist item was loaded, or a single-part item loaded into a system with more than one of the same media slot, then a reset would cause a fatal error. 2. If a non-existing image was listed in the ini, it would fatal error at start and there was no way to fix it except by hand-editing the ini file. This restores the previous behaviour of ejecting the bad image with the first error. . Fixed issue when the hash length is zero (emu\diimage.cpp) . Fixed issue with the Emscripten port where the emulation would continue to run while paused (emu\machine.cpp) . UI . Added the ability to select different tilemap categories. This allows you to select different tilemap categories in the built-in tilemap viewer. The default is to render all categories (same as before), but you can select to render only a specific tilemap category with the PAGE_UP and PAGE_DOWN keys. . Cleanups to slot options (ui\slotopt.cpp): 1. Polished up residual traces of this code's pre-C++ heritage. 2. Moved completely private code to an anonymous namespace. 3. Created device_slot_interface::slot_name() to wrap the pattern of taking the tag and removing the initial colon. . Added trailing newline to several frontend error messages . Changed 'int ignore_warnings' parameter on core_options::parse_ini_file() to be 'bool ignore_unknown_options' . Fixed bug that permanently disabled some UI search strings when they were cleared. This adopts std::string::clear() and empty() consistently, rather than storing and checking for NUL as with C-style buffers. This fixes issue #2295 ("Search bar broken after changing ROM list view mode") and probably other unreported bugs afflicting UI search text input. . Starting from the Favorites menu now starts the software list submenu (if necessary). Starting a machine containing a list of the software from the Favorites menu, now determines the launch of the appropriate sub-menu with the list of software. . Better completions (plugins\console\init.lua) . Adding hack to fish hashpath option out of INI files prior to softlist evaluation. EIENTEI95 reported an error where the hashpath specified in INI files was not being honored in softlist evaluation. This is a change to preprocess INI files for the sole purpose of finding the hashpath prior to evaluating softlists. . Check for callback name being a null pointer before sending it to %s (emu\schedule.cpp) . Refactoring/cleanup to state load/save handling: Changed running_machine::schedule_[load|save]() to take 'std::string &&' instead of 'const char *'. Changed running_machine::saveload_schedule to be 'enum class'. . Improvements to ROM comparison (tools\romcmp.cpp): Identify plain ASCII text files as such. If a ROM has the same data in each half, print the hashes for that. Avoid buffer overruns. For calculating address masks, don't assume file size to be a power of 2. . Bug fix to -romident and aux verb cleanup. Fixed a bug where resolved slot/image options would choke -romident (reproducible in MAME 0.185 with 'mame64 -romident'). 'mame64 -romident' no longer crashes. Resurrected auxverb_cleanup_and_romident_bugfix. Changed usage for -romident and minor cleanups. Supporting auxverbs in any order. . PLUGINS: Updated hiscore.dat . 3rdparty: Replaced Linenoise-NG with a different port that is simpler and uses a different UTF8 parser. Work around older libc (3rdparty\linenoise\linenoise.c). . VIDEO RENDERING SYSTEM . Fixed HQx shaders with BGFX OpenGL backend . Removed the minimum sleep time constraint in video_manager::throttle_until_ticks (emu\video.cpp) . Audit/Validity check . Perform unitmask checking during validation in non-debug builds (emu\addrmap.cpp) . Make single-driver command-line validation work again. Removed some now-redundant checks related to device name validity (including the slot test, which also made assumptions that some (MESS) TI99 bus devices now break). . ~67% improvement of device walk in -verifyroms (mame\clifront.cpp) . -validate complains if device shortnames exceed 32 characters. -listroms and -verifyroms accept multiple names/patterns. . Allow multiple patterns/names for -listxml. Make -listxml instantiate slot devices in slots rather than under the machine root. Fixed -listxml output stops with many sets (agat.cpp, c64.cpp, c128.cpp, ec184x.cpp, iskr103x.cpp, ksys573.cpp, pet.cpp, poisk1.cpp and ti99_4ev.cpp) (ID 06558)(ID 06591). . Removed duplicates from list of approximate software matches (emu\softlist_dev.cpp) . Palette . Don't hardcode color PROM region name and added error handling (emu\emupal.cpp; drivers\aeroboto.cpp, arkanoid.cpp, chinsan.cpp, commando.cpp, exprraid.cpp, exzisus.cpp, flower.cpp, freekick.cpp, goindol.cpp, hexion.cpp, hnayayoi.cpp, holeland.cpp, ichiban.cpp, kyugo.cpp, lasso.cpp, lsasquad.cpp, m63.cpp, mexico86.cpp, mjkjidai.cpp, mjsister.cpp, ppmast93.cpp, pturn.cpp, rmhaihai.cpp, sauro.cpp, shangkid.cpp, slapfght.cpp, snk.cpp, tsamurai.cpp and vastar.cpp) . Replaced some custom palette inits with the appropriate standard callback (drivers\40love.cpp, gluck2.cpp, istellar.cpp, lvcards.cpp and mustache.cpp) . Removed MACHINE_CONFIG_FRAGMENT. This is a pretty minimal change. The point where the root device is added has been moved from the MACHINE_CONFIG_START macro to the constructor of the machine configuration class (made possible by giving drivers their own device types). This isn't the final change in this area. The root device is still being handled specially in that its configuration comes from the game driver structure. This needs to be harmonised with regular devices. . Added device-specific machine configuration (emu\device.cpp, driver.cpp, gamedrv.h and mconfig.cpp). Use Zaccaria driver as a demo for machine config in members. Get rid of mconfig trampoline in a few devices, make handlers protected. Changed some device_mconfig_additions to device_add_mconfig. . General cleanup: Moved rarely-used output and pty interfaces out of emu.h. Consolidate and de-duplicate forward declarations, also remove some obsolete ones. Clean up more #include guard macros. Scope down a few more things. . Cleanups to ram_device (machine\ram.cpp): 1. Changed ram_device to expose specific options, removing the burden for clients to parse RAM strings. 2. Moved validation of command line arguments out of device_validity_check(); that method is only intended for checking the device itself. 3. Miscellaneous polishing. . Multi-Language: Updated Hungarian language localization . Retired min/max in attotime.h, in favor of std::[min|max] (emu\attotime.h, schedule.cpp). . Fixed tools\romcmp.cpp regression with identifying bits stuck high - Compiling . Removed timer_set in dday.cpp, exidy440.cpp, lethalj.cpp, m10.cpp, m92.cpp, metro.cpp and segag80r.cpp . Removed timer_pulse in mw8080bw.cpp, rbisland.cpp, qdrmfgp.cpp, tetrisp2.cpp, machine\rtc9701.cpp, machine\s3520cf.cpp, machine\v3021.cpp, sound\sp0250.cpp, audio\namco52.cpp and emu\schedule.cpp . Fixed a few things found by Coverity (software) in gts1.cpp, rowamet.cpp and mame\info.cpp . LUA . LUA scripts cleanup (scripts\src\lib.lua) . Support LUA style args for some emu.file members (mame\luaengine.cpp) . GCC 7.1 . Fixed obvious bugs found by GCC 7.1 (cpu\dsp56k\dsp56pcu.cpp, spc700\spc700.cpp, machine\stvcd.cpp, video\snes_ppu.cpp, decodmd1.cpp, emu\render.h and machine\n64.cpp) . Fixed buffer overrun warnings from GCC 7.1 (cpu\i8089\i8089_dasm.cpp, drivers\megasys1.cpp and pengadvb.cpp) . Fixed remaining GCC 7.1 issue (mame\luaengine.h, netlist\plib/ppmf.h and tools\chdman.cpp) . Fixed compile with PSXGPU_DEBUG_VIEWER on (video\psx.cpp) . Make the code acceptable to Clang 4.0.0 (drivers\cedar_magnet.cpp) . Don't use -static on msys2 Clang 4.0.0 as it's currently broken, also removed -static-libgcc & -static-libstdc++ on GCC builds as they have no effect if you use -static (scripts\genie.lua). . 32-bit release builds need /bigobj (scripts\genie.lua) - Debugger . Fixed a crash in the 'symlist' debugger command (debug\debugcmd.cpp) (ID 06575) . Assert output calback is set for keyboard/terminal . Scoped enum for Windows (debugger\debugwin.cpp; MACHINE_PHASE_RUNNING -> machine_phase::RUNNING) . m_owner->tag() -> owner()->tag() cleanup in machine\68561mpcc.cpp, scnxx562.cpp, z80dart.cpp, z80scc.cpp, z80sio.cpp and video\i82730.cpp


0.189: Updated to MAME 0.189 ( Added Source/Listinfo changes. Newest Bugs (30th Aug). Added Kawaks v1.65 Emulator infos. Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.188: Updated to MAME 0.188 ( Added Source/Listinfo changes. Newest Bugs (26th Jul). Added FB Alpha v0.2.97.42 and Demul Emulator infos. Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.187: Updated to MAME 0.187 ( Added Source/Listinfo changes. Newest Bugs (28th Jun). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.186: Updated to MAME 0.186 ( Added Source/Listinfo changes. Newest Bugs (31st May). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.


MAMEINFO.DAT 0.189  (2.72 MB)

MAMEINFO.DAT 0.188  (2.68 MB)

MAMEINFO.DAT 0.187  (2.68 MB)

MAMEINFO.DAT 0.186  (2.67 MB)

   MASH's Driver WIP

   News Submission Board
   MAME Testers
   MAME Download
   MAME Frequently Asked Questions