Homepage - mameworld.info/mameinfo
E-Mail - mameinfo@ewetel.net
Visit ARCADE AT THE MOVIES

0.240GIT - New games: Mahjong Block Jongbou 2 (Japan) - New Non-Working games: Fun-E-Ball - New clones: Aero Fighters Special (USA) and Tail to Nose - Great Championship / Super Formula - New PEPlus games: Player's Edge (PK0756-PC092) Standard Draw Poker, Player's Edge Plus (KE0004) Keno (set 2), Player's Edge Plus (KE0004) Keno (set 3), Player's Edge Plus (KE0017) Keno (set 2), Player's Edge Plus (PP0046) 10's or Better (International, set 2), Player's Edge Plus (PP0078) Standard Draw Poker, Player's Edge Plus (PP0516) Double Bonus Poker (set 3) and Player's Edge Plus (XMP00014) 5-in-1 Wingboard (CG2352) - International. - Removed games: Akai Katana and Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2352) - New drivers: funeball.cpp - CPU . Dynamic Re-Compiling: Fixed 64-bit OP_TEST UML instruction for C backend (cpu\drcbec.cpp) . Hitachi H8: Don't set TDRE when receiving (cpu\h8\h8_sci.cpp) - DEVICE . Floppy . Improved SRA and SRB emulation and added DP8473 reset irq (machine\upd765.cpp) . Fix usage message in tools\floptool.cpp: Getting the name of the tool from argv[0] (stop hardcoding floptool.exe). Added missing hddir/hdread/hdwrite declarations. - cdi.cpp: Fixed audio crackling and various hangs (machine\cdicdic.cpp) - looping.cpp: Added DIP locations. Fixed flipscreen and verified XTALs on PCB. - peplus.cpp: Minor documentation clean up - tmaster.cpp: Work around game-crashing game bug. Fixes emptying any column in the "Solitaire" subgames on any version of Touchmaster results in crash/freeze with very specific onscreen behaviour (ID 03252). - AGEMAME: Reduced redundancy in a few more slot machine layouts - Biomechanical Toy: Redumped clone Biomechanical Toy (ver. 1.0.1870, checksum ba682195) - Cosmic Guerilla: Added protection as bit-flip (different connected data pins), fixes demonstration stops at end of 2nd loop (ID 05237). - PinMAME . jeutel.cpp: WIP. Both games are playable. Added mechanical sounds and NVRAM. Fixed outputs. . sleic.cpp and spinb.cpp: Added some gristle to the bones - Sonic Blast Man: DIP switch corrections (ID 08160) - Fixed rom names in gaelco.cpp and tail2nos.cpp - Dipswitch fixes in jeutel.cpp, looping.cpp, sleic.cpp and taito_b.cpp - Description changes of Big Karnak (ver. 1.0, checksum 1e38c94), Biomechanical Toy (ver. 1.0.1870, checksum ba682195), Biomechanical Toy (ver. 1.0.1878, checksum d84b28ff), Biomechanical Toy (ver. 1.0.1884, checksum 3f316c70), Biomechanical Toy (ver. 1.0.1885, checksum 69f5e032), Bioplaything Cop (ver. 1.0.1823, checksum cd960fc9, prototype), Last KM (ver 1.0.0275, checksum 13bff751, prototype), Maniac Square (ver 1.0, checksum b602, prototype), Player's Edge (PK0756-PC011) Standard Draw Poker, Player's Edge (PK0756-PC084) Standard Draw Poker (El Cortez), Player's Edge Plus (KE0004) Keno (set 1), Player's Edge Plus (KE0017) Keno (set 1), Player's Edge Plus (PP0046) 10's or Better (International, set 1), Squash (ver. 1.0, checksum 015aef61) and Thunder Hoop (ver. 1, checksum 02a09f7d) - Renamed (aerofgts) to (aerofgtst), (pepk0756c) to (pepk0756d), (pepk0756b) to (pepk0756c), (pepk0756a) to (pepk0756b), (pepk0756) to (pepk0756a), (pepp0046b) to (pepp0046c), (pepp0516b) to (pepp0516c), (pexmp017b) to (pexmp017a) and (tail2nos) to (tail2nosa) - MAME . VIDEO RENDERING SYSTEM . Render-related cleanup: Undo inclusion of screen.h within render.h and update many source files that were stealth-including the former. Moved texture_format enum to emu\rendertypes.h. Make a few methods static (emu\rendlay.h). Use C++11-style iteration for render targets (ui\info.cpp). . Improved scale factor selection (emu\render.cpp). Fixes aspect related issues, undesired overscan, etc. (GitHub #8209, GitHub #8387 and MT08110). . Moved filesystem library into separate namespace and use shorter uX type names there . Future-proofing by using correct #include for SOFTWARE_LIST device - Compiling: Include $ERRNO_CODES in Emscripten build to fix error loading software in Emularity loader - see issue emscripten-core/emscripten#10061 (scripts\genie.lua) - Debugger: Fixed size prefix in find command (debug\debugcmd.cpp) 0.239 - New games: Amstar Draw Poker, Kuzmich-Egorych and Super Model II - New Working games: Mahjong Ougon no Hai (bootleg set 1) - New Non-Working games: Chibi Maruko-chan ~Minna de Sugoroku Asobi~ no Maki, Coche Bully, Final Fight 3 (SNES bootleg), Long Hu Zhengba San He Yi (V100CN), Master Crane (set 1), Puyo Puyo! The Medal Edition, Sonic The Hedgehog 3 (bootleg of Mega Drive version) and Super Mario Fushigi no JanJanLand - New clones: Chouji Meikyuu Legion (Japan ver 1.05, set 2), Dirt Dash (Rev. DT2 Ver.B, World), DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07.Black Ver, newer), Downhill Bikers (World, DH2 Ver. A), Fighting Layer (FTL3/VER.A), Gals Panic II (Korea, single PCB), Golden Tee '98 (v1.00C), The Lord of King (bootleg, protected), Mahjong Ougon no Hai (bootleg set 2), Mahjong Ougon no Hai (bootleg set 3), Majestic Twelve - The Space Invaders Part IV (US), Master Crane (set 2), Off Road Challenge (v1.00), The Outfoxies (Japan, OU1, alternate GFX ROMs) and Super Real Mahjong VS (Rev A) - New PEPlus games: Player's Edge Plus (PS0015) Super Joker Slots, Player's Edge Plus (PS0040) Jackpot Jungle Slots, Player's Edge Plus (PS0041) Jackpot Jungle Slots, Player's Edge Plus (PS0044) Red White & Blue Slots, Player's Edge Plus (PS0048) Double Jackpot Slots, Player's Edge Plus (PS0070) Hurricane Slots, Player's Edge Plus (PS0086) Earth Quake Slots, Player's Edge Plus (PS0205) Red White & Blue Slots, Player's Edge Plus (PS0267) Spin Til You Win Slots, Player's Edge Plus (PS0271) Spin Til You Win Slots, Player's Edge Plus (PS0275) 4th of July Slots (set 1), Player's Edge Plus (PS0275) 4th of July Slots (set 2), Player's Edge Plus (PS0280) 4th of July Slots (set 1), Player's Edge Plus (PS0291) Haywire Slots and Player's Edge Plus (PS0623) Black Cherry Slots - New PinMAME games: Motor Show (set 2) and Motor Show (set 3) - New drivers: atari_4x4.cpp, compucranes.cpp, falgas_m89.cpp, lancelot.cpp and superga2.cpp - New devices: a2video, apple2com, cfp1080s, gaelco_vram_crypt and mc68hc16z1 - CPU . ARM7: Fixed TLB Flush behavior (ID 07878) (ID 08140): Support for the "Flush single unified TLB entry" coprocessor operation. Fixed bugged "Flush single DTLB entry" operation and "Flush single ITLB entry" was equally nonexistent. . Data East DECO16: Added Motorola MC68HC16Z1/CPU16. Note: Currently this device is just a stub with no actual execution core. . DEC T11: Power fail trap is NMI. Added bus error trap. . NEC V60: Code cleanup. Removed #ifdefs and use attributes instead. Removed "never reached" return statements. - SOUND . FM core: Correct for free-running timer B multipler (ymfm\src\ymfm_fm.ipp). Fixes music speed is slow in Aliens (ID 01232), Contra (ID 08146), Salamander (ID 03737), Teenage Mutant Ninja Turtles (ID 07078) and Vendetta (ID 04825), flaws in sound emulation in Super Contra (ID 03754) and credits sequence out of sync in Captain America and The Avengers (ID 06764). . MIDI: Made channel remapping configurable. Handle channel remapping at playback time instead of load time, also small fix to sysex event parsing (imagedev\midiin.cpp). . Sound Interface: Suppress sound_assert errors for fill and copy-type operations when start index is out of range (emu\sound.h) . Yamaha AICA: Removed code smell on LP flag read - DEVICE . CGA: Make ISA 'Wyse 700' it not completely crash (isa\cga.cpp) . K054000 Protection . Fixed incorrect hitboxes for some grounded enemies and broken demo sequences in Vendetta (ID 06393) (ID 07839) . Converted all drivers using K054000 to access with address map, fixes Gaiapolis and Bucky O'Hare ranges. . Initialized variables at machine_reset time. Moved collision dump to a debug compile switch. Cleanup driver. . PowerVR 2: Added support for render mode 5 . SCSI Hard Disk: Minor logging changes (nscsi\hd.cpp). Copy "MODE SELECT 6" from bus\nscsi\cd.cpp, fixes unable to format (MESS) Macintosh 128k hard disk (nscsi\hd.cpp). . System 32 Communication Board: Fixed machine\s32comm.cpp. This fixes F3 soft reset in 'F1 Super Lap' causes the emu/game to crash if NVRAM is empty. Changing game settings can cause the game to fail (ID 08145). . Z80 CTC: ZC/TO goes high for one clock cycle - CHDMAN: Fixed chdman threading on cpus with many cores. Remove 4-thread limit from non-high-freq work queues. osd_event flags don't need to be atomic. Fixed race condition that made work queues not wake up enough threads for processing (osd\osdsync.cpp). - actfancr.cpp and battlera.cpp: Use finders and minor cleanups - alien.cpp: Populate memory map enough for Medalusion 1 games starts booting and removed unneeded NVRAM dumps. - cdi.cpp: Complete re-write of Philips CD-i CDIC handling. Re-promoted driver to working (ID 07716). - dec0.cpp: Updates and cleanup. Use MB8421 device for Robocop shared RAM. Removed some superfluous handlers for clone Midnight Resistance (bootleg with 68705). - gaelco.cpp and gaelco2.cpp . CG-1V/GAE1 video/audio fixes: Support y scroll in rowscroll mode. Prevent shadow sprites from corrupting previously drawn shadow sprites. Fixed cases of samples not being played where the 2nd chunk addresses are written first. Removed old hack to work around ancient MAME number of colour limits. . Misc Gaelco improvements: Fixed Thunder Hoop (ID 05919) and Squash priorities. Added IRQ acks. Set Maniac Square prototype to 1992 and de-cloned it. This was an earlier project that was redone from scratch for the released game. . Research into Thunder Hoop and Squash 'refresh rate' protection. Prevents freeze when dying in stage 4 of Thunder Hoop (ID 03232) and bad text on continue in Squash. - galspnbl.cpp: Added some PCB info in header and corrects clock of 68000 based on OSC - gberet.cpp . Removed tagmap lookups and split the main class in subclasses . Dumped PROMs for clone Green Beret (bootleg). Demoted the bootleg to not working status, as it needs a different PROMs decoding. - gkigt.cpp: Set i960 burst regions so games show something again - jack.cpp: Correct default number of lives for Joinem and Uncle Poo - magicard.cpp: Map RAM at $008***** on several entries, tie vblank irqs to int2_w and update QA. This allows 'Puzzle Me!' to enter into attract mode. - megatech.cpp: Replaced some tag lookups with finders - micro3d.cpp: Simplify Am29000 shift calculation for multiply and divide steps, eliminating unnecessary 64-bit intermediary variables (am29000\am29ops.h). - namcofl.cpp: Use memory view instead of bankdev and flags(i960_cpu_device::BURST) for everyone - playch10.cpp: Dumped an alternate BIOS - rohga.cpp: Drop sound levels - royalmah.cpp: Some tagmap cleanup and configured banking. Merged ichiban.cpp with royalmah.cpp driver. - seattle.cpp and vegas.cpp: Dumped security PICs for San Francisco Rush and San Francisco Rush: The Rock. Dumped security PICs for San Francisco Rush 2049 and San Francisco Rush 2049: Special Edition. San Francisco Rush 2049: Tournament Edition uses same PIC as San Francisco Rush 2049: Special Edition. - stv.cpp: Moved video into video\saturn.cpp to remove possible circular dependency. - tmnt.cpp: Fixed Thunder Cross II overdriven sound. Make Thunder Cross II to bypass protection checks via ROM patch, acknowledge it with 14D bad and demoted it to MACHINE_UNEMULATED_PROTECTION. - vendetta.cpp: Fixed incorrect hitboxes for some grounded enemies, broken demo sequences and overdriven sound (noticeable on first boss) in Vendetta (ID 06393) (ID 07839). - viper.cpp . Documented the I/O board for Mocap Golf . Dumped DS2430 for Silent Scope EX and clone Sogeki. Can now get in game Sogeki, but unplayable due to very heavy GFX glitches and missing gun controller emulation. - vsnes.cpp . Replaced MMC3 implementation with Namco 108 (machine\vsnes.cpp) . Fixed swapped dipswitches for Vs. BaseBall - zr107.cpp: Tilemap position fixes. Corrected 'Transmission Type' dipswitch label and inputs. Fixes putting the Transmission Type to "T-Gate" will do the opposite and put the Transmission Switching to a Button instead of the weird T-Gate that the actual cabinet uses to select Auto or Manual (ID 08166). - Cow Tipping: Updated logging to match handler size (machine\mc68328.cpp) - Far West (Compumatic): Improved documentation for Far West (Compumatic). The sound contains shooting samples and a small sample of the Rawhide main theme. Background layout (four shooting targets as food cans with led circles), see https://youtu.be/YVxThMwhvKQ. - Flower: Replaced hardcoded tags to region pointers. Fixed some sound/cocktail mode behaviors. Use tilemap_t for text layer. Added notes for hardware and unknown sound register writes. Added sound I/O register value for debug purpose. Fixed initializing behavior. Use shorter/correct type values. Fixed spacings. Fixed GFX ROM naming. Reduced unnecessary values/pointers and use STRUCT_MEMBER for save values. Fixed Volume LUT ROM accessing. Added notes (audio\flower.cpp). - Ichi Ban Jyan: Fleshed out a bit. Needs correct banking. Added DIPs. - In Your Face: Improved handcrafted priority PROM, fixing missing graphics in cutscenes. - Jackal: Removed now unneeded hack (HACK: running at the nominal clock rate, music stops working at the beginning of the game). - Kicker: Use correct sprite ram. Added scan line register and screen raw parameters. Fixed sprite video regressions. Match previous sprite position, real y coordinate has 7 subtracted from the work area so 248 should be 241. Align appearing sprites to doors when flipped (this might be a game bug, needs verifying). - Mahjong Ougon no Hai: Added maincpu rom ougonhai_tmp91p640n-10.5b from (bootleg set 2) to parent and clone (bootleg set 1). Promoted (bootleg set 1) to working. - New HyperMan: Redumped rom u78.bin from clone New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 2), it was good afterall. - Parent Jack: Merged everything in the driver file - PinMAME . atari_s1 and atari_s2: WIP. All games except 4x4 are playable. Fixed Hercules inputs. Fixed Middle Earth crash caused by incorrect length of memory share. . by6803.cpp: Added a layout for Gen 2 machines . flicker.cpp: Fixed a couple of mistakes . hankin.cpp and rowamet.cpp: WIP . inder.cpp: WIP. Fixed dipswitches. Machines are all playable. Added some overrun protections. . jp.cpp: WIP. Added outputs. . lancelot.cpp: Moved 'Sir Lancelot' from Peyper driver to its own driver . mephistp.cpp: Preliminary WIP . mrgame.cpp: WIP. Most game are playable. . peyper.cpp: Added outputs and mechanical sound. Improved display to Ator. Moved Petaco from JP to Peyper driver as it is a better fit. . play_1.cpp, play_2.cpp and play_3.cpp: WIP. The majority of the machines are playable. Fixed some bugs and a regression. Added outputs to play_2.cpp. Split Zira into a derived class. . s3.cpp: Fixed various bugs, all games playable. Used correct segment decoder as per videos. Fixed startup tune for Hot Tip (L-1). . s4.cpp: WIP. Added outputs and fixed match digit. Used correct segment decoder as per videos. . s6.cpp: All games are playable. Added outputs. Used correct segment decoder as per videos. . s6a.cpp: Added outputs. Used correct segment decoder as per videos. . s7.cpp: WIP. All machines are somewhat playable. Made 'Wild Texas' a clone of Firepower II. . s8.cpp and s8a.cpp: Added outputs, save-state and button labels. . s9.cpp: Added outputs, savestates and notes. . s11.cpp: Moved Alley Cats (Shuffle) (L-7) to s11 driver . spinb.cpp: WIP. Moved Metal Man from Inder to Spinball driver. . spirit76.cpp: WIP . taito.cpp: Added code for clone Mr. Black (Z-80 CPU). Improved sound for some Votrax games. . Initialised class variables in drivers - Poker Monarch: Updated driver to use a finder for the memory back and other minor cleanups. Removed palette_init and less palette entries. - Quiz Quest: Unused DIP switches are actually a countdown timer (ID 08135) - Santa Fe Golden: Added PCB layouts and hardware notes - Sky Destroyer: Reversed joystick up and down inputs (ID 08162) - Space Wars: Fixed inputs for Space Wars and clone Space Ship (ID 08148). Added missing playfield reset button. Fixed missing 'FIRE' and 'HYPERSPACE' buttons for clone Space Ship. - Sport Fishing 2: Removed regions hacks - Unknown Cointek game: Minor updates - Vs. Balloon Fight: Fixed 'Bonus Life' DIP settings (ID 08147) - Wardner: Switched driver to use views - Fixed rom names in balsente.cpp, lancelot.cpp, mystston.cpp, play_2.cpp and snk68.cpp - Dipswitch fixes in alien.cpp, atari_s1.cpp, hankin.cpp, inder.cpp, itech32.cpp, jack.cpp, spinb.cpp, taito_b.cpp, taito_f2.cpp, vsnes.cpp and zr107.cpp - Description changes of Ace Driver: Victory Lap (Rev. ADV1 Ver.C, Japan), Bishoujo Senshi Sailor Moon (Ver. 95/03/21, Hong Kong), Bishoujo Senshi Sailor Moon (Ver. 95/03/21, Japan), Bishoujo Senshi Sailor Moon (Ver. 95/03/21, Taiwan), Bishoujo Senshi Sailor Moon (Ver. 95/03/22, Hong Kong), Bishoujo Senshi Sailor Moon (Ver. 95/03/22, Japan), Bishoujo Senshi Sailor Moon (Ver. 95/03/22, Taiwan), Bishoujo Senshi Sailor Moon (Ver. 95/03/22B, Hong Kong), Bishoujo Senshi Sailor Moon (Ver. 95/03/22B, Japan), Bishoujo Senshi Sailor Moon (Ver. 95/03/22B, Taiwan), Chouji Meikyuu Legion (Japan ver 1.05, set 1), DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07.Black Ver, older), Ejihon Tantei Jimusho (J 950613 V1.000), Fighting Layer (Japan, FTL0/VER.A), Fist Of The North Star / Hokuto no Ken, The Italian Job (Maygay) (EPOCH, vx.x) (ID 07191), The Italian Job (Maygay) (M1A/B) (set xx), The Italian Job Club (Maygay) (EPOCH) (2.x, set x), Kero Kero Keroppi no Isshoni Asobou (Japan), Last KM (Ver 1.0.0275, prototype), Long Hu Zhengba 4, Long Hu Zhengba IIIm The Lord of King (bootleg, not protected), Mahjong 4P Shimasho (Japan), Mahjong Ougon no Hai (bootleg set 1), Majestic Twelve - The Space Invaders Part IV (US, earlier?), Magic Card III Jackpot (4.01), Maque Da Zhonghua Quan [BET] (Taiwan, D111), Maque Zhonghua Ernu [BET] (Taiwan), all megadriv_acbl.cpp games, Panel & Variety Akamaru Q Joushou Dont-R, Player's Edge Plus (PS0280) 4th of July Slots (set 2), Quiz Bishoujo Senshi Sailor Moon - Chiryoku Tairyoku Toki no Un, Rave Racer (Rev. RV2 Ver.B, World), Ridge Racer 2 (Rev. RRS2 Ver.B, World), The Simpsons Bowling (GQ829 UAA), unknown Poker 'TE06' and Yam! Yam! (Korea) - Renamed (ddpdojblka) to (ddpdojblkb), (ddpdojblk) to (ddpdojblka), (dirtdash) to (dirtdasha), (downhill) to (downhillu), (fgtlayer) to (fgtlayerj), (majest12u) to (majest12ua), (peps0280) to (peps0280a), (ougonhaib) to (ougonhaib1) and (srmvs) to (srmvsa) - MAME . VIDEO RENDERING SYSTEM . Use simple_list instead of std::list for containers. Removed old remnants of "internal" debugger (emu\render.cpp). . Removed old dot matrix components. Added warning message for reel components (emu\rendlay.cpp). . Changed a few more fruit machines to eliminate reel components; also made the reel lamps simpler and more efficient in these layouts. . Fixed incorrect clipping of untextured rectangles (emu\rendersw.hxx). Cleaning up fruit machine layouts to reduce bloat. Fixed a few miscellaneous Coverity errors. . Get the initial view check off the hot path (emu\render.cpp). Fixes Screen #0 setting reverts back to default in San Francisco Rush 2049 and San Francisco Rush 2049: Special Edition (ID 08159). . Expand buffer size from 15 to 16 for %t time in video_manager::open_next (emu\video.cpp) . MEMORY SYSTEM . Unref the root dispatch when destroying the address space (emu\emumem_aspace.cpp). Fixes memory leak after MAME hard reset (ID 08139). . Allows handlers to have user-defined flags set on them, which can them be picked up on access with the {read,write}_*_flags variants of the accessors. Example use with the i960 and its burstable ROM/RAM (emu\addrmap.cpp and emu\emumem.*). . DEVICES . Made checks on device add/replace stricter. Trying to replace a non-existent device or trying to add a device with root or parent references in the path is now fatal. . Removed some machine().root_device() calls (drivers\cv1k.cpp, namcos10.cpp and audio\wiping.cpp) . UI . Fixed various errors reported by Coverity, one of which actaully breaks stuff (mame\ui\*). . Give heading items in menus a bit of horizontal space (ui\menu.cpp) . Changed string parse for screen Hz info (ui\devopt.cpp and ui\info.cpp) . Don't call .name() on I/O port fields without a running machine (ui\devopt.cpp) . Fixed lockup loading UI with Emscripten builds that don't support threading (ui\systemlist.cpp) . INPUT . Marked PORT_RESET deprecated (emu\ioport.h) . Fixed SlikStick configuration is not working for Asteroids (emu\ioport.cpp and ctrlr\slikstik.cfg) (ID 07153) (ID 01080). The reason for this is that Asteroids overrides the default assignments for the buttons, so the ctrlr\slikstik.cfg file needs to use the syntax for overriding specific inputs. See here: https://docs.mamedev.org/advanced/ctrlr_config.html . Fixed the \ctrl files don't override driver specific mappings (ID 01080) . Fixed a bug in how specific input overrides are applied (emu\ioport.cpp) . Moved localised I/O port name lookup into I/O port manager. Added pseudo format specifiers to controller port names: %p for player and %% for literal percent symbol. This lets you get the localised player identifier in overridden input names (see NES and Neo-Geo for examples), and reduces the number of messages to translate. . Removed awkward initial_state setter from machine\input_merger.cpp and added notes . Added Player 3 and Player 4 mahjong input types (emu\inpttype.ipp) . Multi-Language . Completed Slovak translation. Updated Chinese (Traditional and Simplified), Czech, Greek and Slovak translations. . For translators, the new messages are mostly previously existing messages with wording adjusted for clarity (e.g. referring to "media" rather than "ROMs" in several places, as things like disk and tape images are included). It's also possible to localise the "???" dipslayed for an input without a valid name, but that should never actually appear in practice. . Implemented download links in docs theme. Modified the RTD theme to add PDF and EPUB download links in the left pane (docs\themes\sphinx_rtd_theme\versions.html). . Cleaned up various bits and pieces (albazc.cpp, homedata.cpp, ladyfrog.cpp, nbmj8900.cpp, overdriv.cpp, ssv.cpp and zn.cpp) . Patched up code that was rotting behind UNUSED_FUNCTION and switched to [[maybe_unused]] attribute (cpu\g65816\g65816.cpp, drivers\cclimber.cpp, dkong.cpp, konamigx.cpp, m90.cpp, mcr3.cpp, mediagx.cpp, nmk16.cpp, seibuspi.cpp, viper.cpp, formats\wavfile.cpp, modules\amiga.cpp, fat.cpp, sound\aica.cpp, video\zeus2.h). Various cleanups. . Refactor html docs build process to use new template and env variable . Improved transliateration of a few game titles . Report refresh rate <1hz as error in validity check . Filesystem code cleanup: Eliminated dependencies on emu.h. Replaced most fatalerror calls and floptool's emu_fatalerror class with standard exception classes. Use range-based std::string constructors in some methods. Moved filesystem metadata handling to a separate source file (formats\fsmeta.cpp). Eliminated src\emu as an include path for libformats (necessitates kludge in (MESS) formats\ti99_dsk.cpp). - Compiling . Removed template code generators . Fixed MSVC build by reordering configuration statements (scripts\src\3rdparty.lua) . Fixed a few coverity errors, several of which are real bugs (drivers\amspdwy.cpp, opengl\gl_shader_mgr.cpp, sound\sdl_sound.cpp and imgtool\imgtool.cpp). . Removed a few outdated references to MESS . Fixed build with newer versions of Emscripten. Minimum supported version is now Emscripten 2.0.25 (https://emscripten.org/docs/getting_started/downloads.html). . Initialised class variables several driver 0.238 - New Working games: Monster Zero (set 1) - New Non-Working games: The Fast And The Furious (v3.06), Guitar Hero Arcade (v1.0.5), House Ball, Main Event (Destron), Rockin' Bowl-O-Rama (v2.1.1) and Stop - New clones: '48 in 1 MAME bootleg (ver 3.08, HPH-V000)', Grudge Match (v00.90, prototype), Mirai Ninja (Japan, set 2), Monster Zero (set 2), Mushiking The King Of Beetle (2K3 2ND Ver. 1.000-, China), Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.000-) (Korea), New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 2), Pop'n Music 1 (ver TA-A, HDD 1.01) and Super Street Fighter II: The New Challengers Super 2 (USA 930911) - New PinMAME games: Cowboy Eight Ball (set 2), Martian Queen, Space Poker and Teenage Mutant Ninja Turtles (1.01) - New drivers: dmainevent.cpp, houseball.cpp, rawthrillspc.cpp, rbowlorama.cpp and stop.cpp - New devices: tms32033, tms7000, tms7001, tms7002, tms7020, tms7020_exl, tms7040, tms7041, tms7042, tms70c00, tms70c20, tms70c40 and tms70c46 - CPU . IBM PowerPC 4xx/6xx: Added Power family disassembly (tools\unidasm.cpp). Reduced enum scope (powerpc\ppc_dasm.cpp). . Mitsubishi M37450: STY ZP should store Y, not X (IIgs ADB MCU @ $FF15) (m6502\om740.lst) . MCS-48: Corrected comments - D87xxH have UVEPROM, not EEPROM (mcs48\mcs48.h) . Motorola MC68000: Bug fix for FMOVEM with empty register list (m68000\m68kfpu.cpp) . Texas Instruments TMS320C3x: Added TMS320VC33 emulation support . Texas Instruments TMS34010/20: Clarify that not all illegal opcodes are actually trapped. Separate TMS34020 emulation better. . Texas Instruments TMS9900: Fixed PC display for watchpoint hits . Texas Instruments TMS9995: Fixed PC not displaying when watchpoint hit - SOUND . Philips SAA1099: Fixed output behavior when both noise and tone are enabled - DEVICE . Floppy: Wait for sector read/write to complete on interrupt d0-7, fixes (MESS) rmnimbus floppy access errors (machine\wd_fdc.cpp). . IDT720x FIFO: Fixed triggering of half-full flag . PowerVR 2: Fixed the BG offset to be based on the param base so non-zero bases get backgrounds . uPD4701A Incremental Encoder: Changed input update method to not use PORT_RESET (see drivers\cabal.cpp, cps1.cpp, dec0.cpp, konamigv.cpp, ksys573.cpp, m72.cpp, segae.cpp, segas18.cpp, segas24.cpp, segas32.cpp, seta.cpp, speedbsk.cpp, ssv.cpp, taito_l.cpp, tnzs.cpp and ultrsprt.cpp) - a1supply.cpp: Corrected clock - aristmk5.cpp and ertictac.cpp: Implemented DAC differences between VIDC1 and VIDC1a (machine\acorn_vidc.cpp) - cps1.cpp . Fixed small issue with stars palette cycling (video\cps1.cpp) . Fixed 2 players mode DIP switch for clones Street Fighter II': Champion Edition (Japan 920322), (Japan 920513), (Japan 920803) and 'Street Fighter II' Turbo: Hyper Fighting (Japan 921209)'. Looks like Capcom inverted the default configuration (OFF) to set "2 Credits/Continue" option by default, instead "1 Credit/No Continue" present in the Street Fighter II': Champion Edition (Japan 920xxx) clones. . Marked clone Forgotten Worlds (Japan) as a prototype, it's an unfinished version of the game. - galaxian.cpp . Monster Zero: Promoted game to working. Boosting the interleave during three way cpu communications speeds up protection check. Improved bullets x offset. Only uses 1 button for shooting. Use Galaxian stars instead of Scramble. Added kludge for sprite y offset issue. . SF-X: Improved bullets x offset. Added kludge for sprite y offset issue. - m92.cpp: Updated B board references for all games - nss.cpp, sfcbox.cpp and snesb.cpp: Fixed SNES timing and interrupt (machine\snes.cpp) - segag80r.cpp and segag80v.cpp: Various small cleanups - seta.cpp: Removed some unneeded VIDEO_START macros - stv.cpp: Removed most run time I/O port lookups and removed PORT_RESET. IOGA port G counter reset is emulated correctly now. Increased sensitivity for patocar trackball - it seemed too slow with mouse or analog stick. - taito_h.cpp: Moved Syvalion trackball handling to a derived class and reduced copy/paste in I/O handler function. Fixed Dynamite League vertical blanking interrupt. - taito_x.cpp: Splitted driver in subclasses and minor cleanups - toaplan2.cpp: Added GP9001 initialization register (0x0E) values for remaining games (Batrider, Battle Bakraid, Battle Garegga, Enma Daio, Kingdom GrandP, Othello Derby, Power Kick and Sorcer Striker; video\gp9001.cpp) - Alien vs. Predator: Corrected some overdumps - Block Carnival / Thunder & Lightning 2: Marked X1 sample rom as BAD_DUMP as it appears to be half size. Note: The game plays music from 0x000000 to 0x0bffff and sfx from 0x0c0000 to 0x0fffff. Loading the ROM mirrored like this causes sfx to play instead of music in some levels. The most logical conclusion is that the ROM below was dumped at half size and should be 1MByte, hence BAD_DUMP. - Cop 01: Unused dipswitches enable an undocumented invulnerability cheat (ID 08132). Note: When both switches are on, then the player cannot die anymore. - Cow Tipping: Cleaned up MC68328 register handlers and structure. Moved #define macros into enums within the class. - Future Flash: Fixed a bug in sound output and improved trackball handling. Various small cleanups. - Mahjong Kyou Jidai: Identified coinage DIPs and very minor cleanups - PinMAME . allied.cpp, g627.cpp and spectra.cpp: Added save-state and external outputs support . gp_1.cpp, gp_2.cpp, gts3.cpp and gts3a.cpp. WIP. Added some missing maincpu roms to Mike Bossy. . ltd.cpp and techno.cpp: WIP. Added sound. Splitted ltd.cpp into derived classes. . macp.cpp: Added some flesh to the skeleton driver. 2 games are playable. . micropin.cpp: Pentacup working and WIP for clone Pentacup (rev. 2). Splitted driver into derived classes. . nsm.cpp: WIP. Test menu works. . st_mp100.cpp and st_mp200.cpp: WIP. Fixed some long-standing mistakes. Moved Black Sheep Squadron to the correct driver. Black Sheep Squadron cleanup. . stargame.cpp: WIP. Space Ship (Pinball) is working. . vd.cpp: Both games working. . wico.cpp: Added outputs and save-state support - Royal Gum: Improved peripheral hookups. Added uPD7759 controls. Added preliminary inputs. Identified some DIPs and minor comments update. - Fixed rom names in djmain.cpp, stargame.cpp and techno.cpp - Dipswitch fixes in macp.cpp, mjkjidai.cpp, rgum.cpp, st_mp100.cpp and st_mp200.cpp - Description changes of '4 in 1 MAME bootleg (ver 3.00, PLZ-V014)', '4 in 1 MAME bootleg (PLZ-V001)', '48 in 1 MAME bootleg (ver 3.09, HPH-V000)', '48 in 1 MAME bootleg (ver 3.09, HPH-V000, alt flash)', '48 in 1 MAME bootleg (ver 3.02, HPH-V000)', Cowboy Eight Ball (set 1), Forgotten Worlds (Japan) (English prototype), Gouketsuji Ichizoku: Senzo Kuyou (v200906230) (ID 08127), Kot-Rybolov (Terminal), Mirai Ninja (Japan, set 1), Monster Zero (set 1), New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 1), Zephy (set 1) and Zephy (set 2) - Renamed (grudge) to (grudgei) and (popn1) to (popn1a) - MAME . VIDEO RENDERING SYSTEM . Replaced some locale-sensitive configuration parsing code (render\d3d\d3dhlsl.cpp). Fixes MAME freezes on non-English Windows OS (ID 08118). . Fixed BGFX flurry of bogus warning messages (bgfx\targetmanager.cpp) . Fixed buffer overflow crash with VIDEO_VARIABLE_WIDTH screens (emu\screen.cpp). Fixes (MESS) snes ctrigger consistently causes segfault (ID 07556). . Added scroll support for all Layout elements (emu\render.cpp and rendlay.cpp). Fixed texture size calculation for oblong items (emu\render.cpp). . Support texture wrap/clamp properly for (A)RGB formats. Also got rid of names starting with an underscore followed by an uppercase letter, as they are reserved (emu\rendersw.hxx). . UI . Fixed wrongly placed messagebox (ui\selmenu.cpp). Fixes program/copyright info overflows UI frame (ID 08120). . Refactored menu event handling and fixed a number of issues. Moved common code for drawing about box, info viewer, and other text box menus to a base class; removed the last of the info viewer logic and the multi-line item hack from the base menu class. Added previous/next group navigation for general inputs and plugin input selection menus. Moved message catalog logic to lib/util, allowing osd and emu to use localised messages. Made the base menu class use the UI manager's feature for holding session state rather than a static map and mutex. Improved menu event handling model, and fixed many issues, particularly with menus behaving badly when hidden/shown. Added better support for menus that don't participate in the usual menu stack, like the menuless sliders and the save/load state menus. Made a number of menus refresh state when being shown after being hidden, fixes (ID 08121) among other issues. Fixed indication of mounted slot option in the slot option details menu. Improved appearance of background menus when emulation isn't running - draw all menus in the stack, and darken the background menus to make the edges of the active menu clearer. . Started adding some documentation for MAME's internal UI, and updated the list of example front-ends. . Make all the textbox menus use the custom navigation flag, on the off chance they become scrollable somehow. . Made it so you can press UI On Screen Display to hide the Analog Controls menu and see the response to your inputs without the risk of changing settings, and see more axes at once and scroll them for systems with very large number of axes. Also ensure the axis being configured is visible when the menu is visible, and made the menu behave a bit more like the system input assignments menu (including previous/next group navigation). Allow Lua to draw to the UI container - this addresses the main complaint in #7475. Note that drawing to the UI container will draw over any UI elements, including menus. Plugins can check menu_active to avoid drawing over menus. Also removed some unnecessary use of sol::overload. Improved info/image box navigation on the system/softwre selection menus, and cleaned up some leftover code that came from the copy/pasted event handling functions. Fixed sliders menu not handling Alt+Shift as intended (thanks Coverity). Fixed a couple of harmless Coverity errors, too. Added basic description of the system and software selection menus, and corrected a couple of errors in the Lua reference. Fixed some localisation issues in Analog Controls menu. Don't let the non-menus get as far as trying to draw (frontend\mame\ui). . More cleanup: Got rid of some abuse of "special main menus". Added a helper class for auto-pause menus that don't spawn submenus. Got rid of the fake menu that schedules an exit on the first frame. Turned the confirm quit prompt into a menu, eliminated one more special-cased event loop. Fixed the confirm quit prompt resuming if you return to emulation if you weren't paused to begin with. . Allow cycling modifiers for an absolute axis by pressing repeatedly without going through an append step (frontend\mame\iptseqpoll.cpp). . Don't inappropriately truncate text in menu text boxes (ui\menu.h and ui\ui.cpp). Added input provider module options to menu, worked around machine options not showing modules. . Handle WM_UNICHAR (ui_input; windows\window.cpp). Handle analog controls with high sensitivity numbers better (ui\analogipt.cpp). . Show error message box on a separate thread (see MT08118; osd\windows\winmain.cpp). Fixed stupid potential deadlock on exit (osd\windows\winmain.cpp). Don't set parent window for error message box - it doesn't appreciate the parent being pulled out from under it (osd\windows\winmain.cpp). . Default to built-in UI language rather than English. The external English message catalog is a placeholder anyway (emu\emuopts.cpp). . Some changes to menu item class that will make it possbile to reduce the number of menu rebuilds. . Various minor improvements: Made a few more menus reset values to the default in response to the UI clear input. Made the minimum info text size less unreasonable and fixed a locale issue in the font/size selection menu when parsing option strings. Made the keyboard mode menu toggle items on double click or UI select. Made the menuless sliders menu remember the last slider shown (this probably broke when sliders were moved out of the UI manager itself). Made a few menus just update the highlighted options when it's adjusted rather than unnecessarily rebuilding the menu. Made a few more menus reset on being reactivated to cope with scripts or other things changing stuff out from under them (frontend\mame\ui). . Show more unemulated/imperfect features per-device in warnings menu (ui\info.cpp) . Fixed crashes switching between favourites and other filters (ID 08137). Also made the system and software selection menus a bit less eager to reselect the first item. Fixed another case where the system selection menu could get confused when changing filters (ui\selgame.cpp). . PLUGINS . Fixed crash (plugins\console\init.lua). Fixes tab completion causing segmentation fault (ID 08119). . Moved input selection menu and sequence polling code to a common library. Fixed the issue that prevented keyboard inputs being mapped with -steadykey on. . Added next/previous group navigation to input macro edit menu (plugins\inputmacro\inputmacro_menu.lua) . Moved the timecode recording functionality to a plugin (plugins\timecode\*). Gave the timecode plugin an option to count emulated frames. . Simplified logic in autofire and inputmacro plugins to try and avoid leaking state across sessions (plugins\autofire and inputmacro). Ensure state is destroyed on stop (plugins\inputmacro). . Fixed cheatfind menu flags and write XML cheat text to ui container so it's not sideways on rotated screens (plugins\cheat) . Reduced amnesia for autofire and inputmacro plugins. Made autofire and inputmacro plugins capable of remembering settings if the host input device for the binding is missing or if an input for a slot device that isn't present is referenced. . Rewrote timer plugin fixing multiple issues. Added emulated time recording as well as wall clock time. Fixed recording time for multiple software items per system. An incorrect constraint on the database table meant that time was only being recorded for a single software item per system. Detect the "empty" driver so the time spent at the selection menu isn't recorded (you'd get multiple entries for this due to the way options leak when returning to the system selection menu). Included schema migration code to update existing timer plugin databases. Also replaced some unnecessary floating point code with integer maths, added log messages, and made the plugin unload unload its database access code during emulation. Changed other plugins' use of paths with trailing slashes as this causes stat to fail on Windows. . Work around menu not remembering selection when ref is nullptr . INPUT . Made the default assignment for Save State recognise right shift (emu\inpttype.ipp) . Fixed "MAME lost my joystick settings" (emu\ioport.cpp) . Made default behaviour better (emu\ioport.cpp) . If an input is configured to some combination of controls that are not present at all, ignore the setting altogether for the session. . Fixed relative axes with PORT_RESET not responding to absolute controls. Fixes mapping joystick to trackball causes input to go haywire in sonic, cabalus and possibly others using upd4701a (ID 07685). . Fixed relative axes not responding to an absolute control if the value doesn't change every frame (eg. holding a stick against the stop). . Changed the scaling for absolute controls assigned to relative axes to make defaults more sane (e.g. arkanoid or spdheat with a joystick). Added documentation on assigning inputs (docs\source\usingmame\ui.rst). . Fixed some default setting handling issues. Issues were unlikely to actually manifest unless you use controller configuration files to change specific system input defaults (emu\ioport.cpp). . Added size accessor to multi-element output finder. std::size will work on the top rank of an outut finder now (emu\output.h). . Exposed a couple more input related things (mame\luaengine_input.cpp). Exposed constructor and a few methods on input_seq required for scripts to properly clear assignments or restore default settings. Exposed ioport_manager::set_type_seq which is required to configure general input assignments properly. Removed unnecessary use of sol::overload in favour of optional parameters. Updated documentation and also fixed a few errors. Added description for axis setting assignments. . Enabled complex combinations for analog axes: Made it possible to add digital controls to axis settings as enables. Mix multiple analog controls assigned to an axis setting. Added a "reverse" modifier for analog controls (useful with mixing). Fixed an issue assigning mouse axes using multiple mouse-like devices with -nomultimouse. . 3rdparty . Updated ASIO to version 1.20.0. The doc folder isn't included as it's pretty big. This required include\asio\detail\win_iocp_socket_accept_op.hpp due to mismatched order in the member declarations and initialiser list for the win_iocp_socket_accept_op class. I reversed the declaration order so it matches win_iocp_socket_move_accept_op. . Multi-Language . Updated Brazilian Portuguese, Greek and Chinese translations. Removed obsolete messages from Brazilian Portuguese translation. . Added partial Slovak translation . Updated localisations for UI changes in 0.238. For tranlators, the main changes are: The former "device mapping" menu is now "input device options" and includes the input provider module options. The analog controls menu (where sensitivity, auto-centre, etc. is configured) is now localisable. The timecode logging features (used when making gameplay videos) have been moved to a plugin, and display messages are localisable. There are a few extra messages for the autofire and input macro plugins to handle cases where a configured input is not present. The timer plugin has options to show wall clock time (real time elapsed according to host OS clock) or emulated time. . Build cleanup and UWP removal: Removed Android MIPS/64, CMake target, Creator-Ci20, FASTBUILD, iOS, Native Client PNaCl, Raspberry Pi, Steam Link, UWP, Visual Studio LLVM, VisualStudio 2015/17, Windows Phone, Windows Store and XCode4. Note: This removes options for deprecated platforms pnacl, steamlink and ci20. rpi target is not used for Raspberry Pi - linux target with parameters is used instead. MIPS architecture for Android has not been supported for some time - removed leftovers. Visual Studio versions older than 2019 are not able to compile anyway, so removed. CMake target was not able to be used for compiling anyway (just to give some editors a way to see project organization). Xcode4 support was added to get iOS to compile, and that was never finished, so removed. UWP has been deprecated by Microsoft, so we remove it as well. . Fixed buffer overflow with osd_output stack (osd\osdcore.cpp) . Regenerated message catalog sources. For translators, the new strings are mostly: The names of the inputs provided by the OS-dependent layer for things like fullscreen and video features. These show up in the user interface inputs menu. The names for automatically generated views. These show up in the video options menu - test with a system with a lot of screens to see more variants. The input macro plugin UI. A few format strings for analog input assignments. A few strings for the about box header. . Fixed locale issues in -listxml (frontend\mame\infoxml.cpp) - VGM player: Added 10 new entries and 1 updated entry (hash\vgmplay.xml) - Compiling . Fixes for variables set but not used (scripts\src\3rdparty.lua, cpu\arcompact\arcompact_execute.cpp, debug\dvdisasm.cpp, formats\dfi_dsk.cpp, fdd_dsk.cpp, ti99_dsk.cpp, vt_dsk.cpp, cobra.cpp, gunpey.cpp, nemesis.cpp, seicopbl.cpp, video\3dom2_te.cpp, fmtowns.cpp, midtunit.cpp and model2.cpp) . Define _FILE_OFFSET_BITS=64 on Linux (scripts\genie.lua). Note: Compiles GENie with off_t defined as a 64-bit integer to assist with building MAME on a 32-bit operating system like Raspberry Pi OS and a storage volume larger than 2 GB. Without this, the build can fail with a misleading error. . Clang fixes ("-Wno-unused-private-field"; osd\modules.lua and windows\winmain.cpp). Miscellaneous #include cleanup. - Debugger . Debug memory view improvements: Added options for 1-byte, 2-byte, 4-byte and 8-byte octal data display, which are selected automatically for memory spaces configured as octal. Octal data has also been made editable. Added options for displaying addresses in decimal or octal as alternatives to the typical hexadecimal format. This also affects the address expression box. Prevent the cursor from moving left from the first address or right from the maximum address. Note that the new options have only been hooked up for the Qt debugger. The Windows and OS X debuggers should also be updated to include them. . Support octal on the Mac native debugger . Made GUI debuggers more uniform. Added new memory view features to Win32 debugger. Fixed spelling of hexadecimal in Cocoa debugger and added decimal address option. Fixed duplicate keyboard shortcut in Cocoa debugger (Shift-Cmd-D was both new device window and 64-bit float format). Made keyboard shortcuts slightly more consistent across debuggers. . Fixed menus losing focus, add octal display and octal/decimal address select (debugger\debugimgui.cpp). 0.237 - New Non-Working games: Exciting Boat Race, Las Vegas (Jeutel, set 1), Manpuku Suizokukan and Speed Basketball - New clones: Advisor (Italian bootleg of Space Fury), Amidar (Cirsa bootleg), Asuka & Asuka (Japan, version 1), Buccaneer (set 2), City Attack (Petaco S.A., bootleg of Pleiads), Cosmic Alien (version II, set 3), Floritas (Multivideo Spanish Moon Cresta bootleg), Guttang Gottong (Sede 3 bootleg on Galaxian type hardware), Komemokos ('Pac-Man (Cirsa, Spanish bootleg)' hack), Las Vegas (Jeutel, set 2), Meteor (Alca bootleg of Moon Cresta), Pac-Man (Cirsa, Spanish bootleg on Galaxian hardware), Pengo (set 6, encrypted), Street Fighter Zero 2 Alpha (Asia 960805), Super Rider (v1.3), Winning Spike (ver AAA) and Yataimura Kingyosukui (1-player, Japan, Ver 1.005) - New PinMAME games: Ice Cold Beer (set 2) - New drivers: speedbsk.cpp - New devices: gt913_intc, oti111_vga, rs232_patch_box and xga_copro - New Clrmamepro: https://mamedev.emulab.it/clrmamepro/#downloads - CPU . AM9517A: Store actual line state in status register, correcting to logical state when used. Reverted previous 0.234 change that corrupted DREQ input state when the mask register was written to. Added configuration methods to define initial state for DREQ inputs being active low (or high). Added a few more internal helper functions. Disable side effects of reads for debugging. Fixes (MESS) Apollo DN3000 machine cannot load programs from tape. . ST0016: Use seperated address space for character RAM space. Use device_video_interface for screen finder. Use device_mixer_interface for sound output instead preinstalled speaker device. Fixed spacing. Added notes. Use shorter/correct type values. . Zilog Z8002: Simplified EXTS[BL]? implementation (z8000\z8000ops.hxx) - SOUND . AY8930 EPSG: Improved AY8930 noise algorithm and simplify some logic . Seta ST0016 (Audio): Fixed sound pitch related to CPU clock. Use struct for each voices. Minor fix in sample position. Use device_memory_interface for fetching sample behavior. Added notes. - DEVICE . Floppy: Use the command sector size not the address size in read track and set the correct bit in st2 to indicate data crc error (machine\upd765.cpp) . RS232 Port: Added a configurable patch box device and various cleanups. Added comments with V.24 interchange circuit numbers and names to rs232.h to make the meanings of the abbreviated signal names clearer. Moved a few slot card classes out of headers and into anonymous namespaces to reduce compile depedencies and exported symbols (rs232\rs232.cpp). Added patchbox device source (bus\rs232\patchbox.cpp). - a1supply.cpp: PCBs use a 4040 CPU. Updated ROM labels. Dumped another PCB for TV Poker. - asuka.cpp: Split in subclasses - bagman.cpp . Correct mapping for PSGs and added watchdog timer. Fixes a scratchy sound in Botanic when you eat a leaf. It's supposed to be like a "ping" with different random tones each time. Sometimes after a reset, the first game you start might randomly produce the correct sound once or twice, then you get the scratchy sound. This noise appears to be a programmed effect on one AY-3-8910 channel. It is generated by the subroutine at 028B in the Z80 program. The "ping" tone effect might perhaps be a function of analog sound mixing. The commit removes some glitchy interference between this noise and music playing on the other PSG. . Fixed protection read value for clone Botanic (English / Spanish, Bagman conversion). The PCB incorrectly had a Bagman PROM left in place, we're using the one from the other Botanic sets instead but marked as BAD_DUMP. - cv1k.cpp: Driver cleanup - ddenlovr.cpp, dynax.cpp and thepit.cpp: Added DIP locations to mcnpshnt, mjmyorn2, mjmyornt and suprmous. - deco32.cpp: Refactor Dragon Gun and Locked 'n Loaded to use the Namco C355 (Sprites) device instead. Removed 'DECO Zooming Sprites' device. - dietgo.cpp: Moved everything into the driver file, as video\dietgo.cpp only had one method. - epos.cpp: Updated notes with pinout from IGMO manual - esripsys.cpp: Arbitrarily initialize bank1 to avoid debugger crash - karnov.cpp: Cleanup - konmedal020.cpp: Added 'IBM XGA Coprocessor' skeleton and few VGA 'Oak Technologies Spitfire 64111' bits (video\pc_vga.cpp). Added XGA blits. - marineb.cpp: More accurate interrupt generation. Added watchdog timer. Workaround for hang after soft reset (ID 08068). - photon2.cpp: Hook up 8255. No change in functionality. Marked Brodjaga as IMPERFECT_CONTROLS. - segac2.cpp: Speed up initialization - segahang.cpp: Some games don't feature freeplay (Hang-On and Space Harrier) - segasp.cpp: Added security PIC dumped to 'Love And Berry - 1st-2nd Collection', 'Love And Berry - 3rd-5th Collection' and clones. - simple_st0016.cpp: Added notes of CPU clock - AGEMAME: Dumped and added PAL for Escalera Tobogan - Amiga (alg.cpp, arsystems.cpp, cubo.cpp, mquake.cpp, upscope.cpp and (MESS) amiga.cpp) . Connect missing DSKINDEX signal from FDC to CIA-B ICR bit 4. Ignore bit 0 with BPLxMOD writes, fixes (MESS) hpoker/hpokera GFXs (drivers\amiga.cpp). . Fixed output channel of irq delegation, and throw one when a DMA reaches the end of a stream. Fixes asparmgp/gpmaster BGMs at very least. Avoid reading audio DMA buffers outside the allocated ranges, fixes sound buzzing/aliasing bug. Fixed DMA reload behaviour (fixes BGMs in (MESS) Ocean games), added live logging and misc (machine\8364_paula.cpp). . Fixes missing sound effects in Sidewinder, Space Ranger and Up Scope (ID 06601) (ID 06695) (ID 07601). . Guard against resetting IRQs when none is chained. Makes timer B polling reads to actually work in (MESS) barb2paln4, fixing booting (machine\mos6526.cpp). . Workaround live_counter > 8 to reset, makes abreed to boot to gameplay. Start adding logmacros. Fixed DMAON readback, giving logica2 diag BIOS the chance to print extensive floppy test info (machine\amigafdc.cpp). QA, consistent XML titles, consistent ids of virus plagued disks (additional field plus mark these as baddump). Mark the failures on mount and bulk test with ATK. Misc QA notes (hash\amigaecs_flop.xml). . Standardized alg.cpp title metadatas - Blandia: Added PLD dumps - Bowling Try!: Added support for separate voice commands per output channel to 'Tontek TT5665 ADPCM Voice Synthesis LSI' - Fast Lane: Fixed score layer color - Gun Champ: Identified unknown dipswitch as 'Enter Initials' (ID 08095) - Koi Koi Part 2: Added reference video for colors (https://www.youtube.com/watch?v=inc4tyuh4qk). Note: Color PROM outputs are connected to one of PALs. Missing color PROM apparently. - Legend of Success Joe: Added 'Wave' to company string (ID 08096) - Lucky Draw: Made working in the electronic sense. Added coin counter. - PinMAME . Added sound, outputs, save states and labels for inputs to zac_proto.cpp . Added some sound to zac_1.cpp . WIP. Some gts80.cpp, gts80a.cpp and gts80b.cpp games can be played. Indicated GTS80/A BIOS and added a list of known alternate roms. . gts1.cpp and recel.cpp: Fixed error message in Rockwell A17xx. Added sound card. Removed duplicate set. . All 4 inderp.cpp games now playable - ROLLing eX.tre.me: Hooked up EEPROM. Rewrote the PP disassembler (tms32082\dis_pp.cpp). - Royal Gum: Updated notes, it doesn't have an encrypted Z80. - Shooting Gallery: Adjusted MAME's crosshair to match actual crosshair. Shooting Gallery's default PORT_CROSSHAIR values are reverse and unscaled against the game's screen resolution. The game does not offer a calibration option, but the test mode that comes up after a few seconds upon setting the DIP switch shows the internal crosshair for adjusting the gun. The new offsets are manually determined. They are visual cues for the MAME users only and are unrelated to the game's operation. - Super Eagle Shot: Fixed 1 pixel gap in ST0016 layer. Fixed ST0016 clock (these are hasn't 8MHz or 48MHz XTAL). Fixed naming. - Super Real Mahjong P5: Fixed ST0016 clock (these are hasn't 8MHz or 48MHz XTAL). Fixed naming. Reduced unnecessary line (m_soundcpu->set_game_flag(9)). - Talbot: Added 'Rabbits to Capture' dipswitch (ID 08093) - Fixed rom names in a1supply.cpp, starfire.cpp, starfire.cpp, zac_1.cpp and zac_proto.cpp - Dipswitch fixes in 8080bw.cpp, champbas.cpp, ddenlovr.cpp, gts1.cpp, gts80a.cpp, inderp.cpp, lckydraw.cpp, rgum.cpp, segae.cpp, segahang.cpp, williams.cpp and zac_1.cpp - Description changes of alg.cpp games, Ameisenbaer (German bootleg on Galaxian hardware), Botanic (English / Spanish), Botanic (English / Spanish, Bagman conversion), Buccaneer (Aristocrat, 10173011, NSW/ACT), Buccaneer (Aristocrat, 0252523, US), Buccaneer (set 1), Centaur (Inder, alternate set), Crazy Kong (bootleg on Scramble hardware), Fighting Wu-Shu 2nd! (ver JAA) (ID 08107), Floritas (Moon Cresta bootleg), Frog (bootleg on Galaxian hardware), Galaxian Part X ('Moon Alien' hack), Galaxian Turbo ('Super Galaxians' hack), Guttang Gottong (bootleg on Galaxian hardware), Guttang Gottong (Sede 3 bootleg on Galaxian hardware), Ice Cold Beer (set 1), Kamakazi III ('Super Galaxians' hack), Monita to Rimoko no Head On Channel (prototype, hack), Moon Cresta (bootleg on Galaxian hardware), Pac-Man (bootleg on Galaxian hardware, set 1), Pac-Man (bootleg on Galaxian hardware, set 2), Pac-Man (bootleg on Moon Alien 'AL-10A1' hardware), ROLLing eX.tre.me (US), Space Dragon (Moon Cresta bootleg), Space Invaders Galactica ('Galaxian (Namco set 2)' hack), Super Galaxians ('Galaxian (Namco set 2)' hack), Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 1) and Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 2) - Renamed (asukaj) to (asukaja), (cosmica2) to (cosmica2a), (cosmica3) to (cosmica22) and (spcdraga) to (floritas) - MAME . VIDEO RENDERING SYSTEM . Updated BGFX, BX and BIMG to latest upstream. Fixes BGFX Vulkan backend does not start and falls back to OpenGL. . BGFX: Updated mipmap support in Fighters chain. Fixes crashes on Linux using Vulkan backend (bgfx\chains\Fighters.json). . MAME CORE . Notes from experiments with Clang (util\delegate.cpp). Detect Clang x86-64 thunk for first vtable entry (util\delegate.cpp). . Further API cleanups: Turned 'core_file' into an implementation of 'random_read_write'. Turned PNG errors into a standard error category. Added a helper for generating what look like derived classes on-the-fly. . UI . Made file manager software list menu search behave better (based on file selection menu code) (ui\swlist.cpp) . Locale-aware sorting for software list items (ui\selsoft.cpp and ui\swlist.cpp). Put software description on the left and sort by description by default (ui\swlist.cpp). . Set locale on start so sorting in the UI works properly (osd\windows\winmain.cpp) . Internal UI enhancements . Work around for MAME can't remember last_used_filter (ui\selgame.cpp; GitHub issue #8634) . Added support for message context to localisations. Added string_view versions of the message lookup functions. Added a few more folder options to the internal UI. Use more appropriate containers (emu\softlist.cpp). Switched to Python 3 by default - this will become a requirement. Updated scripts\build\msgfmt.py for message context support. Show all software item info in the internal UI. Search alternate titles in software selection menu. Updated 3rdparty\utf8proc to v2.6.1 (has several fixes). Added software filters for common info fields. Allow UI manager to hold onto persistent session data. Cache software lists for eight machines. Added support for loading localised system names. Added UI for selecting localised system names. Fixed clone sorting (string_view treatment; osd\strconv.cpp). Fixed a bug with ANSI codepage (osd\strconv.cpp). Added string_view treatment for the last two holdouts (util\unicode.cpp). Fixed build on non-WIN32 systems (util\unicode.cpp). . If in doubt, micro-optimise (halves startup time on Windows). Support phonetic reading field from localised system name lists. Fixed sorting of clones when not using localised system names. Allow falling through to file manager for systems that require media (ID 08103). Moved plugins menu off the main menu - it's only one level deeper now. Don't show toggles for plugin libraries, show a message when no plugins are found (ui\miscmenu.cpp). . Recovered precious vertical space for system/software names. Reduced the height of the bottom info panel by one line. The system shortname or list/software name tuple are now only displayed in the info box on the right. It's a bit out-of-the-way, but it's not something you need to see all the time. The main reason for having the quit or return to previous menu item always visible is to make it easy for someone to quit if they only have a mouse. However, we don't need waste space on the menu for this when we have a toolbar. Users without a mouse can exit using the keyboard/controller UI Cancel input (given how important this is, it's unlikely they won't have it mapped to something usable). There's now a toolbar button on the extreme right for returning to the previous menu or quitting. The tooltip and icon are appropriately context-sensitive. This recovers one line on the system selection menu, and two on the software selection menu since the separator is no longer needed. Replaced the toolbar icons bitmaps with SVGs. Colours/shapes may be tweaked before the release if people have good suggestions Flipped the simple system selection menu so the description is on the left. Moved the handling of special cases for the final menu item out of the base menu class. It's still hacky having it handled there at all, but it's less hacky without if menus that want to do something different can do it themselves. Fixed another dumb clone sorting bug (ui\selsoft.cpp). . Keep cleaning up. Got rid of one of the UI audit inputs. There only needs to be one, and the options can be presented in the confirmation menu. Two secret keystrokes is too confusing. Also got rid of the long-obsolete UI Toggle Debugger input. Added audit media button to the toolbar so it's a bit less opaque, and it can be accessed with a mouse/trackball (not just by knowing the key mapping). Made default I/O port names localisable. Made autofire plugin save port fields using the { port, mask, type } tuple, the same way MAME does. Unfortunately this will break existing autofire configuration, but it should be more stable going forward. Added some more UI keys to the default key mappings documentation. . More UI enhancements/cleanup: Made the headings in the info viewer clickable, so you can switch between DATs with a mouse or trackball (or maybe a lightgun if that's your thing). Made the UI red/yellow/green traffic light status colours less dirty-looking. The "yellow" is more of an amber-brown than a cat puke brown now, and red is brighter. The contrast with white text is definitely fine for red and green, but it's reduced a bit for yellow. However there's a limit to how dark you can make a yellow or orange colour before it looks muddy. Reduced the number of places the UI uses red for things that aren't errors. The error colour should be used sparingly, for actual errors. Improved the colour swatch display in the RGBA colour editor. It now has black/white underlay so alpha effects are move obvious. Also fixed a bug preventing the channels being run down to zero. Fixed double-clicking configure machine causing MAME to exit from the system selection menu. Also slightly adjusted the colours of the toolbar buttons again. More wording and localisation fixes for colours menus. . Allow clicking the adjuster arrows on menu items. This allows things like video options and DIP switches to be configured using a mouse only. Also fixed a bug preventing paging menus with a mouse if the first item scrolled off the bottom is not selectable. . Made it possible to cancel a media audit while it's in progress. Also made the media audit multi-threaded so it's faster. Made the DIP switches in the DIP switch preview clickable. Made the system and software selection menus leave focus on the same system when clearing the search rather than jumping to the first item. Also fixed a couple of bugs in the logic for keeping the selected item visible. Fixed a few places that weren't showing localised system names. Made UI Cancel clear a search in the file manager the same way it does on the system and sofware selection menus. Made it possible for plugin menus to handle UI Cancel more naturally, backing up to the previous plugin menu rather than dropping straight back to the list of plugins. Updated the autofire, cheat and cheatfind plugins, and fixed a few other issues in the cheatfind plugin. Show full sofware name in right panel for favourites, too. . Audit menu was using one variable for two things, which obviously doesn't work. DIP switch menu could trigger spurious clicks on for systems with too many DIP switch groups to show. Also work around Xcode's issues with casting non-const to const reference wrappers. . Cleaned up rendering of info views. Put the description for systems in the info box - it's useful for the fruit machines with very long names that are truncated in the list. Also stopped truncating manufactuer and parent name in the info box. Made the text layout class capable of handling lines containing combinatations of left/centre/right-justified text and got rid of the legacy UI manager text wrapping function. Made the system/software selection menus and the info viewer share the same code for formatting info text. This means the multi-column layout works properly in the info viewer now, and the code is a lot simpler. Also the system/software selection menus don't have to redo the text layout every frame now. Made the info viewer update the text layout if the output aspect ratio changes, and cleaned up more legacy code. The lines in the info viewer are no longer bogus "menu items", and there's a lot less special-case code to support it in the base menu class. . Better code for carrying justification across when wrapping. Fixed horizontal offset on text boxes with blank lines. Further improved behaviour of info box on system selection menu, and fixed alignment issues. . Changed the default mapping for UI select to not trigger on Alt+Enter fullscreen toggle (fullscreen toggle still doesn't work in menus - actually fixing that is complicated.) Made the about box wrap text properly, made the title and backtrack menu item always visible, and added a footer with the VCS revision. Don't highlight the favourites and info toolbar buttons if there's no selection (can happen if filters produce no results). Also made the info viewer appear even if no info is available - it's less confusing to see an empty menu than wonder why clicking the button does nothing. . Added a bit more info to the about box, moved the VCS revision to the heading. Don't show "not" codes in prompts - they're not helpful. Fixed a couple of Coverity warnings. . Pass events for automatically generated menu items to the plugin - they will have index zero. Don't try calling the data plugin from the main menu if the system isn't starting yet - doing so will prevent the data plugin from loading at all. Don't show plugin options menu in main menu before start - it doesn't work anyway. Fixed another case where the menus may not automatically scroll the first item into view. . Beter provision for plugins with multiple menu levels. Make it possible for a plugin to specify which item should be selected on repopulate. Also allowed plugins to specify the UI heading flag for menu items. Fixed untranslated info box title appearing on system/software selection menus. . PLUGINS . Added a new plugin that lets you create input macros. Besides the obvious application of cheating in Track & Field, this may be useful for making emulated games more accessible to people with disabilities or injuries that make certain input sequences difficult. To try out the attached demos (https://www.mameworld.info/ubbthreads/download.php?Number=392226), extract the archive into your plugin data directory. Included are: raiden: player 1 autofire on keyboard space bar, sf2ce: player 1 right-facing shoryuken using light punch on keyboard M, trackfld: player 1 sprint cheat on keyboard left shift and hotgmck: player 1 "punish" on keyboard Q ("pianos" the discard keys - it's actually too fast for the key matrix scan to see every input). Updated input macro plugin to select sane items when changing menus. Other plugins not updated yet, but may be at some point in the future. Documented the input macro plugin. The only undocumented plugins now are the cheat plugin, the cheat finder plugin, and the port name plugin. . Sort input selection menus for autofire plugin. Made left/right repeat when held (makes setting long delays/durations easier). Added headings for devices in input selection menus (helps when controller buttons have identical names, e.g. AES). Made intial selection when moving between menus intuitive, log some errors on saving/loading configuration. . Fixed ticking when menu is left on the screen (plugins\timer\init.lua) . Changed the hiscore plugin to save inside the "hiscore" folder in the plugin data directory. The old hiscore path setting has already been removed from MAME for some time. This means the plugin was always saving in the "hi" folder in the working directory with no way to change it, which is problematic on Linux and macOS, particularly for distro packagers. There are lots of plugin and UI changes in this release, so we may as well get this out of the way now. Also made it possible to change the "timed save" option from the Plugin Options menu, and save that in the data folder, too. . Started documenting plugins. Added a couple of missing command-line options and added a local table of contents to the (rather long) command line options page. . Use SPDX short identifiers for licenses in exports (more precise and easier to localise), use CC0 for hiscore plugin rather than CC0. . Handle multiple blocks in dat (plugins\data\data_command.lua and load_dat.lua) . SOFTWARE LIST . Added support for a 'notes' field to store information about a software list or software list item (emu\softlist.cpp). . Use more appropriate containers (emu\softlist.cpp). Ignore notes elements when loading software lists. It's effectively a comment that isn't a comment syntactically, it's being used for things that are not useful to display in the internal UI, and it slows down startup (emu\softlist.cpp). . MiniMAWS . Added software list and software notes to MiniMAWS (scripts\minimaws\lib\*) . Changed geometry of disclosure triangles (scripts\minimaws\lib\assets\disclosedown.svg and discloseup.svg) . Fixed up schema for software list notes, made sofware list notes display initially collapsed (scripts\minimaws\lib\*). . Multi-Language . Re-generated translations for I/O port names. Trying to collect messages from everything at once hits some limit in xgettext and causes messages to be lost no, so I've split it up by the second-level source directories. For some reason xgettext thinks overloaded Lua functions are blasphemy, so that has to be worked around, too. . Updated Chinese and Greek translations. Made some corrections to Chinese localisation after discussion with YuiFAN. Fixed syntax errors in translation files (Chinese_Simplified/strings.po and Chinese_Traditional/strings.po). . Fill in Japanese names for main player buttons (language\Japanese\strings.po) . Optimized the multithreading strategy for -listxml. The previous algorithm would spawn tasks but wait for them in sequential order. This is not necessarily optimal, and with these changes we will respond to whichever task completes first. This triples the speed of a full -listxml on a (Quad Core 2) computer (mame\infoxml.cpp). . Set file names via -snapname when exiting in -seconds_to_run. Note: The '-str' option will write a screenshot to the system's snapshot directory with the file name determined by the '-snapname' option (emu\video.cpp). . Made behaviour of trying to open things inside archives a bit more consistent, fixed another bug with root paths. Fixed two issues affecting Windows: Browsing from a location inside an archive causes MAME to hang. Files inside archives are not listed (util\zippath.cpp). . More cleanup on the FAQ page (usingmame\commonissues.rst) - VGM player: Added 44 new entries and 3 updated entries (hash\vgmplay.xml) - Compiling . Cleaned up CI targets: Restricted Linux CI build to only run on changes to code, translations, software lists, and build scripts. Restricted Windows/macOS CO to only run on changes to code and build scripts. They provide nothing over Linux for the other stuff. Added plugin properties and controller file validation to the "hash" workflow. Added a workflow for building documentation, so pull requests that affect documentation will at least get a basic check in advance (.github/workflows/ci-linux.yml, ci-macos.yml and ci-windows.yml). Added a separate CI target for localisation updates that produces an artefact, and removed the message catalogs from the trigger paths for the Linux CI build. . Removed compiled message catalogs on clean, show clean commands for VERBOSE=1 (makefile). . Avoid MSVC debug assertion (osd\strconv.cpp) - Debugger . Removed outdated/unused FD1094_HACK (debug\dvmemory.cpp) . Extended target address syntax to include device/address space. . Added a validity check to ensure address space names are tag-like and unique, since they're now used as identifiers in debugger commands. . Extended the syntax for target addresses to allow them to be qualified with a colon followed by an optional device tag and/or address space name. If only the device needs to be specified, a debugger CPU number may also be used. This makes commands like bpset and wpset more flexible, as they can operate on CPUs other than the currently visible CPU. Commands like find, fill, dump and load are more flexible as they can access any space of any device. . Removed now-redundant CPU parameters from many commands, and renamed pcatmemp to pcatmem for consistency with other commands. Extended region syntax for saver/loadr to support tags relative to the visible CPU (e.g. you can use "." for the region with the same name as the visible CPU, or "^sibling" syntax). Added an optional root device parameter to memdump. Changed interpretation of Boolean values to support numeric expressions as well as true/false strings and literal 1/0. . Added checks that the specified device is CPU-like to various commands that require a CPU (e.g. focus). Previously these commands would crash or trigger an assertion failure if a tag for a non-CPU devices was specified. . Fixed the cpunum symbol so it uses the same rules for determining what is or isn't a CPU as parameter parsing. . Made device_t sanitise subtags better. Previously you could cause an assertion failure or crash MAME by giving it unexpected relative tags via Lua or the debugger. . Added help topic alias support, and reworked the data structures to improve the performance of looking up debugger commands and help topics. Removed the "ref" parameter from debugger command functions (std::bind can hold extra argument values for you if you need them). Also added an error message if duplicate debugger commands are registered. . Updated help for commands that changed syntax, and also updated summaries for some commands that had changed in the past without corresponding help updates. . Fixed multiple issues with debug memory tracking. Track write accesses rather than read accesses. Actually install the taps when the trackmem command is executed. Correct cell addresses for address-shifted spaces in Qt and Windows memory viewers (debug\debugcpu.cpp and modules\debugger\qt\memorywindow.cpp). . Fixed pcatmem command (debug\debugcmd.cpp) . Extended the memory access prefixes in debugger expressions to support address space names. Made the debugger history command aware of how much history it has collected, and added a help topic for it to the built-in debugger help. Started updating the documentation for the web site, and corrected some of the more misleading built-in debugger help. . Allow wplist and bplist to accept a CPU argument to list breakpoints/watchpoints for a single CPU only. Fixed some corner cases in address space syntax in memory accesses, and allowed memory region accesses to use tags relative to the visible CPU. . Updated more pages of debugger documentation. Also updated more of the built-in debugger help. . Made the mount and unmount commands accept instance names as well as brief instance names. Also updated another page of debugger documentation. . Added a register points view to the GUI debuggers, to go with the breakpoints and watchpoints views. Extended [brw]p(clear|(en|dis)able) commands to accept multiple arguments to perform the same action on multiple (break|watch|register)points at once. Also made rplist accept a CPU for showing a single CPU's register points ([bw]plist already support this). Updated registerpoints debugger commands page, and updated other pages for latest extensions to syntax. . Updated cheat commands to work with arbitrary devices and address spaces. You can still only search RAM areas in a single address space at a time, but any address space of any device can be used now. Made the cheatinit/cheatrange commands not affect current state if the arguments are invalid. Also fixed some bugs in the cheat commands. Updated documentation for cheat commands, and added a simple worked example. Also added single-sentence descriptions of what (break|watch|register)points are to the top of the relevant pages. . Documented debugger's built-in functions for expressions (docs\source\debugger\index.rst). Octal cheats for octal address spaces. Fixed regression in interpreting db@, ib@, ob@ and similar memory access operators (debug\express.cpp). Memory accesses in expressions don't support taking the first exposed space (debug\express.cpp). 0.236 - New games: Danger Express (prototype), Head On Channel (prototype, hack), OOPArts (prototype, joystick hack), SegaSonic Bros. (prototype, hack) and 'unknown Paradise Automatique / TourVision bowling themed poker game with gum prizes (France)' - New Working games: Killer Instinct 2 (upgrade kit) - New Non-Working games: Que Long Gao Shou, 'unknown medal game GS471' and Zelos (Japan, terminal) - New clones: American Poker II - Jackpot (Spanish, set 1), American Poker II - Jackpot (Spanish, set 2), American Poker II - Jackpot (Spanish, set 3), beatmania complete MIX (ver AA-C), Carnival (cocktail, earlier), Casino Five (3315-12, U5-0), Cherry Bonus III (set 5, encrypted bootleg), Jor-eop Jeungmyeongseo (Korea), Leader (version Z 2F, Greece), Missile / Circuit (bootleg of Alpha Fighter / Head On), Mushiking The King Of Beetle (2K3 2ND Ver. 1.000-, Korea), Pucman, Route 16 (Sun Electronics, set 2) and 'unknown 'Pac-Man' gambling game (set 2)' - New AGEMAME games: Diamonds & Hearts - Power Pay (10229311, NSW/ACT), Escalera Tobogan (MPU4, set 1), Escalera Tobogan (MPU4, set 2), Escalera Tobogan (MPU4, set 3) and Peacock Flutter (01J00011, NSW/ACT) - New PinMAME games: Alaska, Black Magic 4, Cavalier, Crazy Race, Don Quijote, Faeton (6 digits), Fair Fight, Fast Track, The Flipper Game, Hardbody (rev. D), Hook (UK 4.06, display A4.01), Hot & Cold, MotorDome (rev. B), Mr Doom, Mr Evil, Poker Plus, Screech, Swashbuckler and Torneo - Removed games: Motor Show (set 2) - New drivers: konmedal020.cpp and recel.cpp - New devices: ace_sp_reelctrl, ace_sp_reelctrl_pcp, demoneye_audio, irem_m37b_audio, irem_m37b_ue17b_audio and panther_audio - New mame.ini options: compressor (CORE SOUND OPTIONS) - New Clrmamepro: https://mamedev.emulab.it/clrmamepro/#downloads - CPU . Dynamic Re-Compiling: Proof-of-concept for optimisation of calling out. Resolve address space virtual member function addresses on constrcution and call them directly. Provides a small but measurable improvement to performance in drivers that use the recompiler and access the memory system a lot (cpu\drcbex64.cpp). . Hitachi H8: Fixed NMI on H8/300 (h8\h8_intc.cpp) . hyperstone E1-32XN: Fixed issues with SARDI instruction (e132xs\e132xsdrc_ops.hxx and e132xsop.hxx) . Intel 8257 DMA Controller: Fixed device so TC can work with multiple devices . Intel I386: When DEBUG_MISSING_OPCODE is defined, log a small backtrace. This way together with the full list of bytes that form the non recognized opcode there are the addresses of the previously executed instructions. . Motorola MC68HC11xx: Added stubs for TCTL registers. Documented coding bug in asma2k (mc68hc11\mc68hc11.cpp). . Texas Instruments TMS32082: Various bug fixes - SOUND . Ensoniq ES5503: Initialize variable properly. Clean up code a little. . OKI MSM6295/6376/9810 ADPCM: Explicitly clamp output streams to within range . Sound Interface . Added compile-time option to show visible annoying red border when sound is overdriven. Leaving it on for a bit at the start of the cycle so that devs might identify and fix some of these cases (emu\sound.h and ui\ui.cpp). . Fixed overdriven sound in various Atari games (atarig1.cpp, atarig42.cpp, atarigx2.cpp, beathead.cpp, cybstorm.cpp, eprom.cpp, harddriv.cpp, skullxbo.cpp and thunderj.cpp) . Clip less in xexex.cpp. Rebalance audio levels in most seta.cpp games. Reduced volume in Mario Bros. so we don't clip constantly just when running around (audio\mario.cpp). . Reduced overdriven audio volumes (ID 02099) in 20pacgal.cpp, alpha68k_n.cpp, cvs.cpp, dkong.cpp, equites.cpp (audio\ad_sound.cpp), hng64.cpp, kaneko16.cpp, lethalj.cpp, mcr68.cpp, meritm.cpp, stellafr.cpp, tank8.cpp and audio\decobsmt.cpp (deco32.cpp, de_3.cpp, de_3b.cpp and whitestar.cpp) . Fixed overdriven sound in atarisy1.cpp, dec0.cpp, gaelco3d.cpp, Gunbird and audio\segam1audio.cpp. Clamp audio from the custom device in cps3.cpp. Fixed ridiculously overdriven sound in toaplan2.cpp. Reduced volume in Ghox (spinner) to avoid overdriving speaker. . Reduced overall volume to prevent overdrive in m72.cpp, segas16a.cpp and segas16b.cpp. Lowered OKIM6295 volume in sbmjb.cpp. Reduced audio levels to avoid hitting the limiter in cchasm.cpp. . Various volume level adjustements to avoid hitting limiter in astrocde.cpp, boogwing.cpp, gottlieb.cpp, ladybug.cpp, metlfrzr.cpp, mustache.cpp, pgm.cpp, terracre.cpp and xyonix.cpp. . Make the compressor optional (clamp overdrive to -1.0-1.0 when off) (emu\sound.cpp). Note: The audio compressor temporarily reduces the overall volume when the audio output is overdriven. The default is ON (\-compressor). . ICS2115 WaveFront Synthesizer: Implemented pan for stereo support . Votrax SC-01: Re-balanced some Votrax stuff, attempting to keep the chip output between +/-1.0. - DEVICE . 8042 Keyboard/Mouse Controller: Improved management of PS/2 mouse. Added mouse interrupt. Support more mouse commands. Use command byte to enable/disable mouse and keyboard interrupts. Now the PS/2 mouse works with Windows 98. Mouse reset answers at least one byte if mouse disabled. Makes (MESS) nforcepc BIOS happy. . Clock: Added setters for period, duty cycle and pulse width (machine\clock.cpp). Note: Set the period either with device_t m_clock, or with set_period if it needs to be more fine-tuned (m_clock has higher priority). The duty cycle can be changed with set_duty_cycle (default is 50%), or the pulse width (active time) can be set directly with set_pulse_width. Output signal at machine start is right after falling edge. . CHDMAN: Allow specifying the desired block size for loose files/verifying a CHD's block size (util\harddisk.cpp) . Floppy . Added head count check (formats\wd177x_dsk.cpp). Prevents further evaluation of incompatible formats. . Fixed address usage for serial port registers (machine\fdc37c665gt.cpp) . Imgtool: Removed opresolv.h from emu.h and some other base headers. Splitted legacy floppy image class into a separate file. Clean up a lot of #includes in src\lib and tools\imgtool. - New Cheat.dat (Wayder): https://ss1.xrea.com/nekoziman.s601.xrea.com/cheat/ - banprestoms.cpp: Identified some DIPs - bartop52.cpp and maxaflex.cpp: Fixed Atari 'ANTIC' DLISTL and DLISTH writing to only affect the high and low byte component that is spread between m_dpage and m_doffs (video\antic.cpp). Fixes artifact colors in (MESS) Atari 800 Choplifter, David's Midnight Magic, Lode Runner, Diamond Mine and Ultima IV. - by35.cpp and mcr.cpp: Moved several constructors out of the header, fixed a save state issue and made outputs use finders (audio\bally.cpp). - chihiro.cpp and naomi.cpp: Dumped Sega 838-13683-91 Rev.A JVS I/O (machine\jvs13551.cpp) - cromptons.cpp: Improved notes - cv1k.cpp: Cleanup driver - dooyong.cpp: Reduced volume for YM2151/M6295 sound and coalesced some machine configuration - exidy.cpp: Split up state class and reduced reliance on driver init functions - f-32.cpp . Royal Poker 2 fixes and updates. Game is now essentially playable, but marked not working due to settings-saving issues. Hooked up M6295. . Fixed issues with SARDI instruction (e132xs\e132xsdrc_ops.hxx and e132xsop.hxx), fixes Mosaic (F2 System). - funkyjet.cpp: Moved everything into the driver file, as video\funkyjet.cpp only had one method. - galpani3.cpp, jchan.cpp and suprnova.cpp: Fixed oob access on transcient incorrect sprites, use masking instead of % (video\sknsspr.cpp). Silence watchdog access in suprnova.cpp. - goldnpkr.cpp: Base screen parameters on how games program the CRTC. Filled in proper screen parameters for goldnpkr, witchcrd and megadpkr. There may be other games that use different parameters. Demoted megadpkr and megadpkrb to not working as they can only boot once before writing timekeeper data that prevents booting again. - goldstar.cpp . Decryption progress on clone Super Seven. It now gets in game but needs GFX and color fixes, plus decryption might have some error lurking. . Point reel tilemap to the right GFX rom offset for Cherry Master '97 - kikikai.cpp: Added PCB infos and corrected DIPs. Clean up video\kikikai.cpp a little. - kinst.cpp . Simulate CPLD for clone Killer Instinct 2 (upgrade kit) (Game now playable). Original device was reverse-engineered with a logic analyzer and test ROMs. The CPLD behaves as a slave device, returning data when selected, based on previous writes. . Driver cleanup. Added preliminary screen raw parameters. - konmedal68k.cpp . Identified konslot and konslot2 (Cross Magic Mark 2 (1996) and Fruits Magic (1996)). Fixed display resolution and offsets. . Adjusted some DIPs definitions . Made 'Powerful Chance' show the title screen - meritm.cpp: Removed layer enable debug keys - merits.cpp: Correctly identified Scorpion (Mar 24, 1992) as "Pub Time Darts II" - missbamby.cpp . Identified unknown game = Multy (Deta 1987). Added its PCB ASCII layout. . Dumped the PROM for Basket - n8080.cpp . Merged some input ports and removed tag lookups . Added conf setting for switching Space Fever to monochrome - qix.cpp: Removed PIA 5 popmessage. This PIA is supposedly unused. - redalert.cpp: Converted sound boards to devices and removed a couple of trampolines, making the driver state class considerably tidier. Tidied up the driver a little. - royalmah.cpp: Configured banking and views for Mahjong Shinkirou Deja Vu (Japan) and Mahjong If...? [BET] - segac2.cpp . Decouple driver class from md_base_state (machine\megadriv.cpp and includes\megadriv.h) . Improved Waku Waku Marine controls - segas16b.cpp . Revert MAME 0.231 video attributes workaround, it just causes new problems. Fixes random graphics flickering in Altered Beast (set 8) and clone Altered Beast (set 6) (ID 08065). . Decapped and dumped I8751 MCU for clone Juuouki (set 7, Japan) (8751 317-0077), fixes music does not stop when the sequence of transformation begins (ID 04022). - srmp2.cpp: Fixed no character voices in Super Real Mahjong Part 2/3 (includes\srmp2.h) (ID 08081) - stv.cpp . NMI is unconditionally requested for screen clock change commands, fixes booting in (MESS + hash\saturn.xml) bigichig, capgen1, capgen4 and capgen5 (machine\smpc.cpp). . Guard against deleting partial sectors in cmd_delete_sector_data, fixes (MESS) pstarcol crash after first attract cycle. Added fixed status for NetLink, allow (MESS) dragndrm to actually boot (on -non drc). - taito_z.cpp: Use output finders instead of output().set_value, split up state class a little. - tiamc1.cpp: Set games release years to 198?. Actual release dates unknown. According to one of developer Konek-Gorbunok, Billiard and Kot-Rybolov was made before 1988, Snezhnaja Koroleva after 1988. - toaplan1.cpp, twincobr.cpp and wardner.cpp: Use single pass priority drawing for sprite vs tilemap priority. Use device-specific delegate for priority mask. Use device_video_interface to find screen (video\toaplan_scu.cpp). - AGEMAME . acesp.cpp: Dumped the 68705P3 MCUs on 2 different types of sp.ACE fruit machine reel driver PCBs . aristmk6.cpp: Updated documentation. Added new game_rom's to Wild Africa - Millioniser (0351083, US). - Agress - Missile Daisenryaku (Japan): Fixed 'Lives' dipswitch - Baby Fruits: Added year for clone Baby Fruits (25 pts version) - Bonze Adventure: Added PCB infos - California Chase: Don't try to use portr for half the bus width - Carnival: Corrected PROM label and location for Carnival sets using standard PCB - Change Lanes: Fixed steering problem, probably (ID 08075). - Cosmic Chasm: Combined source files, added I/O port finder and reduced audio levels to avoid hitting the limiter. - Cyberstorm: Cleaned up inputs and added comments to match observations and behaviours in test mode - Darius: Added 'Continue Price' dipswitch to clone Darius (US, rev 2) (ID 08077) - Dead Connection: Fixed mislabled and misassigned dipswitches (ID 08059) - Fantasy Zone: Revert MAME 0.231 video attributes workaround for Fantasy Zone, it just causes new problems. - Kart Duel: Redumped data roms - Marvel Land: Made clone Marvel Land (Japan) the parent, the US prototype is an earlier incomplete build, it ends abruptly, lacks any end credits, and is missing many of the levels plus various other incomplete elements, see https://tcrf.net/Marvel_Land_(Arcade). - Missile Command: Eliminated space.device() calls - Multi Baby: Added basic mappings - PinMAME . barni.cpp: Added layout. WIP. . gts1.cpp: Various fixes. Still not working though. Descriptions for DIPs. . s3.cpp, s4.cpp, s6.cpp and s6a.cpp: Use output finders instead of output().set_value, reduced tag lookups. . spirit76.cpp: Added a layout. Mostly working. Fixed knocker when free game attained. . mrgame.cpp: Added tilemap drawing - Dakar works properly and World Cup 90 has some issues. Fixed 5bpp sprite layout, only put attribute handler over tilemap attribute area of object RAM. Merged Motor Show (set 1) and Motor Show (set 2) and added a third BIOS rom set (cpu_2.ic13b and cpu_2.ic14b). Added new roms to Mac Attack. - Pipeline: Hook up sound communications and YM2203. Fixed sound PPI mapping - Play Sonic 4: Added inputs and DIPs as per test mode - Pole Position II: 'Freeze' dipswitch works fine (ID 08090) - Roller Jammer: Added screen raw parameters. Modernized MSM5205 hookup, fixes broken 'SOUND TEST' in service mode (ID 08076). Added missing input. - ROLLing eX.tre.me: Mostly playable driver. Various bug fixes to the TMS320C82 core. TODO: TMS320C82 parallel processors are not emulated. PP0 transfers polygon data from a software FIFO to the graphics processor. This is currently HLE'd. PP1 most likely does sound mixing. This is currently not emulated. 93C66 EEPROM. Alpha blending (probably based on palette index like on gaelco3d). Minor Z-buffer issues. Wrong textures in a few places (could be a CPU core bug). Networking. - Rumba Lumber: Corrected main CPU clock, fixes sound regression. - Space Harrier: Hook up I8751 MCU and removed simulation. The MCU for clone Space Harrier (8751 315-5163) is handcrafted and marked BAD_DUMP. There is a slight issue with the initial synchronisation, so there is a hack to ignore the problematic write. - Speedway: Redumped u29 gfx1 rom - Taxi Driver: Reduced tag map lookups in driver - Vigilante: Swapped punch/kick buttons to match with arcade cabinet (ID 08078) - Wonder Planet: Decapped and dumped MCU. Removed simulation and clean ups. - Fixed rom names in aristmk6.cpp, namcos1.cpp, segaatom.cpp, segas16b.cpp and vicdual.cpp - Dipswitch fixes in banprestoms.cpp, blockout.cpp, cybstorm.cpp, d9final.cpp, darius.cpp, gts1.cpp, kikikai.cpp, konmedal68k.cpp, plsonic4.cpp, polepos.cpp, spirit76.cpp and taito_f2.cpp - Description changes of Carry On (Pcp) (sp.ACE) (set 1), Carry On (Pcp) (sp.ACE) (set 2), Cross Magic Mark 2, Faeton (7 digits), Final Frontier (Bwb) (sp.ACE), Fruits Magic - The Magic Party, Hardbody (German rev. B), Hardbody (rev. C), Killer Instinct 2 (upgrade kit), MK6 System Software/Setchips, Makaimura (Japan), Makaimura (Japan Revision C), Makaimura (Japan Revision G), Marvel Land (US, prototype), MotorDome (German rev. B), Motor Show, MotorDome (rev. D), Pub Time Darts II Plus 2 with Solo Challenger (Mar 24, 1992), Queen of Sheba (10133721, NSW/ACT), Route 16 (Sun Electronics, set 1), SegaSonic Cosmo Fighter, Sotsugyo Shousho (Japan), SF-HiSplitter (set 1), SF-HiSplitter (set 2), SF-HiSplitter (alt sound), Space Fever (new version), Space Fever (old version), Space Fever (older version), 'unknown 'Pac-Man' gambling game (set 1)', Wild Tepee - Power Pay (20230211, NSW/ACT) and Wizard Ways - Lady Luck (20139121, NSW/ACT) - Renamed (hardbody) to (hardbodyc), (konslot) to (crossmg2), (konslot2) to (fruitsmg), (marvland) to (marvlandup), (marvlandj) to (marvland), (scrpiondc) to (pubtimed2ch) and (unkslot) to (multy) - MAME . VIDEO RENDERING SYSTEM . BGFX . Fixed UV rounding errors in fs_blit_palette16. Switched back to direct texture upload rather than CPU copy. . Use D32F texture format instead of D24, should fix AMD hardware (bgfx\target.cpp). . Switched fs_blit_palette16 to expand bitmap_ind16 contents to R8. Fixes vertical off-by-one shift in games with an odd pixel count along X. . Fixed option -bgfx_backend d3d9 not working (ID 07883) . Use I/O filter for zlib decompression, avoiding the need to use zlib directly (emu\render.cpp). . Polygon rendering: Removed unused flags, expose object data array directly and added ability to register other poly_arrays. Minor naming/consistency cleanups (video\poly.h). Added docs for poly_manager (docs\source\techspecs\poly_manager.rst). . Added rectangles operators & and | (intersection and union) from the existing &= and |= ones (lib\util\bitmap.h) . Updated the example layout links to point to 0.235 - this means there's now an example of embedded SVG (techspecs\layout_files.rst). . MEMORY SYSTEM . Fixed a number of problems with specific boundaries (emu\emumem*) . Take into account the pre-offsetting when expanding handlers (emu\emumem_hedr.ipp and emumem_hedw.ipp) . DEVICES . Allow devices to specify a parent for the purpose of searching for ROMs (emu\device.cpp) . Reworked device type definition macros to eliminate one level of indirection when using device types by name. Fixed a potential initialisation order issue that could affect device parent ROMs. Eliminated the need for DEFINE_DEVICE_TYPE_NS - just use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_PRIVATE with fully-qualified names. Changed device type aliases to static auto references in the headers. Added ROM parents for m68705u3 and a2diskiing. Added Doxygen comments for system/device definition macros and system flags. Updated Doxygen configuration to be based on up-to-date template, updated bootstrapped theme so it doesn't 404 (still won't work due to lack of support for jQuery smartmenus). . Moved a few slot devices into anonymous namespaces, getting more stuff out of headers and reducing dependencies. . MAME CORE (util\delegate.*) . One less level of indirection for functoid delegates (util\delegate.cpp). If a delegate is set to a functoid (e.g. a lambda) with a signature that is an exact match for the delegate's signature, it will be bound directly. If arguments or the return value need conversion, a static adaptor will be generated. This removes unnecessary indirection through std::function::operator() (util\delegate.cpp and emu\devdelegate.h). . More cleanup and future-proofing (util\strformat.h, util\delegate.h). Found a SFINAE trick to detect absence of stream-out operators. Fixes building with C++20 standard library (util\strformat.h). Fixed a commend and removed an unused declaration from MSVC member function pointer wrapper. Added support for discarding functoid return values for delegates returning void. Added support for using std::ref to bind non-copyable functoids (util\delegate.h). . Fixed multiple issues (util\delegate.cpp): Fixed this_pointer displacement being reapplied after delegates are copied - caused issues with classes with multiple inheritance. Made null member function pointer test conformant with Itanium C++ ABI specification. Corrected size of this pointer displacement - fixes issues on big Endian targets. Fixed function addresses for virtual member functions on targets that use function descriptors (e.g. PPC64). Applied shift to this pointer displacement for targets that use the ARM variant of the Itanium ABI. Fixed this pointer displacement not being applied for virtual member functions on targets using ARM variant of the Itanium ABI. Fixed this pointer displacement being incorrectly applied to vptr on targets using ARM variant of the Itanium ABI. Made less code conditionally compiled to make it easier to catch errors (util\delegate.cpp). . Try to catch issues earlier and some cleanup (util\delegate.cpp). Optimised generation of late bind helper functions. The late bind helper function doesn't depend on the delegate signature - only on the late bind base class and function target class. Having it inside the delegate base class means it needs to be instantiated for every combination of late bind base class, function target class and delegate signature. In a typical driver file, there is only one late bind base class (delegate_late_bind), and there will be delegates with multiple signatures bound to function members of the same class (e.g. read and write handlers, possibly of different widths, bound to members of the driver state class). By moving the late bind helper out of the delegate base class, the number of required instantiations can be reduced. By moving the body out of the enclosing class declaration, the compiler can be encouraged to coalese instantiations across translation units. While this won't give a further reduction in compile time, it should at least reduce the output binary size by reducing duplication for devices that frequently have handlers installed in memory maps. Added an additional template parameter to delegates allowing the late bind base class to be changed if desired. Moved the MSVC implementation "this" pointer optimisation out-of-line and added logging. Also cleaned up the Itanium "this" pointer adjustment and code pointer resolution implementation to reduce duplication and conditional compilation. Made binding_type_exception give a more meaningful what() message than "std::exception". Added extensive validity tests for delegate functionality. Pointers to member functions are tested, including multiple inheritance, virtual and non-virtual member functions, and checking for generational loss across copying/assigning delegates. This should properly exercise "this" pointer adjustment for the Itanium and MSVC implementations, and vtable lookup for the Itanium implementation. So-called late binding functionality is tested, including exceptions on failure. Functoids are tested, although given the encapsulation it's not possible to check that an apator isn't generated when it shouldn't be. Fixed calculation of this_pointer when casting member function pointers across virtual inheritance relationships using MSVC with /vmg (util\delegate.cpp). . Fixed structure return with MSVC C++ ABI. Automatically use delegate_mfp_compatible to generate an adaptor for member functions that return non-scalar, non-reference types (partially addresses GitHub #8597). Enabled the MSVC delegate implemenation for MSVC on AArch64. Switched back to neater delegate types for layout item bounds and colour (util\delegate.h). . Made MSVC delegates capable of walking past all the thunks MSVC puts in the way of actually calling a member function. I'm not accounting for the "this" pointer being passed in RDX when the return value is an oversize scalar. This is harmless because it won't see anything that looks like a virtual call thunk using RCX when RCX points to uninitialised space for the return value. It just means virtual member function calls won't be bypassed if the return value is an oversize scalar, but that doesn't happen frequently anyway (util\delegate.cpp). . Make comparison operators more technically correct. For Itanium ABI, two null member function pointers should compare equal even if the undefined bits differ. For MSVC ABI, there's all sorts of complexity around what happens when you compare pointers to member functions for different inheritance types. You'll still occasionally get weird results comparing pointers to members of different classes (util\delegate.h). . Recognise a couple more MSVC thunks. The MSVC C++ ABI doesn't reserve the first vtable entry for classes without a virtual destructor, so the instruction to load the virtual member function address may not need an immediate displacement. Also recognise virtual member function call thunks for AArch64. Added a couple of comments about assumptions (util\delegate.cpp). . PowerPC-64 Little Endian drops function descriptors. At some point I'll make a proper header ABI detection. There's too much stuff to keep in the delegate sources, and it will be useful for other stuff like recompilers (util\delegate.cpp). . Use "compatible" delegates for MinGW GCC i686. The Itanium delegate has questionable value on on MinGW i686 as it injects a conditional branch in the hot path for delegates anyway to deal with the different __thiscall convention. It's somehow breaking and causing memory corruption in full builds, but I don't have the time to work out exactly which delegate type is the problematic one, especially not with a release coming soon. This will probably cause 32-bit MinGW builds to become substantially larger (util\delegate.h). . INPUT/OUTPUT . Use output finders instead of output().set_value for atari_s1.cpp, by17.cpp, by35.cpp, by6803.cpp, harddriv.cpp, kenseim.cpp, opwolf.cpp, play_1.cpp, s3.cpp, s4.cpp, s6.cpp, s6a.cpp, taito_z.cpp and videopkr.cpp . Used finders instead of tagmap lookups for rombanks in d9final.cpp, igs_m027.cpp, ppmast93.cpp, tmspoker.cpp and ultrsprt.cpp . Used finders instead of tagmap lookups and other minor cleanups in airraid.cpp and hanaawas.cpp . UI/OSD . Started refactoring file I/O stuff. Added more modern generic I/O interfaces with implementation backed by stdio, osd_file and core_file, replacing io_generic. Also replaced core_file's build-in zlib compression with a filter. Added option to supply abstract I/O interface to unzip.cpp and un7z.cpp rather than filename. Converted osd_file, core_file, archive_file, chd_file and device_image_interface to use std::error_condition rather than their own error enums. . Return would block when reading a socket with no data available - no error can be confused with remote shutdown (osd\modules\file\posixsocket.cpp and winsocket.cpp). . Added fractional zoom-out support to the tilemap viewer (ui\viewgfx.cpp). Also added IPT_UI_ZOOM_AUTO for toggling auto-zoom mode without needing to cycle through all zoom levels. . Made zoom controls a bit more intuitive . The UI controls are described as zoom in/out, but they had the opposite effect on the palette and tile viewers. That has been changed to make them consistent with the tilemap viewer. . Made the default zoom key not act as a toggle. People are familiar with the function of Ctrl+0/=/- in web browsers, so making them behave similarly in MAME should make it more approachable. Also added the default zoom key to the relevant documentation page. . Implemented the default zoom key for the palette and tile viewers. . In the tilemap viewer, if the view is in default expand to fit mode, zoom in/out starting from the actual zoom ratio. Once again, this behaves more like the zoom controls in a web browser displaying an image so it should be more intuitive. . Made more messages from the tilemap viewer localisable. Fixed attempted loading of loose software does not work with MAME filemanager (util\zippath.cpp) (ID 08074). . There were multiple issues at play here. After #8443 was applied, is_root was simply never returning true on Windows, as OSD_WINDOWS isn't actually defined outside libosd and libocore. This caused phantom parent items to appear in disk roots on Windows, but it meant that the check in zippath_resolve would always fail so the trailing backslash would be trimmed. Fixing the macro test in is_root meant the trailing backslash from C:\ would no longer be trimmed, which caused the stat in zippath_resolve to fail. Reduced tag map lookups in several drivers and devices. Removed an overload of bitswap that can be avoided using if constexpr (util\coretmpl.h). Added doxygen comments to some classes, and fixed several doxygen warnings. Test for _WIN32 rather than WIN32 (util, osd). . In C++17 mode, WIN32 is no longer a predefined macro, although various things in 3rdparty define it to maintain legacy support. We're better off moving forward anyway for when WIN32 disappears entirely. WIN32 is not a reserved name, while _WIN32 is, starting with an underscore follwed by an uppercase letter. . Prevent UI file select menu from crashing in error cases where no files can be found (ui\filesel.cpp) . Removed VISIBLE_SOUND_OVERDRIVE compile-time option in favor of enabling the red overdrive border when speaker_report is non-zero (ui\ui.cpp) . Use std::optional to make code clearer (util\unzip.cpp) . Moved endianness type into lib\util header (lib\util\endianness.h; scripts\src\lib.lua, cpu\mips\mips1.cpp, emu\debug\dvmemory.cpp, emu\emucore.cpp/h, emumem.h, emumem_mud.cpp/h, memarray.cpp, mame\luaengine_mem.cpp and tools\unidasm.cpp) . Fixed recently-introduced path-trashing bug in zippath_resolve (util\zippath.cpp) . Update css for sphinx_rtd_theme to latest version, which includes selectors missing from old version (docs\source\techspecs\poly_manager.rst, docs\themes\sphinx_rtd_theme\static\css\theme.css). Update the RTD theme to the 1.0.0rc1 release. I noticed no issues building docs with this, and it includes sphinx 4 CSS fixes. . Convert JED, PLA and JEDBIN parsers to (mostly) use ioprocs instead of raw memory interfaces. . MiniMAWS: Better equality for devices (scripts\minimaws\lib\dbaccess.py and wsgiserve.py). Made table sort widgets (and the code behind them) less ugly. Added disclosure triangle controls to many sections (scripts\minimaws). . Disable a validity check using an MSVC language extension when using Clang in MSVC ABI mode (emu\validity.cpp). Disable broken validity tests when detected (libc++ 6 std::is_invocable_r doesn't work on MFP for incomplete class) (emu\validity.cpp). - VGM player: Added 31 new entries (hash\vgmplay.xml) - Compiling . Fixes for building with Clang 12.0.1 on Windows (src\3rdparty.lua, osd\windows.lua and input\input_dinput.cpp/h) . Do not build with -m64 on riscv64 (makefile) . Use std::clamp for clamping (sound\disc_sys.hxx and sound\ymz770.cpp) . Reduced repeated directory walking in cleansrc target (substantially improves speed of building the target on Windows) (makefile). - Debugger . Octalize watchpoint hit message for memory spaces defined as octal . Initialised m_readbuf_state on construction (debugger\debuggdbstub.cpp) . Make debugger 'out' command step over return delay slots on SH architectures (debug\debugcpu.cpp and sh\sh_dasm.cpp) . Fixed suppressing trailing whitespace in copied text on completely blank lnes (most noticeable for the console view) (debugger\qt\debuggerview.cpp and win\debugviewinfo.cpp). 0.235 - New games: Paris Dakar (31/03/87, Spanish) - New Working games: Operation Tiger - New Non-Working games: Basket, Baby Fruits (100 pts version), Dracula's Castle (Magnet System), Multi Baby, Radikal Darts (Diana Version 7.29.25), Soreike! Anpanman Popcorn Koujou 2 (Rev C), Speedway and Zelos (Japan, main unit) - New clones: Air Inferno (World), Baby Fruits (25 pts version), Bubble Buster (USA, B-System), Espgaluda II (2005/11/14 MASTER VER, newer CV1000-B PCB), Guitar Freaks 2nd Mix (GQ883 VER. AAA), Guitar Freaks 2nd Mix (GQ883 VER. EAA), Guitar Freaks 2nd Mix (GQ883 VER. JAA), Guitar Freaks 2nd Mix (GQ883 VER. KAA), Guitar Freaks 2nd Mix (GQ883 VER. UAA), Guitar Freaks 2nd Mix Link Kit 1 (GE929 VER. JAA), Guitar Freaks 2nd Mix Link Kit 2 (GC929 VER. JBB), Guitar Freaks Ver 1.01 (GQ886 VER. AAD), Guitar Freaks Ver 1.01 (GQ886 VER. EAD), Guitar Freaks Ver 1.01 (GQ886 VER. JAD), Guitar Freaks Ver 1.01 (GQ886 VER. UAD), Kangaroo (Loewen-Automaten), The Killing Blade / Ao Jian Kuang Dao (ver. 100), Mag Max (set 2), Police 24/7 (ver UAD), Police 911 (ver KAE), Rafflesia (not encrypted), Rescate Lunar (Spanish bootleg of Lunar Rescue), 'S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V101HK) (ARM label V101HK, ROM 06/20/05 S.V.G V100)', Sea Wolf (Tecfri), Seoul Symphony (Bubble Symphony bootleg with OKI6295) and Time Crisis 3 (TST3 Ver. A) - New drivers: opercoin.cpp and radikaldarts.cpp - New devices: f2mc16, mb90610a, mb90611a and mb90641a - CPU . Fujitsu Micro F2MC-16: Emulated various additional instructions and modes. Fixed banking for direct addressing mode. Fixed semantics of CLRB and number of bytes consumed by SETB. Fixed mistake with calculating N and Z flags for SUB and CMP and writing incorrect result for SUB. Use INC(W)(L) A and DEC(W)(L) A pseudo-operations in disassembly. General cleanup: Added helper functions for increment and decrement operations and short direct banking. Rationalize use of temporary variables. Modify only lowest 8 bits of accumulator for XOR A, #imm8. Perform a 16-bit rather than 8-bit write for MOVW @RLx + #disp8, A. Use SSB instead of USB for @RW3 or @RW7 addressing when S flag is set. Fixed numerous flag calculations. Emulated many more opcodes. Added interrupt callback for debugger. Correct disassembly of MOVW io, A. Added "extra" I/O CPU (MB90611A F2MC-16) to Motocross Go! configuration . I386, MIPS and PPC: Removed a crash caused by the modulus operator (emu\divtlb.cpp). In the original code all values are signed integers, so m_dynindex would overflow and become negative, then the modulus of a negative value by a positive one would generate a negative result and finally the next array read would make the program crash. Also the maximum value plus one of m_dynindex is not generally a multiple of m_dynamic and this would cause a jump in the values of liveindex. . Texas Instruments TMS57002 'DASP': Genearate seaparate DASM header - SOUND . ICS2115 WaveFront Synthesizer: Improved sound using next-state logic - DEVICE . 3dfx Voodoo Graphics: Address minor coverity complaints . Atari DVG: Support XY flip (video\avgdvg.cpp) for 'Major Havoc - The Promised End' (HBMAME) cocktail mode . CHDMAN: Added a few more hard disk templates (Seagate, Maxtor, Micropolis...) . Floppy . Fixed segmentation fault saving FM track. Incorrect cell size for FM track results in empty bitstream that ultimately causes data.empty() to seg fault (formats\imd_dsk.cpp). . Don't assume string iterators can be indexed (reported by Coverity software) (formats\fsmgr.cpp) . SCSI Bus (new): Added initialization of sense buffer on reset (machine\nscsi_bus.cpp) . SMC91C9x Ethernet Controller: m_loopback_result needs to be a signed into so negative status codes remain negative. FDSE bit was masked out. When full duplex switched internet is active, deferrals and collisions not used. Implemented AUTO_RELEASE. . TC0780FPA Polygon Renderer: Fixed texture issues in Operation Tiger. Improved texture wrapping (video\tc0780fpa.cpp). - albazc.cpp, albazg.cpp, chanbara.cpp, crystal.cpp, jantotsu.cpp and tryout.cpp . Made use of object finders and other minor cleanups . Documented 'Test' dipswitch for Wully Bully - aleck64.cpp . Fixed handling of 8bpp framebuffer mode. Adjusted how VI scan-out functions. Swapped 'magic matrix' dither pattern axes to match hardware tests (machine\n64.cpp and video\n64.cpp). . N64 RDP: Fixed incorrect channel swapping on 32-bit resampled framebuffers. Temporarily adjusted framebuffer resampling to not exceed screen bounds in some games. . N64 RSP: Fixed LWV and VMOV behavior. Added reserved instructions V056, V057, V073 and VNULL. Removed unused DRC and SIMD support. General code cleanup. . N64: Fixed SP DMA behavior based on hardware tests. Pass K4 and K5 factors to threaded drawing code. Fixes black geometry in (MESS) Conker's Bad Fur Day. - clshroad.cpp . Added tilemap color bank, fixes lightning flashing and color cycling for Fire Battle. . Hand-tuned all clock frequencies for clshroad and halved vblank irq rate, syncing video and sound timings in logical sense. Minor realign documentation. - cv1k.cpp: Replaced clone 'Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)' program ROM with clean dump, previous was dumped from upgraded futari15 PCB and contained trailing garbage. - megasys1.cpp . Documented different clone 'P-47 - The Freedom Fighter (Japan)' ROM board configurations . Correction to the audio CPU memory map and verified that clone 'E.D.F. : Earth Defense Force (bootleg)' has an undumped PIC. Verified XTAL and clock. . Dumped Peek A Boo Japan 1.1, matches parent set. . Standardized PROM locations for games running on 1A board. - mermaid.cpp . Added missing items to state saving . Updated to use measured clock and marked Mermaid and clone as imperfect graphics. Note: Incomplete GFX emulation in Mermaid (see MT07985 and MT08000). - namcofl.cpp: Fixed network status error, this also fixes the paralyzed flagman in Final Lap R (ID 08042). - naomi.cpp: Documentation misc additions. Corrected PIN number for mask ROMs on 171-8132B carts. Sorted games by year/number. - seibuspi.cpp: Added/Fixed notes for Jumper JP1 - ssfindo.cpp . Preliminary QS1000 hook up. There seems to be a bug in the ARM_VIDC20 device that causes static/bad sounds. Just set the related volume sliders to 0 to hear the QS1000. . Hooked up DIPs for Pang Pang Car. Note: Pang Pang Car uses the VIDC internal DAC for SFX and the QS1000 for music. It's configured to use the undumped internal ROM. - timelimt.cpp: Halve maincpu NMI rate and fixed spriteram out of bounds access (ID 08046). Note: PCB output video confirms that the enemies in Progress move too fast in MAME (https://youtu.be/3MX_qCf_no0). - viper.cpp . Added audio support, updated inputs and improved default NVRAM contents. Updated compatibility lists, added NVRAMs, added more inputs and per-game DIP switches. Fixed port DIP location values. Added comment about Boxing Mania's pad controller. . Fixed MAME closes with error when pressing F3 at the 'DISTRIBUTION ERROR' screen in Police 911 (ID 07002). - 18 Wheeler: Dumped earlier/prototype Sega 837-13844 JVS I/O board rom epr-21868p.ic7 - AGEMAME: Added missing sound roms for 'James Bond (Maygay) (M1A/B) (set 1)' - Champion Base Ball Part-2: Mapped some areas and added some logging for clone Taikyoku Base Ball (ID 08053) - Dino Dino: Gets to the ROM error screen. The first few hundred bytes don't decrypt correctly. - Dock Man: Fixed down button for clone El Estivador (Spanish bootleg of Port Man on Galaxian hardware) (ID 08051). Not 100% the same as clone Port Man (bootleg on Moon Cresta hardware). - Enigma II: Minor updates to DIP locations - Games Family: Improved notes. Added new BIOS version (award_i6a6ixe19.bin). - Ginga NinkyouDen: Fixed missing PCM samples (ID 08050) - Knuckle Joe: Added sprite layer clipping. Fixed off-by-1 with sprite layer clip. - Motocross Go!: Added "extra" I/O CPU (MB90611A F2MC-16) to configuration - The Ninja Kids: Fixed default 'Lives' dipswitch to 3 (matches all OFF convention) - One + Two: Derived frequency from XTAL present on PCB - Operation Tiger . Fixed driver lockup issues and improved tilemap emulation . Fixed texture issues and improved texture wrapping (video\tc0780fpa.cpp). Fixed save states (Game now playable). - Royal King Jang Oh 2: Added banking. Almost playable, but bad colors. - Super Chexx: Map some memory - Super Glob: Swap ceiling/call elevator button assignments on clone Beastie Feastie to match Super Glob/The Glob - Tumble Pop: Added preliminary OKI hookup for clone Tumble Pop (Playmark bootleg) - Twin Bee Yahhoo!: Made 'Twin Bee Yahhoo! (ver JAA)' parent of Magical Twin Bee as the latter has substantial content removed rather than being localised, making it less complete. - Wiping: Convert to Xtal and added tentative screen raw params. Make custom audio to actually not divide internally by 2 (audio\wiping.cpp). - Yori Jori Kuk Kuk: Got game to boot, left as not working as it needs a ROM patch for now. - Yuuyu no Quiz de GO!GO!: Added 'AllowContinue' dipswitch - Fixed rom names in megasys1.cpp - Dipswitch fixes in crystal.cpp, enigma2.cpp, seibuspi.cpp, ssfindo.cpp, viper.cpp and taito_f2.cpp - Description changes of Code One Dispatch Ver 1.16 (ver UAB), Code One Dispatch Ver 1.21 (ver UAD), Espgaluda II (2005/11/14 MASTER VER, original CV1000-B PCB), Jurassic Park 3 (ver UBC), Keisatsukan Shinjuku 24ji (ver JAE), Mag Max (set 1), Mini Guay VD, Peek-a-Boo! (Japan, ver. 1.1), Mocap Boxing (ver AAB), Police 24/7 (ver EAD), Police 24/7 (ver EAD, alt), Police 911 (ver AAC), Police 911 (ver AAE), Silent Scope Fortune Hunter (ver EAA) and Soreike! Anpanman Popcorn Koujou (Rev B) - Renamed (ainferno) to (ainfernou), (espgal2) to (espgal2a), (gtrfrks) to (gtrfrksc), (gtrfrksa) to (gtrfrksac), (gtrfrksj) to (gtrfrksjc), (gtrfrksu) to (gtrfrksuc), (p911e) to (p911ed) and (p911uc) to (p911ac) - MAME . VIDEO RENDERING SYSTEM . Fixed automatic sizing of snapshots/recordings (emu\render.cpp). This fixes bad scaling on snapshots and recording when using -uesx and forced scale factors. . INPUT: Slightly cleaned up OSD input modules. Removed support for DirectInput 7 and earlier. It hasn't been tested in years, and it's not relevant on any supported OS. DirectInput is effectively finalised at version 8 and is unlikely to get an API update in the future. Use more string[_view] and fewer C strings and tightened up scope of a few things. . 3rdparty . Updated BGFX, BX and BIMG to latest. . BGFX fixes for various backends. Fixed palette and UYVY conversion in all backends. Fixes rendering for Laserdisc games is flawed (ID 07760). Fixed a typo in render\bgfx\targetmanager.cpp, thanks LN for the heads-up. . Applied srcclean to JSON files in BGFX subtree . Revised BGFX fs_blit_palette16 to not use pixel rounding. Fixes issues in Car Polo, Knuckle Joe and others. . OSD_WINDOWS isn't a safe way to detect Windows target, and OSD_* macros must not be used outside libocore/libosd (util\zippath.cpp). - ANDROID: Use log write calls directy on Android (osd\osdcore.cpp) - Compiling . Fixed OSD=mac compile (osd\mac\window.cpp and osd\modules\render\drawogl.cpp) . MSVC fixes to drivers\royalmah.cpp and stv.cpp . Fixed SDL UI choosing the root path (util\zippath.cpp) . Use std::clamp in more source files. Use C++17 library function for clamp (and std::min in one place where the value could not possibly be lower than 0 anyway) (video\3dom2_te.cpp). . Fixed a duplicate #include (plib\pfunction.cpp) - Debugger . Updated debugimgui to compile with latest imgui . Debugger-related feature removals and cleanup: Removed the hotspot read tracker. This was never robustly implemented, but changes to the memory system made it much less useful, and the "speedup opportunities" which it aimed to determine are not very important from a current emulation standpoint. Removed the CURSP/GENSP state symbol and the generic sp() getter. Stacking semantics vary too much between CPU architectures for this to be of much use. (A "SP" symbol has been added to a few CPU cores whose stack pointers were otherwise not being registered.). Removed the cached pointer to device_state_interface and the state() fast accessor from device_t. Most users of device_state_interface either already had a pointer to the specific CPU device type or needed to check first for the presence of the interface. Changed the PC memory write tracker to use pcbase(), which works even when the instruction callback is masked out, instead of peeking at the PC history index. Removed some obsolete watchpoint-related definitions from machine.h. . Substitute strongly typed enum for magic numbers specifying data format (debug\dvmemory.cpp). Fixed exception in debug memory viewer selecting a floating point format when the number of chunks per row is too small (debug\dvmemory.cpp).