MASH's MAMEINFO
Mameinfo.dat v0.193
Updated - 20th January 2018

Homepage - mameworld.info/mameinfo
E-Mail - mameinfo@ewetel.net

  Visit ARCADE AT THE MOVIES

    





What's New

*NEW* Mameinfo + MAMEUI-inifiles-0194GIT (19th Jan) (3.36 Mb)

MAMEUI 0.193 Category-, Version and Alltime inifiles (715 kB)

MAME NEWS from 0.37b1 - 0.192 (4.08 MB)

PCB-infos 0.153 (2.11 MB)

MAME listinfos from 0.25 to 0.170 (153 MB)



New in MAME:    
0.194GIT - New games: Cyberstorm (prototype) and Last KM (Ver 1.0.0275) - New Working games: Knights of Valour 3 (V100, China, Hong Kong, Taiwan), Knights of Valour 3 (V102, China, Hong Kong, Taiwan) and Knights of Valour 3 (V104, China, Hong Kong, Taiwan), Road Burners (ver 1.0) and Road Burners (ver 1.04) - New Non-Working games: Lucky Ball 96 (Ver 3.50 - 627), Odyssey, Quick Pick 5, Strike Zone (Purple Star) and Trocana - New clones: Area 51 / Maximum Force Duo (R3000, 2/02/98), Cookie & Bibi 2 (set 2), Four Trax (Asia), Jolly Card (Italian, bootleg, set 2), Kick Goal (set 2), Knights of Valour 2 New Legend (V300, Oversea), Knights of Valour 2 New Legend (V301, Oversea), Knights of Valour 2 New Legend (V302, Oversea), Lucky Ball 96 (Ver 3.50 - 616), Lucky Ball 96 (Ver 3.50 - 623), Lucky Ball 96 (Ver 3.50 - 626), NEW Moero!! Pro Yakyuu Homerun Kyousou, Popeye (bootleg set 2), Popeye (bootleg set 3), Pretty Soldier Sailor Moon (Ver. 95/03/21, Europe), Pretty Soldier Sailor Moon (Ver. 95/03/21, Hong Kong), Pretty Soldier Sailor Moon (Ver. 95/03/21, Japan), Pretty Soldier Sailor Moon (Ver. 95/03/21, Korea), Pretty Soldier Sailor Moon (Ver. 95/03/21, Taiwan), Pretty Soldier Sailor Moon (Ver. 95/03/21, USA), Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 2), Super World Court (World, bootleg), World Class Bowling (v1.0) and X-Men: Children of the Atom (Brazil 950331) - New drivers: cybstorm.cpp, luckybal.cpp, nmkmedal.cpp, odyssey.cpp, quickpick5.cpp and strkzn.cpp - New devices: generic_cartslot, ls157_x2 and seganetw - New mame.ini options: nvram_save = 1 (CORE MISC OPTIONS) - 8085A CPU: Clean up state registration. SOD and SID are 8085-specific. STATUS and INTE are 8080-only outputs. Added IM register for 8085. - ADSP-21xx CPUs: Fixed m_pcbucket log typo - ARM7/9 CPUs . Reverted ROR cases in arm7\arm7thmb.cpp, explicit masking and rotating was unneeded (except for POP {Rlist} which is correct), handle v5 behavior (LSB address bit is ignored in 16bit loads) in arm946es_cpu_device::arm7_cpu_read16 instead, manually handle v4 and v5 difference for LDRSH signed halfword load. NOTE: It looks like all? v5 cores ignore least significant address bit during 16bit loads, so we should add something like virtual uint32_t arm7_cpu_read16(uint32_t addr) override { return base_class::arm7_cpu_read16(addr & ~1)}; into theirs class declaration. . Added front-end for ARM7 DRC (arm7\arm7fe.hxx) - Dynamic Re-Compiling: Fixed an 'optimization' which was actually a random bug inducer (cpu\drcbex86.cpp) - Hyperstone CPUs . Hyperstone DRC (cpu\e132xs\e132xs.cpp). Added subs to DRC, fixes Hidden Catch fatalerror when selecting a difference. . Allocated core from DRC cache. Potentially fix DRC crash on Linux and OSX. Fixed some 32-bit DRC issues and address Coverity concerns (cpu\e132xs\e132xsdrc_ops.hxx and e132xsfe.cpp). - I386 CPU: Correct when some opcodes were introduced and permit lock with other prefixes (cpu\i386\i386ops.h) - M6502 CPU: Fixed memory leak in M6502 CPU cores (M4510, M6502, M6504, M6507, M6509, M6510 and M65CE02) (ID 06810) - M6800/6801 CPU: Error logging fixups - MC6809 CPU . SWI2 is not HD6309-exclusive (m6809\6x09dasm.cpp) . Fixed memory leak in M6809 CPU core (ID 06811) . Fixed disassembly of relative instructions - MC68HC11 CPU . CPU is big-endian . Fixed dissassembly of instructions with 16-bit operands (immediate or direct) - PSXCPU (CXD8530AQ, CXD8530BQ, CXD8530CQ, CXD8661R and CXD8606BQ): Improved PSX state saving - Z80 CPU: Fixed disassembly when $ed, $dd & $fd prefixes are used but the instruction is not valid (z80\z80dasm.cpp) - DCS sound: Some minor changes mainly for DSIO and DENVER systems (audio\dcs.cpp) - Yamaha YMW-258-F sound: Avoid unnecessary initialization and fixes division by zero (sound\multipcm.cpp) - YMZ770 sound: Docs update and cosmetics, no actual impact on emulation. - CD-ROM: Recognized ISO images with 2336 byte sectors - CGA video: Fixed 400 line text mode for (MESS) Olivetti M24 - Data East Custom: Removed space, offset and mem mask from decocomn_device::priority_r (boogwing.cpp, cninja.cpp, dassault.cpp and rohga.cpp). - Floppy: Got rid of bogus default drive in lookup functions, avoid some potential nullptr dereferences and made floppy_get_drive() internal for imagedev\flopdrv.cpp. - IDE: Actually implement read multiple command for machine\idehd.cpp. Fixes crash on 'NBA Showtime: NBA on NBC' where the vegas driver assumes that the buffer is 16 deep. - Konami Custom: Implemented front layer rotate and zoom (video\k001604.cpp; drivers\cobra.cpp, gticlub.cpp, nwk-tr.cpp and zr107.cpp) - SCN2674 Video Controller . Splitted up logging. Hook up SCN2674 to (MESS) Micro-Term 420. . Avert screen_device::update_partial assert failure during debugging in debug build - SVGA video . S3 hardware pointer colour select is now reset on reading CR45, as per documentation. . ATI MACH8/MACH32: Limit sourcex/y to 11 bits, fixes MACH32 detection in bundled Win9x drivers. Mapped MACH32 hardware pointer registers. Added 8514/A compatible DAC registers, fixes I/O port conflict in DOS MACH32 utilities and 8ppp colours under Win9x. Get MACH32 hardware cursor to display. . Added Scan To X command to MACH8, used by Win9x drivers to write cursor data. - TMS9927 video . Added BL line read for future use . Correct sync timings and added untested HSYN callback . Added 80-column/132-column display clock switch for (MESS) Visual 100 . Disabled side effects for reads - TTL . Converted 74157 TTL to bitswap<4> . Added two-in-one version of LS157 and hook it up to Alien Arena, Joust, Plotting and Splat!. . Use 74157 device in williams.cpp to do input multiplexing. Added port names. - V9938 video: V9938 should abort a command when the mode is switched before completion - VGA video: Avoid crash in (MESS) Windows 95 'A-10 Cuba!' - Xicor X2212 256x4 NOVRAM: Eliminated alloca() - aristmk5.cpp: Green Lizard (AHG1623, US) and King Galah (AHG1625, US) were actually Cash Express versions (and Honky Tonk wasn't, oddly enough). Updated the descriptions to suit. Fixed bugs in layout\qnilecea.lay and added new layouts. - atlantis.cpp: Fake waitstates for RTC reading and adjust DCS polling offset. RTC changes fixes RTC clock stopped warning in Atlantis driver. - blockout.cpp . Fixed Agress offsetted text layer, worked around initial VRAM check. . Converted to SCREEN_RAW_PARAMS and fixed visible area for Agress and Block Out. . Fixed input labels and hookups, following manual and in-game descriptions. . Cleaned up video function . Separated Agress rom patch from blockout_state - chihiro.cpp . Temporary fix machine\xbox_pci.cpp to show Xbox recovery screen. Make USB work again. . Added skeleton Sega network device so that the rom can be moved from chihiro.zip to seganetw.zip - esd16.cpp: Added factory defaults (EEPROM) for Deluxe 5, Multi Champ Deluxe and Multi Champ Deluxe (ver. 1114, 14/11/1999) so they don't run with bogus values - hng64.cpp: Enabled preliminary ROZ floor for Fatal Fury: Wild Ambition and Buriki One - homerun.cpp: Added SCREEN RAW PARAMS - kickgoal.cpp . Cleaned up driver so that it uses OKI6295 mem map etc. . Added pic16c57 audiocpu rom, 93c46 EEPROM and a redumped TMS27C040 OKI rom to Kick Goal (set 1). - konmedal.cpp: Additional hookups for Shuriken Boy, fully passes POST. Added program rom banking. - m72.cpp: Clean up address maps - ms32.cpp . Improved and cleaned up tile-tile priorities. Fixes title screen in 'Idol Janshi Suchie-Pai II', 'Gratia - Second Earth' intermissions and 'Hayaoshi Quiz Nettou Namahousou' flame screen during attract. . Fixed MAME exit with exception "unhandled priority type f8" in Gratia ending screen (ID 03790) - namcond1.cpp . Added mosaic effect for NCV1 'Galaga Arrangement' ending/staffroll (video\ygv608.cpp) . Fixed 'COLOR TEST' in ND-1 self test and a small graphics glitch in 'RALLY-X Arrangement' (video\ygv608.cpp) - namcos2.cpp and namcos21.cpp: Namco C148 (CPU Bus Manager) use required_device and optional_device (machine\namco_c148.cpp). This fixed debug assert in winrun, winrun91 and winrungp when starting emulation (ID 06548). - nss.cpp, sfcbox.cpp and snesb.cpp . TnDIV divides by 256 when setting written is 0 in SNES sound. Merged timer counters into one single function (audio\snes_snd.cpp) . All SNES APU docs claims that SPC700 audio CPU runs at 2.048 MHz and there's no mention about an internal divider (which should belong to the CPU core while fixing the opcode cycles anyway). - nwk-tr.cpp: System has 2 graphics boards. Implemented front layer rotate and zoom (video\k001604.cpp). This fixed crash shortly after OK in clones Racing Jam: Chapter 2 (EAE) and (JAE) with debug build (ID 05632). - pgm2.cpp . Do rowscroll for all rows so 240 cases work . Dumped internal firmware/module keys for Knights of Valour 3 (V104, China, Hong Kong, Taiwan) and clone (V102, China, Hong Kong, Taiwan). Added default SRAM, speedups and fixed visible area. Note: FPGA comms emulation required, currently hacked out. . Emulated kov3 ROM module communication, removed hack. Added few more kov3 security notes. . Fixed fg tilemap size, fixes kov3 boss death sequences. . Added 'sprite disable' bit, prevents stray horemen heads in kov3 attract and changes what you see in the shop. . Handle MSB of zooming, used by kov3. . Removed BAD_DUMP flags from orleg2 sprites_colour roms, they are not suspects anymore. . Ensure savestates work from commandline (eg launching with -state 0) tag driver as supporting states . Improved simulation using real data, make fake keys for kov3 100 and 104. - r2dx_v33.cpp: Moved globals into state - segaxbd.cpp and taitotx.cpp: Don't use driver_device - seta.cpp . Added IRQ acks and PIT8254 for latter to madshark and magspeed . Use PIT8254 device in kamenrid and msgundam . Acknowledge interrupt for tndrcade, thunderl, wiggie and wits - stv.cpp . Fixed color calculations for non-mode 5 sprites (i.e. (MESS) Sega Saturn 'Virtual Hydlide' avatar shadow) (video\stvvdp1.cpp) . Fixed mode 2 transparent pen sprites for (MESS) Sega Saturn 'Scud - The Disposable Assassin' (video\stvvdp1.cpp) - system16.cpp: Removed sprite device in Beauty Block and IQ Pipe - thief.cpp: Interrupt modernization and use MCFG_SCREEN_RAW_PARAMS - twinkle.cpp: Moved a couple of functions into driver class - vamphalf.cpp . Improved Mr. Dig speedup, it appears to be faster and works for DRC & interpreter. . Improved Mr. Kicker speedup and standardised the rest (except Age Of Heroes) . Removed "space" calls and use e132xs state enum instead of magic numbers - vegas.cpp . Use only assert/clear interrupts on a change in VRC5074 System Controller. Prevents clearing of MIPS3 timer interrupt inadvertantly (machine\vrc5074.cpp). . Promoted Road Burners and clone to WORKING . Calculate screen size and timing using Voodoo CRTC and PLL registers. Use CRTC registers for vblank start (video\voodoo.cpp). . Actually implement read multiple command for machine\idehd.cpp. Fixes crash on 'NBA Showtime: NBA on NBC' where the vegas driver assumes that the buffer is 16 deep. . Only clear edge triggered interrupts and initialize timer from counter register (machine\vrc5074.cpp) . Fake waitstates for RTC reading and adjust DCS polling offset. RTC changes fixes RTC clock stopped warning in Vegas driver. - viper.cpp: Moved remaining globals into viper_state - wms.cpp: Added year to WMS sets and copyright/year to mame.lst - AGEMAME . Added 74HC259 device (addressable latch) to maygay1b.cpp . Added some rudimentary handlers and guessed devices to Lucky Dip (Maygay) - Cabaret and Time Traveler: Added 8255 PPIs - City Connection . Fixed MC6809E sound CPU speed . Hook up AY-3-8910A read, which fixes cop car spin sound. - Crush Roller . Simulated maketrax protection. Restored maketrax save state support. Fixed maketrax regression (teleport holes DIP not working). . Fixed regression in clones mbrush and crushbl2 . Simulated protection for korosuke and cleanup - Diamond Run: Fixed missing level start music (ID 06825) - Black Touch '96: Fixed pickup colours. Hook up OKI6295 sound. - Block Hole: Restored missing player inputs - F-1 Grand Prix: Fixed getting stuck on "ID CHECK" - Ginga NinkyouDen and Xain'd Sleena: Identified 6809 type - Grudge Match: Default 'Free Play' dipswitch to 'Off' for the recently added Grudge Match parent set (Free Play doesn't work properly on it anyway). Leave it to 'On' for the previous set because Coin mode doesn't work properly there. - Hana Jingi: Fixed hjingi_bank_w regression. Managed to removed it entirely in the course of separating the bank switches. This fixed emulation hang (ID 06799). - Intrepid: Fixed 'Lives' dipswitch for Intrepid bootleg sets - Jolly Card: Added full specs for clone Jolly Card (Italian, different colors, set 1) - The King of Fighters 2002: Gross hack to fix clone 'The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg)' state save, save_pointer() must be called after the pointer is set & does not cope with it changing. - Max RPM: Converted ADC0844 write to bitswap<4> - Mosaic: Added PCB layout and changed CPU/Sound clocks to be derived from actual OSCs on PCB - Nurete Mitaino: Redumped sound rom - Olympic Hot Stuff: Added MC146818 RTC to make one more test pass and serial interface - PinMAME: Replaced M6809 CPU in wpc_s.cpp with MC6809E - Popeye . Fixed background in Popeye (Japan), Popeye (Japan, Older) and Popeye (bootleg set 1). Popeye (Japan) does not run on the exact same hardware as Sky Skipper & was the basis for the popeyebl set. Fixed horizontal and vertical scroll register behaviour in Popeye. Changed function names from the game name to the hardware id the functionality was first used in. . Fixed Popeye background scrolling when screen is flipped - The Punisher: Fixed m_sprite_base for clones The Punisher (bootleg with PIC16c57, set 1/2/3) - Route 16: Simulated protection. Restored save state support for protected sets. - Shooting Star: Added 68681 DUARTs and YM2149 sound - Splash!: Draw sprites in reverse order. This fixed wrong sprite priority on bonus items in Splash! and clones (ID 06791) - Strike Force: Fixed black screen after rom check (machine\midyunit.cpp) (ID 06804) - Top Gunner: Added XTAL and motor MCU. Removed no longer used functions. - Turbo Sub: Switch to non-legacy 6809E CPU - Input port . New WIP plugin for loading translations or alt names for input port fields (plugins\portname\init.lua and plugin.json). Use a subdir and emu.file so they can be packaged in ZIPs. Added #import and #set tags. . Note: Use plugin options to save the input port list to a gettext formatted file. The file is saved in the ctrlrpath dir. Use #import to load names from a different file. Use #set ,,... to override names for a child set, common names should be listed at the top before any #set tag. - Fixed year info for bel and vf2 - Dipswitch fixes in balsente.cpp, blockout.cpp, tigeroad.cpp and toaplan2.cpp - Fixed rom names in jaguar.cpp, kickgoal.cpp and mosaic.cpp - Description changes of Area 51 (Time Warner license, Nov 27, 1995), Area 51 / Maximum Force Duo (R3000, 2/10/98), Chicken (01J01886, Venezuela), DoDonPachi Dai-Ou-Jou Tamashii (V201, China), Cookie & Bibi 2 (set 1), Dongfang Zhi Zhu (Hong Kong, V011H), Enchanted Forest - Cash Express (AHG1615, US), Fortress 2 Blue Arcade (World) (ver 1.01 / pcb ver 3.05), Fortress 2 Blue Arcade (Korea) (ver 1.00 / pcb ver 3.05), Four Trax (World), Green Lizard - Cash Express (AHG1623, US), Hong Hu Zhanji II (China, set 1), Hong Hu Zhanji II (China, set 2), Honky Tonk (BHG1455, US), Hudie Meng 97, Jolly Card (Italian, bootleg, set 1), Kick Goal (set 1), King Galah - Cash Express (AHG1625, US), Knights of Valour 3 (V100, China, Hong Kong, Taiwan), Knights of Valour 3 (V102, China, Hong Kong, Taiwan), Knights of Valour 3 (V104, China, Hong Kong, Taiwan), Mahjong Long Hu Zhengba 2 (set 1), Mahjong Long Hu Zhengba 2 (VS221M), Mahjong Man Guan Caishen (V103CS), Mahjong Man Guan Daheng (Taiwan, V123T1), Mahjong Man Guan Daheng (Taiwan, V125T1), Popeye (bootleg set 1), Popeye (Japan), Popeye (Japan, Older), Queen of the Nile - Cash Express (AHG1608, US), Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 1), Shizhan Ding Huang Maque (Version 4.1), Shizhan Majiang Wang (Version 8.8), Shuzi Leyuan (V113FR), Shuzi Leyuan (V127M), Sorcer Striker, Sorcer Striker (Korea), Wanli Changcheng (China, V638C), Xingyun Man Guan (China, V651C), Zhongguo Long (China, V010C), Zhongguo Long (Japan, V020J), Zhongguo Long (Japan, V021J) - Renamed (47pie2) to (suchie2), (47pie2o) to (suchie2o), (chickna5b) to (chickna5v), (chickna5qld) to (chickna5ql), (ddpdojh) to (ddpdojt), (eforsta5ub) to (eforsta5cea), (glizardu) to (glizrdce), (kgalahu) to (kgalahce), (kov2nl) to (kov2nl_302cn), (kov2nl_300) to (kov2nl_300cn), (kov2nl_301) to (kov2nl_301cn), (pengpayuc) to (pengpayce), (qnileub) to (qnileceb), (sailormno) to (sailormnn), (sailormnoh) to (sailormnnh), (sailormnoj) to (sailormnnj), (sailormnok) to (sailormnnk), (sailormnot) to (sailormnnt), (sailormnou) to (sailormnnu), (sstrikera) to (sstrikerk), (suchipi) to (suchiesp), (weststory) to (weststry) and (weststorya) to (weststrya) - MAME . VIDEO RENDERING SYSTEM . BGFX . Use bgfx::ViewMode::Sequential fixes handheld overlays (render\drawbgfx.cpp). This fixed also bitmap overlays don't display with bgfx video output (ID 06806). . Abstracted some view-related functions into bgfx_view class . Fixed two issues with the GLSL Bilinear Shader: 1. Off-by-one pixel coordinates. 2. Sampling of wrong pixels at some non-integer stretch factors. Note: First was noticed while comparing screenshots of the software and OpenGL w/GLSL renderers (OpenGL output was shifted up and to the right). Fixed by subtracting a 1/2 pixel from the texture coordinates when calculating the bottom left pixel to use for interpolation. Second was apparent when running Pac-Man fullscreen on a 1920x1080 screen and allowing non-integer stretching. Manifested as irregular horizontal 'steps' in the output. Fixed by sampling from the center of all pixels which should avoid any funny business in regards to pixel coordinate rounding. . Added Bicubic Shader to OpenGL backend. This shader uses the equation described by R. Keys in the paper 'Cubic Convolution Interpolation for Digital Image Processing' which is, in this case, the same as a Catmull-Rom spline. This produces a sharper upscaled image than bilinear filtering. The new shader is selected by setting gl_glsl_filter to 2. Consequently, gl_glsl_filter is now treated as an int rather than a boolean. Also fixed a variable name problem in the code guarded by GLSL_SOURCE_ON_DISK. . Fixed update_gamma_ramp (render\drawd3d.cpp). This fixed full screen Brightness/Contrast/Gamma settings not working anymore (ID 06623). . Privatized m_screen and other variables of device_video_interface . Fixed Blit function (binding reference to nullptr; emu\screen.cpp) . Added fallback_artwork and override_artwork as MAME options to allow default artwork to be loaded. Removed debug testing code. Allow loading of built-in layouts even if override_artwork is specified. Allow loading of fallback_artwork if only default view have been found. Fixed order of built-in layouts with regards to fallback_artwork as agreed upon the forums. Changed |= true to = true, and changed override artwork so it only checks for default.lay if the .lay is not found (emu\render.cpp and emuopts.cpp). . DEVICES . Removed space.device().safe_pc() from devices . Eliminated some machine().firstcpu usage. Eliminated unnecessary downcast in debug\debugcpu.cpp. . Moved machine\meters.cpp/h and ticket.cpp/h to devices\machine\ . Differentiate between cartridge (cart) and romimage (rom) in generic\slot.cpp . API Change: Machine configs are now a method of the owner class, and the prototype is simplified. NOTE: Beware, the device context does not follow in MCFG_FRAGMENT_ADD anymore due to the prototype change. So creating a device then configuring through a fragment doesn't work as-is. The simplest solution is just to add a MCFG_DEVICE_MODIFY at the start of the fragment with the correct tag. . UI . Added option to disable saving NVRAM on exit (emu\emuopts.cpp and machine.cpp) . Fixed AddressSanitizer: alloc-dealloc-mismatch when closing dipswitch menu (ui\menu.cpp) (ID 06816) . Disambiguate memory handlers . Fixed nodump disk validation regression (emu\softlist.cpp). Simplified nodump CHD check. . Added verbose logging for CFG files (emu\config.cpp). Note: We already have verbose logging for INI files that get parsed, so having CFGs get similar treatment is useful. . Converted zippath directory to a C++ interface (ui\filesel.cpp, imgcntrl.cpp, util\zippath.cpp and debugger\debugimgui.cpp) . PLUGINS . Fixed table lookup in plugins\data\database.lua (ID 06821) . Added reporting of database errors (plugins\data\database.lua and data_marp.lua) . Don't pollute the namespace and use emu.print_error (plugins\data\data_marp.luam database.lua and load_dat.lua) . Use C locale for int/float in XML files (util\xmlfile.cpp) . Clean up and improved comments for some Chinese names. Hong Kong titles should probably be Cantonese. . Basic anchor links for FAQ page (docs\source\usingmame\commonissues.rst) . Updated documentation for castool and added floptool (tools\castool.rst and floptool.rst) - MAC OS X: Detect attached debugger on OSX before generating trace/breakpoint trap - Compiling . Added workround for Clang static builds and enable them again, don't force -O1 on Clang builds (scripts\genie.lua). . Added -lSDL2main to fix linking with GCC 7 (osd\sdl.lua). Use dynamic linking for Windows SDL builds to workround an error during linking about liblualibs.a being corrupt, which is dependant on the order of the .o files contained within it (scripts\genie.lua). . Removed qtmain on windows, it conflicts with SDL2_Main (osd\modules.lua). Fixed building for windows with qt debugger (osd\windows\window.cpp). . Fixed tiny build (scripts\target\mame\tiny.lua) . Fixed MSVC 2015 build (drivers\eprom.cpp) . Added asserts for index out of bounds with e.g. mushi2k4 (ID 06817) and ddboy to sound\aica.cpp and video\k054156_k054157_k056832.cpp . Restored SANITIZE make option. Restored basic support for SANITIZE make option. Disabled some unwanted UBSAN checks / enabled nullability checks / enabled ASAN use-after-scope checks. . std::function is too inefficient, std::function and delegate both require runtime relocations and slowing down startup. Just use function pointers. Get rid of a circular dependency between gamedrv.h and mconfig.h (emu\devdelegate.h, driver.cpp, emu.h, gamedrv.h and mconfig.h). - Debugger . Fixed masking of signed integer types in debug state (emu\distate.h) . Added MAME Debugger help documentation 0.193 - New games: 4-in-1, Calcune (Japan, prototype), In Your Face (North America, prototype), Joker Poker With Hi-Lo Double-Up, The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23), Slot (unknown bootleg?) and TelePachi Fever Lion (V1.0) - New Working games: Action Fighter (FD1089B 317-unknown), Action Fighter (FD1089B 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-0018), Action Fighter (System 16B, FD1089B 317-unknown), Action Fighter (System 16B, FD1089B 317-unknown, analog controls), beatmania IIDX 4th style (GCA03 JAA), beatmania IIDX 6th style (GCB4U JAB), beatmania IIDX 6th style (GCB4U JAA), beatmania IIDX 7th style (GCB44 JAA), beatmania IIDX 8th style (GCC44 JAA), beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM), Dodonpachi Daioujou Tamashii (V201, China), Knights of Valour 2 New Legend (V300, China), Knights of Valour 2 New Legend (V301, China), Knights of Valour 2 New Legend (V302, China), Oriental Legend 2 (V101, China), Oriental Legend 2 (V103, China), Oriental Legend 2 (V104, China), San Francisco Rush: The Rock and Tazz-Mania (Arfyc / Rodmar bootleg) - New Non-Working games: Golden Hexa, Hexa President, Multi Game IV (V.Ger 3.44), Pitch Hitter - Baseball Challenge, Real Battle Super Phoenix Mahjong (Version 4.1), Shuriken Boy and Torarechattano - AV Kantoku Hen (Japan) - New clones: A-Blast (Japan), Amigo (bootleg of Amidar, set 2), Attack (Defender bootleg), Blood Bros. (US), Blue's Journey / Raguy (ALH-001), Dangerous Curves (Ver 2.9 O), Death Crimson OX (Rev A), Fantasy (Germany, set 2), G.I. Joe (Asia, AA), Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Covadonga Spanish bootleg), Jolly Card (Italian, bootleg), Oriental Legend 2 (V101, Oversea), Oriental Legend 2 (V103, Oversea), Oriental Legend 2 (V104, Oversea), San Francisco Rush 2049: Tournament Edition Unlocked, Super Bagman (Itisa, Spain), Teki Paki (location test), Twin Brats (set 1) and West Story (bootleg of Blood Bros., set 2) - New AGEMAME games: Boot Scootin' (AHG1547, US), Bumble Bugs (CHG0479-99, US), Chicken (01J01886, NSW/ACT), Chicken (RHG0730-99, US), Enchanted Forest (AHG1615, US), Enchanted Forest (JHG0415-99, US), Filthy Rich (English), Green Lizard (AHG1623, US), Honkey Tonk - Cash Express (BHG1455, US), Inca Sun (01J01946, Venezuela), Keep Your Hat On (BHG1204, US), King Galah (AHG1625, US), Mine, Mine, Mine (NHG0416-99, US), Money To Burn (English), Mountain Money (BHG1464, US), Penguin Pays (OHG0417-02, US), Penguin Pays (OHG0417-03, US), Penguin Pays - Cash Express (AHG1544, US), Queen of the Nile (AHG1608, US), Queen of the Nile (GHG4091-03, US), Reel 'Em In (English), Wild Africa (AHG1535, US), Wild Cougar (AHG1531, US), Wild Cougar (NHG0296-07, US), Wild Cougar (NHG0296-99, US) and Winning Bid (English) - New PinMAME games: Creature from the Black Lagoon (L-2) and Striker Xtreme (1.01 Italy) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Final Soldier, PC Genjin, Saint Dragon, Splatterhouse, Tora e no Michi and Violent Soldier - Removed games: Margarita Magic (EHG1559, US, set 2) - New drivers: calcune.cpp, nsg6809.cpp and yuvomz80.cpp - New devices: hd6309e, mc2661, mc6809, mc6809e, mos6551, pgm2_memcard, pit68230 and ripple_counter - New mame.ini options: rewind = 0 and rewind_capacity = 100 (CORE STATE/PLAYBACK OPTIONS) - ARM7/9 CPUs . Fixed unaligned 16-bit loads . LDMIA/STMIA always align to a 32-bit boundry (cpu\arm7\arm7thmb.cpp) . Only define LSL, LSR, ROL & ROR when building the cpu core (cpu\arm7\arm7core.h). Protect trampoline constructors (cpu\arm7\arm7.h). . Mask address LSB during 16/32 bit memory access, as per ARMv5/ARM9 behavior. Handle 2 magical ROR cases. This needed to be changed or split when we will be emulate ARMv6/ARM11 (cpu\arm7\arm7thmb.cpp). - I386 CPU . In the poentium_smi() routine all calls to WRITE32 have the parameters swapped . x87 bug fixes and FERR support . Small change to enter system management mode (cpu\i386\i386.cpp). Fixed rsm instruction (cpu\i386\pentops.hxx). . Separated i8087 FPU device and added save state. Fixed i8087 regression pending further investigation with (MESS) Fanuc driver. - I4004 CPU: MCS-40 is paged - M680x0, MC68307 and MC68340 CPUs . Refactor 680x0 so that member variables aren't public . More static, less const and some irrelevant inline (cpu\m68000\m68kcpu.h). . Removed safe_pc() from MC68307 and MC68340 CPU - MC6809/HD6309 CPU . Resolved the great device type/clock divider mix-up . Fixed MC6809 clock speed in aeroboto.cpp, archrivl, beezer, bfcobra.cpp, bladestl.cpp, capbowl.cpp, citycon, darktowr, ddragon, de_2.cpp, de_3.cpp, de_3b.cpp, demoderb, ddungeon, exidy440.cpp, exprraid, firefox, gladiatr.cpp, gng.cpp, hotchase, itech8.cpp, itech32.cpp, jackal.cpp, jdreddp, joust2, kram3, maxrpm, mk, mpu12wbk.cpp, mpu4.cpp, mpu4avan.cpp, mpu4bwb.cpp, mpu4concept.cpp, mpu4crystal.cpp, mpu4empire.cpp, mpu4mdm.cpp, mpu4misc.cpp, mpu4mod2sw.cpp, mpu4plasma.cpp, mpu4sw.cpp, mpu4union.cpp, nbajam, nyny, pigskin, s11.cpp, s11a.cpp, s11b.cpp, s11c.cpp, sarge, sbasketb.cpp, shaolins.cpp, sigmab52.cpp, sonson, sothello, spdodgeb, spyhunt2, srumbler, stoffy, toffy, tattass, trisport, tstrike, vectrex.cpp, vertigo.cpp, whitestar.cpp, wpc_an.cpp, wpc_dot.cpp, wpc_flip1.cpp and wpc_flip2.cpp . Replaced M6809 with MC6809E in aristmk4.cpp, balsente.cpp, baraduke.cpp, bigkarnk, bladestl, citycon, contra, de_3.cpp, de_3b.cpp, dec8.cpp, ddribble, exidy440.cpp, gaplus, halleys.cpp, hotchase, icecold, irobot, ironhors, mappy.cpp, mastkin, mikie, namcos1.cpp, namcos2.cpp, namcos21.cpp, namcos86.cpp, overdriv, pacland, pandoras, qix.cpp, skykid.cpp, spy, starwars.cpp, toypop.cpp, tp84, tutankhm, white_mod.cpp, whitestar.cpp, wico.cpp, williams.cpp, wmg, wpc_95.cpp, wpc_an.cpp and yiear . Replaced M6809 with HD6309E in ajax and bottom9 . Replaced M6809E with MC6809 in byvid.cpp and wackygtr . Replaced HD6309 with HD6309E in bladestl, contra and rockrage - TMS9995 CPU . Fixed debugger do command . Fixed READY check on RESET (auto-waitstate) - Z180 CPU: Fixed Z180_RCR_REFW and added Wait State Generator (DCNTL) support - DCS sound . Fixed DCS audio banking for DENVER and DSIO DCS audio . DSIO and DENVER don't use SDRC DMA - FM sound: Turn a bit more of fmopl into something resembling C++ - RF5C400 sound . Fixed sound regression. This fixes Gradius IV, and also fixes the dog whistling and other issues in the beatmania IIDX games. . Converted RF5C400 to use device_rom_interface. . Save/restore the external memory registers. Moved static variable into device state. Fix the commented out osd_printf_debug. Fixed "always values". Added skeleton for reading and writing channel register 0x0F (which is used by the beatmania IIDX games). - Williams ADPCM Sound Board: Lower ADPCM volume. This fixed possible volume balance issue in NBA Jam / Williams ADPCM Sound Board (ID 06780). - YMZ770 sound: Implemented CHAN/SEQ "keep playing" command, document other known SPU in this series. - YMZ774 sound . Added sequencer, blind work based on KOF98UM rom data, not tested at all. Assume each sequencer have its own current bank. . Implemented SQC thing on top of sequencers, fix sequencers timers setup. . When SQC stopped stop SEQ too, make SEQ/SQC save state-friendly and cleanup. . Added volume delayed transition and handle CHAN/SEQ pause/resume - 6522 VIA: Eliminated truly ancient hack to default clock to that of first CPU. All VIAs in MAME now have properly configured clocks. - 6850 ACIA: Created standard read/write handlers - 8257 DMA: Added LOG messages - ATA: Simplified class hierarchy so there is no ambiguity with 16 & 32 bit methods. Removed the memory system read/write handler trampolines from the ATA devices as they are not required (machine\atadev.cpp). - Floppy: Updated debug printouts to use logmacro.h LOG messages (machine\wd_fdc.cpp) - IDE: Disambiguated 16- and 32-bit CS access, and added non-space CS access methods - Konami Custom: Removed space from k007121_device::ctrlram_r - RS232: Added DCE RxC/TxC callbacks (untested) and table of standard signals - SCSI Hard Disk: Use CHD IDNT metadata for inquiry and logmacro.h logging (machine\nscsi_hd.cpp) - Taito Custom: Removed space and mem_mask from some TC0080VCO call - VGA video: CRTC start address is supposed to be shifted left by 2, from 86Box (video\pc_vga.cpp). - Voodoo GFX: Set number of SGRAM chips to 2 for 16M cards - adp.cpp: Updated documentation. Clean up driver. - amaticmg.cpp . Some cleanup. Removed the third 8255 PPI from AMA-8000-1 system since only has two of them. AMA-8000-2 and the new hardware for MGIV have three PPI devices. Need to set the ports. . Switched Multi Game III (V.Ger 3.64) to the new machine config since has a lot of similarities with The MGIV memory map - atlantis.cpp, iteagle.cpp, seattle.cpp and vegas.cpp . Promoted San Francisco Rush: The Rock to working . Added wheel force control for initial calibration. Set wheel calibration complete as soon as any SYSTEM button is hit (seattle.cpp and vegas.cpp) . NEC VRC5074 System Controller: Don't try to save zero length vectors (vegas.cpp) . NEC VR4373 system controller: Corrected VRC4373 device/vendor id PCI field (atlantis.cpp and iteagle.cpp) . SMC91C9X ethernet controller: Fixed loopback and added proper MMU handling. Switch from queue to vector for save state support. Added packet padding and variable transmit timing (seattle.cpp and vegas.cpp). . Added gearshift to sfrush and sfrushrk . Disconnect ethernet for War: The Final Assault. Fixes game hang at start. . Midway DCS Audio: Fixed DCS audio banking for DENVER and DSIO DCS audio (atlantis.cpp and vegas.cpp). DSIO and DENVER don't use SDRC DMA. Fixes boot hang on Road Burners. - bagman.cpp: Fixed Bagman dying sound plays repetitively when game starts (ID 06784) - bfcobra.cpp: Fixed AY-3-8910 bad clock - coolpool.cpp: Fixed stupid TMS340X0 Shift register bug - cps1.cpp and kenseim.cpp: Substituted IOC1 PAL logically equivalent replacement with real dump from an unprotected device - harddriv.cpp: Fixed harddriv sound - ksys573.cpp: Improved Hyper Bishi Bashi Champ and Salary Man Champ control - manohman.cpp: Merged Backgammon (adp.cpp) with manohman driver, which has a better description of same hardware. Reduced region size. - mcr.cpp and mcr3.cpp: Moved some globals into the state class, started splitting some in subclasses. - mermaid.cpp . Added new generic ripple counter device to Rougien. This device emulates basic ripple counter logic ICs with fallingedge clocks and a synchronous reset inputs such as CD4040 and 74LS393. . Don't break Mermaid and clone not using MSM5205 ADPCM - metro.cpp: Added coin counters. Updated notes. - micro3d.cpp: Added diagnostic terminals to the DrMath and VGB boards - namcos12.cpp: Replaced strcmp with polymorphism in namcos12_state::machine_reset() - pgm2.cpp . Dumped internal rom from 'Dodonpachi Daioujou Tamashii (V201, China)', 'The King of Fighters '98: Ultimate Match HERO' and 'Oriental Legend 2 (Oversea) (English)' IGS036 chip. The 'Oriental Legend 2' cartridge confirming only the region byte changes in that case. Other regions, including Japan single PCB need confirming to see if there are further changes in those cases or not. As the Oversea version ignores the Card Reader MCU we can mark it as working, so new working machines. . Make RTC ticking and removed orleg2 patch, its not needed anymore. Document PGM2 debug features. . Updated IGS036 encryption to support kof98umh (machine\igs036crypt.cpp). Use uploaded IGS036 encryption tables for kov2nl and orleg2. . Use sprite decryption keys uploaded by games where we have internal rom. Tweak MCU timing for kov2nl and hook shared ram. . Added MCU HLE, now it works like if MCU/RW is alive but card is not inserted. Added ICRW simulation (machine\pgm2_memcard.cpp). . Memcard reader now uses image_device stuff, cards can be inserted/removed and get saved. Use optional_device_array. . Promoted The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23), Knights of Valour 2 New Legend (V302, China), (V301, China), (V300, China), Oriental Legend 2 (V101, China), (V103, China) and (V104, China) to working. As each game/region requires a valid default card in order to save said cards are part of romset. . IGS036 seems to be derived from a ARM946ES type core based on using MPU not MMU, change it to be such (cpu\arm7\arm7.cpp). . Added PGM2 GPU registers notes. Added foreground scroll. Fixed end of sprite list handling. Dynamic resolution change. Fixed bug in yzoom code causing hang. . Added default memcard for future use to Knights of Valour 3 (V104, China) . Rewrote Atmel ARM AIC logic and implemented most features (machine\atmel_arm_aic.cpp) . Allow ddpdojh to actually run code from ram rather than treating ram as rom (even if the game doesn't actually care). Added few notes. - pgm2.cpp and igs_m036.cpp: The format of the IGS036 key tables is now compatible with the real ones provided by the internal ARM (machine\igs036crypt.cpp) - segae.cpp: Minor documentation update - tatsumi.cpp . Driver state class separation . Removed calls to driver_data - toaplan2.cpp: Added line reads to GP9001 video controller for polling sync outputs and privatize a few things - tourvis.cpp: Moved known games list to the software list (hash\pce_tourvision.xml) - twinkle.cpp . Many fixes to waveram banking and DMA, most sets are semi-playable now. . Games promoted to working: beatmania IIDX 4th style (GCA03 JAA), beatmania IIDX 6th style (GCB4U JAB), beatmania IIDX 6th style (GCB4U JAA), beatmania IIDX 7th style (GCB44 JAA), beatmania IIDX 8th style (GCC44 JAA) and beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM). . Changed RF5C400 clock to match board notes in driver. Added 8Mb of dummy ram to the RF5C400 and adjusted the banking so that sounds play correctly. Fixed RF5C400 sound regression. This fixes the dog whistling and other issues in the beatmania IIDX games. . Improved LED font from available reference sources. Mapped lamps and dipswitches. Added basic internal artwork. . Changed security card padding from 0x00 to 0xff. Security card for beatmania IIDX 4th & 5th has now been dumped and scrubbed serial numbers. - vectrex.cpp: Quick and dirty regression fix - zn.cpp: Mostly switched to configured banking. NBA Jam Extreme banking still to update. Very preliminary work on supporting save state. Will need more work in various devices. Use optional_memory_bank. - 1941: Added yi22b.1a PAL dump and confirmed lwio.12e dump for clone 1941: Counter Attack (Japan) - Action Fighter: Added 317-0018 decryption key to clones Action Fighter (FD1089B 317-unknown), (FD1089B 317-unknown, analog controls), (System 16B, FD1089A 317-0018), (System 16B, FD1089B 317-unknown) and (System 16B, FD1089B 317-unknown, analog controls) (Games now playable). Fixed year info in clones afightere, afighterf, afighterg and afighterh. - AGEMAME . aristmk5.cpp: Redumped Inca Sun (DHG1577, US), Loco Loot (AHG1513, US) and Unicorn Dreaming (BHG1584, US). Layout updates. . jpmmps.cpp: Added 74LS259 device and correct clocks . mpu4*.cpp: Proper CPU type and XTAL value . stellafr.cpp: Added some devices - Amiga: End driver_data use; make all functions and tables members. Eliminated driver_data dependencies in machine\amigafdc.cpp. - Archimedes (aristmk5.cpp and ertictac.cpp): Clean 8bpp color handling (machine\archimds.cpp) - Armed Police Batrider: Fixed Z80 CPU2 clock - Batman Forever and NBA Jam Extreme: Fixed Acclaim RAX sound - Beezer: Sound section has its own XTAL - Blood Bros.: Verified sprite data in clone West Story by converting original mask rom into bootleg format and figuring out what was scrambled from there, it's a very simple but quite stupid bitswap on 2 of the roms. Made a note that one byte actually differs in the bootleg even after this, since it's been verified on 2 bootlegs it could be the original mask rom has a bad byte in it instead, should really be checked. - Borderline: Demoted clone Borderline (Tranquillizer Gun conversion) due to bad rom dump (never should have been considered working) - Chequered Flag: Notes and demotion to IMPERFECT_COLORS / UNEMULATED_PROTECTION - Fruit Deuce: Added devices - Ghosts'n Goblins: Added correct character rom to clone Ghosts'n Goblins (prototype) - Gradius IV: Fixed RF5C400 sound regression - Head On: Minor documentation update for clone Super Crash (bootleg of Head On) - Iron Horse: Measured clocks - Landing Gear: Fixed throttle control - Mario Bros.: Verified Mario Bros. (US, Unknown Rev) as revision G and identified the unknown PROM as the main cpu memory map decoding PROM. - Megadrive hardware: Removed driver_data usage (machine\megadriv.cpp; drivers\hshavoc.cpp, megadrvb.cpp, megaplay.cpp, megatech.cpp, puckpkmn.cpp and segac2.cpp) - Mighty Warriors: Switched to configured banking - Paint & Puzzle: Updated notes based on schematics - PinMAME . idsa.cpp: Random fixes . wpc_an.cpp: CPU type and clock determined . Updated zira.snd rom for Zira. According to the schematic this is a 2716 rom with a size of 2048 and it contains the same code twice. - Polaroid Instant Memories: Added MC1408 DAC sound. At the moment it simply outputs all the speech strings, one after the other, then stops. - Quizard 3: Decapped and dumped MCU - Spy Hunter: Added CD4099 demuxer for lamps - Surprise Attack: Fixed visible area (ID 06683) - T.T Mahjong: Added Player 2 inputs - Twin Brats: Corrected OKI clock - X the Ball: Added 74LS259 addressable latches - Input port . Eliminated legacy read/write methods and "active bit" nonsense (machine\ticket.cpp) . Fixed random strings of question marks in displayed key names (emu\ioport.cpp) - Dipswitch fixes in aristmk5.cpp, pgm2.cpp, rbmk.cpp, twinkle.cpp and vicdual.cpp - Fixed year info for afighter, anpanman, batlgear, gal3, mastrglf, pacapp, panicprk, shabdama, thunderh and vs2v991 - Fixed rom names in asuka.cpp, bloodbro.cpp, cps1.cpp, gottlieb.cpp, segae.cpp, seta2.cpp and zn.cpp - Description changes of A-Blast (bootleg), Action Fighter (FD1089B 317-unknown), Action Fighter (FD1089B 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-0018), Action Fighter (System 16B, FD1089B 317-unknown), Action Fighter (System 16B, FD1089B 317-unknown, analog controls), Amigo (bootleg of Amidar, set 1), Blood Bros. (Japan), Blood Bros. (World?), Blood Bros. (Japan, rev A), Cadillacs and Dinosaurs (Asia TW 930223), Crush Roller (Famare SA PCB), Fantasy (Germany, set 1), Hang-On Jr. (Rev. B), Margarita Magic (EHG1559, US), Mario Bros. (US, Revision G), Paint 'N Puzzle, Real Battle Mahjong King (Version 8.8), Striker Xtreme (1.02 France), Striker Xtreme (1.03 Germany), Striker Xtreme (1.02 Italy), Striker Xtreme (1.02 Spain), Striker Xtreme (1.01 UK), Tazz-Mania (Arfyc / Rodmar bootleg), Twin Brats (set 2), Twin Brats (set 3) and West Story (bootleg of Blood Bros., set 1) - Renamed (bloodbro) to (bloodbroja), (bloodbroa) to (bloodbroj), (bloodbrob) to (bloodbro), (dangcurv) to (dangcurvj), (deathcox) to (deathcoxo), (filthyr) to (filthyrr), (gijoea) to (gijoeea), (mario) to (mariof), (marioo) to (mario), (mtburn) to (mtburnr), (orleg2) to (orleg2_104cn), (orleg2_101) to (orleg2_101cn), (orleg2_103) to (orleg2_103cn), (penbrosk) to (ablastb), (reelemin) to (reeleminr), (twinbrat) to (twinbrata), (twinbrata) to (twinbratb), (weststry) to (weststory) and (winbid) to (winbidr) - MAME . UI . Fixed can't change into directories that have a "." prefix in their name (ui\filesel.cpp and posixdir.cpp) (ID 06785) . Fixed off-by-one crash (ui\selsoft.cpp) . MEMORY SYSTEM . API change (emu\emumem.cpp): * direct_read_data is now a template which takes the address bus shift as a parameter. * address_space::direct() is now a template method that takes the shift as a parameter and returns a pointer instead of a reference. * The address to give to {read|write}_* on address_space or direct_read_data is now the address one wants to access. Longer explanation: Up until now, the {read|write}_* methods required the caller to give the byte offset instead of the actual address. That's the same on byte-addressing CPUs, e.g. the ones everyone knows, but it's different on the word/long/quad addressing ones (TMS, Sharc, etc...) or the bit-addressing one (TMS340x0). Changing that required templatizing the direct access interface on the bus addressing granularity, historically called address bus shift. Also, since everybody was taking the address of the reference returned by direct(), and structurally didn't have much choice in the matter, it got changed to return a pointer directly. Longest historical explanation: In a cpu core, the hottest memory access, by far, is the opcode fetching. It's also an access with very good locality (doesn't move much, tends to stay in the same rom/ram zone even when jumping around, tends not to hit handlers), which makes efficient caching worthwhile (as in, 30-50% faster core iirc on something like the 6502, but that was 20 years ago and a number of things changed since then). In fact, opcode fetching was, in the distant past, just an array lookup indexed by pc on an offset pointer, which was updated on branches. It didn't stay that way because more elaborate access is often needed (handlers, banking with instructions crossing a bank...) but it still ends up with a frontend of "if the address is still in the current range read from pointer+address otherwise do the slowpath", e.g. two usually correctly predicted branches plus the read most of the time. Then the >8 bits cpus arrived. That was ok, it just required to do the add to a u8 *, then convert to a u16/u32 * and do the read. At the asm level, it was all identical except for the final read, and read_byte/word/long being separate there was no test (and associated overhead) added in the path. Then the word-addressing CPUs arrived with, iirc, the tms cpus used in atari games. They require, to read from the pointer, to shift the address, either explicitely, or implicitely through indexing a u16 *. There were three possibilities: 1. Create a new read_* method for each size and granularity. That amounts to a lot of copy/paste in the end, and functions with identical prototypes so the compiler can't detect you're using the wrong one. 2. Put a variable shift in the read path. That was too expensive especially since the most critical cpus are byte-addressing (68000 at the time was the key). Having bit-adressing cpus which means the shift can either be right or left depending on the variable makes things even worse. 3. Require the caller to do the shift himself when needed. The last solution was chosen, and starting that day the address was a byte offset and not the real address. Which is, actually, quite surprising when writing a new cpu core or, worse, when using the read/write methods from the driver code. But since then, C++ happened. And, in particular, templates with non-type parameters. Suddendly, solution 1 can be done without the copy/paste and with different types allowing to detect (at runtime, but systematically and at startup) if you got it wrong, while still generating optimal code. So it was time to switch to that solution and makes the address parameter sane again. Especially since it makes mucking in the rest of the memory subsystem code a lot more understandable. . Constexpr implies inline, generalise iabs, work around lack of C++14 constexpr in VS2015 (emu\emucore.h and emumem.cpp/h). . Replaced space.machine() with machine() (emu\emumem.cpp) . Eliminated remaining uses of address_space::machine() outside of emumem (debug\debugbuf.cpp, debugcmd.cpp and machine\seibucop\seibucop_cmd.hxx) . Removed machine member of address_space (emu\emumem.cpp) . DEVICES . Fixed -listdevices misplacement of subdevices in some configurations (mame\clifront.cpp) . Moderate overhaul of device_rom_interface: Allow endianness and data/address width to be altered during configuration. Raise memory_space_config from private to protected so it can be overridden. Make entire interface optional (as needed by one device to be added soon). Use interface_post_load instead of explicitly registered delegate. Only call rom_bank_updated when bank actually changes. Removed prototypes for nonexistent functions (emu\dirom.cpp). Documentation update (docs\source\techspecs\device_rom_interface.rst). . Replaced some space.device() calls (drivers\namcos11.cpp, namcos22.cpp, namcos23.cpp, naomi.cpp, rmhaihai.cpp, witch.cpp, x1.cpp, x68k.cpp, xexex.cpp, xmen.cpp, xyonix.cpp, yunsung8.cpp and zn.cpp) . Eliminated device pointer conversion from device_interface (emu\device.h) . Added rewind feature and RAM savestates . How RAM states work: Implemented using util::vectorstream. Instead of dumping m_save.m_entry_list to file, it writes them as binary to vectorstream. Compression is not used, as it would slow down the process. The header is written as usual, also in binary. When a state is loaded, the savestate data gets binary-read from vectorstream. How rewind works: Rewind is optional, it can be turned off through MAME GUI while not running. Rewind capacity is available there too. Rewind step hotkey is available from the standard hotkey menu. In the debugger you have the "rewind" command ("rw" shortcut) that works the same as the hotkey. Every time you advance a frame (pause step), rewinder captures a RAM savestate of the frame you were at. It does the same when you do step into/over/out in the debugger. Every time it captures a new state (and when you unpause), it marks as invalid all its states that go after the current machine time, because input might change, so they are not relevant anymore. It keeps their buffers allocated though, for future use. When rewinder runs out of allowed amount of savestates it can have, it invalidates the first state in the list and tosses its unique_ptr to the end of the list, then it uses its buffer to capture a new state. When you hit the rewind step key, or use "rewind" command in the debugger, it loads a state that is immediately before the current machine time. Invalid states between valid ones are not allowed to appear, as that breaks rewinder integrity and causes problems. Rewinder keeps its own set of ram states as a vector of unique_ptr's. All rewinder operations and errors get reported using machine().popmessage(). . icount was missing from the savestates. When you load a state, icount (*icountptr) would remain whatever it was before loading, messing with the remaining cycles and with the amount of code executed per run() call. This introduced non-determinism and badly influenced usage of savestates while debugging. machine().time() would also return wrong values after that, since it adds remaining cycles (emu\diexec.cpp). . Reset scheduler savestate to what it was for years before rewind. Changing saved variables should be done after thorough testing. right now, adding some vars breaks some machines, adding other vars breaks others. Switch to megabyte-wise capacity. Savestate size greatly differs between machines, relying on state count is unstable. Switch to internal indexing. No longer depends on inaccurate machine time. Rewind accelerator key in debugger (Ctrl+F11). Report capacity hit (once), with some useful info. Make error reports saner. Mention rewind and rewind_capacity in the docs. . Get rid of legacy BITSWAP* (BITSWAP8(_) -> bitswap<8>(_)) (emu\emucore.h) . Stop save and load logging timers unless VERBOSE is set (emu\schedule.cpp) . Changed misleading parameter name (emu\softlist_dev.cpp) . Validity: Prevent insane recursion when multiple slot devices have the same tag (emu\validity.cpp) . PLUGINS . Fixed sentence building by concatenation, and at the same time collapse two translatable strings to one (plugins\cheatfind\init.lua). . Raise a fatal error if LUA console is requested but the console plugin is not found (rather than crashing) (frontend\mame\mame.cpp) . Updated hiscore.dat. Removed duplicate sets, debug print and merged identical entries. . Fixed crlf issue (plugins\data\load_dat.lua) . 3rdparty: Updated GENie, BGFX and BX. Added BIMG since it is separated now, updated all shader binaries and MAME part of code to support new interfaces. . Multi-Language: Updated Brazilian Portuguese, French and Italian translations. Note: All translation updated to follow GNOME Translation Rules for Brazilian Portuguese, this are the same rules for other Linux Distributions, Manuals, etc. Now we can avoid translation conflicts (http://br.gnome.org/GNOMEBR/ErrosFrequentes and http://br.gnome.org/GNOMEBR/GuiaDoTradutor). . Added preliminary YM2608 OPNA support for VGM player - Compiling . Start replacing auto_alloc_* with smart pointers, get rid of reference constants in the debugger in favour of capturing the value in the bind/lambda (cpu\i386\i386.cpp, debug\debugcmd.cpp/h, debugcpu.cpp/h, express.cpp/h, mame\cheat.cpp/h, drivers\amusco.cpp, coolridr.cpp, includes\cave.h, wecleman.h, video\cave.cpp and wecleman.cpp). . Allow compiler a little more optimisation leeway in x86 count_leading_* (emu\validity.cpp, osd\eigccx86.h and eivc.h) - Debugger . Disassemblers are now independant classes. Not only the code is cleaner, but unidasm has access to all the CPU cores again. The interface to the disassembly method has changed from byte buffers to objects that give a result to read methods. This also adds support for lfsr and/or paged PCs. Fixed building with Visual Studio 2017 & Clang 5.0.0 (also tested with GCC 7.2.0). . Reset m_dasm on source switch (debug\debugvw.h and dvdisasm.cpp/h) . Added nicer autoscrolling (debug\dvdisasm.cpp) . Fixed watchpoint hit message for address-shifted processors (debug\debugcpu.cpp). Fixed memory window (debug\dvmemory.cpp). . Changed back to uppercase hex for util::stream_format (debug\debugbuf.cpp) . Set REG_BEAMX/BEAMY/FRAME to 0 on invalid eg. screenless (debug\dvstate.cpp) . Removed stutter in dump command ASCII bytes (debug\debugcmd.cpp) 0.192 - New games: Akai Katana (2010/ 8/13 MASTER VER.), The Big Joke (Version 0.00), Pac-Eight and Player's Edge Plus (PS0239) Jackpot Jewels Slots - New Working games: Flower, Ping-Pong King and Time Attacker - New Non-Working games: Golgo 13: Juusei no Chinkonka (Japan, GLT1 VER.A) and Mushiking The King Of Beetles - Mushiking IV / V / VI (World) - New clones: '99: The Last War (bootleg), The 26th Z (Japan, location test), Action Fighter (FD1089A 317-unknown), Action Fighter (FD1089A 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-unknown, set 1), Action Fighter (System 16B, FD1089A 317-unknown, set 2), Action Fighter (System 16B, unprotected, analog controls), Action Fighter (unprotected), Action Fighter (unprotected, analog controls), Battlecry (Prototype), Battlecry (Version C), Bucky O'Hare (ver AA), Gran Trak 10/Trak 10/Formula K (older) [TTL], Grudge Match (v00.90, Italy, location test?), Gunbird 2 (set 2), Head On N, Landing High Japan (Ver 2.02 O), Martial Masters (ver. 102, 101, 101TW), Taikyoku Base Ball, Thunder Dragon 3 (bootleg of Thunder Dragon 2) and Troopy (bootleg of Mr. Kougar) - New devices: adc0844, adc0848, arm_aic, c8095, cga_cportiii, flower_sound, i4100, i4220, i4300, i8156, i8274_channel, igs036, p8098, scn2681, teac_fd_30a and ymz774 - 8085A CPU . Code readability (just whitespace/comments cleanup here). Moved opcode macros to main file, will convert these to functions. Moved single-use opcodes to execute function. Lowercase/Renamed some functions. . Make cputype an enum, change flags and stuff to constexpr. Shorthand variable types. Changed opcode macros to functions. Cleanup. Added opcode space. - ARM7/9 CPU . Added rudimentary instruction prefetch buffer. Fixes (MESS) GBA NES Classics games. . Added 32- and 64-bit population count utilities. Only used in ARM7 core for now. Requires -msse4.2 or -mpopcnt to use CPU feature on x86 and -mpopcntb to use CPU feature on POWER (cpu\arm7\arm7ops.cpp and osd\eminline.h). . Fixed ARM7_BE and ARM7 MMU regressions . Derived IGS036 type in ARM7/9 core, because it seems like MMU could be different and there are probably other internal devices. . Fixed (?) BLX (LO) thumb opcode in ARM7/9 core, was storing a return address that skipped the following opcode. There might still be ARM9 issues. . LDR/LDRM switch to Thumb mode on ARMv5T (cpu\arm7\arm7ops.cpp). Added ARM v5/9 check. Handle DP-commands ROR case where Rs=32/64, removed few outdated comments. . Added support for high vector option, fixed v5 BLX to save the return address in R14. . Implement BLX Rn instruction for ARM9. (MESS) Nintendo DS ARM9 BIOS gets to the first checkpoint. . Flesh out ARM946ES, added movable DTCM and ITCM support. - CDP1802 CPU: Added WAIT/CLEAR input lines - HuC6280 CPU: Fixed brk logerror - Hyperstone CPUs . Some optimization (cpu\e132xs\e132xs.cpp), Elfin (dgPIX Entertainment Inc. 1999) benches roughly faster. . Removed unnecessary full reinit of regs_decode struct (cpu\e132xs\e132xs.cpp) . Reworked all opcodes, now considerably faster. . Templated all opcodes to reduce code duplication and fixed a few oversights. Fixed ldxx2 local,local case. . Added template check, index move, mask and sum handlers. sum Rd,C,const was incorrectly using the whole SR rather than just the carry value; sums with local register as destination was not burning cycles; negs doesn't need explicit guard against trapping when source is SR as carry flag alone can never cause an overflow. Template register-register mov and correct trap behaviour privilege trap should prevent user state code from writing high global registers; also change DEBUG_PRINTF to standard logmacro.h stuff. . Simplified set opcode, removed some needless use of set_global_register to get some speed back. - M6800 CPU: Reinstated registration of SR for debug expressions (cpu\m68000\m68kcpu.cpp) - M68010/68020/68030 CPUs: Added support for bus error stack frames formats. This fixes common CPU type detection routine: http://www.easy68k.com/EASy68Kforum/viewtopic.php?p=1105#p1105 (cpu\m68000\m68kcpu.h). - MCS-48 CPU: The MCS-48 core needs to be re-written so it works at S-cycle level (if not clock cycle level), but for now I've worked around this case in the least intrusive way possible. - MIPS CPUs . Minor MIPS DRC fastram optimization and simplification (cpu\mips\mips3drc.cpp) . Cleanup TX4925 CPU implementation - PowerPC 4xx/6xx CPUs: Attempt at fixing PPC DRC scheduling (cpu\powerpc\ppcdrc.cpp). This fixed black screen on launch in Scud Race Twin (ID 06615). - SH-3/4 CPU . Added some SH3/4 recompiler changes that got lost at some point. It fixes an issue where 'Mushihime-Sama Futari Black Label' sound would cut out if left in attract mode on first boot due to timer irq 0 being missed and then never refiring due to the way the DRC code blocks work. . Mark DRC cache dirty on reset - TLCS-90 CPU: First step towards modernization of internal peripherals (cpu\tlcs90\tlcs90.cpp) - Z80 CPU: Implemented Z80 HALT output and clear HALT condition during reset. Wakeup (MESS) Ritam 'Monty Plays Scrabble' and 'Master Monty' from HALT instruction using reset. - Williams ADPCM Sound Board: Lower the DAC volume of the williams_adpcm_sound_device (audio\williams.cpp). This fixed missing music in Mortal Kombat (ID 06694). - YMZ770 sound . Added pan, main volume level and clip limit control. Renamed "elem" for readability. Added 2nd volume control and notes. . Preliminary Yamaha YMZ774 emulation . Use cached cos table for YMZ770 MPEG audio decoding (sound\mpeg_audio.cpp) - 6522 VIA: Added some interrupt LOGs - 68681 DUART . DUART drives (MESS) Micro-Term 5510 EEPROMs (mc68681_base_device::ip6_w). Distinguish SCN2681 and MC68681 DUART types. . Use MCFG_DEVICE_ADD instead of custom macro. - 74123 TTL: Use line handlers for single lines (m10.cpp, nyny.cpp, r2dtank.cpp and spiders.cpp) - 74LS259 TTL . Added descriptive names for 74LS259 nibble write handlers to mjsister and rallybik . Added 74LS259 device to jackpool.cpp, pturn.cpp, twincobr.cpp and wardner.cpp - 8155 RIOT: Substantially rewrote timer emulation. Modernized logging. Abandon "RIOT" name properly belonging to MOS 6532. Provided separate device type for 8156. Regression fix for Golden Arrow. - ADC0844 and ADC0848 A/D Converter . Added ADC0844 A/D Converter for input to mcr3.cpp (maxrpm), mcr68.cpp (spyhunt2), micro3d.cpp, midvunit.cpp and midyunit.cpp (term2) . Support ADC0848 variant, some adjustments to differential mode. Added ADC0848 to midxunit.cpp (revx). - CGA video . Added Compaq Portable III video, text modes and color need to be fixed. . Supported 400 line text modes. (MESS) Olivetti M24 also has 400 line text mode. - CHDMAN: Use DeviceIoControl to get disk length, allows chdman to access physical drives on Windows 10 (file\winfile.cpp) - Data East Custom . Fully handle sound latch internal in the DECO 146 device (boogwing.cpp, cninja.cpp, dblewing.cpp, deco32.cpp, dietgo.cpp, funkyjet.cpp, lemmings.cpp and rohga.cpp) . Added DECO CRTC (12MHz/2) and screen raw params for bogeyman.cpp, chanbara.cpp, dec0.cpp, dec8.cpp, firetrap.cpp and ssozumo.cpp - DS12885 RTC: Fixed DS128X/DS1288X main frequency divider. The output frequency must be fixed to 1HZ with these devices. In the MC146818, DV2-DV0 were used to select the input frequency to provide a proper time base. Since the DS12885/87 and DS1685/87 use only the 32.768kHz crystal these 3 bits are used to turn the oscillator on or off and to reset the countdown chain. There are not used anymore to select the main clock divider value. - EEPROM . Added serial EEPROM using new DO write callback to (MESS) TTI SBC (machine\eepromser.cpp). Added reference info for X2444 commands. . Added device emulating 28F010 Flash memory and family (not compatible with JEDEC Flash protocol). Converted (MESS) Interpro to use this device. - Floppy . Don't segfault on empty tracks, fixes (MESS) Einstein 4game (formats\dsk_dsk.cpp) . Converted line handlers to READ/WRITE_LINE_MEMBER to make them devcb-accessible (machine\wd_fdc.cpp; drivers\guab.cpp) . Added TEAC FD-30A 3 inch floppy drive (MESS) Tatung Einstein - I8275 video: Added check to avoid potential buffer overflow - Konami Custom: K051937 actually sets up a register when background should be dimmed, fixes start/end pouring event colors in Chequered Flag. - MC6845 CRT: Minor transparent update refactoring - RS232: Changed 9615 baud configurations to the nominal 9600 baud now that Z80SIO is more tolerant - uPD4701 counter: Better handling of uPD4701 control lines - V9938/9958 video: Converted to use RGB32 bitmaps. Palette has been retained mostly for the sake of the palette viewer, and now reflects the actual programmed values, rather than being a fixed RRRGGGBBB encoding plus a hacky mess for the V9958's YJK colors. V9938-on-V9938 transparent overlay is fixed for meritm.cpp (was broken a few releases ago). - Voodoo GFX . Use SSE routines for texture perspective correction . Suppress function-like macro expansion for MSVC - Z80 DAISY: Added a generic Z80 daisy chain device, for use in drivers with non-Z80 peripherals ((MESS) Einstein). Added irq output callback (cpu\z80\z80daisy_generic.cpp). - Z80 SCC: General cleanup and backport of Z80 SIO improvements (machine\z80scc.cpp) - Z80 SIO . Moved object finder resolution before device_start (emu\device.cpp and machine.cpp). This fixed Z80SIO not safe with attached RS232 port. MAME can crash if a device sets the initial state of the input lines for a z80sio_device at device_start time. . Made async receive behave more like real device. Check that start bit persists for half a clock interval. Sample data bits mid-interval. Handle invalid stop bit as described in Zilog manual. Check parity and latch overrun and parity errors. This fixes the issues with corrupt characters being typed on the Kaypro. Synchronous modes are still broken. The channels are still using device_serial_interface to transmit frames, but receiving is handled entirely in the device class itself. Overruns still aren't handled properly. . Better handling of Rx FIFO and interrupts in async mode. Framing error should always generate interrupt in interrupt-on-first mode. . Moved dlair.cpp and proconn.cpp driver from z80dart.h to z80sio.h . First stab at WRDY emulation. Some logging improvements. Use arays for callbacks. . Don't use device_serial_interface for transmit - it can't support sync modes, on-the-fly register updates, and other weirdness. Better modelling of 1-deep transmit queue. Better RTS/CTS behaviour. Completely overhauled interrupt logic - vectors should be correct for most async modes. Implemented different auto-reset receive errors in MPSC vs SIO. Implemented SDLC transmission including bit stuffing, transmit CRC, abort, and underrun/end-of-message behaviour. Added an SDLC consumer device that logs SNA frame headers and data. . Generalise synchronous transmission to other modes, re-implement break detection. . Implemented enough of synchronous receive mode to pass (MESS) Univac UTS-20 channel A loopback test. Treat disabling transmitter as satisfying a transmit interrupt. Disabled automatic CRC transmission in monosync mode. Clear receive errors on channel reset. Fixed reporting receive errors. - amusco.cpp: Improved colors. Removed VRAM placeholder, allocate it in video_start. - aristmk5.cpp . Added BIOS / USA Set Chip v4.04.08 . Redumped Adonis (BHG1508, US), Boot Scootin' (GHG1012-02, US), Bumble Bugs (CHG0479-03, US), Cash Chameleon (DHG4078-99, US), Enchanted Forest (JHG0415-03, US), The Gambler (EHG0916-02, US), Golden Pyramids (AHG1206-99, US), Magic Garden (AHG1211-99, US), Margarita Magic (EHG1559, US, set 1), Party Gras (BHG1284, US), Sweet Liberty Deluxe (AHG1575, US), Sweethearts II (PHG0742-02, US) and Tropical Delight (PHG0625-02, US). Now the sets pass the checksum and boots. . Reformatted the game drivers spacing to be more readable at first sight - cb2001.cpp: IRQ acknowledgment - cidelsa.cpp: Added WAIT/CLEAR input lines to CDP1802 CPU. Added DO read function to CDP1852 I/O. - cps3.cpp: Fixed CPS3 Multi-game bootlegs and Street Fighter III 2nd Impact bootlegs to use for 6 buttons - crgolf.cpp: Minor update - cv1k.cpp . Demoted all sets to imperfect speed, set audio output to mono. Document dipswitches. Consistent service mode enter button. . Added some SH3/4 recompiler changes that got lost at some point. It fixes an issue where 'Mushihime-Sama Futari Black Label' sound would cut out if left in attract mode on first boot due to timer irq 0 being missed and then never refiring due to the way the DRC code blocks work. . Added YMZ770 pan, main volume level and clip limit control. Added YMZ770 2nd volume control and notes. - cyclemb.cpp: Added preliminary sound for Cycle Maabou and Sky Destroyer - dec0.cpp . Emulated sound protection state machine for Secret Agent/Sly Spy and get rid of ROM patch. Emulated Sly Spy RNG device at $31c00d. This makes gameplay to behave very differently than before, game extensively uses this port to mix up stuff especially with the bosses. . Fixed sound randomly speeds up and eventually dies in bouldash and secretag/slyspy (ID 06740) - dgpix.cpp: Some minor optimization, Elfin benches roughly faster. - dwarfd.cpp: Added check to avoid potential buffer overflow (video\i8275.cpp). This fixed debug assert shortly after start (ID 05761). - firetrk.cpp: Added screen raw params. Got rid of using PORT_CODE on IPT_BUTTONs. - gei.cpp . Moved 'signatures' out of the source and into a ROM, as suggested. . Switched to configured banking . Added save state support . Added default NVRAMs to avoid errors on first boot and signature roms to findout, geimulti, gtsers15, reelfun, reelfun1, sexappl, sprtauth, suprpokr, suprpokra and suprpokrb. . Fixed game checks 'signature' in GEI Multi Game (ID 04651) . Cleanup - hyprduel.cpp: Removed sprite register hack - idsa.cpp: Added PPIs and updated notes - konamigv.cpp . Trackball modernization for btchamp and simpbowl . Better handling of uPD4701 control lines for btchamp - mainevt.cpp . Reversed button1 and button2 as per service mode for The Main Event . Fixed sprite shadows for Devastators - meritm.cpp: V9938-on-V9938 transparent overlay is fixed for meritm.cpp (was broken a few releases ago). This fixed "Run21" game in the Megatouch sets which are missing graphics for black-suited cards (ID 03719). - metro.cpp . Rewritten Imagetek I4100/I4220/I4300 video display processor family, hooked it up. Configure VDP the normal way with its standard XTAL. . ACCESSING_BITS cleanup . Added scanline timer-based vblank interrupt to Bang Bang Ball. This fixed game runs sometimes like slow-motion (ID 00525) . Videoregs are read-backable. This fixed sprite layer disappears entirely in Blazing Tornado after completing single player game (ID 06518). Side effect is that it corrected the ending too (disregard the odd black pens, probably background shouldn’t be there in the first place, pending further investigations). . Added sprite x/y center point registers, removed screen check hack. Mahjong Gakuensai 2 uses RMW access on POST. . Puzzlet actually uses the same window VRAM area RMW as Karate Tournament, clean both. - micro3d.cpp . Added ADC0844 A/D Converter for input and fixed throttle regression. The throttle has been broken since MAME 0.154. Note: Clone Battle of the Solar System (rev. 1.1 3/24/92) doesn't have the analog throttle. . Attach RS232 port to monitor port. Start with "mame f15se -monitor terminal" for example to see debug messages from the game. . Correct and simplify device tags in Micro3D driver. Improved USART behavior for polled operation (machine\mc68901.cpp). - model2.cpp: Input port rationalization - model3.cpp . Added Player 2 inputs for all games and left/right stick for Virtual On 2 . Attempt at fixing PPC DRC scheduling (cpu\powerpc\ppcdrc.cpp). This fixed black screen on launch in Scud Race Twin (ID 06615). . Fixed music and reduced log spam (audio\dsbz80.cpp, machine\m3comm.cpp) - mpu4vid.cpp: More standard device configuration for SCN2674 display controller - n8080.cpp: Directly set 8035 IRQ line rather than generate fake pulses, restores some sounds in HeliFire. - namcond1.cpp . Fixed rotation and scrolling. Small cleanups (video\ygv608.cpp). . Added scrolling-by-row used in NCV1 'Xevious Arrangement' . Fixed scaling effect used in NCV2 'Pac-Man Arrangement' staffroll - namcos10.cpp: Updated hardware and type 3 daughterboard docs - naomi.cpp . Replaced bad dump 317-0437-com.ic3 rom in 'Mushiking The King Of Beetles - Mushiking II / III / III+' . Dumped Wave Runner GP motor board rom - peplus.cpp: Added new gfx1 roms to Player's Edge Plus (XM00009P+XMP00002) Multi-Poker - pgm2.cpp . Preliminary PGM2 emulation. Most video features emulated, Oriental Legend 2 mostly OK. See notes. . Dumped internal IGS036 roms from Oriental Legend 2 (V104, China) and Knights of Valour 2 New Legend (V302, China) . Creating devices for the Atmel ARM AIC and a derived IGS036 CPU. Emulated IGS037 video hardware, this covers sprites (with zooming), tilemaps (including rowscroll) and the priority system. . Fixed (?) BLX (LO) thumb opcode in ARM7/9 core, was storing a return address that skipped the following opcode. There might still be ARM9 issues. . Added pan, main volume level and clip limit control. Added 2nd volume control and notes (sound\ymz770.cpp). . Added yshrink for sprites, line doubling and sprite xgrow/xshrink for basic non-flipped cases. . Support sprite zooming for flipped/reversed cases (lightly tested, only seems used by lightning on orleg2 char select at the moment) . Use pre-calculated cosine table for DCT decoding, yields significant performance improvement (sound\mpeg_audio.cpp). . Still marked NOT_WORKING due to missing memory card emulation (requires simulation of undumped MCU) - piggypas.cpp: XTAL-derived clocks. Focumented some chip types. Added NVRAM. More documentation. - playmark.cpp: Make games in driver respect common/separate Coin slot. Issue: DIPs where defined as "SW1" and conditional statements where looking for DSW1. Also makes coinage into a DEFINE statement and uses PORT_INCLUDE & PORT_MODIFY for clone Big Twin (No Girls Conversion) which only has 1 dipswitch deference. - seattle.cpp and vegas.cpp: SMC91C9X Ethernet controller now working in connected mode with WinPcap or TUN/TAP tunnel - segahang.cpp and segas16b.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of irq0_line_pulse for Sega i8751 interrupt - seibucats.cpp: Dumped obj roms - seta.cpp . A few small cleanups. Documentation update. . Improved wraparound handling for relative inputs (emu\ioport.cpp). This fixed speed difference when rotating player in Caliber 50. . Soundlatch modernization for Wiggie Waggie, Thunder & Lightning (bootleg with Tetris sound) and Ultra Toukon Densetsu . Added ADC device to Zombie Raid - shanghai.cpp: Fixed fast gameplay and sound (ID 06193) - stv.cpp . Fixed line/polyline drawing (video\stvvdp1.cpp), fixes wireframe map in Die Hard Arcade. . Moved internal SCUDSP program/data maps (machine\sega_scu.cpp) into CPU core (cpu\scudsp\scudsp.cpp) . Fixed shanhigw and sokyugrt starts with 2 credits inserted (video\stvvdp2.cpp) (ID 04366) - taitosj.cpp: Fixed ay2,3,4 volume regression. This fixed Elevator Action sound (ID 06527). - techno.cpp: IRQ modernization. Reimplement IRQ generation based on an educated guess. - vegas.cpp: Improved debug messaging for serial port (machine\vrc5074.cpp) - vicdual.cpp . Added bonus sound sample to Depthcharge (http://www.progettosnaps.net/samples/zip/depthch.zip) . Fixed Head On 2 colors and clean up . Added sound samples to Tranquillizer Gun and clone Borderline (Tranquillizer Gun conversion) (http://www.progettosnaps.net/samples/zip/tranqgun.zip) . Mark Space Trek as imperfect graphics. Star field and background gradient is missing. See https://www.youtube.com/watch?v=xsEP_oUygzY. - Champion Base Ball Part-2: Redumped clone Taikyoku Base Ball (previously called Champion Base Ball Part-2 (set 2) and only partially dumped). - Chequered Flag . Fixed dimmed screen condition bug when soft resetting . Improved shadow/highlight code, fixes black rain and lights at dawn. . K051937 sets up a register when background should be dimmed, fixes start/end pouring event colors. . "Black" colored rain definitely don't show up when it starts/ends pouring, fixed tables accordingly. - Darius: Break up "IOC" handlers - Dobou-Chan: Allow GFX ROM test to pass. Added inputs. - Double Wings: Added save item (soundlatch pending) - Flower . Rewrote driver from scratch, fixing multiple issues that persisted in previous implementation. . Changed visible area to 288x224, fixes left-most columns (inside the big ship). Background layers actually had reversed priority (outside and inside the big ship). . Fixed all outputs. Added third Z80, sprite shrink feature, flip screen and other stuff. Fixed zoom points for 32x32 sprites. . Actually using Namco xtal so most likely runs at 60.606060. Fixed various video bugs along the way (most notable one is the priority at the last stage of a loop). . Rewrote custom sound device. Added guessed 'Flower Custom Sound' clock. - Game Magic . Correct error in shadow ram adresses and convert comments to C++ (bus\lpci\i82439tx.cpp) . Not all sothbridges have an internal keyboard controller, RTC, serial and parallel devices. Now southbridge_device does not have them. There is a new southbridge_extended_device that has them. i82371ab_device derives from southbridge_extended_device. Converted comments to C++. - Jackpot Cards: Added 74LS259 addressable latches and NS16550 UART - King & Balloon: Added correct soundrom to King & Balloon (US). Note: The 2nd half was missing ("bye bye" voice cut off). - King of Boxer: Fixed misconfigured NMI gate in clones Ring King (US set 1/2); works again now. - Marine Date . Rewrote driver from scratch, fixing multiple issues that persisted in previous implementation. . Added sea bitmap and flashing when shark appears. Improved sprite/tilemap colors, now more accurate to the references. Fixed priority, both sprite layers are actually above text tilemap. Added player 2 trackball inputs, and global coin lockout. Streamlined and improved collision detection (still not perfect therefore game still marked NOT_WORKING). Sprite offset fixes and minor other changes. . Fixed MAME crashed when starting game (ID 06745) - Monkey Magic: Added sound samples (http://www.progettosnaps.net/samples/zip/mmagic.zip) - Mortal Kombat: Lower the DAC volume of the 'Williams ADPCM Sound Board' (audio\williams.cpp). This fixed missing music in Mortal Kombat (ID 06694). - Out Zone: Fixed screen is misaligned 16 pixels to the left in clone Out Zone (Zero Wing TP-015 PCB conversion) (ID 06749) - Pac-Land: Keep sprite-sprite priorities intact on priority-over-fg sprites. This fixed Pac-Man are displayed in front of the hat in invincible state (ID 06742). - Paint & Puzzle: Added 6522 VIA interface and 8798 MCU dump - Parallel Turn: Added 74LS259 device and coin counters. Removed PULSE_LINE. - Perfect Billiard: Minor doc update & rom label correction - Ping-Pong King . Added preliminary MCU simulation for Ping-Pong King inputs . Added preliminary YM2203 and MSM5205 ADPCM sound. Added P2/ DSW1 / clean stuff and flip screen. . Added sub CPU IRQ ack and MCU input check on state 3 . Fixed input lag protection. DSW2 reading now works too. . Fixed sprite left edge wraparound, made "round" dipsw more verbose, misc cleanups (Game now playable). - SD Gundam Psycho Salamander no Kyoui: Replaced rom patch with a slightly less gross hack. Note: Routine at $134C sends no sound commands if lowest bit is 0. - Sexy Parodius: Demoted game with IMPERFECT_SOUND & UNEMULATED_PROTECTION - Space Firebird: Fixed DAC sound (ID 06766) - Super Othello: Very minor cleanups + preparation for save state support - Syusse Oozumou: Fixed wrong colors in the title logo (ID 03804) - Tekken Tag Tournament: Fixed clones (World, TEG2/VER.C1, set 2) and (US, TEG3/VER.B) doesn't boot - Thunder Ceptor: Properly hooked up 3D scope view to 3-D Thunder Ceptor II - Time Attacker . Added ball, edges and wall drawing. Fixed background color and visible area. . Added paddle input & drawing. Added bottom edge and enable feature. Added paddle shrink, hooked up flip screen and bricks color bank. . Fixed some dips/inputs. Emulated brick blinking effect. Added sound samples (http://www.progettosnaps.net/samples/zip/tattack.zip) (Game now playable). - Time Crisis 3: Added dump of V291 I/O board - Wai Wai Jockey Gate-In!: Fixed wrong colors in Wai Wai Jockey Gate-In! and clone Photo Finish (bootleg?) (ID 03805) - Wiping: Removed unused variable. Added guessed 'Wiping Custom Sound' clock. - World Grand Prix: Added save state support, removed anonymous timers and killed trampolines. - Zoofari: Cleanup TX4925 CPU implementation (cpu\mips\mips3.cpp) - Input port . Lower beeper volume (machine\terminal.cpp) . Added a little logging to machine\input_merger.cpp . Better wraparound handling for relative inputs (emu\ioport.cpp). This fixed speed difference when rotating player in Caliber 50 (ID 06759). Fixed core rounding error with analog input sensitivity scaling (emu\ioport.cpp). - Dipswitch fixes in bishi.cpp, cv1k.cpp, cyclemb.cpp, gladiatr.cpp, marinedt.cpp, pgm2.cpp, playmark.cpp, popeye.cpp and tattack.cpp - Fixed rom names in cps2.cpp, itech8.cpp, freekick.cpp, naomi.cpp and pacman.cpp - Description changes of 3-D Thunder Ceptor II, Battlecry (Version E), Daytona USA (Japan), Grudge Match (v00.80, prototype), Gunbird 2 (set 1), Knights of Valour 2 New Legend (V300, China), Landing High Japan (Ver 2.01 OK), Last Fortress - Toride (China, Rev A), Last Fortress - Toride (China, Rev C), Last Fortress - Toride (Japan), Last Fortress - Toride (Germany), Mr. Kougar (bootleg), Mr. Kougar (German bootleg), unknown Fun World A0-1 game, unknown Fun World A7-11 game 1, unknown Fun World A7-11 game 2, unknown Inter Games poker, unknown game (MAC #1808), unknown poker game PKII/DM, unknown Sega gambling game (M1 Satellite board) and unknown 'VIP 2000' game - Renamed (champbb2a) to (tbasebal), (grudge) to (grudgep), (mtkob2) to (mushike), (orleg2oa) to (orleg2_101), (orleg2o) to (orleg2_103), (bbustersj) to (bbustersja), (bbustersja) to (bbustersj), (kov2nlo) to (kov2nl_301) and (kov2nloa) to (kov2nl_300) - MAME . VIDEO RENDERING SYSTEM: Various palette and screen improvements. Use device_resolve_objects to removed the need for resolve_palette. Palette format no longer depends on configuration of first screen (emu\dipalette.cpp, divideo.cpp and screen.cpp). . DEVICE: Moved object finder resolution before device_start (emu\device.cpp and machine.cpp) . UI . Fixed tilemap live updates regression (ui\viewgfx.cpp) . Fixed Reset was sometimes ignored in File Manager (ui\filemngr.cpp) . Removed irqN_line_pulse interrupt generators. Vestigial commented-out uses remain in cdi.cpp. This does not affect nmi_line_pulse (emu\driver.cpp/h). . Replaced driver_device::generic_pulse_irq_line with device_execute_interface::pulse_input_line + CPU minimum quantum. This "Pulse" an input line by asserting it and then clearing it later. Correct irq pulse timing in dotrikun.cpp and duration in firetrk.cpp. For meyc8088.cpp the interrupt is auto cleared by INTA (emu\diexec.cpp, driver.cpp, audio\dcs.cpp, rax.cpp, drivers\cball.cpp, changela.cpp, cvs.cpp, dotrikun.cpp, equites.cpp, firetrk.cpp, fitfight.cpp, gaelco3d.cpp, homedata.cpp, igs_m027.cpp, m90.cpp, mgolf.cpp, namcond1.cpp, namcos22.cpp, pntnpuzl.cpp, ssfindo.cpp, starshp1.cpp, zac_2.cpp, machine/3do.cpp, archimds.cpp, galaxold.cpp, namcos2.cpp and pgmprot_igs027a_type3.cpp). . Merged popcount implementation in emucore.h with the new osd\eminline.h (see namcona1.cpp driver; printf("popcount ...population_count_32(m_keyval...)) . Added MACHINE_NODEVICE_LAN flags (cischeat.cpp, cps2.cpp, namcofl.cpp, namcos11.cpp, namcos22.cpp, neogeo.cpp and segaxbd.cpp) and CAMERA and MACHINE_NODEVICE_PRINTER flags (neoprint.cpp, stv.cpp and taito_b.cpp) (ID 06586) . Get rid of branches in cout_leading_zeros and ount_leading_ones (osd\eigccppc.h and eigccx86.h) . PLUGINS: Added option to hiscore.ini to only_save_at_exit (hiscore\init.lua) . Multi-Language: Updated Dutch, Greek, Portuguese (PT-PT) and Spanish translations - SDLMAME: Make SDL input less eager to generate double-click events when mouse doesn't move between clicks (input\input_sdl.cpp) - Compiling: Get rid of some "auto" (cpu\z180\z180.cpp, sound\ymz770.cpp and drivers\gaelco3d.cpp) 0.191 - New Working games: Big Casino, Target Hits (ver 1.1, Checksum 5152) and Target Hits (ver 1.0, Checksum FBCB) - New Non-Working games: Baby Boom Challenge, Casino Strip I (Poker version, for Pioneer LD, set 1), Casino Strip II (Poker version, for Sony LD), Casino Strip III (Poker version, for Sony LD), Casino Strip IX (Poker version, for Sony LD), Casino Strip Private Eyes / All Start (Poker version, for Sony LD), Casino Strip V (Poker version, for Pioneer LD), Casino Strip V (Shooting Game version, for Pioneer LD), Casino Strip VI (Poker version, for Sony LD), Casino Strip VI (Shooting Game version, for Pioneer LD), Casino Strip VIII (Poker version, for Sony LD), Casino Strip VIII (Shooting Game version, for Pioneer LD), Casino Strip Vivid 1 (Poker version, for Sony LD), Casino Strip X (Poker version, for Sony LD), Casino Strip XI (Shooting Game version, for Pioneer LD), Casino Strip XII (Poker version, for Sony LD), Dobou-Chan (ver JAA), E-Touch Mahjong Series #2: Joshiryou de NE! (Japan), E-Touch Mahjong Series #6: Scandal Blue - Midara na Daishou (Japan), E-Touch Mahjong Series #7: Trap Zone - Yokubou no Kaisoku Densha (Japan), Gokidetor, Note Chance, Ocha-Ken Hot Medal and Ton Puu Mahjong [BET] (Japan) - New clones: Alien3: The Gun (Japan), Athena (bootleg), Biomechanical Toy (Ver. 1.0.1878), Cabal (UK, Joystick), Casino Strip XI (Poker version, for Sony LD, set 2), Cobra Command (M.A.C.H. 3 hardware, set 2), Cyberball (rev 1), Flash Point (Japan, bootleg set 2), G-LOC R360 (Japan), Knights of the Round (bootleg, World 911127), Knights of Valour 3 (V104, China), Knights of Valour 3 (V100, China), Poker Ladies (Censored bootleg, set 2), Rod-Land (World, set 2), SD Gundam Sangokushi Rainbow Tairiku Senki (Korea), Super Hang-On (Hang-On conversion, Beta bootleg), Target Hits (ver 1.1, Checksum 86E1), Tecmo World Cup '94 (set 3), TH Strikes Back (Non North America, Version 1.0, Checksum 020EB356), unknown 'Space Invaders' gambling game (set 2), Virtua Athletics / Virtua Athlete (prototype) and World Series: The Season (rev 0) - New PinMAME games: 301/Bullseye (Traditional Scoring), A.G. Soccer Ball (R07u), Cheetah (Blue Cabinet), Eight Ball (rev. 17), Time Warp (L-3) and Trident - New drivers: anes.cpp, gokidetor.cpp, notechan.cpp and seibucats.cpp - New devices: i8212, pc060ha, sega_scu and smpc_hle - 8085A CPU: Correct a few opcode names (cpu\i8085\8085dasm.cpp) - DS5002FP MCU . Added DS5002FP SRAM dumps to Target Hits and clone (Games now playable). Bring visible area down to size of test screen, seems more likely. See https://youtu.be/ChJbrTF2dBs. . Dumped Touch & Go DS5002FP SRAM from 2 more boards, used that dump to verify/correct the SRAM image. - Dynamic Re-Compiling . Changed SSE control to not use Denormals-Are-Zero. Allows MIPs DRC to function correctly and fixes mismatch between MIPs DRC and non-DRC modes (cpu\drcbex64.cpp). Fixes various effects in Gauntlet Legends and Gauntlet Dark Legacy cause more damage than they probably should (64-bit only) (ID 06724). . Fixed compile due to unused variable (cpu\uml.cpp) - I386 CPU: Use correct stack size in retf - M6800 CPU: Fixed behaviour of V flag #2 in CPX (compare X) instruction (m6800\6800ops.hxx). Previous fix for CPX a year ago (MAME 0.175) was flawed and didn't handle overflow properly. - M6809 CPU: Fixed overflow flag problem with SBC8 and ADC8 (cpu\m6809\base6x09.ops) (ID 06719). Credit goes to Pierre Sarrazin and Tim Lindner for investigating/finding this bug. - SCUDSP CPU . Fixed register state for debugger . Moved SCU related functions inside a device (machine\sega_scu.cpp) - SH-3/4 CPU . Merged Hitachi SuperH CPU cores and implemented a preliminary SH3/SH4 recompiler . Recompiler is currently enabled for Cave CV-1000 but disabled for Sega NAOMI and can more than double the benchmark speed of CV-1000 games. - Z8000/Z8002 CPU: The Z8000 daisy chain is different enough from the Z80 that it'll probably need it's own implementation if anything uses it. The (MESS) P8000 (16bit Board) uses glue logic to make Z80 daisy chain devices work. - EEPROM: Removed endianness check (machine\eeprom.cpp) - Floppy . Don't set mon_w(0) if there's no image otherwise you have to insert, remove and insert a disk again before ready is set (imagedev\floppy.cpp). . Don't change sides if the drive has only one head (imagedev\floppy.h) - HuC6270 video . Inverted h/vsync logic for interrupts, fixes several PC Engine hangs (video\huc6270.cpp). . VRAM is actually only 0-0x7fff, area 0x8000-0xffff is open bus and cannot be written to. . Moved VRAM-VRAM DMA from vblank callback to hsync, fixes extended/Unexpected periods of black screen in (MESS) PC Engine Takeda Shingen (ID 06701). . Actually battlera.cpp can access upper VRAM bounds, fixed regression. - Imgtool: Created a more flexible imgtool::datetime structure for use within Imgtool. This is intended to replace most usage of time_t. Changing the granularity of imgtool_clock from 1ms to 100ns, as per Vas' suggestion. Created arbitrary_datetime in timeconv.h to facilitate interpretation of datetime info. I concluded that invoking std::mktime on manually assembled std::tm is bad, because it is indeterminate how the std::tm members may be "dominant". This required that I go further in imgtool, and updated a number of drivers (imgtool\modules\amiga.cpp, cybiko.cpp, cybikoxt.cpp, fat.cpp, mac.cpp, macbin.cpp, macutil.cpp, prodos.cpp and thomson.cpp) and eliminated the parameter of imgtool::datetime that takes std::tm. - MC146818 RTC: Fixed main interrupt flag - Taito Custom: Draw a nominal distinction between PC060HA and TC0140SYT. Separated Raimais configuration and unified video. Clone Cameltry (World, YM2203 + M6295) uses PC060HA. Darius more likely to use PC060HA instead of TC0140SYT. - Voodoo GFX . Use optimized routine to get color data (video\vooddefs.h) . Use table lookup for RGB565 conversion (video\vooddefs.h) . Added some code optimizations and reorganized a few function calls to make profiling easier (video\vooddefs.h, video\voodoo.cpp). . Incorporated some more SSE optimizations (video\rgbsse.h) . Check for starting x outside of clipping rectangle and fix clipping xstop (video\vooddefs.h) - Z80 DART/SCC/SIO . Eliminated custom MCFG_Z80DART_ADD/Z80SIO_ADD macros . Inverted DCD status bit in Z80 SIO . Z80 SIO and Z80 SCC now returns CPU specific default vector when no interrupt found to acknowledge. . Fixed SCC interrupt mask generation - avt.cpp: Added devices. Added notes from the remnants of the schematic. Fixed regression and added notes. - bishi.cpp: Added input labels to Bishi Bashi and Super Bishi Bashi based on in-game and cabinet images - cv1k.cpp: Implemented a preliminary SH3 recompiler. Recompiler is currently enabled for Cave CV-1000 and can more than double the benchmark speed of CV-1000 games. - dec0.cpp . Updated inputs. Added input labels for most games in the driver and removed unused buttons. . Updated positional rotary for Heavy Barrel/Midnight Resistance to use remap table . Made Boulder Dash to use 4way stick as per manual . Hooked up priority video port to Midnight Resistance bootlegs. This fixed missing sprites in the section where the player saves the family (and gets powerups) and the ending. - cedar_magnet.cpp: Fixed typo in audio\efo_zsu.cpp (MCFG_DEVICE_ADD("fifo",HC40105 -> CD40105) - gaelco.cpp . Fixed various clock speeds (biomtoy, biomtoya, maniacsp, squash and thoop) . Added PCB layout for Biomechanical Toy - gcpinbal.cpp: Name keys as per game's test screen - jalmah.cpp: Improved fake palette DMA behaviour, avoid corrupt colors for girls. - micro3d.cpp: Fixed TCDCR register in MC68901 MFP. Bits 6-4 are used for timer C and bits 2-0 are used for timer D, see https://www.nxp.com/docs/en/reference-manual/MC68901UM.pdf page 43. - namcond1.cpp . Rewrote built in RAM access control. Added screen control 7, 8 & 9 (video\ygv608.cpp). . Fixed page select boundaries for tilemap drawing (video\ygv608.cpp), fixes Namco Classic Collection Vol.2 garbage gfxs in attract mode. . Reset pattern name table states on mode changes (video\ygv608.cpp), fixes corrupt tiles in 'Mappy Arrangement' of Namco Classic Collection Vol.1. . Added screen control 11 (layer transparency enable), made POST screens again green for NCV1 & 2. . Kill legacy code, legacy register code and legacy ports variables (video\ygv608.cpp). . Enabled sprite wraparound when both sx and sy past clipping boundaries, fixes Namco Classics Vol. 2 disappearing char on game select. . Sprite drawing cleanups. Added screen control 12. Fixed CRTC vblank period, fixes NCV2: Dig Dug Original regression. Added note about missing registers. - naomi.cpp . Converted last remaining key data to PIC binary for Azumanga Daioh Puzzle Bobble . Decap and identify Atomiswave 'ROMEO' ASIC - segae.cpp: Minor documentation updates. Document Megumi Rescue. - segag80r.cpp: Replaced protection kludge with something less horrible - segas16b.cpp: Some corrections to Aurail documentation - segasp.cpp: Network firmware ver 1.25 dumped - seibucats.cpp: Revised old notes; some address map findings. - stv.cpp . Fixed STV crashing regression, make m_cart_reg explicitly nullptr if not initialized. . SMPC device-ification (System Manager and Peripheral Control MCU simulation; machine\smpc.cpp) . Reset/halt/nmi lines delegation. Moved IREG & OREG to internal device state. Execute commands internal to the device for ST-V. . Simulated SETTIME bit behaviour if an invalid NVRAM data is found for Sega Saturn like original hardware does. All Sega Saturn ROM sets now calls the BIOS setup if NVRAM is uninitialized, setting up proper defaults. . Added remaining devices, removed almost all trampolines, cleanups and merged implementations between ST-V and Saturn. . Moved SCU related functions inside a device (machine\sega_scu.cpp) and added DMA save state registration . Added ROZ mode 3, fixes split screen in 'Taisen Tanto-R Sashissu!!', backgrounds in 'Touryuu Densetsu Elan-Doree / Elan Doree' and Guy stage in 'Final Fight Revenge' (video\stvvdp2.cpp). . Fixed potential crash in video\stvvdp1.cpp. CEF bit gets reset when the framebuffers get swapped (video\stvvdp1.cpp), fixes (MESS) 'Twinkle Star Sprites' arcade mode hang at least. . Use explicit AM_REGION to prevent unnecessary copying; use AM_MIRROR for ROM mirrors. . Don't downcast controllers that aren't configured (machine\smpc.cpp) . Modernized BIOS mirroring; fix up finders and region lengths/widths. . Don't let SCU DSP go anywhere, use device_reset_after_children() (machine\sega_scu.cpp). . Fixed Guardian Force hangs after insert coin (ID 06697). The game tests an exclusive monitor mode bit to be 1 from title screen to gameplay. Sea Bass Fishing explicitly wants this bit to be 0 when screen is disabled from bios to game transition. . Fixed Sport Fishing 2 'No CDROM found' regression. Patch BIOS to actually return a country code. Added bare bones MPEG CD commands. Game now loops into attract mode with mostly missing graphics (MPEG video logic not yet added). . Added Batman Forever input labels (Jump, Punch and Kick) - supbtime.cpp . Merged tumblep.cpp with supbtime.cpp driver. Removed duplicate code. . Screen raw parameters and XTAL values. Added DIP locations to all games. . Added PAL dumps for Super Burger Time - taito_b.cpp: Fixed pixel layer offset and enable for Hit the Ice - tecmo.cpp and tecmo16.cpp: Soundlatch modernization - vegas.cpp: Changed SSE control to not use Denormals-Are-Zero. Allows MIPs DRC to function correctly and fixes mismatch between MIPs DRC and non-DRC modes (cpu\drcbex64.cpp). Fixes various effects in Gauntlet Legends and Gauntlet Dark Legacy cause more damage than they probably should (64-bit only) (ID 06724). - Air Inferno: Dumped controller rom - Ameri-Hockey . Fixed Z8 disassembly of "LDE Irr, r" . Make game play a few noises - Big 10, Pyon Pyon Jump and TonTon: In according Success website (https://www.success-corp.co.jp/developments/works), Big 10 is Success gambing game, 'Pyon Pyon Jump' year is 1991 and release year is 1985 and 'Waku Waku Doubutsu Land TonTon' year is 1987 (ID 06487). - Big Casino: Fixed input (Game now playable) - Bottom of the Ninth: Fixed K051960 gfx rom loading (sprites have incorrect colors) in clone Bottom of the Ninth (version N) (ID 06690) - Bubble Bobble . Use MCFG_SCREEN_VBLANK_CALLBACK instead of irq0_line_pulse . Fixed sets with no MCU - Capriccio Spin 2: Reduced address range for TE7750; add some notes on mystery writes. - Denjin Makai: Fixed background pen colors - Double Axle: Saner interleave CPU timings, attempt to fix road layer getting stuck on continue. - Gauntlet: Reinstated correct size for gfx1 rom 136037-104.6p (second half 0x00), which was chopped off a long time ago. - Hippodrome: Demoted clone Fighting Fantasy (bootleg with 68705) to MACHINE_NOT_WORKING. Note: Game doesn't move on when killing the Lamia, is the MCU involved? - Kick Off: Fixed rom loading, OKI2 now plays proper crowd cheering. - Mahjong Tenkaigen: Fixed credits lost after exiting the game. The game checks for the the string "A WARNING.IF YOU COPY OUR ITEMS,WE REVENGE BY ALL MEANS." at address 0x6E17, and will reset everything if the string does not match when the game starts. I'm not sure what the exact NVRAM address is, but at least this works. - Martial Champion: Fixed game does not disable interrupts during EEPROM read when in test mode (ID 00759) - Metal Black: Fixed inverted Single/Dual settings for 'Upright Controls' dipswitch - PinMAME . Fixed CPU type and added 6522 VIA to Escape (jvh.cpp) . Super Star (Recreativos Franco): Renamed I8212 IRQ to INT to agree with Intel pin names. I8212 overhaul: Changed the mode setting from a line write to an input callback. This is based on the observation that MD is nearly always tied to either Vcc or GND on actual hardware. Make the mode a scoped enumeration. Added strobed write handler for input mode. This allows the device to be hooked up in supstarf in place of generic_latch_8_device. Added interrupt acknowledge callback for future use. Added extensive introductory comments. - Qix: Added some documentation to clone Qix (set 2, larger roms). Note: The same ROMs, with different labels, were also found on an original Taito TT Qix 2 PCB set. - Super Pinball Action: Provisional MCFG_SCREEN_RAW_PARAMS. Acknowledge main IRQ; restore legacy screen configuration due to missing sprites. - Tokio: Removed partial updates from Tokio video, fixes graphic glitches on the right side of the screen (ID 06691) - Wheels & Fire: Converted palette to RAMDAC device - Input port . Tighten up scope. Get rid of vestigial palette that was breaking generic terminal when it isn't first screen (machine\terminal.cpp). . Expose condition for dipswitches, configuration entries and adjusters. This eliminates ambiguities between settings with different conditions and allows a frontend/tool to generate a dipswitch preview (emu\ioport.h). . Added support for multiple PORT_CHAR() bindings, and adopted in the (MESS) CoCo driver. . Proposed fix for rotary positional joystick with skipped positions (emu\ioport.cpp) (ID 06154) . Make xinput analog triggers half-axes and default IPT_PEDAL2 to RZ- instead of Z+, placing IPT_PEDAL and IPT_PEDAL2 on separate axes. - Dipswitch fixes in supbtime.cpp, stv.cpp and taito_f2.cpp - Fixed rom names in by17.cpp, itech8.cpp, naomi.cpp, st_mp200.cpp and thoop2.cpp - Description changes of 301/Bullseye (301 Darts Scoring), A.G. Soccer Ball (R18u), Casino Strip I (Poker version, for Pioneer LD, set 2), Casino Strip IX (Poker version, for Pioneer LD), Casino Strip VIII (Poker version, for Pioneer LD), Casino Strip XI (Poker version, for Sony LD, set 1), Cheetah (Black Cabinet), Cobra Command (M.A.C.H. 3 hardware, set 1), Cyvern - The Dragon Weapons (US), Cyvern - The Dragon Weapons (Japan) (ID 06704), Dragon Ball Z (rev A), Dragon Ball Z (rev B), Dragon Ball Z 2 - Super Battle, Eight Ball (rev. 20) (ID 06713), Flash Point (Japan, bootleg set 1), G-LOC R360 (World), The House of the Dead, The House of the Dead 2 (USA), The House of the Dead 2, The House of the Dead 2 (prototype)', The House of the Dead 4 (Export) (Rev B), The House of the Dead 4 (Export) (Rev A), The House of the Dead EX (Japan), Meteor (First release), Meteor (Bug fix release), Naomi The House of the Dead 2 Bios, Oriental Legend 2 (Korea) / Xi You Shi E Zhuan Super Plus (World, China, Japan, Hong Kong, Taiwan) (ver. 205) [Oriental Ex], Panic Park (World, PNP2 Ver. A), Poker Ladies (Censored bootleg, set 1), Rod-Land (World, set 1), SD Gundam Sangokushi Rainbow Tairiku Senki (Japan), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B (prototype), Super Strike Bowling (V1), Target Hits (ver 1.1, Checksum 5152), Target Hits (ver 1.0, Checksum FBCB), TH Strikes Back (Non North America, Version 1.0, Checksum 020E0867), unknown 'Pac-Man' gambling game, unknown 'Space Invaders' gambling game (set 1) and World Series: The Season (rev 1) - Renamed (cstrip) to (cs1_spp2), (cstripix) to (cs9_spp), (cstripviii) to (cs8_spp), (cstripxi) to (cs11_sps), (meteorp) to (meteorpo), (meteorp2) to (meteorp), (kov3) to (kov3_102), (targetha) to (targeth10), (trident) to (tridento) and (unkfr) to (unksig) - MAME . VIDEO RENDERING SYSTEM . Generated layouts for systems with three or more screens, fixes crash with four or more emulated screens (emu\render.cpp). Fixed unused variable error compiling with MSVC (emu\render.cpp). . Rather simple performance optimization (video\rgbsse.h and validity.cpp). Optimized some SSE routines. Created a generic getter instead of having individual color operation. Allow up to 12 bits for scaling factors (video\rgbsse.h). Clamp intermediate values to u8. . Fixed layout files loading (emu\render.cpp) (Work around for GCC compiler bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81721) . Device state interface (emu\distate.cpp) . Polymorphism and std::function for entries. Created a templated subclass of device_state_entry to provide separate read/write interfaces for registers of varying widths. The efficiency impact of this should be minimal, given that this eliminates the need to make each byte width a subcase for reads and writes. Created similarly templated "pseudo-register" versions of device_state_entry that provides custom read/write interfaces through std::function. The intent of this is to eventually replace the dummy register + state_export interface hitherto necessary to provide debugger access to bankswitched or computed state registers. State registers can now be made read-only, and this is automatically done now when state_add is called with a std::function read handler but no write handler. This property is honored by MAME debug expressions. . Added override keyword . Removed explicit instantiations that were causing linking errors in tools build. . Explicitly allow floating point values for state registers (cpu\dsp32\dsp32.cpp, powerpc\ppccom.cpp and machine\netlist.cpp). Note: The internal debugger's expression interpreter is not set up to handle floating point values at all, so they remain disabled there. . Polymorphic classes need virtual destructors . PLUGINS . Added input sequence cheats (plugins\cheat\init.lua). Fixed 'no xml or simple for ram_device cheat'. . Bail if database not open (plugins\data\data_marp.lua) . Updated hiscore.dat (plugins\hiscore\hiscore.dat) . Multi-Language . Updated Chinese, German, Greek, Japanese, Portuguese, Serbian and Russian translations . Added LUA translation to makefile and regenerated translations . Improved localisation: Changed makefile rules to treat mame.pot as a target so rules can depend on it. Put mame.pot inside the build directory so it will get cleaned. Couldn't get xgettext to scrape LUA and C++ in the same command and still remove stale strings. Use larger strings and format specifiers to fix some localisation issues: Issue with "None" lacking context in Russian and Turkish translations. Issue with "Not implemented" changing depending on the noun in Serbian. Issues with LUA plugins not allowing for languages with different grammar/punctuation. . Removed timer_device from emu.h and move it out of src\emu . UI . Fixed an options overhaul regression. This crash (discovered by Wizz) had the following symptoms: 1. Start MAME, 2. Choose "Configure Machine" and 3. Choose "Video Options"... CRASH. This was the result of the options editor not having a fully formed list of options where it was expecting one. The fix is to change the declaration of emu_options to one that have full OSD options (it is possible that SDLMAME needs something slightly different). . Actually make sure OSD options are included when saving through UI (ui\ui.cpp) (ID 06637), fixes also configuring machine level "Video Option" causes crash (ID 06656). . Small fixes to general info panel on internal UI. This fixed unknown numbers showing up at the right side panel (ID 06702). . Fixed the last used game is not saved, if you exit MAME (ui\selgame.cpp) (ID 06711). . Fix for prescale value entry. Top prescale value allowed via command-line is 3 (ID 06720). . Avert potential crash when populating DSW menu (ui\inputmap.cpp) . LISTXML . Removed deprecated attributes from -listxml output and DTD (mame\info.cpp) . Expose condition for dipswitches, configuration entries and adjusters. This eliminates ambiguities between settings with different conditions and allows a frontend/tool to generate a dipswitch preview (emu\ioport.h). . Reduced number of calls to fprintf - saves overhead of setting up the formatting engine (mame\info.cpp). - MAC OS X: Xcode 9 compile fix (ui\selgame.cpp) - SDLMAME: Fixed zexall build target (zexall\main.cpp) - Compiling . Fixed compile warning under Emscripten (3rdparty\asio\include\asio\detail\socket_types.hpp) . Restored ROM directory, it's used when building packages. 0.190 - New games: unknown Italian poker game - New Working games: Alligator Hunt (Spain, protected), Big Buck Hunter, Big Buck Hunter II, Big Buck Hunter Call of the Wild, Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994), Glass (Ver 1.0, Break Edition, Checksum C5513F3C), Glass (Ver 1.0, Break Edition, Checksum D3864FDB), Great Guns, Maniac Square (protected, Version 1.0, Checksum CF2D), Slap Fight (A76 set, GX-006-A PCB) and Virtual Pool - New Non-Working games: Bingo Wave, Cisco/Fisco 400 [TTL], Gaelco Football, Gran Trak 10/Trak 10/Formula K [TTL], Gran Trak 20/Trak 20/Twin Racer [TTL], Le Mans [TTL] and Qwak!/Quack [TTL] - New clones: Alligator Hunt (World, protected), Beast Busters (Japan, Version 2, 3 Player), Big Buck Hunter - Shooter's Challenge (v1.60.01), Chuka Taisen (Japan) (P0-025-A PCB), Iron Horse (version K), Kick Off (bootleg), Lady Master of Kung Fu (set 2, older), Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 1.0) (AT89c52 protected), Maniac Square (protected, Version 1.0, Checksum DEEE), Robot Hunting (bootleg of Death Race) [TTL], Royal Card / Royal Jackpot (with a third draw)(encrypted), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B -P, Syvalion (US, PS2 Taito Legends 2) and Syvalion (World, PS2 Taito Legends 2) - New TourVision games (Softwarelist: hash\pce_tourvision.xml): Bomberman 93, Die Hard, Hit The Ice and Knight Rider Special - New PinMAME games: Guns N Roses (2.00) and Meteor (Stern, set 2) - New drivers: bingowav.cpp - New devices: amd_29f800b_16bit, arm946es, deco_irq, i82072, lc7535, mc68340duart, mc68340sermod, mc68340timmod, mea8000 and ta7630 - ADSP21062 CPU: Removed leftover debug code - ARM7 CPU: Various changes. Added ARM946ES variant. Fixed up CPU ID values. - COP400 CPU: . Emulated COP402 MCU in Quiz Punch II . Rewrote the execution control logic to fetch each byte of an instruction separately in one pass of the main loop. This provides EEPROM-compatible timing for the SIO shift register, allowing the 93C46 on Quiz Punch II to be read and written properly (though its default contents are a bad dump). . Added M pseudo-register (internal RAM referenced by B) to debugger state . Added T register to debugger state on devices where it only affects SKT . The SIO state is now displayed in binary when it is defined as a shift register . Skipped instructions and the SKIP flag can be debugged by compile-time switch (disabled by default) - M68000 CPU: Fixed abcd/sbcd/nbcd opcodes to pass 68k-bcd-verifier (cpu\m68000\m68k_in.cpp). FlameWing has a test that claims to exhaustively test BCD instructions: https://github.com/flamewing/68k-bcd-verifier. Verified the test on MegaDrive Model1 (68000). - M68705 CPU: Fixed corrupt bytes in two MC68705 dumps of clones Arkanoid (Japan, newer) and Nekketsu Kouha Kunio-kun (Japan) after re-analysis of raw dump data. - MC68340 CPU . Fixed MCR register enum error and silented some logerror spam by turning them into LOGx statements (machine\68340tmu.h) . Deskeletonized the serial module as a device derived from the DUART device defined in mc68681.cpp (machine\68340.cpp and 68340ser.cpp). Fixed SIM module read register bug and added informative chip select logic LOG messages (machine\68340sim.cpp). Fixed -validate errors and made slight cleanup. . Simplified code by making the timer module implementation a device and created two independent instanses, as it should be. - MN1020012A CPU: Fixed savestate issue - PSXCPU: Implemented program counter break point to PlayStation CPU & re-added PlayStation EXE, CPE & PSF loading. - uPD7725 CPU . Updated OV1 and S1 flag calculation to be correct based on AWJ's NESdev forums post and the original datasheets. . DPL bits of the instruction field are ignored if DP is the destination register of the current opcode. Similarly, RPDCR bit is ignored if RP is the destination register of the current opcode. - SAA1099 sound: Removed unnecessary device tag from logerror messages - Sound Interface . Soundlatch modernization in 1942.cpp, airbustr.cpp, aquarium.cpp, astrocde.cpp, bking.cpp, bombjack.cpp, dacholer.cpp, ddragon3.cpp, deniam.cpp, exterm.cpp, gaelco3d.cpp, gaiden.cpp, karnov.cpp, lkage.cpp, m90.cpp, mainsnk.cpp, mazerbla.cpp, onetwo.cpp, seicupbl.cpp, segajw.cpp, seta.cpp, shadfrce.cpp, snowbros.cpp, spartanxtec.cpp, spbactn.cpp, spyhuntertec.cpp, sub.cpp, suprridr.cpp, tecmosys.cpp, thedeep.cpp, vball.cpp and wwfsstar.cpp . Added 74LS259 device to balsente.cpp, munchmo.cpp, pitnrun.cpp and sub.cpp . aquarium.cpp: Soundlatch modernization. Use BITSWAP8 to implement MSM6295 line swap. . dblewing.cpp: Modernized soundlatch. Improved IRQ arbitration for (hopefully) less dropped sound commands. . karnov.cpp and mugsmash.cpp: Use MCFG_GENERIC_LATCH_DATA_PENDING_CB for soundlatch . sub.cpp: Soundlatch modernization. Added watchdog timer. Acknowledge all interrupts. - TA7630 sound: Wrote a new device for TA7630 (bass/treble and volume/balance), hooked it up to 40love.cpp, buggychl.cpp, msisaac.cpp and flstory.cpp. - YMF271 sound: Added slot end status bits, fixes at least missing shots samples for Desert War. - 6840 PTM and 6850 ACIA: Fixed so that LOG_OUTPUT_FUNC can be defined as printf. Removed c_str() in 6840 LOG statements. - 68681 DUART: Added the DUART compatible 68340 serial module (machine\mc68681.cpp) - 8155 RIOT: Cleanup timer start, a clock of 0 causes MAME to freeze. - 8250 UART: Added and use INS8250 register defines. Replaced LCR, LSR and MCR bits by defines. - 8251 USART: Fixed setup for sync byte - 8259 PIC: Break up the MCFG_PIC8259_ADD macro - Data East Custom: Use DEVCB for DECO 146 input ports and explicitly define these in all drivers (machine\deco146.cpp) - EEPROM: Improvements to 28XX parallel EEPROM emulation. Emulated direct manipulation of /OE line for read/write mode control. Special handling for data polling before a write has completed. Allow optional configuration of device to lock EEPROM after each write, as often used by Atari. Eliminate the Atari EEPROM interface devices, since their special features have been incorporated into the base device. To continue using old NVRAM files, renamed them from eeprom_eeprom to eeprom (machine\eeprompar.cpp; drivers\arcadecl.cpp, atarig1.cpp, atarig42.cpp, atarigt.cpp, atarigx2.cpp, atarisy1.cpp, atarisy2.cpp, badlands.cpp, batman.cpp, blstroid.cpp, cyberbal.cpp, eprom.cpp, gauntlet.cpp, klax.cpp, mastboy.cpp, offtwall.cpp, rampart.cpp, relief.cpp, shuuz.cpp, skullxbo.cpp, thunderj.cpp, toobin.cpp, vindictr.cpp, xybots.cpp, includes\harddriv.h and machine/atarigen.cpp). - Flash ROM: Added 29F800B flash boot device for (MESS) D-box - Floppy: Added drive LED callback. This currently only works if you set the drive select lines correctly, which the upd765 does now. Hook it up to (MESS) Kontron PSI98 and use the TEAC FD-55F drive instead of the generic one. - MB3773 Power Supply: Added watchdog device to aquarium.cpp and gcpinbal.cpp - Programmable Logic Device (PLD): Initial support for viewing the logic equations of the PLS100, 82S100, PLS101 and 82S101 (tools\jedutil.cpp). - Voodoo GFX . Removed wrapping after y origin conversion so that proper y-clipping is performed (video\vooddefs.h and voodoo.cpp). Fixes pool cue wrapping out of top the screen in Virtual Pool. . Changed 2x2 dither matrix values. Allows ITEagle driver power-on video memory tests to pass (video\voodoo.h). . Fixed depth buffering for Voodoo 2 cards and greater (video\voodoo.cpp) . Declare scale_imm_and_clamp as inline to ensure that it compiles as fully inlined in voodoo rasterizers (video\rgbsse.cpp). - atlantis.cpp . Clean up interrupt handling and adjust PCI device mapping . Changed to interrupt callback instead of direct interrupt assertion (machine\vrc4373.cpp) - cninja.cpp and deco32.cpp . Added 'Data East IRQ Controller' device. This implies proper VBlank IRQ ack for all games now. Use a device map, move screen include to header (machine\deco_irq.cpp). . Added and improved raw screen parameters for various games. - deco_mlc.cpp: Removed erroneous I/O ports - deco156.cpp: Palette cleanup - deco32.cpp . Emulated LC7535-based volume control for Dragon Gun board based games . Added DSW3 and DIP locations to Captain America . Reorganized driver and start cleaning it up (in progress) - f1gp.cpp: ACIA interrupt goes to second CPU - flstory.cpp: Merged memory maps and fixed gfx bank default (fixes Onna Sanshirou POST messages). Added screen raw parameters. - gaelco2.cpp . Added DS5002FP SRAM dump to Maniac Square (protected, Version 1.0, Checksum CF2D) (Games now playable) . Added DS5002FP SRAM dumps to Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994) and clones (Ver 1.0, Break Edition, Checksum C5513F3C) and (Ver 1.0, Break Edition, Checksum D3864FDB). . Base Gaelco game's CPU clock speed on actual OSCs - galaxian.cpp . Miscellaneous configuration cleanups and corrections . 555 star blinking timer is only present on Scramble, Super Cobra and similar hardware. . Scramble clone Explorer (bootleg of Scramble) uses two AY-3-8912 and no 555 timer . Added the (first) two 8255 PPIs only in konami_base and stop removing and readding these in derivative configurations . Safer order for static definitions - gstriker.cpp . Fixed MB60553 zooming tilemap compared against visible area. Improved MB60553 zooming alignment, mostly noticeable in Tecmo World Cup '94. . Added buffered spriteram (sprites being ahead 2 frames; video\gstriker.cpp) . Tecmo World Cup '94: Added MCU simulation to clone (set 2). Fixed tournament logic. Added input labels. Replaced MACHINE_NOT_WORKING flag with MACHINE_UNEMULATED_PROTECTION. . Fixed dipswitches for V Goal Soccer and added DIP locations . Added rotation to MB60553 core, used by V Goal Soccer during display of football field. . Serial link preparation (6850 ACIA) for Grand Striker - homedata.cpp: Fixed sound I/O write in Homedata driver (affected hourouki, mhgaidenm, mjhokite, mjclinic and mrokumei). This fixed missing voices of "Reach", "Ron" etc. in Mahjong Hourouki (ID 00490). - iteagle.cpp . Changed 2x2 dither matrix values. Allows ITEagle driver power-on video memory tests to pass (video\voodoo.h). . Added vblank handling, updated gun control and added proper eagle1 (Virtual Pool) battery ram functionality (machine\iteagle_fpga.cpp). . Virtual Pool: Removed wrapping after y origin conversion so that proper y-clipping is performed (video\vooddefs.h and voodoo.cpp). Fixes pool cue wrapping out of top the screen in Virtual Pool. Set "Medium" resolution as default for Virtual Pool. Setting to VGA is buggy and low resolution will hang the game. Removed MACHINE_NOT_WORKING and IMPERFECT_GRAPHICS flags - Game now playable. . Updated DIP settings for Big Buck Hunter series and Virtual Pool. . Set MIPS3DRC_STRICT_VERIFY option. Sees to eliminate game hangs in Big Buck Hunter series. . Set Carnival King to start at medium resolution by default . Promoted Big Buck Hunter - Shooter's Challenge (v1.60.01), Big Buck Hunter - Shooter's Challenge (v1.50.07), Big Buck Hunter II - Sportsman's Paradise (v2.02.11) and Big Buck Hunter Call of the Wild (v3.02.5) to working . Changed to interrupt callback instead of direct interrupt assertion (machine\vrc4373.cpp) - kaneko16.cpp . Berlin Wall clearly uses 4way sticks . Made dial/paddle optional for Great 1000 Miles Rally, fixes INP playback. - ladyfrog.cpp: Added missing DAC sound chip, fixes death scream in Touche Me. Added screen raw parameters. - leland.cpp: Fixed missing DAC sounds in later Ataxx-era audio - mazerbla.cpp . Added multi-layer drawing (video\mb_vcu.cpp) . Improved layer clearances for Mazer Blazer . Fixed layer clearances for Great Guns (video\mb_vcu.cpp). Fixed lightgun inputs. Soundlatch modernization. . Added backup RAM . Improved collision detection and fixed layer 0 data setups. Driver and input cleanup. . Promoted Mazer Blazer sets from NOT_WORKING to UNEMULATED_PROTECTION - megaplay.cpp . Try make start buttons work properly through BIOS. Demoted Mega Play to not working. Note: Driver is marked as NOT WORKING because interaction between BIOS and 68k side is not fully understood. The BIOS often doesn't register that a game has been started and leaves the 'PRESS P1 OR P2 START' message onscreen during gameplay as a result. If this happens, the games usually then crash when you run out of lives as they end up in an unknown state. . Log the internal P1/P2 Start activity to make it more obvious where things are going wrong - midzeus.cpp: Map proper * key to keypad - model2.cpp . Fixed luma overflow (Virtua Striker flag colors) (video\model2rd.hxx) . fixed Model2 address map, the framebuffer for Last Bronx title screen is not a mirror. - ninjaw.cpp: Saner interleave CPU timings, attempt to fix missing enemies bug in Ninja Warriors. - seattle.cpp: Adjust tx interrupt status to mirror tx buffer empty (machine\smc91c9x.cpp) - segas24.cpp: Added uPD4701A devices for analog input. Updated documentation. - seta.cpp . Use uPD4701A device for analog input in Krazy Bowl . Added uPD4701A device with multiplexing to U.S. Classic . Replaced bogus "kiwame_nvram" with TMP68301 parallel interface in Pro Mahjong Kiwame - superqix.cpp . Correctly implemented 8751 port2 latch based on PCB tracing. Fixed semaphores implementation to match PCB tracing. Got rid of z80<->mcu 'pending' communication hacks by using synchronize calls. Moved superqix specific variables and member functions to its own subclass. Consolidated the 8031 bootleg and 8751 protected set port2 handling code. Removed some unnecessary trampoline functions. . Added a sync trampoline for reading the semaphores via the AY-3-8910 #1, MCFG_QUANTUM_PERFECT is no longer needed. - taitosj.cpp: Added synchronize calls on soundlatch write and bit7 clear, as well as for writing and clearing the secondary sound semaphore. Use input_merge for both NMI enable and the secondary semaphore. Added sound cpu mirroring. - tnzs.cpp: Removed outdated comments - tourvis.cpp: Added new BIOS dump, clarified BIOS names and updated several games with newly discovered ID codes. - vegas.cpp . Adjust tx interrupt status to mirror tx buffer empty (machine\smc91c9x.cpp). Fixes linking boot hang on Cart Fury. . Added Denver UARTs, gearshift and updated input dips for various Vegas games. . Clean up timer code in VRC5074 controller . Clean up DUART code and make parallel read return not busy - Alcon: Added MCU to clone Slap Fight (A76 set, GX-006-A PCB) (Game now playable) - Alligator Hunt: Added new DS5002FP SRAM dump to Alligator Hunt (Spain, protected) (Game now playable). Data was verified using a 2nd board, only 1 byte changed in the code area, data table is also verified by checksum in the code, and by the unprotected set as reference. This is a good read. - Ameri-Hockey . Make Z8 CPU data space optional and fixed stack pop semantics. Mask addresses for external memory accesses based on P0 control bit and external stack accesses. . Fixed C flag polarity for CP, SBC, SUB and actually subtract with carry in SBC. This lets Ameri-Hockey pass its initial checksum calculation. . Interrupts are working now (Z8681 CPU; cpu\z8\z8.cpp) - Big Event Golf: Added DAC (cup in and crowd applauses samples) - Blood Bros: Prevent mistimed interrupts that were killing sound in clone West Story (bootleg of Blood Bros.) - Borderline: Added sound samples (http://www.progettosnaps.net/samples/zip/brdrline.zip) - Buggy Challenge . Removed NMI trampolines. Added details and mirrors to memory map based on schematics. Added note about the maybe unused scoreboard hookup, similar to Grand Champion. . Fixed sound timer irq frequency, fixes enter initials BGM tempo. . Fixed background pen and clipping enable (fixes title screen and stage 3 graphics). Converted accelerator to analog, proper sound irq frequency. . Fixed PORT_SERVICE_DIPLOC in conflict with IPT_SERVICE, causing F2 to toggle service to not work. . Wrote a new device for TA7630, hooked it up to Buggy Challenge. - Capriccio Spin 2: Some rather blind guesses that don't help much now - Caveman Ninja: Fixed sound banking in clone Tatakae Genshizin Joe & Mac (Japan, bootleg) - Chain Reaction: Game uses 4-way joystick and 2 buttons - Championship Bowling: Separated trackball reset handler - Cool Minigame Collection: Added speedup - Demons & Dragons (prototype): Added MACHINE_IS_INCOMPLETE flag since sound program is missing - Dinosaur King - Operation: Dinosaur Rescue: Dumped origin Compact Flash card. Removed rom_board roms. - Exterminator: Soundlatch modernization and save state support. Might as well make the IRQ line explicit. - F1 Super Battle: Fixed extra VRAM boundaries and inputs. Added coin counters. - Grand Champion: Fixed the sound latch system such that the bit 7 clearing actually works and properly synchronized the sound latch writes and bit 7 clears. Added memory map comment for sound cpu. Added missing sound NMI enable and hooked sound NMI to the sound semaphore. Added sound semaphore readback. Minor format changes to ease potential future code merge. - Guzzler: Added PAL dump to clone Guzzler (Swimmer Conversion) - Heavy Unit: Added more generic latch devices for inter-CPU communication - Hexion: Fixed music speed by hooking up the INT_TIME callback from the K053252 CCU properly. Fixed music pitch for clone Hexion (Asia ver AAA, bootleg). - King Derby: More plausible method of generating NMI on sound CPU - Lunar Lander: Changed Language rom which passes now self-test (former source built attempt had 2 bytes differing) - Metal Hawk: Fixed missing sound (ID 06680) - Ninja Clowns . Fixed palette read accesses, fixed many color bugs (title screen fade-in, water spray properly blue and color cycle effects in bonus stage). . Fixed 0x40000-0x7ffff constant area, now program ROM checksum correctly returns OK status. . Moved vblank irq generation for Ninja Clowns, fixes frames per second jerkiness. - QB-3: Fixed missing AY-3-8910 sound (ID 06682) - Quiz Punch II: Emulated COP402 MCU. Rewrote the COP400 execution control logic to fetch each byte of an instruction separately in one pass of the main loop. This provides EEPROM-compatible timing for the SIO shift register, allowing the 93C46 on Quiz Punch II to be read and written properly (though its default contents are a bad dump). - Panic Road: Demoted Panic Road to MACHINE_NOT_WORKING. Playtesting shows that the collisions aren't right. - PinMAME: Added meat to the bones to inderp.cpp and stargame.cpp - Pocket Gal Deluxe: Added vblank interrupt acknowledge - Return of the Invaders: Fixed colors in clone (bootleg no MCU set 3) - Rock'n Rage: fixed priorities and text tile banking for Rock'n Rage. Fixes stage 1 boss eyes flashing and Shena display inside the bubble at stage 5 boss. - Star Wars: Fixed missing sounds by restoring the old boost_interleave method as an annex to the modern soundlatch semaphore handling (ID 06672) - Stunt Air: Added 74LS259, NVRAM and watchdog timer. Attempt at improving sound communication. - Super Qix: Traced out correct clock divider for CPU and MCU from PCB. Fixed issue with clone Super Qix (bootleg of V1.0, 8031 MCU) not working with the correct clock speed and synchronize fences. Added emulation of the 8031 bootleg MCU port 3 output latch. - Ultraman: Sound IRQ modernization - Wyvern F-0: Misc fixes and added DAC. - Input port . Using a better overload of utf8_from_uchar() in ioport_field::key_nam (emu\ioport.cpp) . Fixed a longstanding INP playback desync bug caused by a rand() call in the MAME core (emu\ioport.cpp), fixed playback lose sync in B.Rap Boys and Blood Warrior (ID 04209), INP playback fails after a short time in Shinobi III (Mega Play) (ID 04280) and Shogun Warriors cannot be replayed from .inp file (ID 03967). . Prefer lower shift states, eliminate O(n) lookup allows Alt-combos on European Amiga keyboards to be restored as MAME will now prefer the simpler Shift-combos to get characters that can be typed in more than one way. - Dipswitch fixes in champbwl.cpp, gstriker.cpp, inderp.cpp, iteagle.cpp, legionna.cpp, mazerbla.cpp, seattle.cpp, subsino.cpp (ID 06673) and vegas.cpp - Fixed rom names in inderp.cpp, tnzs.cpp, tourvis.cpp, tsamurai.cpp and zn.cpp - Description changes of 500 GP (US, 5GP3 Ver. C), Ace Driver: Racing Evolution (Rev. AD2, World), Ace Driver: Victory Lap (Rev. ADV2, World), Alpine Racer (Rev. AR2 Ver.C, World), Alpine Racer (Rev. AR2 Ver.D, World), Alpine Racer 2 (Rev. ARS2 Ver.A, World), Alpine Racer 2 (Rev. ARS2 Ver.B, World), Alpine Surfer (Rev. AF2 Ver.A, World), Angler King (Japan, AG1 Ver. A), Aqua Jet (Rev. AJ2 Ver.B, World), Armadillo Racing (Rev. AM1 Ver.A, Japan), Beast Busters (Japan, Version 2, 2 Player), Chuka Taisen (Japan) (P0-028-A PCB), Chuka Taisen (US) (P0-028-A PCB), Chuka Taisen (World) (P0-028-A PCB), Crisis Zone (US, CSZO3 Ver. A), Crisis Zone (US, CSZO3 Ver. B, set 1), Crisis Zone (US, CSZO3 Ver. B, set 2), Crisis Zone (World, CSZO2 Ver. A), Crisis Zone (World, CSZO4 Ver. A), Crisis Zone (World, CSZO4 Ver. B), Cyber Cycles (Rev. CB2 Ver.C, World), Dai Ressya Goutou (Japan, version K), Dinosaur King - Operation: Dinosaur Rescue (USA, Export) (MDA-C0021), Dirt Dash (Rev. DT2, World), Downhill Bikers (US, DH3 Ver. A), Final Furlong (World, FF2 Ver. A), Glass (Ver 1.0, Break Edition, Checksum C5513F3C), Glass (Ver 1.0, Break Edition, Checksum D3864FDB), Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994), Glass (Ver 1.1, Break Edition, Checksum D419AB69, Version 1994) (censored, unprotected), Grand Striker (Europe, Oceania), Graplop (DECO Cassette) (US) (Prototype?), Gunmen Wars (Japan, GM1 Ver. A), Gunmen Wars (Japan, GM1 Ver. B), Iron Horse (version H), Lady Master of Kung Fu (set 1, newer), Maniac Square (protected, Version 1.0, Checksum CF2D), Maniac Square (unprotected, Version 1.0, Checksum BB73), Meteor (Stern, set 1), Motocross Go! (Japan, MG1 Ver. A, set 1), Motocross Go! (Japan, MG1 Ver. A, set 2), Motocross Go! (US, MG3 Ver. A), Motocross Go! (World, MG2 Ver. A, set 1), Motocross Go! (World, MG2 Ver. A, set 2), Ninja Clowns (27 oct 91), Panic Park (Japan, PNP1 Ver. B), Panic Park (World, PNP2 Ver. A), Prop Cycle (Rev. PR2 Ver.A, World), Race On! (World, RO2 Ver. A), Rapid River (US, RD3 Ver. C), Rapid River (World, RD2 Ver. C), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) (Rev A), Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B, Slap Fight (A76 set, GX-006-A PCB), Slap Fight (A77 set, 8606M PCB), The NewZealand Story (Japan, new version) (P0-043A PCB), The NewZealand Story (Japan, old version) (P0-041A PCB), The NewZealand Story (US, old version) (P0-041A PCB), The NewZealand Story (World, new version) (P0-043A PCB), The NewZealand Story (World, old version) (P0-041A PCB), The NewZealand Story (World, prototype) (P0-041-1 PCB), The NewZealand Story (World, unknown version) (P0-041A PCB), Time Crisis (Rev. TS2 Ver.A, World), Time Crisis (Rev. TS2 Ver.B, World) and Tokyo Wars (Rev. TW2 Ver.A, World) - Renamed (aligator) to (aligators), (bbhsc) to (bbhsca), (ironhors) to (ironhorsh), (maniacsq) to (maniacsqu), (mp_twc) to (mp_twcup), (tecmowcm) to (twcupmil), (twrldc94) to (twcup94), (twrldc94a) to (twcup94a), (tws96) to (twsoc96), (wc90) to (twcup90), (wc90a) to (twcup90a), (wc90b) to (twcup90b), (wc90b1) to (twcup90b1), (wc90b2) to (twcup90b2), (wc90ba) to (twcup90ba) and (wc90t) to (twcup90t) - MAME . VIDEO RENDERING SYSTEM . PNG . Make verify_header public (util\png.cpp) . Detect image format(png) before loading image. No PNG error message anymore when loading JPG (emu\rendlay.cpp). . Multi-Language: Updated Dutch, Italian, Turkish and Russian translations . Returning a reference from various corestr.cpp calls to avoid unnecessary string copies (util\corestr.cpp) . Fixed warning message (ui\info.cpp) . PLUGINS . Fixed is_oneshot() (cheat\init.lua). Fixed cheats driven by _("") ) . Updated hiscore.dat . LUA engine: Translation support . Validity . MAME -validate will now report an error if no matches occur. Fixed exit status (emu\validity.cpp). . Added a natural keyboard validation to check for valid natural keyboard (uni)codes (emu\ioport.cpp and validity.cpp) . UI . Don't translate info box titles twice (ui\datmenu.cpp, ui\selmenu.cpp) . Bug fix for network menu (ui\miscmenu.cpp) . Merged duplicate code for drawing UI palette menu . Use std::unique_ptr to manage instances of slider_state (ui\slider.h). Eliminate now-unnecessary machine parameter (ui\ui.cpp). . Don't use auto_alloc for temporary bitmaps (ui\selmenu.cpp). Eliminated last use of auto_alloc in frontend (ui\ui.cpp). . AUDIT/ROMLOAD/LISTXML . Defer decoding DOS timestamps (util\unzip.cpp) . Turn most of the ROM entry accessor macros into templates, and make them work on tiny_rom_entry/rom_entry pointers/references, also claw back a little performance lost in the ROM entry refactoring. . Make ROM BIOS reported in listxml output match what ROM loading does. This is the soure of the "BIOS can only apply to one region" meme - it actually works for all regions, but the listxml output was wrong, making it look like it didn't work. . Start adding stuff for iterating ROM entries in a more C++ way without needing to allocate everywhere, improved performance of -listxml by another 10% or so. . Attempted to sanitize/rationalize how we access UTF-8 command line arguments. Specifically, this creates a call osd_get_command_line() that returns UTF-8 command line arguments as std::vector. On non-Windows platforms, this does nothing more than build the vector. On Windows, this invokes GetCommandLineW() and CommandLineToArgvW(). This also attempts to unwind usage of wmain()/_tmain() on Windows, which is not standard. Related to this, this fixes a bug in Imgtool; specifically, non-7 bit ASCII was not being handled correctly in Windows. This is really an admission that the way that Windows handles Unicode and command line arguments sucks, and it is my belief that having a wmain() or _tmain() declaration specific for Windows is a worse solution. . Added support for C++ output streams using LOG_OUTPUT_STREAM instead of using printf as LOG_OUTPUT_FUNC (emu\logmacro.h) - SDLMAME: Make the C-like parts more consistent with MAME (tools\aueffectutil.mm) - Compiling . Fixed compling on OS X Sierra (machine\diablo_hd.cpp) . Fix for Clang 5 unused lambda capture errors . Changed the Clang workround for ../../../../../3rdparty/compat/winsdk-override\wrl/internal.h:23:13: error: function declared 'noreturn' should not return [-Werror,-Winvalid-noreturn] to work with Clang 5.0.


Mameinfo.dat

0.192: Updated to MAME 0.193 (http://git.redump.net/mame/log/). Added Source/Listinfo changes. Newest Bugs (27th Dec). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.192: Updated to MAME 0.192 (http://git.redump.net/mame/log/). Added Source/Listinfo changes. Newest Bugs (29th Nov). Added DEmul v0.7 (11.11.2017) Emulator infos. Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.191: Updated to MAME 0.191 (http://git.redump.net/mame/log/). Added Source/Listinfo changes. Newest Bugs (25th Oct). Added DEmul v0.7 (12.10.2017) Emulator infos. Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.
0.190: Updated to MAME 0.190 (http://git.redump.net/mame/log/). Added Source/Listinfo changes. Newest Bugs (26th Sep). Added/Reorganized 'Recommended Games'. Fixed Mameinfo.dat infos.




Download

MAMEINFO.DAT 0.193  (2.77 MB)

MAMEINFO.DAT 0.192  (2.75 MB)

MAMEINFO.DAT 0.191  (2.73 MB)

MAMEINFO.DAT 0.190  (2.73 MB)





   MASH's Driver WIP

   News Submission Board
   MAME Testers
   MAME/MESS GIT
   MAME Download
   MAME Frequently Asked Questions




JUGZ - Geometry Gods (2017)