Mameinfo.dat v0.187
Updated - 25th July 2017

Homepage -
E-Mail -



What's New

*NEW* Mameinfo + MAMEUI-inifiles-0188GIT (21st Jul) (3.27Mb)

Mameinfo 0.187 (2.68 Mb)

MAMEUI 0.187 Category-, Version and Alltime inifiles (675 kB)

MAME NEWS from 0.37b1 - 0.187 (3.93 MB)

PCB-infos 0.153 (2.11 MB)

MAME listinfos from 0.25 to 0.170 (153 MB)

New in MAME:    
0.189GIT - New clones: Street Fighter II: The World Warrior (Quicken, bootleg) and Super Chase - Criminal Termination (1992/01/18 18:29:18 CHASE 3 VER 1.30, prototype) - New devices: cd4099, f9334, hc259, hct259 and ls259 - YM2151 sound: Added reset line handler, though not implemented properly yet. - 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) - 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. . Coin counters and/or lockouts have been added 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. . 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. . 74LS259: Make 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. . Driver and audio cleanups for asteroid.cpp, avalnche.cpp, copsnrob.cpp, mappy.cpp and playch10.cpp - Desert Gun: Replaced bad rom in clone Road Runner (Midway) with good one and added notes - Funny Strip: Separate driver state class - Fixed rom names in segae.cpp - MAME . 3rdparty . LUA engine: Debugger manager support . PLUGINS: Catch errors in cheat scripts and preliminary break/watch support (cheat\init.lua) 0.188GIT - 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), Beat the Clock (with flasher support), 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: 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 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 internal ram and SFR registers to NVRAM as they're battery backed. This includes the 'configuration' details which are actually programmable, so don't belong in the 'MACHINE_CONFIG' section but rather as part of the default NVRAM. As the exact format of the NVRAM storage is not known, and as not to break compatibility with the 'wrally' set Gaelco offer these bytes are now configured in the ROM LOADING like default NVRAM. Slightly awkward, but probably the best way. Made the SRAM (external to DS5002FP, but still powered by the same battery) also save content, some games actually use it to store scores etc. as well as the game code. Cleaned up the Touch & Go Dallas dump, and added some preconfigured internal RAM so that it actually loads the score data from the SRAM properly. Prepared all other drivers for the adding of the SRAM dumps, removing old 'never going to work' simulation code in the process. To do this a wrapper / interface device for the Gaelco Dallas + SRAM box was created. . 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. - 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 decocass sets . Splitted decocass class up so that the dongle types aren't polluting main class and emulate bootleg multigame. Changed accidental drawing order change that was made a while back and broke several games. . 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: Proposed cleanups. Splitted the massive PROM blocks up into something more modern looking (the single PROM region with all PROMs crammed into it is an old MAME thing from when only one PROM region was allowed). Made use of multipe palettes and gfxdecode structures (required using RGB32 to draw to). As the boards are quite modular this seems to make sense to me, the palette for the sprites and the sprite decode + sprite palette decode is the same across all games while the rest of the hardware changes a bit. This should allow us to step closer to converting the various boards into devices and piecing them together more logically. - 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 clone Tehkan World Cup (set 4, earlier?) dipswitch setup (different locations populated on PCB?). Hook up DIP locations etc. for all sets. - 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 & coin counter support. Rewritten text layer to tilemap. Added notes on top and promoted game with MACHINE_IS_INCOMPLETE, having many bugs that are actually from very 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 specific case scenario. - 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 . Introduced a state save menu: * This turns the current state save feature to a menu; one can still press 0-9, but you can also browse a menu when loading and saving state. * Fixed some issues requested by Vas Crabb. * Updated state menu to support arbitrary character slots. * WIP, transitioned 'entry_char' to std::string. Still need to address Joystick and FR keyboard concerns. * Reimplemented state save support with joystick buttons. * Changed the state menu to be "code driven" rather than "character driven". When the menu is displayed, it will look at the filenames, and translate them to a visual representation as per the user's locale. * Vas feedback. Fixed state save menu UI issues. . 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 . Overhaul to how MAME handles options. The slot menu will now show 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 . Improved the speed of romident by dynamically allocating some large device member arrays at device_start time instead (sound\ay8910.cpp, audio\taito_en.cpp and video\powervr2.cpp) . 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) . 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 Fedora instructions. 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 debugger 'load' length field be optional, C++-ification. . 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 (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 PinMAME games: Black Knight 2000 (PF-1) and Spirit of 76 - New PEPlus games: Player's Edge (PK1002-PC082) Jake's Jacks Bonus Poker - 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 PinMAME games: Teenage Mutant Ninja Turtles (1.04) Germany - New PEPlus games: Player's Edge Plus (PS0629) Double Hot Peppers Slots - 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, 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.185 - New games: Acchi Muite Hoi, Galaxy Games StarPak 4 (prototype), Pirate Ship (ver UAA) and Tekken Card World - New Working games: Popper and Soreike Kokology Vol. 2 - New Non-Working games: Gaelco Championship Tuning Race, GI-Classic EX (satellite terminal), GI-Classic EX (server), MegaTouch XL (Italy Version R1), MegaTouch XL 6000 (Version r07), MegaTouch XL Gold (Version r01), MegaTouch XL Super 5000 (Version R5I), Otomedius (ver GGG:J:A:A:2008041801), Police Trainer 2, Ring Riders (Software version v2.2), Shark [TTL], Super Derby II (Satellite board), Super Star (Recreativos Franco), "Unknown Poker Game", "Unknown Sega gambling game (M1 Satellite board)" and "Unknown 'VIP 2000' game" - New clones: Bionic Commandos (bootleg, set 2), Gals Panic DX (Asia), Knights of Valour / Sangoku Senki (ver. 100, Hong Kong), Mach Breakers (World, MB2), Martial Masters (ver. 103, 102, 101CN), Megatack (set 2), MegaTouch XL Gold (Version r00), MegaTouch XL 6000 (Version r02), MegaTouch XL Super 5000 (Version R5B), MegaTouch XL Super 5000 (Version R5E), Prehistoric Isle in 1930 (World, bootleg), Rastan (World, Earlier code base), The Real Ghostbusters (US 3 Players, revision ?), Sonic Blast Man (US), Street Fighter II': Champion Edition (UPL bootleg), Tokyo Cop (US, dedicated version), Tokyo Cop (US, kit version) and Up Maguila (bootleg of Donkey Kong Jr.) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Dragon Egg! (Masaya 1991) - New PinMAME games: Galaxy Play, Rocky (French speech) and U.S.A. Football (R01u) - New drivers: acchi.cpp, clpoker.cpp, giclassic.cpp, mtouchxl.cpp, otomedius.cpp, piratesh.cpp, supstarf.cpp and usbilliards.cpp - New devices: 3c505, ad7523, aga, aga_pc200, aha1542, ap2000, at_keybc, at_mb, atmel_49f4096, centronics, centronics_printer, clgd542x, comx_pl80, covox, covox_stereo, crtc_ega, cxd1095, dectalk_isa, dm_clgd5430, dms3d2kp, dp8390d, dp8473, ds1205, e05a03, e05a30, ec1481, ec1840_0002, ega, el2_3c503, et4000, ex800, fdc344, fdcmag, finalchs, gf1, gfxultra, gfxultrp, hdc, hdc_ec1841, i486dx4, i8272a, ibm_mfc, ibm_vga, input_buffer, isa_adlib, isa_com, isa_com_at, isa_gblaster, isa_gus, isa_hercules, isa_ibm_mda, isa_ibm_pgc, isa_ide, isa_lpt, isa_mpu401, isa_pds, isa8_fdc_at, isa8_fdc_ps2, isa8_fdc_smc, isa8_fdc_superio, isa8_fdc_xt, k053250ps, lx800, lx810l, mach32, mach32_8514a, mach64, mach64_8514a, mach64isa, mcd_isa, mcpx_ac97_modem, mcpx_apu, mcpx_av97_audio, mcpx_eth, mcpx_ide, mcpx_lpc, mcpx_ohci, mcpx_smbus, mcs3201, mos6581, mos8580, mpu401, msm6253, n82077aa, ne1000, ne2000, nv2a_agp, nv2a_gpu, nv2a_host, nv2a_ram, number_9_rev, output_latch, p72, pc_fdc_at, pc_fdc_superio, pc_fdc_xt, pc_lpt, pc8477a, rtl8019a, s3_764, s3virge, s3virgedx, s97269pb, s97271p, sb16, sega32_pcb_4player, sega32_pcb_analog, sega32_pcb_cd, sega32_pcb_multi_6player, sega32_pcb_multi_analog, sega32_pcb_trackball, segakbd_pcb_aburner2, side116, smc37c78, ssi2001, st11m, stereo_fx, tc8566af, tgui9680, tmp90ph44, upd72065, upd7220, upd765a, upd765b, usb_ohci, virge_vga, virgedx_r1, virgedx_vga, vs9209, wd1002a_wx1, wd11c00_17, wd2010, wd37c65c, wdxt_gen, xt_hdc and xtide - Dynamic Re-Compiling: Added case for parameter PTYPE_CODE_LABEL in UML instruction disassembly (cpu\uml.cpp) - Hyperstone CPUs: Moved memory macros out of header file to help prevent naming conflicts (cpu\e132xs\e132xs.cpp) - I386 CPU . Ignore float exceptions in debugger . Added a CPUID supporting I486DX4 - I386 CPU and M68000 CPU: Workaround for multiple inclusion until SoftFloat is updated to version 3 - I8051 / MCS-51 CPU: Fixed the indirect memory access opcodes dec,inc and xch_a. Indirect access can't touch the SFR and must point to the extra memory above 0x80. This probably fix many machines using this MCU (cpu\mcs51\mcs51ops.hxx). - I8086 CPU . Added decrypted opcodes space support . Fixed jnl flags test - TMS32025 CPU: Fixed TMS32026 status register and banking - Sound Blaster 16: Added save DSP state. Fixed incessant popping before first use. - YMF262 sound: Added save state support to YMF262 and slot pointer checks. - 8251 USART: Improved logging; restrict external command_w and mode_w access to V53 variant. - Crystal: Correction and addition (emu\drivers\xtal.h) - CD-ROM: Translate from 2336 to 2048 (Return 2048 bytes of Mode 1 data from a Mode 2 form or XA sector) - Discrete Netlist . Turn psring iterator into a real forward iterator that works with standard algorithms. There are a few changes to achieve this: * Renamed to const_iterator since it's immutable. * Typedef iterator to const_iterator for now as there's no mutable iterator. * Added default constrcutor and operator-> required by concept, const-qualify operators. * Removed operator+ and operator+= since it's not a random-access iterator (use std::next and std::advance instead). * Return reference/pointer to a proxy rather than a code_t value from opertator*/operator->. The final change is required to meet the requirement that operator* for two equivalent forward iterators return an equivalent reference. The pstring doesn't actually contain a sequence of code_t, so there's no way to return a reference to code_t directly. Instead, a reference to a proxy object aliased on the string storage is returned. The proxy is implicitly convertible to code_t. The most noticeable side effect is that auto c = *s.begin() or for (auto c : s) won't work. You need to do for (auto &c : s) or for (code_t c : s) instead. . Changed pstring to use std::string as storage container. This removes all allocation code from pstring. const_iterator is consequently now based on pstring::const_iterator. Removed pstring_buffer. This was class wasn't a good idea. Vas was right: This change did not impact runtime performance. Startup performance (string intensive) increased. Use char32_t were appropriate. Fixed pedantic Clang warnings. . pstring, pdynlib, pfmtlog refactoring: pstring: Added support for UTF16LE to pstring. Renamed size() to mem_t_size(). Renmaed len() to length(). Added size() == length(). Added empty(). Added simple compare(). pfmtlog: Simplified pfmtlog, added more C++. pdynlib: Added a dynproc type to dynlib to wrap dynamic library calls. Various: Fixed two coverty scan issue. Various Clang warnings fixed. . Netlist code refactoring: More use of C++ features. Some CRTP in pfmtlog. Demangled code for truthtables. Use more constexpr. Rewrote main loop. Use default constructors and assignment operators were applicable. Optimized 7448 and 9316. All of this has decreased startup time by approx. 25% to 30%. Complex netlists like pong or kidniki are parsed, analyzed and constructed in around 15 ms. Run performance has increased by about 5%. All in all not to bad. A game like pong uses a clock of 7 MHz (after division by 2). Thats 14 MHz clock invocations. Running at over 200%, 28MHz. On a 3.9 GHz Machine about 140 cycles/clock change. . Refactored 74715 to one device layout. Removed subdevice. . Parametrized device activation in truthtables and minor optimization (devices\nlid_truthtable.h) - ISA: Provide proper unitmask for address spaces of any data width (bus\isa\isa.h) - Konami Custom: Fixed palette-related regressions in Konami GX games (video\k053246_k053247_k055673.cpp) - Midway Custom: Block register updates until unlocked (machine\midwayic.cpp) - Sega Custom . segajw.cpp: Use 315-5296 for I/O . segam1.cpp: Added 315-5296 and some placeholder RAM areas . segas24.cpp and segaybd.cpp: Read inputs through 315-5296 . Sega Rally Championship: Hook up 315-5296 I/O on drive board (does nothing yet) - Sony Custom: Added CXD1095 CMOS I/O Port Expander - V9938 video: New device interface for palettes. Created device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface. Updated screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices. Modified v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case. A little cleanup V9938. - Voodoo GFX: Changed multi base address selection to fix Funky Ball textures (video\voodoo.cpp). Reverted texture base address calculation to fix seattle driver. - VS9209 I/O: Added VS9209 I/O device for aerofgt.cpp, gstriker.cpp, suprslam.cpp and taotaido.cpp - alpha68k.cpp: Added missing save_item's because otherwise the sound was missing with autosave enabled (ID 06532) - atlantis.cpp and midzeus.cpp . Fixed waveram0 write. Changed conversion to screen coordinates. Added initial blending (video\zeus2.cpp). . Added texture lookup for RGB555 direct color type (video\zeus2.cpp) . Added UV scaling (video\zeus2.cpp) . Increase input FIFO empty interrupt time and start to use address for quad selection (video\zeus2.cpp) . Working on depth buffering. Don't include texture information on normal builds to reduce exe size (video\zeus2.h). . Handle buffer wrapping during frame clear. Select quad size based on microcode source and add code for trimesh rendering (video\zeus2.cpp). . Fixed fast fill routine (video\zeus2.cpp) . Added trackball and keyboard to 'The Grid'. Driver reorg and cleanup. . Updated thegrid and mwskins dips. Block register updates until unlocked (machine\midwayic.cpp). - chihiro.cpp . Added high level simulation of AN2131SC. Let's pretend there is a drive board connected, so OutRun 2 can run with USB enabled and no patches. . Make 'Chihiro Firmware Update For Compact Flash Box (4.01)' start too (video\xbox_nv2a.cpp) . Minor driver update. USB is always enabled now and removed unused parts. . Fixed jamdis debug command . First step in removing the legacy PCI system in favor of the new one (machine\xbox.cpp) - chihiro.cpp, naomi.cpp and triforce.cpp . Converted avalon20, cleoftp, ghostsqu, gundamos, hotd3, initdv3jb, lupinsho, mj2, mj3d, monkeyba, outr2st, radirgyo, scg06nt, tfupdate, wangmid2 and wangmid2j bad CHD v4 to good v5, track1 and track2 length was restored based on known now data patterns. . Added TMP90PH44 device type for Sega 837-13551 I/O Board . Removed identical second halves of overdumped MCU PROMs (machine\jvs13551.cpp) - coolpool.cpp: Fixed TMS32026 status register and banking (cpu\tms32025\tms32025.cpp). This fixed 9-Ball Shootout and Cool Pool can't coin up (ID 06516). - ddealer.cpp: Fixed 'Gun Card' logic. Minor port fix. - decocass.cpp: Fixed missile colors for Astro Fantasia and Highway Chase (ID 03901) - galgames.cpp and tmaster.cpp . Improved blit coordinates (video\cesblit.cpp), fixes some missing graphics in e.g. Galaxy Games StarPak 4. . Fixed OKI6295 CPU1 clock speed in galgames.cpp - hng64.cpp: Moved TLCS-870 macros into source file for now to avoid potential naming conflicts - ksys573.cpp: Fixed 'Guitar Freaks 6th Mix' from booting up due to an incorrect flash card memory size. 32MB works for Guitar Freaks 5th Mix as well. - lindbergh.cpp: Added placeholder for OHCI device (machine\pci-usb.cpp) - megaplay.cpp: Use CXD1095 device for BIOS I/O - megatech.cpp: Rewrote CXD1095 as a device - model1/2/3.cpp: Converted Sega Model 1 Sound Board and Z80-based Digital Sound Board to use proper UART-based serial interfaces. Fixed Sega sound data serial rate. - model2.cpp . Rail Chase 2: Added I/O CPU and expander. There seems to have been an unrelated regression since 0.181 in Rail Chase 2, which now only displays a black screen. Load user1 ROMs closer together to avert read from undefined data at 0x2600000 that drives CPU off rails in debug build. This might not be the correct loading method, but it's at least similar to vf2 and bel (which, like rchase2, have 2MB rather than 4MB ROMs). It's a non-working driver in any case. . Sega Rally Championship: Hook up 315-5296 I/O on drive board (does nothing yet). Added OKI MSM6253 device. - namcofl.cpp: Killed anonymous timers, moved to configured banking and added save state support. Also moved some remaining functions inside the class. - namconb1.cpp . Corrected coin inputs and added in Coin3 & Coin4 as needed in outfxies and 'nbsports' games . Corrected coin inputs, when set to individual coins slots they were reversed. - naomi.cpp: Redumped clone 'Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)' - neodriv.hxx: Fixed out of bounds issues in NeoGeo memory access. The NeoGeo driver exposes a number of different memory regions as vectors. Accessing the pointers was done through a '&vector[0]' pattern. This caused problems when the region was size zero; I changed the code to return null pointers in these scenarios. This was reported by Robbbert in response to recent regressions (the command line was 'mame aes bjourney'), but it seems to be present in MAME 0.184. - nss.cpp, sfcbox.cpp and snesb.cpp: Removed a few legacy type macros and eliminated uint type properly (cpu\g65816\g65816cm.h) - peplus.cpp . Documentation updates based on printed IGT materials . Patriot Poker has multiple Bonus levels - sangho.cpp: Fixed clocks based on actual XTAL. Picture of PCB clearly shows a 21.4772MHz, PCB has a Z80B so clock is 3.58 based on XTAL like the YM2413. - segas32.cpp . Input modernization: Use I8255 or MSM6253 devices for most non-JAMMA inputs. Separate service and test inputs in Multi-32 and twin-unit sets. . Four coins are recognized in Air Rescue, not just two. Use MB8421 device for V25 communications in Golden Axe 2. Assign keys in OutRunners to some 2P inputs. . Corrected Kokoroji 2 inputs. Added SONY CXD1095 CMOS I/O Port Expander. Promoted Kokoroji 2 to working. Find switch to disable CD & printer; game presumably works now, though rather imperfectly. Game name changed to agree with title screen. Added a whole bunch of lamps. . Use Sega 315-5296 device for primary I/O. Restored Coin 2 inputs to f1lap, radm, radr and slipstrm. . Identified onboard service inputs and restore them to practically all games . Disabled some (probably strictly unnecessary) address mirroring due to memory init thrashing when combined with DEVREADWRITE8(0x00ff) . Removed device clocks for 315-5296 (not used by the emulation) where not verified - segaxbd.cpp: Rewrote CXD1095 as a device. Watchdog type is MB3773. - segaybd.cpp: Added OKI MSM6253 device. Watchdog type is MB3773. Too many watchdog resets; schematics may be wrong. Correct I/O clock; misc. notes. - seibuspi.c and zn.c: When built with MSVC, clear() resets m_buffer size to 0 and m_buffer[0] throws an exception (machine\7200fifo.cpp). - stv.cpp: Workaround for finlarch/sasissu/magzun ODD bit regression (video\stvvdp2.cpp) - tatsumi.cpp: Read inputs through CXD1095 device (cyclwarr and bigfight) - vicdual.cpp: Added 97269-P-B and 97271-P daughterboards for N-Sub. Fixed missing explosion sound. - viper.cpp . Input cleanups. Identified dipswitch position. Inverted flip dip. Red pen these placeholder dumps. . Fixed 'ParaParaParadise 2nd Mix' dipswitch error . Tsurugi "Foot Pedal" input . Bypass serial check for Police 911 - vp101.cpp: Improved support for reduced-cost VP050 version - BeatHead: Removed speedup hack - Bingo Circus: Added 8x UARTs - Blood Bros., Toki and others: Added dump of bipolar PROM. Documented undumped PROMs for cupsoc, dbldynj, dynduke, raiden, skysmash and totmejan. - Boxer (prototype): Added save state support - Chameleon 24: Don't crash on soft reset - China Gate: Explicitly specify 8-way joysticks for consistency - Disco Boy: Kill trampoline, removed unneeded prefixes and use bankdev for the first ram bank. - E Jong High School: Correct game name; document adapter layout. - Funky Ball: hanged multi base address selection to fix Funky Ball textures (video\voodoo.cpp). Changed MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH from 64 -> 32 - Hot Rod: Read pedals through MSM6253 - Janken Man Kattara Ageru: Added DAC type - Jumping Pop: Fixed 'BG Modesty' dipswitch in Jumping Pop. The nude/bikini pics are displayed after a level when set; more modesty means more clothes and vice versa. - Knights of Valour 3 HD: Redumped game - Mahjong CLUB 90's: Removed DSW B from the driver as it does not exist on the real PCB (ID 06526) - Mahjong Sisters: Substitute timer_set with timer_alloc(timer) and timer->adjust() - Midnight Landing: TMS32025 memory map fix - New York! New York!: Documented that Taito's T.T. New York New York ROMs match the Sigma set. - PinMAME: Adjust Meg-Aaton clocks to conform with schematics - Popper: Fixed memory map and finish gfx rendering. Game is fully working again. - Sprint 4 and Ultra Tank: Killed anonymous timers, removed unneeded prefixes and added save state support. - Sprint 8: Added save state support - Volfied: Removed prefixes and used timer_alloc instead of timer_set - Wolf Pack: Added save state support, removed unneeded prefixes and moved from timer_set to timer_alloc. - VLC Nevada: Make it to show something - Input port . albazc.cpp: Use standard inputs consistent with other hanafuda games. Hanafuda games usually have a mahjong panel for input. Removed hard coded IPT_SERVICE assignments. Assign "Data Clear" to IPT_MEMORY_RESET. Changed "Medal In" & "Pay Out" to standard gamble service buttons (Previously standard service buttons). Changed Lockout "Key" to PORT_TOGGLE type. Payout operation has been clarified and noted at start of driver. Correct "Payout" button to use "IPT_GAMBLE_PAYOUT". Added Hookup hopper to to do list. Added hopper activity addresses to notes. Set IPT_SERVICE & Double up buttons as standard assignments. Set "Ext In 1" & "Ext In 2" as IPT_OTHER. . aleck64.cpp: Correct Service/Test Button assignments. "Service Mode" which is assigned to IPT_SERVICE is not located in aleck64.cpp - No changes. "Service Button" is assigned to IPT_SERVICE1 (Hard coded keycode removed & default used). "Test Button" is assigned to IPT_SERVICE2 (Test Button is not displayed in Machine input). . amaticmg.cpp: Removed hard coded key assignment and use default mapping . ampoker2.cpp: Make various key assignments consistant. Cleanup different assignments for the same buttons across supported games while still keeping true to the Game Notes / Operation instructions. 1. Make "Operator Key" consistant (Use IPT_GAMBLE_SERVICE), 2. Make "Supervisor Key" consistant (Use IPT_SERVICE2), 3. Make "Hopper 1" consistant (Use IPT_OTHER, KEYCODE_Y), 4. Make "Hopper Out" consistant (Use IPT_OTHER, KEYCODE_G), 5. Make "Hopper Low" consistant (Use IPT_OTHER, KEYCODE_H), 6. Make "Return Line" consistant (Use IPT_OTHER, KEYCODE_J), 7. Make "Coin Refill" consistant (Use IPT_OTHER, KEYCODE_R), 8. Make "Payout" consistant (Use IPT_GAMBLE_PAYOUT), 9. Make "TILT" consistant (Use IPT_TILT) and 10. Make "Double" consistant (Use IPT_GAMBLE_D_UP). . realbrk.cpp: Removed service button hard coded keycode assignment. Removed hard coded key assignment and use default mapping. - Dipswitch fixes in ddealer.cpp, nbmj8891.cpp, viper.cpp - Fixed rom names in namconb1.cpp, shangha3.cpp and segas32.cpp - Description changes of Bionic Commandos (bootleg, set 1), Boxing Mania: Ashita no Joe (ver JAA), Knights of Valour 3 HD (M-105CN 13-07-04 18:54:01), GTI Club: Corso Italiano (ver JAB), GTI Club: Corso Italiano (ver EAA), Mach Breakers - Numan Athletics 2 (Japan, MB1), Megatack (set 1), Merit Joker Poker (9131-09), Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 2.001) (World), Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.001) (World), Soreike Kokology Vol. 2 - Kokoro no Tanteikyoku and U.S.A. Football (R06u) - Renamed (machbrkr) to (machbrkrj), (sbm) to (sbmj) and (tokyocop) to (tokyocopi) - MAME . 3rdparty: BGFX, BGFX shaders, GENie and BX. Assume LLVM libc++ if __llvm__ is defined but __GLIBC__ is undefined (bx\platform.h). Fixed GENie linking order. . VIDEO RENDERING SYSTEM . Guard against assert failure on partial updates starting from incomplete first line (emu\screen.cpp) . Moved "optional" basemem and extmem arrays out of tilemap_t. This is intended as a first step towards divorcing tilemap_t and tilemap_device. . Reverted entries(), indirect_entries(), shadows_enabled() and hilights_enabled() to return the configuration parameters instead of accessing the live state. The thought behind the implementation change was that palette devices could potentially determine the number of entries from the sizes of devfind objects. The regressions caused by this have been worked around, but it was probably a bad idea in the first place. Zero-entry palettes are no longer valid. The code that tried to support them was basically left over from when every running machine had a single global palette. Reverted entries(), indirect_entries(), shadows_enabled() and hilights_enabled() to return the configuration parameters instead of accessing the live state. The thought behind the implementation change was that palette devices could potentially determine the number of entries from the sizes of devfind objects. The regressions caused by this have been worked around, but it was probably a bad idea in the first place. Zero-entry palettes are no longer valid. The code that tried to support them was basically left over from when every running machine had a single global palette. Disallow a negative number of palette entries by changing some types (emu\dipalette.cpp) . BGFX: Apply environment variable substitution to bgfx_path (render\bgfx\chainmanager.cpp, effectmanager.cpp and shadermanager.cpp) . DEVICE . Renamed the write-only -printer image instance type to -printout. The former option name conflicts with RS232 printer ports in several drivers (emu\diimage.cpp). . New device interface for palettes. Created device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface. Updated screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices. Modified v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case. Enforce dependencies in various Konami, Sega & Seta GFX devices. Disable palette uniqueness check in divideo. . Made a number of device_image_interface members private. This also fixes a number of get_default_card_software() implementations that were accessing m_file incorrectly. Removed duplicate prototype. . Fixed an issue where reset_on_load images would not properly persist across emulation sessions (emu\image.cpp) . Workaround for issue where the cannonical instance_name for a device was lost (emu\image.cpp). This is a hack; details are in the source code. I felt that it was too late in the 0.185 release cycle to do anything intrusive. I intend to fix this "for real" when image/slot option morphing is encapsulated within emu_options. . UI . Input map fixes: Fixed a longstanding bug that prevented binding several ORed buttons to any input belonging to a non-root device. Fixed a visual glitch when assigning inputs to analog sequences. Fixed buttons cannot be mapped to more than one key using 'or' logic using internal UI in all drivers with slot-based controllers (ID 06519). . Fixed selecting a new ROM file through the internal UI for consoles via external path ((MESS) a2600, a7800, coleco, genesis, nes and snes) (ID 06531). Fixed UI 'Switch Item Ordering' corrupts software list (ID 06402). . Fixed issues specifying image/slot options fron INI files. I added hooks so that options specified at the command line can also be responded to when parsed from INI files, but in the long run much of the logic that is currently in mame_options should go into emu_options so that when an option is specified, all of the wacko logic around slot/image specification "just works" because it is encapsulated within emu_options. . More options refactoring: Stabilization options function for 0.185 release . Fixed a regression in the mandatory image check. As a consequence of recent changes, we were not properly blocking the emulation from starting when a must_be_loaded() image had an unspecified image (ui\info.cpp and ui.cpp). . Workaround for scenarios where both the command line and an INI specify an image option. This is a hack; see commentary within the code. I intend to fix this "for real" when emu_options become more self contained (emu\emuopts.cpp). . MEMORY SYSTEM: Removed direct_update from the core (emu\emumem.cpp) . Fixed issue that could cause bogus arguments to be reported incorrectly (util\options.cpp). Examples: 'mame -whatever nes' would previously be reported as "Unrecognized argument: nes". . SOFTWARE LIST . Fixed a bug that caused "Switch Item Ordering" in the software list menu to dupe entries (ID 06402) . Changed a lookup within the softlist code to use std::find_if() . Changes to make get_default_card_software() less stupid. The goals with this change is to make get_default_card_software() a bit more standalone by making it a const method that does not mutate the state of the device_image_interface. This is done by passing in a small structure that encapsulates the minimum of information that get_default_card_software() needs. This also eliminates the need for device_image_interface::open_image_file() . Introduced an 'util::arbitrary_clock' template class, to represent a clock that "knows" when the epoch starts. Converted the NTFS filetime code and Mac datetime code to use util::arbitrary_clock. This is in preparation for a bigger change to Imgtool where I eliminate usage of time_t. . Validity . Changed the validity checks to have its own emu_options. This comes from a regression reported by Tafoid whereby the following command line "mame coco wildcat" would report the following error, which was not really fatal because it happened within validation: Driver t4426 (file coco12.cpp): 1 errors, 0 warnings Errors: Fatal error Unknown slot option 'pak' in slot 'ext'. My changes to option processing changed emu_options to put image and slot options in their own arrays, and I expect those image/slot options to be pertinent to the active driver. However, driver validation was passing the emu_options associated with the main emulation to validation specific maching_config for other drivers. This changes validate_one() to always use a fresh emu_options with each individual validation. . Changed validity_checker to keep a fresh emu_options for validation purposes. This seems to solve the performance problems introduced by PR#2221 while keeping with that PR's goals of not using the "runtime" emu_options for purposes of validation. . Workaround for sibling disk image loading issue (emu\romload.cpp) - MAC OS X: Fixed OS X tools build when MAME_DIR includes spaces (src\tools.lua) - Compiling . Fixed a pedantic MSVC warning in emu\dipalette.h . Made a number of methods be const correct and static where appropriate. Also changed a few methods to return 'bool' when appropriate. . Removed timer_set in artmagic.cpp, blstroid.cpp, cave.cpp, galastrm.cpp, galaxian.cpp, gpworld.cpp, groundfx.cpp, gunpey.cpp, hyprduel.cpp, midtunit.cpp, overdriv.cpp, segas32.cpp, taito_f3.cpp, toaplan2.cpp, triplhnt.cpp, tubep.cpp and victory.cpp. . More timer_alloc changes in astinvad.cpp, boxer.cpp and destroyr.cpp. . Removed anonymous timers in astrocde.cpp, asuka.cpp, dcheese.cpp, flyball.cpp, gameplan.cpp, gaplus.cpp, gcpinbal.cpp, gunbustr.cpp, hyhoo.cpp, kinst.cpp, midvunit.cpp, midzeus.cpp, nightgal.cpp, opwolf.cpp, othunder.cpp, pastelg.cpp, policetr.cpp, rabbit.cpp, rollerg.cpp, segaorun.cpp, sprint8.cpp, stfight.cpp, tehkanwc.cpp, thunderx.cpp and trucocl.cpp - Debugger . More robust memory access operator parsing (debug\express.cpp) . Fixed writes to decrypted opcode memory (debug\debugcpu.cpp). Fixes problem in the debugger and the cheat engine as currently the writes to opcode memory are not handled correctly, so separated EXPSPACE_RAMWRITE and EXPSPACE_OPCODE case statements to allow opcode writes to access the correct memory. Example: In flicky this will now disable cat collisions with the main sprite: maincpu.ob@3ac6=c3. This is the simplest way of updating this, EXPSPACE_OPCODE is now a copy of EXPSPACE_RAMWRITE except it uses AS_DECRYPTED_OPCODES instead of AS_PROGRAM. This method means I've got a lot of work updating a lot of cheat file warnings ...but this is the correct way of doing this. . Make debugger 'dasm' command able to traverse virtual spaces with unmapped holes. Previously, 'dasm' would enter an infinite loop if it hit an unmapped pc, continuing to grow the output file until the program was killed (debug\debugcmd.cpp). 0.184 - New games: Shiny Golds and 'Soreike! Anpanman Popcorn Factory (Rev B)' - New Non-Working games: Zoofari - New clones: 2 On 2 Open Ice Challenge (rev 1.2A), Dynablaster / Bomber Man (bootleg, set 3), Flashgal (set 1, Kyugo logo), Gals Panic (MCU Protected, set 2), Griffon (Olympia bootleg of Phoenix), Karnov (Japan, bootleg with NEC D8748HD), NBA Play By Play (ver AAB), OutRun 2 Special Tours (GDX-0014), Penguin Brothers (Japan, bootleg), Phoenix (IDI bootleg), Pot O' Gold (U.S. Games, v580F), Radical Radial (Japan), Raiden II (Germany), San Francisco Rush (boot rom L 1.06A), San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 6 1997 / MAIN Aug 5 1997), San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 19 1997 / MAIN Aug 19 1997), Shanghai III (US, prototype), Skins Game Tournament Edition, Street Fighter II: The World Warrior (World 910129), Super Crowns Golf (World), Time Traveler (set 2) and Wangan Midnight Maximum Tune 2 (Export) (GDX-0016) - New AGEMAME games: Alchemist (01J02046, Venezuela), Bachelorette Party (BHG1248, US), Boot Scootin' (GHG1008-03, US), Cash Cat (0100557V, NSW/ACT), Cash Cat (0100676V, NSW/ACT), Desert Bloom (0300111V, NSW/ACT), Dolphin Treasure - Cash Express (AHG1519, US), Dolphin Treasure - Cash Express (AHG1607, US), Dream Weaver (0200586V, NSW/ACT), Fast Fortune (0100651V, NSW/ACT), Jumpin' Joey (0100383V, NSW/ACT), King Galah (0100536V, NSW/ACT), Loco Loot (0100473V, NSW/ACT), Lucky Clover (0300109V, NSW/ACT), Magic Mask (AHG1549, US), Magic Touch (0300455V, NSW/ACT), Mammoth Money (0100425V, NSW/ACT), Mine, Mine, Mine (0400115V, NSW/ACT), Money Mouse (0300469V, NSW/ACT), Mountain Money (0100289V, NSW/ACT), Orchid Mist (0100849V, NSW/ACT), Oscar (0100348V, NSW/ACT), Penguin Pays - Penguin Pucks (EHG1257, US), Penguin Pays (0100113V, NSW/ACT), Penguin Pirate (0100674V, NSW/ACT), Penguin Pirate (0200578V, NSW/ACT), Queen of the Nile - Cash Express (AHG1525, US), Queen of the Nile - Cash Express (AHG1609, US), Queen of the Nile (0101139V, NSW/ACT), Queen of the Nile (0101707V, Brazil), Queen of the Nile (04J00784, Venezuela), Reel Power (0100400V, NSW/ACT), Rushin Rooster (0100534V, NSW/ACT), Silver Wolf (0100673V, NSW/ACT), Snow Cat (0100405V, NSW/ACT), Super Bucks III (0100711V, NSW/ACT), Sweethearts II (0200465V, NSW/ACT), Thor (0200319V, NSW/ACT), Thunder Heart (0200333V, NSW/ACT), Thunder Heart (0200334V, NSW/ACT), Tropical Delight (0100269V, NSW/ACT), Unicorn Dreaming (0100813V, NSW/ACT), Wicked Winnings (0100553V, NSW/ACT), Wild Angels (0100337V, NSW/ACT) and Yukon Gold (03J00191, NSW/ACT) - New PinMAME games: Arizona, Cowboy Eight Ball, Disco Dancing, Force, Harley Davidson (L-2), Haunted Hotel, Hustler, King Kong, Space Ship (Pinball), Time Machine (LTD, 2 players), Time Machine (LTD, 4 players), Trick Shooter, Viking King, White Force and Zephy (alternate set) - New drivers: stargame.cpp - New devices: ad557, ie15_cpu, ie15_device, ie15_keyboard, ie15_terminal, sega32_pcb_upd7725 and tms1025 - New Cheat.dat: - ARM7 CPU: Repair broken ARM (arm7\arm7ops.cpp) - I386 CPU . Fixed enum range check (cpu\i386\i386ops.hxx and pentops.hxx) . Save additional CPU flags (cpu\i386\i386.cpp) - Dynamic Re-Compiling . Fixed MAME crashed running scud with -bench 90 (cpu\drccache.cpp) (ID 06492) . Fixed regression on OS X - MIPS CPUs . Retry fixing FPU register aliasing (mips\mips3.cpp and mips3drc.cpp) . Make sure branch delay slot instruction is not virtual instruction before trying to generate code to add it to the block checksum (mips\mips3drc.cpp). . Initial support for VR5500 and TX4925 CPUs - N2A03 CPU: Refactored clock definitions (includes other drivers using the N2A03) (cpu\m6502\n2a03.h) - T11 CPU . Emulated MFPT instruction . MOV, CLR and SXT read memory before writing to it (Page B-8 of User's Manual) - TMS32031 CPU: Removed direct update handler - Z180 CPU . Correct DMA MMOD bit . Count of 0 means 0x10000, as with other DMA controllers. . Fixed scheduling so burst mode DMA is always serviced immediately with no CPU ops interleaved. - AY-3-8910 sound . Added a write handler for the case of bc1=a0 and bc2=a1. Added guide to bus control signals. . Overrided device method to support changing clock frequencies in the AY8910. Added virtual keyword to declaration. - TMS5110 sound: Updated some comments - uPD7725 sound . Fixed disassembly . Added preliminary IRQ support. Handle the LSB-first load from SI properly, for when SI gets hooked up in the future. . Added siack and soack registers and their requisite jumps, not used yet. Fixed missing si register and flags registers savestate registration. . Fixed an off-by-one error when loading uPD96050 roms for SNES games (bus\snes\upd.cpp) . Fixed LSB-first bit ordering for SO reg, not used yet. Use accessors to access the SR p0 and p1 bits, rather than masking. . Corrected which registers are actually reset by /RESET and fixed/updated IRQ system, should behave more properly now. - 6821 PIA: Incremental C++-ification of 6821pia.cpp.1: Changed some 'int' ==> 'bool' where appropriate. 2. Changed the various control byte macros to static functions [Nathan Woods]. - Discrete Netlist . Slightly improved event timing if state changes. Also introduce a push_force call to reschedule already pending events if the state will not change. . Clean up net_t interface and increase readability . Improved readability. Added more C++11 noexcept and swap semantics. Also fixed Clang-5 warnings and VS2015 compile. . Added a heap priority queue to the netlist source. This is currently not used since performance drops by about 40%. The typical use case would be circuits a lot more complex than those we currently emulate where the 2*log(n) advantage really applies. . Fixed netlist stats collection. Code refactoring: Small improvement for 7493. Converted 9316 from subdevice to delegate. Converted 74107 from subdevice style to delegate. Also refactored inconsistencies in other parts of the code. . Netlist refactoring: Align timed_queue closer to std::priority_queue. Use uint8_t in extended clock for better memory usage. Minor changes to nl_breakout.cpp. . Fixed some Cppcheck and Clang warnings. Fixed -Winconsistent-missing-destructor-override warnings. Made some constructors of template classes and classes with virtual .. = 0 methods protected. . Fixed openmp compile (solver\nld_solver.cpp) - Floppy . Added tag command names in debug messages (machine\wd_fdc.cpp) . Inform disk image of step operation so it can cache information (floppy_stp_w) . Added missing operator* to multiply an attotime by a double (machine\fdc_pll.cpp) - MC6845 CRT: Generate blink state in a way more likely to represent hardware and removed kludged-in MC6845 accessor. - Nintendo Custom: Improved PAL clone timings (video\ppu2c0x.cpp) - PCI-IDE controller: Perform IDE reset during PCI device reset (machine\pci-ide.cpp) - ROC10937 video: Fixed CID: 138793 "Logically dead code" - SAA5050 video: Fixed romsize - VGA video: Save expanded attribute registers (video\pc_vga.cpp). Updated CRTC usage comments. Added palette configuration to save state. Fixed broken port reads on state load. VGA card now saves vga.dac to the state, as the MAME palette is clobbered periodically with data from here. Changed the type of vga.dac.colour to a flat uint8_t array seeing as save_item isn't struct-friendly. Fixes Liero. Saved more VGA flags, including vga.miscellaneous_output, which despite the vague name is needed for reading from the ports. - Z80 SIO . Added I8274 type macros and derived class + logging . Changed (MESS) isbc.cpp to use z80sio.cpp i8274 device driver instead of z80dart.cpp . Variant support for i8274/upd7201 and a refactored interrupt support and cleanup Z80-SIO - aerofgt.cpp, f1gp.cpp, fromance.cpp, ojankohs.cpp, pipedrm.cpp, rpunch.cpp, tail2nos.cpp, welltris.cpp: Added skeleton device for Video System C7-01 GGA - ambush.cpp: Driver state cleanups - amusco.cpp: Generate blink state in a way more likely to represent hardware and removed kludged-in MC6845 accessor - aleck64.cpp . Added short delay between RDP full sync and DP interrupt (machine\n64.cpp and video\n64.cpp). Since the RDP is not currently scheduled for its own timeslices, this will allow the RSP interrupt from graphics tasks to arrive at the main CPU first. In some instances, the RSP timeslice would end after the RDP had been sent the full sync command, but before the RSP could finish its task. No issues were manifest if both RSP and RDP interrupts arrive at the same time, but it is still expected that the RSP interrupt should arrive first. . Let debugger disassembly windows track RSP PC . Flush RSP drc cache when SP DMA changes IMEM (machine\n64.cpp) . Make element selection in vector load/store DRC C functions consistent with other implementations (cpu\rsp\rspcp2d.cpp). . Fixed a minor issue with RDP disassembly listing for Load Block (video\n64.cpp). - atlantis.cpp and midzeus.cpp: Better texture lookup (video\zeus2.cpp) - atlantis.cpp, midzeus.cpp, seattle.cpp and vegas.cpp: Added serial input (machine\midwayic.cpp) - bagman.cpp: Use 4-way joysticks in all games except Squash (Itisa) - blockade.cpp: Rewrote driver - chihiro.cpp . Redumped Ollie King (GDX-0007) . Some information on USB commands for AN2131SC. AN2131SC is used as a USB to serial converter, one of the 2 serial ports can be setup as MIDI. - ddenlovr.cpp and dynax.cpp: Device type corrections - deco32.cpp: Comment out popmessage - dkong.cpp: Major latch8 and discrete device cleanup: Eliminate the AM_LATCH8_XXX address map macros. The normal DEVREAD/DEVWRITE ought to be good enough. Eliminate the "offset" specifications from latch8_device. This was used mostly to funnel outputs to discrete_device, which now has a templated write_line handler. (Inputs can use MCFG_DEVCB_RSHIFT instead.). Organize latch8_device's callbacks as arrays of devcb_readline/devcb_writeline, helping simplifying code greatly. Change latch8_device::bit[0-7]_(q_)?r to be proper line read handlers. This requires two extra READ8 handlers in audio/dkong.cpp, but memory-mapping for the MCS-48 T0 and T1 lines is totally artificial anyway. Comment out an assert that now tends to fail due to buggy AM_MIRROR behavior. - docastle.cpp: Read inputs through TMS1025. Added input callbacks and read handler to TMS1024/TMS1025. Clean up code a little. Added MS pin to TMS1024, added write to port 0. - dooyong.cpp: Fixed regression (spriteram8 -> spriteram16) - galaxian.cpp . Cleaned up clock definitions (KONAMI_SOUND_CLOCK -> 14.31818 MHz) . Moved clone Lady Bug (bootleg on Galaxian hardware) from galaxold.cpp to galaxian.cpp drivers - homedata.cpp . Various updates. Changed 4-way joysticks to correct 8-way to Reikai Doushi and Battlecry according to manual. Added button descriptions. . Added DSW layouts to Reikai Doushi and Battlecry & a note about their numbering according to the manual. - marineb.cpp: Corrected the main crystal to 12MHz as seen in PCB photos - merit.cpp: PSG type is AY-3-8912 - model1.cpp . Added documentation for differing Model 1 coprocessor chips . Added roms 315-5571.bin and 315-5572.bin to the Model 1 CPU Board . Added dumped internal TGP rom 315-5573.bin to Virtua Racing and clone Virtua Formula - model1.cpp and model2.cpp: Massive MB86233 disassembler overhaul - naomi.cpp . Dumped and documented 837-14438 hopper controller board, used in Kick '4' Cash and few other SWP games. Added to prev FPGA config PROM dump as well. . Redumped Noukone Puzzle Takoron (Japan) (GDL-0042) and clone Virtua Fighter 4 (Rev B) (GDS-0012B) . Dumped 'Ferrari F355 Challenge (deluxe, no link)' Export and Japan BIOS . Dumped 'House of the Dead 2' Japan BIOS . Measured NAOMI's MIE MCU speed - peplus.cpp: Fixed CID: 138606 "Logical vs. bitwise operator" - polyplay.cpp: Hook up the SIO - raiden2.cpp: Added tile_scroll_w safety fence - rpunch.cpp: Fixed a bug where AM_SELECT applied to narrow-width handlers with a submaximal number of subunits would select the wrong address bits or none at all (This allows rpunch_gga_w to be WRITE8 as intended). Added more stringent appropriateness checking of unit masks for narrow-width handlers. - seicross.cpp: Added XTAL - sg1000a.cpp: PSG is SN76489AN, just like the console. - vp101.cpp: Added framebuffer, some inputs, ATA, NVRAM and protection cheat. Implemented ATA DMA. - wildpkr.cpp: Work out several device hookups. The use of a DS2401 "ID" in tabpkr is inferred from the code. The data supplied for it is totally artificial and the chip may have been stripped from the PCB pictured on Much still needs to be learned about the hardware of these games. The emulation doesn't display even error codes yet. - AGEMAME: New aristmk5.cpp sets, layouts and documentation - Air Rescue: Added Air Rescue's uPD7725 DSP and load its roms. Disabled for now, since the uPD7725 CPU core will need some features added before this can work. - Alpha One: Adjusted screen size - Area 51: Site 4: Documented an earlier BIOS version. Doesn't seem compatible with the HDs available. - Assault, Bouncing Balls, Dangerous Dungeons, Dark Tower, Kid no Hore Hore Daisakusen, Klax, Mad Donna, Pushman, Super Duck, Super Toffy, Toffy and Trog: Use 4-way joysticks. No manual or flyer showing controls for Super Duck is available, but gameplay does not seem to accept diagonal input at any time. Dangerous Dungeons, despite being a conversion of Double Dragon, has a manual that notes that 4-way joysticks should be used. It seems reasonable to assume that the other non-Technos games should do the same, with the exception of Thunder Strike. - Code One Dispatch: Added timekeeper dump for clone (ver B) - Continental Circus: Fixed subtle color pen bug in Mexico GP stage - Fever Soccer: Added coin hopper output (prize hopper doesn't quite work) - Got-cha Mini Game Festival: Hooked up lamp outputs and added clickable artwork - Hanaroku: Added NVRAM and hopper - Hyperdrive: Fixed FPU register aliasing (mips\mips3.cpp and mips3drc.cpp). This fixed 3D graphic objects in Hyperdrive (ID 06512). - Rushing Heroes: Redumped sound rom - Last Bank: Added coin counters - Mario Kart Arcade GP and Mario Kart Arcade GP 2: Added security PIC dumps and fixed rom load - N-Sub: Simulate the gradient in N-Sub. Figured out how the starfield and gradient get enabled on VIC Dual hardware. Don't exactly know how they work yet, so I added a simulation of the gradient for N-Sub. - Pasha Pasha 2: Hook up lamp outputs and clickable artwork - Phoenix . Dumped/redumped the PROM for some of the bootlegs. Also started documenting the differences. . Added MACHINE_IMPERFECT_SOUND to the games known to substitute the melody generator with a piggyback PCB. There might be more. - PinMAME: Added program ROMs and corrected title for Volley. Redumped Columbia. - Poizone: Fixed 'Setting 2' dipswitch - Popper . Get some meat back onto the bones: Decode color PROMs. Full memory map for main and audio CPU derived from schematics. Added both dipswitches. Hook up interrupt generation logic. Decode character and sprite layout and draw character tilemap. Raw screen parameters (to be verified). Hook up inputs, renamed audio cpu to sub cpu and hook up flip screen. . Added a AY-3-8910 write handler for the case of bc1=a0 and bc2=a1. Fixed audio hookup in Popper (BC1 is hooked up to A0 on the host and BC2 is hooked up to A1). - Rock Climber: Fixed MACHINE_CONFIG (rockclim base off mooncrst) - Sea Bass Fishing: Fixed game shows only black screen (video\stvvdp2.cpp) (ID 04454). Note: Sea Bass explicitly wants a monitor mode bit to be 0 when screen is disabled from bios to game transition. - Space Warp: Added Hunchback (Galaxian hardware) color prom - Teenage Mutant Ninja Turtles - Turtles in Time: Fixed missing 3Player & 4P inputs in clone (4 Players ver EAA) - Time Attacker: Update notes - Tsukande Toru Chicchi: Added clock XTAL definition for the Z80 CPU, divisor is guessed. - Trog: Use different inputs for clone Trog (prototype, rev 4.00 07/27/90) - Ultimate Mortal Kombat 3: Redumped UMK3 U2-U5 sound ROMs, all match current dumps. Removed BAD_DUMP tag and raised MACHINE_IMPERFECT_SOUND for umk3 sets, see MT00751. - Input port: Some reports of garbage in console with DInput controllers. Changed to snprintf with assert since apparently snprintf fixes the reported problem. - Dipswitch fixes in ertictac.cpp - Fixed rom names in blockade.cpp, itech8.cpp, konamigx.cpp, neopcb.cpp and suprgolf.cpp - Description changes of CoMOTION, Dynablaster / Bomber Man (bootleg, set 1), Dynablaster / Bomber Man (bootleg, set 2), Dyno Bop (V1.1), Gals Panic (MCU Protected, set 1), Griffon (Videotron bootleg of Phoenix), Moon Base Zeta (set 1), Moon Base Zeta (set 2), NBA Play By Play (ver JAA), Radical Radial (US), San Francisco Rush (boot rom L 1.0), San Francisco Rush: The Rock (boot rom L 1.0, GUTS Oct 6 1997 / MAIN Oct 16 1997), Scramble (Karateco, French bootleg), Sweethearts II (01J01986, Venezuela), Time Traveler (set 1) and Volley - Renamed (cashcat) to (cashcatnz), (chariotc) to (chariotcv), (chariotca) to (chariotc), (cowboy) to (cowboy2), (dolphntrce) to (dolphntrcea), (dstbloom) to (dstblooma), (kgbirdmk5) to (kgbirda5), (locoloot) to (locoloota), (magimask) to (magimaskb), (magtcha5) to (magtcha5a), (minemine) to (minemineu), (qnile) to (qnileb), (qnilea) to (qnilec), (qnileb) to (qnilea), (qnilec) to (qnile), (raiden2g) to (raiden2eg), (retrsama) to (retrsamb), (retrsamb) to (retrsama), (suprgolf) to (suprgolfj), (swhr2) to (swhr2a) and (trpdlght) to (trpdlghtu) - MAME . SOFTWARE LIST . Very minor cleanups; accessing options.software_name() once and better std::string usage (clifront.cpp and mameopts.cpp) . Eliminates the need for emu_options::update_cached_options() by providing a hook for when option values change. This is a preliminary fix to the issue identified in PR#2065 ( . More softlist related refactoring: We now only parse the command line (with core_options::parse_command_line()) once. Options that are set up during slot and image setup go through a 'value_specifier' function. Eliminated the command line postprocessing. . Fixed image mounting from command-line in systems with a software list and an ini file, but there's plenty of time for testing (ID 06107). . Fixed regression when loading multipart softlists. Pernod found a regression introduced in the 0.183 softlist refactoring whereby multi-part softlist items would not distribute to multiple slots. The problem was that the old code was relying on the image slots being loaded into the core. This is not the way the new system works, so I've added a hook into software_list_device::find_mountable_image() that allows the new approach to work. . Fixed Software list items with the "requirement" sharedfeat don't work (ID 06464) . DEVICE . Fixed an issue where device options (e.g. -cart) were reported as unknown when they actually worked. This change also changes around how command line arguments are passed around; specifically I changed argc/argv to be std::vector. Note this is not passed around 'const', the reason being that the command line processing will now "eat" the vector. . Fixed regression pertaining to specification of empty strings as slot names e.g. - 'next -scsibus:1 "" -listdevices' . Cleanup of slot code. Added device_slot_interface::has_selectable_options() to calculate whether a particular slot has selectable options. . device_image_interface cleanups: Replaced comparisons of software_entry() or part_entry() with nullptr with loaded_through_softlist() predicate. Eliminated the superfluous m_software_info_ptr member. The software_entry() accessor is still provided, but now rarely used. Eliminated two of the three arguments to load_software_part. Removed some unnecessary auto-typing in ui/inifile.cpp. . Self-registering devices . Make device_creator a variable template and get rid of the ampersands . Removed screen.h and speaker.h from emu.h and added where necessary . Centralised instantiations of screen and speaker finder templates . Added/standardised #include guards in many hearers . Removed many redundant #includes . Order #includesr to help catch headers that can't be #included alone . Note: This changes #include order to be prefix, unit header if applicable then other stuff roughly in order from most dependent to least dependent library. This helps catch headers that don't #include things that they use. . MAME now walks all devices when generating -lx output irrespective of whether they're actually instantiated anywhere or not. . -lx is at least 30% faster than previous implementation. . Note: Only possible drawback is that filtering drivers no longer filters devices. Fix for libc++ build (emu\device.h). Fixed Clang build by supplying constructor for device_registrar (emu\device.h). . Image instance name refactoring and bug fixing: update_names no longer takes arguments; the device type can be obtained easily, and the custom instance names are now overrides. Devices might not need to explicitly call update_names in the future. Fixed the frontend crash/assert failure resulting from instance names not being generated properly. . Filter devices when a driver pattern is supplied to -listxml. This fixed sampleof entries show up on devices which do not have samples (ID 06347). . Make device_image_interface::update_names a private method called automatically at config_complete time . Cleaning up duplicate device shortnames. Added basic device validation. Fixed uninitialised members in some devices using constructor delegation. . 3rdparty . Updated GLM to tip of stable branch ( pre-release), fixes build with MacPorts Clang. . Refactored HTTP handling to be easier to extend and use . Added emu_file::write, enables the use of sockets and pipes from LUA without needing a third party library (mame\luaengine.cpp). . Cheat engine: Added load_cheatfiles to frontend\mame\mame.cpp/h, emu/main.h and emu\machine.cpp . Fixed crash on excessive command-line options, clean up some tabulation and removed long-dead option. . Possibly uninitialized class member fix (ui\datmenu.cpp and ui.cpp) . Added a new addrmap.cpp validation intended to catch AM_REGION declarations not tied to anything meaningful . AUDIT . Fixed null pointer bug when -verifyroms is used without a driver spec . Substantially speed up -verifyroms, hack other verbs temporarily while device data is being refactored. . Greatly improved performance of -romident on multiple files (mame\clifront.cpp and media_ident.cpp). This hashes all the files upfront, then does the expensive driver/software scan only once. It also walks all devices so it can identify ROMs for slot devices that aren't inserted by default. . Include devices in -listxml with * or no argument . Preliminary attempt to fix regression caused by poor understanding of get_default_card_software() (mame\mameopts.cpp) . Converted screen_device VBLANK callback to devcb_write_line: WRITE_LINE callback has same functionality, except that screen is not an argument. Renamed screen_eof_xxx to screen_vblank_xxx in many drivers. No changes to externally registered vblank delegates or screen update methods. . PLUGINS: Updated hiscore.dat . Uncovered what might be a core bug: AM_SELECT does not work properly with masked handlers. . Memory unit masking and address mirroring fixes: Fixed a bug which effectively treated AM_MIRROR as AM_SELECT when applied to a single-address range mirrored into a contiguous block. The automatic expansion of zero address masks now only applies to those stemming from (default) configuration, not from optimization (This allows the assertion in latch8_device to be reinstated). Fixed a bug where AM_SELECT applied to narrow-width handlers with a submaximal number of subunits would select the wrong address bits or none at all (This allows rpunch_gga_w to be WRITE8 as intended). Added more stringent appropriateness checking of unit masks for narrow-width handlers. - SDLMAME: Fixed SDL build on Win32 and ZEXALL build - Compiling . Removed tag() argument from logerror() calls (cpu\i86\i86.cpp, i186.cpp, i286.cpp, Z80 and imagedev\floppy.cpp) . Fixed Clang 5.0 warning in util\palette.cpp. Maximum of unsigned X and 0 is always X. . Fixed GCC warning in sound\samples.h and GCC link error in emu/driver.h . Fixed MSVC build (include "screen.h" and "emu.h") . Changed 'const char *' ==> 'const std::string &' - Debugger . Refactor debugger_access . Fixed debug build by removing vestiges of -dummywrite (emu\video.cpp) . C++-ification of debugger code (misc std::string/std::vector adoption mainly) . Fixed debug commands in drivers and devices . Print octal addresses in the trace if CPU is octal (debug\debugcpu.cpp) . Added missing disable_side_effect in find_pc_backwards (debug\dvdisasm.cpp)


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.
0.185: Updated to MAME 0.185 ( Added Source/Listinfo changes. Newest Bugs (26th Apr). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.184: Updated to MAME 0.184 ( Added Source/Listinfo changes. Newest Bugs (29th Mar). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.


MAMEINFO.DAT 0.187  (2.68 MB)

MAMEINFO.DAT 0.186  (2.67 MB)

MAMEINFO.DAT 0.185  (2.65 MB)

MAMEINFO.DAT 0.184  (2.64 MB)

   MASH's Driver WIP

   News Submission Board
   MAME Testers
   MAME Download
   MAME Frequently Asked Questions