0.289 2026-07-31
----------------


MAME Testers bugs fixed
-----------------------
- 03342: [Graphics] (gaelco/gaelco2.cpp) radikalb, surfplnt40, surfplnt: Some graphics are misaligned. (Jos van Mourik)
- 05547: [Crash/Freeze] (pc/ct486.cpp) ct486: The system may fail to boot from MS-DOS 6.22 installation media. (Dirk Best)
- 06026: [Documentation] (sega/model1.cpp) swa: The game title did not include the word “Arcade” at release. (JimCarlTay)
- 06584: [Documentation] (sony/zn.cpp) raystorm and clones: The game title is usually written without a space. (JimCarlTay)
- 06586: [Documentation] (namco/namcos23.cpp) gunwars, raceon and clones: Lack of camera emulation is not flagged. (JimCarlTay)
- 06600: [Crash/Freeze] (sega/model1.cpp) netmerc: The emulator may crash due to memory corruption. (Francisco García)
- 07563: [Gameplay] (sega/model1.cpp) wingwar, wingwarj, wingwaru, wingwar360: Bullet collisions don’t register. (Francisco García)
- 07699: [Gameplay] (sega/model1.cpp) swa, swaj: The radar is not displayed correctly. (Francisco García)
- 08584: [Media Support] (commodore/c64.cpp) c64 all versions: Formatting floppy disks is very slow. (Curt Coder)
- 09202: [Sound] (sega/model2.cpp) srallyc and clones: Incorrect sounds are played in attract mode. (Angelo Salese)
- 09345: [Misc.] (nec/pc9821.cpp) pc9821ap2 [Flame Zapper Kotsujin]: Fails to start with an allocation error. (Angelo Salese)
- 09456: [Graphics] (brother/lw840.cpp) lw840: The system does not appear to boot. (Leopold)
- 09462: [Documentation] (sega/model1.cpp) swa, swaj: The release year is incorrect. (JimCarlTay)
- 09463: [Documentation] (seibu/deadang.cpp) popnrun, popnruna: The manufacturer is incorrect. (J.J.Boy)
- 09466: [Graphics] (namco/namcos22.cpp) alpinerd and clones: Distant ground polygons are incorrectly drawn in red. (hap)
- 09467: [Cheat System] Cheat output text is not displayed. (Vas Crabb)
- 09477: [Media Support] (trs/dgnalpha.cpp) dgnalpha: The system will not boot to BASIC or from a floppy disk. (AJR)
- 09478: [Media Support] (wang/wangpc.cpp) wangpc: The system will not boot from floppy disks. (AJR)
- 09479: [Media Support] (ampro/lb186.cpp) lb186: The system will not boot from floppy disks. (AJR)
- 09480: [Documentation] Taito Corporation and its subsidiaries are listed inconsistently for different games. (JimCarlTay)
- 09485: [Crash/Freeze] (kaneko/suprnova.cpp) vblokbrk and clones: Freezes when clearing a stage in final seconds. (Angelo Salese)
- 09492: [DIP/Input] [plugin]: The port name plugin causes a fatal error on start when enabled. (Vas Crabb)


New working systems
-------------------
ADE Elettronica MK-84 [Enrico]
Busch Microtronic 2090 [hap, Jason T. Jacques, Decle, Michael A. Wessel]
Carnival 37 [Angelo Salese, hammy]
Colonial Data Services SB-80 [David Rand]
Dan Werner WE816 [Nigel Barnes, Dan Werner]
EACA Genie III (Germany) [Dirk Best, oldcomputers-ddns.org]
game on! TV 50 in 1 Arcade Game [TeamEurope, David Haywood]
George Scolaro ET532 (NS32532 + Ethernet) [David Rand]
Lexibook / JungleTac Plasma Console (IG810, 60-in-1) [TeamEurope]
Newcrest Technology / CXG Systems / LogiSoft Chess 3008 [hap, Berger]
Planet Patrol [Dillweed]
Puzzle World [alfa75, nnap]
SA.BI.NE trend Poker & More 18-in-1 (Germany) [TeamEurope]
Siemens 97801 (terminal) [David Rand, Plamen Mihaylov]
Toshiba T-200 [David Rand]
Toshiba T-250 [David Rand]


New working clones
------------------
After Burner (VER 1.32, deluxe/upright) [vivacap]
American Poker II (bootleg, set 5) [hammy, Pinballarcadedruid]
Digital Research Computers Big Board (5.25" drives) [David Rand]
Fancy World - Earth of Crisis (set 2) [nnap]
Futari Mahjong Ron II (set 2) [hammy]
Galaxian (Olympia bootleg) [IZ8DWF]
Germ Wars (Germany) [Dillweed]
Great Sluggers '94 (prototype?) [coolmod]
Happy Jackie (v119U) [hammy]
High Speed (Unidesa / Cirsa license) [Rockman i uri666arcade de l'associació ARCADE, Recreativas.org]
JAKKS Pacific Inc / Handheld Games Dragon Ball Z (JAKKS Pacific TV Game, Game-Key Ready, set 2) [TeamEurope]
Joker Poker With Hi-Lo Double-Up (version HL-DLX-080585) [Siftware]
Last Bank (Japan, v1.30J) [hammy]
Lexibook Compact Cyber Arcade - Paw Patrol (JL2365PA-A, 75-in-1) [TeamEurope]
Mahjong Angel Kiss (ver 1.0, 92048-01 version) [hammy]
Mahjong Diplomat (Japan) [hammy]
Money Money (set 3) [Luis Arrufat]
Ms. Pac-Man ('Made in Greece' Triunvi bootleg) [Davidc96]
Ninja Ryukenden (Japan, set 3) [Patrik Styrnell]
Phoenix (JP Leisure bootleg) [Trol]
Play Girls 2 (Europe) [kebrank]
Psion Series 3c (German) [repa4ok]
Punch-Out!! (Rev A, harder) [Guru, Arcade Classics Australia]
Robotron: 2084 (Release 3, prototype) [SynaMax]
Street Fighter III 2nd Impact: Giant Attack (Asia 970930) [msamiullah]
Turbo Force (Japan) [buffi, Brian Troha]
Winners Circle (81, set 3) [hammy]
Winners Circle (81, set 4) [hammy]
Xerox 16/8 (5.25" floppy) [David Rand]
Xerox 16/8 (Expansion Module II) [David Rand]
Xerox 16/8 (SASI hard disk) [David Rand]
Xerox 820-II (5.25" floppy) [David Rand]
Xerox 820-II (SASI hard disk) [David Rand]
Xerox 820-II (low profile keyboard) [David Rand]


Systems promoted to working
---------------------------
36-in-1 Classic Games phone case [Roman Kuraev]
ADE Elettronica MK-83 [David Rand]
Digital Research Computers Big Board [David Rand]
Digital Research Computers Big Board II [David Rand]
Donkey Kong / Donkey Kong Jr / Mario Bros [R. Belmont]
dreamGEAR My Arcade Portable Gaming System with 140 Games (DGUN-2561) [Roman Kuraev, David Haywood]
Fizz Creations Tetris Arcade in a Tin [Roman Kuraev, David Haywood]
Flash Beats [SpiralBrad]
George Scolaro pc532 [David Rand]
International Superstar Soccer Deluxe (SNES bootleg) [Devin Acker]
Jungle's Soft Mini Game Player 48-in-1 [Roman Kuraev, David Haywood]
Lexibook Arcade Center - 30-in-1 (JL1800_01) [Roman Kuraev, David Haywood]
Lexibook Arcade Center - 60-in-1 (JL1810GR) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - 200 in 1 (JL2355) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - 250 in 1 (JL2377) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - 250-in-1 (JL2375) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Barbie (JL2365BB) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Batman (JL2367BAT) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Cars (JL2360DC-1, 120-in-1) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Cars (JL2365DC) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Disney Princess (120-in-1) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Disney Princess (JL2367DP, 150-in-1) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Finding Dory [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Frozen (JL2365FZ) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Lilo & Stitch (JL2367D) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - PJ Masks (JL2365PJM) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Paw Patrol (JL2367PA) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Spider-Man (JL2367SP, 150-in-1) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Star Wars Rebels (JL2365SW) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade TV - 120 in 1 (JL2370) [Roman Kuraev, David Haywood]
Lexibook Console Colour - Disney's Planes (JL2800PL) [Roman Kuraev, David Haywood]
Lexibook Console Colour - Minnie Mouse (JL2800MN) [Roman Kuraev, David Haywood]
Lexibook Retro TV Game Console - 300 Games [Roman Kuraev, David Haywood]
Lexibook Retro TV Game Console - Disney Cars - 300 Games (JG7800DC-1) [Roman Kuraev, David Haywood]
Lexibook Retro TV Game Console - Frozen - 300 Games [Roman Kuraev, David Haywood]
Lexibook Retro TV Game Console - PJ Masks - 300 Games (JG7800PJM-1) [Roman Kuraev, David Haywood]
Luxor X37 (prototype) [Curt Coder]
National Semiconductor ICM-3216 [David Rand]
Sony NWS-1250 [Brice Onken, Plamen Mihaylov]
Ultimate Products / Jungle's Soft Zone Fusion [Roman Kuraev, David Haywood]
Xerox 820-II (8" floppy) [David Rand]
Yamaha TG100 [R. Belmont]


Clones promoted to working
--------------------------
Lexibook / Sit Up Limited / Jungle's Soft Seal 30-in-1 (VT based, Model FN098134) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Frozen (JL2367FZ) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Frozen (JL2365FZ-6) [Roman Kuraev, David Haywood]
Lexibook Compact Cyber Arcade - Paw Patrol (JL2365PA-5) [Roman Kuraev, David Haywood]
Moj mikro Slovenija [David Rand]
Scomar MK-82 [David Rand]
Trivia Hangup (version Trivia-2-011586) [Siftware]
Xerox 16/8 (8" floppy) [David Rand]


New systems marked not working
------------------------------
Accutime Kids Smart Watch: Barbie (Accutime, BAB4064PH) [TeamEurope]
Accutime Kids Smart Watch: Batman (Accutime, BAT4732PH) [TeamEurope]
Accutime Kids Smart Watch: Disney Princess (Accutime, PN425?) [TeamEurope]
Accutime Kids Smart Watch: Encanto (Accutime, ENC4000) [TeamEurope] [TeamEurope]
Accutime Kids Smart Watch: Frozen (Accutime, FZN4151PH) [TeamEurope]
Accutime Kids Smart Watch: Frozen (Accutime, FZN4587) [TeamEurope]
Accutime Kids Smart Watch: Gabby's Dollhouse (Accutime, GAB4007PH) [TeamEurope]
Accutime Kids Smart Watch: Harry Potter (Accutime, HP4107PH) [TeamEurope]
Accutime Kids Smart Watch: Jurassic World (Accutime, JRW4041) [TeamEurope]
Accutime Kids Smart Watch: L.O.L. Surprise (Accutime, LOL4264PH) [TeamEurope]
Accutime Kids Smart Watch: L.O.L. Surprise (Accutime, LOL4588TK) [TeamEurope]
Accutime Kids Smart Watch: Lilo & Stitch (Accutime, LS4027PH) [TeamEurope]
Accutime Kids Smart Watch: Marvel Avengers (Accutime, AVG4597) [TeamEurope]
Accutime Kids Smart Watch: Marvel Avengers (Accutime, AVG4597PH) [TeamEurope]
Accutime Kids Smart Watch: Marvel Avengers Black Panther (Accutime, AVG4608PH) [TeamEurope]
Accutime Kids Smart Watch: Minecraft (Accutime, MIN4045) [TeamEurope]
Accutime Kids Smart Watch: Paw Patrol (Accutime, PAW4275PH) [TeamEurope]
Accutime Kids Smart Watch: Peppa Pig (Accutime, PPG4086PH) [TeamEurope]
Accutime Kids Smart Watch: Pokemon (Accutime, POK4231PH) [TeamEurope]
Accutime Kids Smart Watch: Rainbow High (Accutime, RNB4017PH) [TeamEurope]
Accutime Kids Smart Watch: Ryan's World (Accutime, RYW4003AZ) [TeamEurope]
Accutime Kids Smart Watch: Spider-Man (Accutime, SPD4588) [TeamEurope]
Accutime Kids Smart Watch: Star Wars: Stormtropper (Accutime, STM4353PH) [TeamEurope]
Accutime Kids Smart Watch: Star Wars: The Mandalorian (Accutime, MNL4023PH) [TeamEurope]
Accutime Kids Smart Watch: Toy Story (Accutime, LTY4000PH) [TeamEurope]
Akai S612 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai S900 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai S950 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai S1000 MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]
Akai S1100 MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]
Akai X7000 Sampling Keyboard [DBWBP, Fetaldreamcore, Devin Acker]
Amarillo [stonedDiscord]
Avanti [stonedDiscord]
Ballermann 6 [stonedDiscord]
Big Action 3000 E [stonedDiscord]
Big Kick [stonedDiscord]
Booster Speed [stonedDiscord]
Blizzard [stonedDiscord]
Capriccio Sesame [stonedDiscord]
Capriccio Sesame 2 [stonedDiscord]
Casio Casiotone RC-1 [Devin Acker, =CO=Windler]
Castello II (W1) [stonedDiscord]
City Tower [stonedDiscord]
Colossos [stonedDiscord]
Cool-Bi Cool-Bi [hammy, little0]
Deep Scan / Car Hunt [Benjamin Roux]
Disco (W1) [stonedDiscord]
Euro Bingo 7 (V8.0, CAA) [Victor Fernandez (City Game)]
Exciting Fever [hammy]
Fifty Five (F1) [stonedDiscord]
Fuxing Gaozhao [SongJi]
Galaktica [stonedDiscord]
Ganso Janken Man [Darksoft, TeamEurope]
Gigabyte GA-586IP (Intel I430NX Neptune chipset) [The Retro Web]
Giochi Preziosi / Playmates My Life - Another life in your hands (UK) [TeamEurope, David Haywood]
Hana Awase Maihime [hammy]
Hello Kitty no Oshiro e Iko [Darksoft, TeamEurope]
Huanzhu Gege (set 1) [SongJi]
Itadaki Nyandora Kids [Darksoft, TeamEurope]
Jamaica [stonedDiscord]
Kimme und Korn (F4) [stonedDiscord]
Lexibook Color Console IG10 (DualMax 20 in 1 TV part) [TeamEurope, David Haywood]
Lexibook Gameclick (JL2400) [TeamEurope]
Lexibook Sudoku (Lexibook, LG600FR, TV part) [TeamEurope]
Logo (W1) [stonedDiscord]
Lucky Joker [hammy]
Majesto [stonedDiscord]
Manpuku Hanten (Japan, main ver. 2.00, video ver. 2.00) [hammy]
Matrixx [stonedDiscord]
Monopoly Tisch (F2) [stonedDiscord]
Multi (F2) [stonedDiscord]
Multiclassic [stonedDiscord]
Optimus (W1) [stonedDiscord]
Perfect Technology / Intelligent Heuristic Programming Star Sapphire [hap, Berger, Chessguru]
Presenter 2000 [MSX’s Archeology]
Pur Pur Royal [stonedDiscord]
R&D Co., Ltd. GALPRO [Devin Acker]
Robin [stonedDiscord]
Rotamint Alpha [stonedDiscord]
Rotamint Macao [stonedDiscord]
Sony DPS-D7 Digital Delay Unit [DBWBP]
Soyo SY-029C2 (Intel I430NX Neptune chipset) [The Retro Web]
Special 8 Way (v122F) [hammy]
Sunny Top (W1) [stonedDiscord]
Super Pasch [stonedDiscord]
Super Take Off E [stonedDiscord]
Swing [stonedDiscord]
Tango [stonedDiscord]
Tobago [stonedDiscord]
Unimint Arena [stonedDiscord]
Viva [stonedDiscord]
VTech Tivi Boo (France) [TeamEurope]
Vulkan (F2) [stonedDiscord]
Winner's Club - Wild Roses [hammy]
Würfel Fix (F3) [stonedDiscord]
Xeno [stonedDiscord]
Xiao Mifeng [SongJi]
Xingyun Xiaochou / Xingyun Shouji (V233CN) [little0]
Xiyang Tianshi [SongJi]
Zilog System 8000 [ArcLight22]


New clones marked not working
-----------------------------
Akai S700 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai S950 MIDI Digital Sampler (with SCSI) [DBWBP, Devin Acker]
Akai S1000PB MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]
BornKid 16 Bit Handheld Games 220-in-1 [TeamEurope, David Haywood]
Hana Awase 6 (Japan, bootleg) [hammy]
Giochi Preziosi My Life - Un'altra vita nelle tue mani (Italy) [TeamEurope, David Haywood]
Giochi Preziosi My Life (Spain) [TeamEurope, ClawGrip]
Granada (F1) [stonedDiscord]
Huanzhu Gege (set 2) [SongJi]
JAKKS Pacific Inc / Digital Eclipse Spider-Man (JAKKS Pacific TV Game) (SPG110 hardware, new style stick, set 2) [TeamEurope]
Jungle (USA, VA 1.05) [Ioannis Bampoulas]
Magical Jack (VI 1.1C) [Pinballarcadedruid]
The New 1997 Joker Master - New York (V3G) [Ioannis Bampoulas]
Pleiads (bootleg, ManilaMatic) [Trol, hammy, Porchy]
Psion 618C [Nigel Barnes]
Sport of Kings (France, P436.08) [hammy]
Turbo Sunny (W1) [stonedDiscord]
VTech MobiGo (France) [TeamEurope]
Würfel Fix (F2) [stonedDiscord]
Zilog System 8000 Model 20/30 [ArcLight22]
Zilog System 8000 Series Two [ArcLight22]


New working software list items
-------------------------------
a2600: Tarzan (prototype) [Hidden Palace, AJR]
c64_cass: Forbidden Forest, Lazy Jones [The Ultimate Tape Archive Team]
c64_flop_orig: 1541/1571 Drive Alignment [Curt Coder]
c64_quik: Broken Limits [Curt Coder]
compis:
  Användbara procedurer i Pascal 1.5 (nät/skollicens), Compis Pascal 3.12, CompisNet 2.0 (version 5314),
  CompisNet II Plus (CPMBOOT, version 7244), Enter 1.3 (demo, nät/skollicens), HarmoniEtt 2.0 (gamma), HarmoniTvå 2.0 (alfa),
  Skriv lätt, skriv rätt (version 6401), Spara-låna-vinna (enanvändare), Systemskiva 2.0, Systemskiva I (version 6245),
  Systemskiva för hårdskiveenhet 1.00 (version 7242), Systemskiva för hårdskiveenhet 2.01 (version 6335), Turbo Pascal 3.01,
  Uppgraderingspaket 1 för Compis I (version 6262) [FakeShemp]
genie3_flop:
  CP/M 2.2a, G-DOS 2.1, G-DOS 2.4, Genie III CP/M 2.2XV3, 1.31, NEWBASIC 2.1 and other BASIC software (NEWDOS/80 2.0A),
  NEWDOS/80 2.0A, NEWDOS/80 2.0A (with AGCAP), NEWDOS/80 2.0A (with PELOT), NEWDOS/80 Games Disk 1, NEWDOS/80 Games Disk 2,
  NEWDOS/80 Games Disk 3, SCRIPSIT Word Processing (NEWDOS/80 2.0A) [oldcomputers-ddns.org]
megaduck:
  Aerial, AntiAir, Ascend, Awass, Battlot, Bootskell, Cacorm, Cavit, Cracky, Guntus, Hopman, Impetus, Lift, Mazy, Mazy 2, Mieyen,
  Neuras, Osotos, Ruptus, Svellas, SwordWork, Yewdow [Inufuto]
myvision:
  Aerial, AntiAir, Ascend, Awass, Battlot, Bootskell, Cacorm, Cavit, Cracky, Guntus, Hopman, Impetus, Lift, Mazy, Mazy 2, Mieyen,
  Neuras, Osotos, Ruptus, Svellas, SwordWork, Yewdow [Inufuto]
oric1_cass:
  3K FreeCell, Stormlord (60Hz, Atmos) [Defence Force]
  Awass [Inufuto]
  Le Manoir du Dr. Genius (release 1) (Oric-1 only), Le Manoir du Dr. Genius (release 2) (Oric-1 only),
  Le Manoir du Dr. Genius (release 3) (Oric-1 / Atmos), Le Mystère de Kikekankoi (Oric-1 / Atmos release),
  Le Mystère de Kikekankoi (release 1), Le Mystère de Kikekankoi (release 2), Le Secret de Kaïpur [The Oric Site]
  CC65 Chess, Fifteen Puzzle, Put Up [Raxiss]
pc6001_cass:
  3D Asteroid Fire, Asteroid Escape, AX-1, AX-10, Bound Ball, F-Dot 2, Led Zone, Magnetic Field, Miyuki the Shoubushi,
  Nana-chan no Kinjirareta Asobi, Pack'n Boy, PC-6000 Note No. 1, PonyCa 2 Game Series: Galac Convoy & Shooting Invaders,
  Pyramid II, Raita no Growing Up, Slender Island, Space Invaders, Star Destroyer, Tiny Golf, Ultra Yonin Mahjong, Zunou 4989
  [Neo Kobe Collection]
  AX-3, AX-5, AX-8, Take Off 6000 [Neo Kobe Collection, Angelo Salese]
pc6001mk2_cass:
  Front Line, Galaxian, Grobda, Jelda, Led Zone (mkII), Nana-chan no Kinjirareta Asobi (mkII), Professional Mahjong (v2.1),
  Soreyuke! Kurukuru, Suidou Kozou, Vital Lamp, Yakyuu Kyou, Zunou 4989 (mkII), [Neo Kobe Collection]
  American Truck, The Castle, Mandelbrot demo, New Fan Fun, Pac-Man, Volguard [Neo Kobe Collection, Angelo Salese]
pc6001mk2_flop: Asalt (v1.1, prototype) [Neo Kobe Collection]
pc8001_flop: NRTDRV88 for JMB-X1 [Bookworm]
pc8001mk2sr_flop: Game DOS (compilation, ver 1.1, alt), Super Version (compilation, ver 1.1, alt) [Angelo Salese]
pc98:
  Steel Gun Nyan [danielham]
  Wolfenstein 3D [Neo Kobe Collection]
  Multi Paint System: Secret Fun Set Plus [Shoutmon]
pc98_flop_orig: Multi Paint System (v1.01), Yajiuma Pennant Race 2 1991 [krugman]
pv1000: SwordWork [Inufuto]
saitek_schess: Hyper Modern Super Strong [Sean Riddle, Nick(spacious_mind)]
saturn: Dezaemon 2 Save Game Manager, Dezaemon 2 Save Game Manager Vol. 2 [Madroms, satakore.com]
sb80_flop: CP/M 2.2 (8-inch recovery image), CP/M 2.2 (CBIOS v1.22), CP/M 2.2 with utilities [David Rand]
sega_beena_cart:
  Doraemon Tanoshii En Seikatsu Youchien Hoikuen (Rev. T-120002-1100),
  Doraemon Waku Waku Sekai Isshuu Game: Asonde Oboeru Chizu Kokki [TeamEurope]
spectrum_cass:
  Die Feuerfaust (The Fist of Fire) (The Adventure Workshop, two sided), The Fifth Quadrant (Dro Soft) Star Wars (Erbe Software)
  [Spectrum Computing]
vsmile_cart: Elmo's World - Elmo's Big Discoveries (USA) [Sterophonick]
x37_hdd: D-NIX 5.12 [Curt Coder]


Software list items promoted to working
---------------------------------------
c64_cart:
  Action Cartridge Plus 5 (Germany), Action Cartridge Plus 6.0, Action Cartridge Plus 6.0 (Germany),
  Action Cartridge Plus v7.0 (Derko), Action Cartridge Plus v7.0 (Triumwyrat), Action Replay v4.1, Action Replay v4.2 (v1),
  Action Replay v4.2 (v2), Action Replay v4.2 (v5.0 v1), Action Replay v4.2 (v5.0 v2), Action Replay v5.0,
  Action Replay v5.0 (NTSC), Action Replay v5.1a, Action Replay v6.0, Action Replay v6.0 (Triad), Action Replay v7.3,
  Action Replay v7.5, Action Replay v8.4, The Fairlight Cracking Cartridge [Curt Coder]
c64_cass: Skyline Attack [Angelo Salese]
c64_flop_orig: Bounty Bob Strikes Back! (v1.2), Strip Poker [Angelo Salese]
fmtowns_cd: Pro Yakyuu Family Stadium - '90 Pennant Race-ban [Carl]
pc8801_flop:
  Aoki Ookami to Shiroki Mejika - Genchou Hishi, Aoki Ookami to Shiroki Mejika - Genghis Khan,
  Aoki Ookami to Shiroki Mejika - Genghis Khan (soundware maybe), Daikoukai Jidai, Daikoukai Jidai (alt?), Europa Sensen,
  Europa Sensen (alt?), Fantastic Eaters, Fantastic Eaters (alt), Inindou: Datou Nobunaga, Inindou: Datou Nobunaga (alt?),
  Ishin no Arashi, Ishin no Arashi (alt User Disk), Ishin no Arashi (alt?), Nobunaga no Yabou - Bushou Fuunroku,
  Nobunaga no Yabou - Bushou Fuunroku (alt), Nobunaga no Yabou - Sengoku Gunyuuden, Nobunaga no Yabou - Sengoku Gunyuuden (alt),
  Nobunaga no Yabou - Sengoku Gunyuuden (alt 2), Royal Blood, Sangokushi (SR Ban), Sangokushi (SR Ban, alt),
  Sangokushi (SR Ban, alt 2), Sangokushi II, Sangokushi II (alt), Sangokushi II (alt 2), Star Symphony, Suikoden: Tenmei no Chikai,
  Suikoden: Tenmei no Chikai (alt), Suikoden: Tenmei no Chikai (alt 2) [Angelo Salese]
pc8001mk2sr_flop: Mappy (PC-8001mkIISR, alt) [Angelo Salese]
pc88va:
  Balloon Breaker, Boomering, Fray - In Magical Adventure, Hare Hare Yukai, Hopman, Illusion City - Genei Toshi,
  Olteus (alt disk D), PC-88VA Tentou Demo, PC-88VA Tentou Demo (alt), PC-88VA Tentou Demo (alt 2), PC-Engine (VA2 Tenpu-ban),
  PC-Engine v1.1, R-Type, Shanghai, Shinra Bansho [Angelo Salese]
pc88va_flop_orig: First Queen [Angelo Salese]


New software list items marked not working
------------------------------------------
c64_flop_misc:
  Bop 'n Rumble (cracked by The Last Science and The Artworx), The Detective Game (cracked by Trianon), Rags to Riches,
  Samurai Warrior: The Battles of... Usagi Yojimbo, Space Taxi (cracked by Exodus) [archive.org]
compis:
  Compis Kommunikation 1.2, CompisNet I PASBOOT med nyteknik, CompisNet IB 2.01 (version 6191), Datorn i början (enanvändare),
  GraphMaster 2.0 (nät/skollicens), IBM DOS 3.00, Intresse-fallenhet-yrkesval (enanvändare), Kemi 1 (nät/skollicens),
  Matematikverkstad I (beta 19860606), Mät absorption (nät/skollicens), Mät halveringstid (nät/skollicens),
  Mät med fotoceller 1.0 (enanvändare), MätEtt (nät-skollicens), Mätvärdesinsamling 1.0 (alfa, enanvändare),
  ProfiRange (version 6181), ProfiText: Textbehandling med Compis (version 6181), Skatteprogram S91,
  Skriv lätt, skriv rätt (version 8101, ekonomiredaktionen), StatEtt (beta, nät/skollicens), Tabba lätt, tabba rätt (version 7235)
  [FakeShemp]
digiblast_cart:
  Rayman 3, Totally Spies! 1, Winx Club + 5 Atari Games (4 language version) [anonymous]
  Crazy Jack, Cuccioli Cerca Amici (Italy), DigiQUAD, Gormiti 2 episodi (Italy), Gormiti Lotta Oscura (Italy),
  Gormiti Masters of the Gorm Island (Italy), Pitfall The Lost Expedition, Sonic X 1 (Italy / Spain, set 1),
  Spider-Man Mysterio's Menace, Sponge Bob + 5 Atari Games (Italy / Spain), Superstar Chefs, Wade Hixton's Counter Punch,
  Winx Club + 5 Atari Games (Italy / Spain, set 1) [trabantrom]
leapfrog_leappad_cart:
  Disney Princesse - Histoires de princesses (France), Interactif Sciences - Extraordinaires mammiferes! (France),
  Koa fait les courses (France), Livre interactif (France), Le Monde De Nemo (France), Musique, Maestro! (France),
  On Peut Compter Sur Flop! (France), Ratatouille (France), Le Roi Lion (France), Scooby-Doo et le mystere des beignets (France),
  Winnie et les pots de miel (France) [TeamEurope]
  2008 July Shimajirou to Ribby no Eigo Jiten / 2008 September Onahashi CoCoPad Time Machine de Daibouken! (Japan),
  2008 November Shimajirou to Ribby no CoCoPad Game Party / 2009 January Shimajirou to Ribby Shougakkou Tanken (Japan),
  Minna de tanoshiku! CoCoPad (Japan), Oshaberi CoCoPad Mic (Japan),
  Oyako Eigo Jump 1-gatsu gou - Shimajirou to Ribby no Shougakkou Tanken (Japan),
  Oyako Eigo Jump 5-gatsu gou - Shimajirou to ABC / 7-gatsu gou - The Three Little Pigs (Japan),
  Oyako Eigo Jump 9-gatsu gou - Shiamjirou to Ribby no Eigo Jiten (Japan),
  Oyako Eigo Jump 11-gatsu gou - Shimajirou to Ribby no CoCoPad Eigo party / 1-gatsu gou - Shimajirou to Ribby no Shougakkou Tanken
  (Japan), Oyako Eigo Step - 2005-nen 3-gatsu Welcome gou (Japan), Oyako Eigo Step - 2005-nen 5, 7, 9-gatsu gou (Japan),
  Oyako Eigo Step - 2005-nen 11-gatsu gou / 2006-nen 1, 3-gatsu gou (Japan),
  Oyako Eigo Step 9-gatsu gou - Shimajirou no Otetsudaiyasan (Japan) [TeamEurope, David Haywood, Fujix]
leapfrog_mfleappad_cart:
  Disney/Pixar Cars (France), Dora the Explorer - À la rescousse (France), Les fourmis au volant! (France),
  La journee extraordinaire de Flop (France), Koa et les chiffres fous (France), Winnie et l'arbre à miel (France) [TeamEurope]
mylife_cart:
  Club Disco (Italy) [TeamEurope]
  Club Disco (Spain) [TeamEurope, ClawGrip]
  Hannah Montana (Italy), Summer Party (Italy) [TeamEurope, David Haywood]
oric1_cass: 2048, Fire, Flood-It, Lights Out, Line 4, Manhole, Mitosis, Neutron Star, Othello (Raxiss), SameGame [Raxiss]
pc6001_cass:
  1-Screen Programs, AX-2, AX-4, AX-6, AX-7, AX-9, Eformn, Fruit Panic (v1.1), Fruit Panic Append, Genma Taisen, Holy Sword,
  Lode Runner, Mystery House, Mystery House II, Ougon no Haka, Portopia Renzoku Satsujin Jiken, Space Mouse [Neo Kobe Collection]
pc6001mk2_cass:
  3D Golf Simulation: Super Version, Aspic, Attack!! Hiroko-chan, The Black Onyx, Dezeni Land, Hurry Fox,
  Hurry Fox: Yuki no Maou hen, Hydlide, Karuizawa Yuukai Annai, Kaze no Tani no Nausicaä, Lizard, Nobunaga no Yabou,
  Salad no Kuni no Tomato-hime, Space Harrier, Star Arthur Densetsu I: Wakusei Mephius, Star Arthur Densetsu II: Ankoku Seiun,
  Star Arthur Densetsu III: Terra 4001, Tiny Xevious II, Tritorn, Victorious Nine [Neo Kobe Collection]
pc6001mk2_flop:
  Colony Odyssey Bouken-hen, Hudson Soft Best Hit Game Pack 3, PC-6601 Nihongo Word Processor, PC-6601 Utility Disk,
  Space Bluster FZ, Space Bluster FZ (preview) [Neo Kobe Collection]
pc6001mk2sr_cass:
  9-gyou no Michi, The Akunin, The Akunin 2, The Akunin 3, Jewels, Living Armor, Lizard Quest,
  Lizard Quest II: Shitennou no Houfuku, Lizard Quest III: Shi no Kami Gaabarian, Lizard Quest IV: Gold Lizard, The Order,
  Pakuridius: '88 Dragon Breath, Satan, Wu-m Wakarannou [Neo Kobe Collection]
pc6001mk2sr_flop:
  PC-6601SR Utility Disk [Mike Stedman]
  Golf Island (66SR) [Neo Kobe Collection]
pc8801_flop_orig: Mario Bros. Special [krugman, anonymous]
px4_cart: R.I.V.M. Diagnose Terminal Rel. 1.1 [Jeff_Birt]
sat_cart: Pseudo Saturn (v0.832 FINAL) [CyberWarriorX, Pseudo Saturn Team]
saturn:
  USB Cart Flasher (Revision 11) [Anders Montonen]
  Pseudo Saturn Kai Flasher (v6.545) [cafe-alpha]
  Pseudo Saturn Installer (v1.2) [CyberWarriorX, Pseudo Saturn Team]
sb80_flop: CP/M 2.2 (02.15) (Colonial Data OEM) [David Rand]
sega_beena_cart: Soreike! Anpanman Doki Doki! Rescue Drive: Car Navi-tsuki [TeamEurope]
smarttv_cart:
  Avventure nello Spazio (Italy), il Bosco dei Numeri (Italy), La Casa Di Topolino (Italy), Cuccioli Labrador (Italy),
  Disney/Pixar Cars 2 (Italy), English Luna Park (Italy), i-move (Italy), Mondosauro (Italy),
  La Scuola di Smart TV - 4 anni (Italy), La Scuola di Smart TV - 5+ anni (Italy), Smart TV Evolution (bundle cartridge, Italy),
  Spider-Man - Spider Sense (Italy), Winnie the Pooh - Le Avventure di Winnie the Pooh (Italy), Winx Club Bloom (Italy) [TeamEurope]
sony_news: NEWS-OS Release 4.1CA Install Kit [Bitsavers]
tvdear: Illust-Cassette No. 1 - Pochacco [TeamEurope, QUFB]
yeno_laptop_cart: Decouvertes 1 (France), Decouvertes 2 (France) [TeamEurope]


Merged pull requests
--------------------
- 14692: philips/minitel_2_rpic.cpp: Added sound output for DTMF tones and beeps. [Fabio D'Urso]
- 14947: tools/jedutil.cpp: Added support for the Atmel ATV750. [Matthew Millman]
- 15013: sega/megatech.cpp: Added door sensor inputs and DIP switch locations. [einstein95]
- 15106: snk/neoprint.cpp: Moved the Neo Print driver to the SNK project, hooked up the NEO-ZMC, and cleaned up code. [cam900]
- 15136: ui/viewgfx.cpp: Made informational text more detailed; emu/drawgfx.h: Added some accessors and helpers. [cam900]
- 15144: cpu/sh/sh7709s.cpp: Added support for cache invalidation and entry writeback. [Jesus Ramos]
- 15240: sega_beena_cart.xml: Added three items (two working); tvdear.xml: Added one item (not working). [TeamEurope, QUFB]
- 15300: oric1_cass.xml: Added 23 items (thirteen working) and replaced one item with a better dump. [ArcadeShadow]
- 15324: adp/stellafr.cpp: Added fifteen non-working games. [stonedDiscord]
- 15325: skeleton/galpro.cpp: Added a skeleton driver for an R&D Co. GALPRO GAL programmer. [Devin Acker]
- 15336: adp/adp.cpp: Added Kimme und Korn (not working). [stonedDiscord]
- 15352: Cleaned up code for various GeneralPlus SoC devices and improved timer and ADC support. [David Haywood]
- 15353: bus/nscsi/tape.cpp: Allow overriding identification strings; sony: Added tape drives to NEWS systems. [Brice Onken]
- 15354: misc/statriv2.cpp: Added Planet Patrol. [Dillweed, David Haywood]
- 15355: zaccaria/zaccaria.cpp: Added an additional version of Money Money. [Luis Arrufat, ClawGrip]
- 15357: Adjusted the capitalisation of “WrestleMania” in various software lists. [ArcadeShadow]
- 15358: williams/williams.cpp: Added a slightly censored Robotron: 2084 prototype. [SynaMax]
- 15359: namco/namcos2.cpp: Corrected ROM labels for Final Lap 2 games. [sjy96525]
- 15360: tvgames/spg110.cpp: Added a working JAKKS Pacific Spider-Man TV game. [TeamEurope, David Haywood]
- 15361: tecmo/tehkanwc.cpp: Added a note about different ROM arrangements used for year hack bootlegs. [ClawGrip]
- 15362: bus/a2bus/agat_fdc.cpp: Added preliminary support for writing to 840 kB floppy disks. [shattered]
- 15363: cpu/z80: Call the interrupt hook for interrupts triggered via the daisy chain interface. [holub]
- 15364: sony/news_68k.cpp: Emulated the NWS-1250 system, and marked it working. [Brice Onken, Plamen Mihaylov]
- 15365: cpu/m68000/m68kops.cpp: Use the minimum read size necessary to obtain the selected bits for BFTST. [Brice Onken]
- 15366: namco/namcos12.cpp: Marked the Kart Duel games as having unemulated networking. [JimCarlTay]
- 15367: igs/igs036crypt.cpp: Fixed a spelling error in a comment. [JimCarlTay]
- 15368: nakajima/nakajies.cpp: Added the 10 Hz timer, PC Card slot and power button. [Wilbert Pol]
- 15369: cpu/dsp563xx/hi08.cpp: Update RXDF when HTX is loaded or consumed. [Felipe Sanches]
- 15370: taito/taito_l.cpp: Added the European version of Play Girls 2. [kebrank, Sergio Galiano]
- 15371: casio/ctrc1.cpp: Added preliminary Casiotone RC-1 emulation; cpu/upd7810: Fixed INT0 behavior. [Devin Acker, =CO=Windler]
- 15372: mame/toshiba/t250.cpp: Emulated the Toshiba T-200 and T-250 CP/M systems. [David Rand]
- 15377: sinclair/next/specnext_vtest.cpp: Emulated the ZX Spectrum Next video test pattern generator. [holub]
- 15378: sinclair/next/specnext.cpp: Implemented DMA delays. [holub]
- 15379: plugins/keypress: Added a plug-in that shows the state of host controls. [holub]
- 15380: epson/qx10.cpp: Added extra wait states for M1 cycles (fixes GitHub #7963). [Brian Johnson]
- 15382: adp/stella8085.cpp: Hooked up the 8255 PPI and improved I/O addressing. [stonedDiscord]
- 15384: apple/apple2e.cpp: Improved Laser 128 family emulation and added a newer BIOS for the Laser 128EX. [arekkusu42]
- 15385: formats/imd_dsk.cpp: Added support for writing to ImageDisk IMD disk images. [David Rand]
- 15386: zilog/s8k.cpp, bus/zbi: Added preliminary Zilog System 8000 emulation. [ArcLight22]
- 15387: apple/apple2e.cpp, apple/apple2gs.cpp: Improved accelerator I/O delay emulation. [arekkusu42]
- 15388: sinclair/next/specnext.cpp: Use ULA coordinates for “copper” screen position calculation. [holub]
- 15389: sinclair/sprinter.cpp: Fixed video RAM write aliasing. [holub]
- 15390: smarttv_cart.xml: Dumped seven SmarTV Adventures cartridges (not working). [TeamEurope, David Haywood]
- 15391: akai/x7000.cpp Added a preliminary driver for the Akai S612, S700 and X7000 samplers. [DBWBP, Devin Acker]
- 15393: sega/segaxbd.cpp: Dumped a newer version of After Burner. [vivacap]
- 15394: machine/z80sio.cpp: Fixed issues with receive interrupt logic (fixes GitHub #15230). [F.Ulivi]
- 15395: gridcomp/gridcomp.cpp: Use the new i7110 bubble memory controller device. [F.Ulivi]
- 15396: digiblast_cart.xml: Dumped sixteen digiBLAST cartridges (not working). [trabantrom, anonymous, David Haywood]
- 15397: zaccaria/zaccaria.cpp: Added brute-forced PLD content for the recently added Money Money set. [Luis Arrufat, ClawGrip]
- 15398: akai/x7000.cpp: Fixed DMA controller addressing. [Devin Acker]
- 15403: sinclair/next/specnext_copper_dasm.cpp: Added a ZX Spectrum Next “copper” disassembler. [holub]
- 15408: akai/x7000.cpp: Added the MB87013 Quick Disk controller and corrected some inputs. [Devin Acker]
- 15409: sony/news_68k.cpp: Corrected the default display type DIP switch setting for the NWS-1250. [Brice Onken]
- 15410: sony_news.xml: Added the NWU-671CA (NWF-671C) installation tapes for NEWS-OS 4.1C (not working). [Bitsavers, Brice Onken]
- 15411: nscsi/s1410.cpp: Added optional seek timing simulation. [David Rand]
- 15412: xerox/bigbord2.cpp: Added SASI and RS-232, got CP/M to boot, and marked the system working. [David Rand]
- 15413: 3rdparty/genie: Disable command-line string escaping (re-applies old local workaround, fixes GitHub #15401). [Belegdol]
- 15414: formats/mfi_dsk.cpp: Removed debug logging that crashes on small disk images. [Felipe Sanches]
- 15417: colonial/sb80.cpp: Emulated the Colonial Data Services SB-80 single-board CP/M computer. [David Rand]
- 15418: imagedev/floppy.cpp: Derive the two-sided flag from the floppy image media variant. [David Rand]
- 15419: skeleton/i7000.cpp: Hooked up the MC6845 CRT controller. [Felipe Sanches]
- 15424: namco/rallyx.cpp, namco/nl_rallyx.cpp: Replaced the “bang” sound sample with a netlist. [Ricardo Bittencourt]
- 15427: sound/cem3340.cpp, sequential/prophet5.cpp: Implemented band-limited oscillator sync. [m1macrophage]
- 15429: handheld/mylife.cpp, mylife_cart.xml: Dumped two My Life game variants and two cartridges. [TeamEurope, David Haywood]
- 15430: kaypro/kaypro.cpp: Emulated the WD1002-HD0 hard disk controller for the Kaypro 10. [David Rand]
- 15431: machine/wd1010.cpp: Disable verbose logging by default. [David Rand]
- 15432: smarttv_cart.xml: Dumped five cartridges; yeno_laptop_cart.xml: Dumped two cartridges. [TeamEurope, David Haywood]
- 15433: vsmile_cart.xml: Added Elmo's World - Elmo's Big Discoveries (USA). [Sterophonick]
- 15434: cpu/z80: Service non-maskable interrupts detected during IRQ acknowledgement before servicing IRQ. [holub]
- 15436: cpu/z80: Always service acknowledged IRQ interrupts (reverts #15434). [holub]
- 15437: sinclair/next/specnext_layer2.cpp: Latch pixels read across screen updates. [holub]
- 15438: Improved VT369 emulation, and promoted the 36-in-1 Classic Games phone case to working. [Roman Kuraev]
- 15440: nintendo/snesb.cpp: Fixed inputs and protection simulation for the International Superstar Soccer bootleg. [Devin Acker]
- 15444: Fixed quoting for the SDL INI_PATH build configuration setting. [Cesare Falco]
- 15447: sinclair/screen_ula.cpp: Latch pixels read across screen updates. [holub]
- 15448: nscsi/hd.cpp: Moved seek time simulation to the base SCSI hard disk device. [David Rand]
- 15451: ussr/sm7238.cpp: Use more idiomatic class member declaration grouping. [shattered]
- 15453: bus/scsi/scsihle.cpp: Deassert REQ between phases, and keep BSY asserted in COMMAND. [David Rand]
- 15458: video/hd44780.cpp: Don’t allow character size selection in two-line mode (always use 8-line characters). [Devin Acker]
- 15461: xerox/xerox820.cpp: Got the Big Board and clones to boot CP/M and marked them working. [David Rand]
- 15462: ensoniq/esqvfd.cpp: Fixed constructing output finder with uninitialised device (fixes GitHub #15449). [Christian Brunschen]
- 15464: apple/apple2e.cpp, apple/apple2gs.cpp: Improved Zip Chip accelerator emulation. [arekkusu42]
- 15465: sony_news.xml: Updated comments and tape labels for the NEWS-OS Release 4.1CA Install Kit. [Brice Onken]
- 15467: xerox/xerox820.cpp Replaced the bad U35 dump for the 820-II v5.0 v018 BIOS. [David Rand]
- 15468: akai/x7000.cpp: Added sound playback and sampling support. [Devin Acker]
- 15469: ensoniq/esq5505.cpp, ensoniq/esqpanel.cpp, ensoniq/esqvfd.cpp: Updated internal layouts. [Christian Brunschen]
- 15470: pc88va_flop_orig.xml: Always use eight characters for 32-bit CRCs. [Thomas Klausner]
- 15471: sinclair/next/specnext.cpp: Fixed reading registers 0xb0 and 0xb1 and writing register 0x0a. [holub]
- 15472: ensoniq/esqvfd.cpp, esq1by22_eps.lay: Added an internal layout for the Ensoniq EPS family VFD. [Christian Brunschen]
- 15474: konami/nemesis.cpp: Cleaned up machine configuration and improved address maps. [cam900]
- 15476: Attempted to improve nametable page selection for Lexibook games; Marked 33 VT-based systems working. [David Haywood]
- 15477: cpu/z80/z80n.cpp: Fixed non-maskable interrupt latch handling. [holub]
- 15478: cpu/z80: Fixed issues with Z80N non-maskable interrupt handling. [holub]
- 15479: sound/va_vco.cpp: Moved the generic oscillator functionality from the CEM3340 to a separate device. [m1macrophage]
- 15482: sound/segapcm.cpp: Split the discrete logic variant and 315-5218 variant into separate devices. [cam900]
- 15483: machine/nscsi_hle.cpp: Allow targets to defer bus phase transitions. [David Rand]
- 15484: bus/nscsi/sa1403d.cpp: Emulated the Shugart SA1403D SASI rigid/floppy disk controller. [David Rand]
- 15485: bus/xerox820, xerox/xerox820.cpp: Emulated disk controllers for the 820-II family and the 16/8 coprocessor. [David Rand]
- 15487: apple/apple2gs.cpp: Fixed incorrect memory and I/O access timings. [arekkusu42]
- 15491: homebrew/gigatron.cpp: Made RAM size configurable and cleaned up code. [cam900]
- 15492: bally/balsente.cpp: Added brute-forced PLD content for the Spanish version of Trivial Pursuit. [Jordi Tuells, ClawGrip]
- 15493: cpu/ns32000: Account for bus width when calculating operand access timing. [David Rand]
- 15494: bus/isa/dsi32.cpp: Emulated the Definicon DSI-32 NS32032 coprocessor card described in BYTE in 1985. [David Rand]
- 15495: apple/apple2e.cpp: Rearranged machine configuration to put the onboard interfaces before the card slots. [arekkusu42]
- 15497: cpu/i86: Added support for I/O wait states. [David Rand]
- 15498: bus/pc_kbd/pcat84.cpp: Corrected the key matrix for the 85-key PC/AT keyboard. [David Rand]
- 15499: machine/ns32082.cpp: Fixed PTE address composition, bypass translation for interrupt acknowledgement cycles. [David Rand]
- 15500: machine/ns32202.cpp: Fixed pending state for level-sensitive interrupts, and priority-gated acknowledgement. [David Rand]
- 15501: bus/isa/pd32.cpp: Emulated the PD-32 NS32016 coprocessor card described in Micro Cornucopia #32 (1986). [David Rand]
- 15502: sinclair/next/specnext.cpp: Improved I/O address decoding and peripheral selection. [holub]
- 15503: sinclair/next/specnext.cpp: Fixed PSG chip I/O selection. [holub]
- 15504: mylife_cart.xml: Added one item; smarttv_cart.xml: Added one item, and re-dumped one item. [TeamEurope, David Haywood]
- 15505: sound/swp30.cpp: Saturate the result of sample interpolation (fixes audible clicks). [Charles Vestal]
- 15506: bus/pc98_cbus/pc9801_96.cpp: Added a preliminary CLGD5428-based PC-9801-96 card. [BlueRain-debug]
- 15509: sinclair/next/specnext_sprites.cpp: Fixed out-of-range attribute RAM accesses that caused memory corruption. [holub]
- 15511: Added three multi-game systems (two working). [TeamEurope, David Haywood]
- 15512: machine/am9517a.cpp: Re-implemented the µPD71071 within the AM9517 DMA controller device family. [Devin Acker]
- 15513: machine/ncr5385.cpp: Complete selection as soon as the target responds. [David Rand]
- 15514: igs/igs009.cpp, igs/spoker.cpp: Fixed debugger and save state issues and cleaned up code. [cam900]
- 15517: tektronix/tek440x.cpp: Added the X2210 non-volatile RAM used for storing the Ethernet MAC address. [Adam Billyard]
- 15524: sinclair/next/specnext.cpp: Implemented read-only BRAM configurations. [holub]
- 15526: phoenix/phoenix.cpp: Added the German version of Germ Wars (original title of Survival). [Dillweed, David Haywood]
- 15527: cpu/es5510/es5510.cpp: Perform signed rounding towards zero when writing data to DOL. [Christian Brunschen]
- 15528: sinclair/next/specnext_dma.cpp: Force search mode to transfer instead. [holub]
- 15530: machine/keyboard.cpp: Added control characters to inputs for natural keyboard mode. [David Rand]
- 15531: natsemi/icm3216.cpp: Emulated the Z80 I/O processor and the SCSI subsystem, and marked the system working. [David Rand]
- 15532: video/pc_vga_cirrus.cpp: Fixed transparent colour mask indices, and fixed VRAM type handling. [BlueRain-debug]
- 15534: tektronix/tek440x.cpp: Renamed the boot ROM region to make its purpose clearer. [Adam Billyard]
- 15536: Dumped an additional version of My Life, the Vtech Tivi Boo, and two cartridges. [TeamEurope, ClawGrip, David Haywood]
- 15537: cpu/es5510/es5510.cpp: Perform unsigned rounding towards zero when writing data to  DOL. [Christian Brunschen]
- 15541: galaxian/scramble.cpp: Adjusted the manufacturer text for New Sinbad 7 games. [JimCarlTay]
- 15542: bus/isa/opus_pm.cpp: Emulated the Opus 108PM and 110PM coprocessor cards, allowing System V R2 to run. [David Rand]
- 15543: machine/upd765.cpp: Generate one DRQ per byte for write or scan for variants without the 82072-style FIFO. [Devin Acker]
- 15549: skeleton/elzet80.cpp: Hooked up some I/O, added graphics decoding, and got text display working. [stonedDiscord]
- 15550: bmc/popobear.cpp: Improved sprite drawing. [David Haywood]
- 15551: bmc/popobear.cpp: Improved tilemap drawing. [David Haywood]
- 15552: machine/ncr5380.cpp: Fixed initiator pseudo-DMA stalls, and generate an interrupt on ICR-initiated reset. [David Rand]
- 15553: homebrew/pc532.cpp: Added the Culbertson Apr-1990 firmware as a BIOS option, and connected a tape drive. [David Rand]
- 15554: homebrew/et532.cpp, bus/nscsi/et532.cpp: Emulated the ET532 system designed by George Scolaro. [David Rand]
- 15555: cpu/ns32000: Added a translation look-aside buffer to the NS32532 on-chip MMU. [David Rand]
- 15556: nintendo/nes_vt02_vt03.cpp, nintendo/nes_vt369_vtunknown.cpp Dumped two TV games (one working). [TeamEurope, David Haywood]
- 15557: bus/rs232/auto3a.cpp: Added a simulated terminal with automatic framing detection and basic ADM-3A emulation. [David Rand]
- 15558: machine/z80dma.cpp, sinclair/next: Added some member variables to saved states. [holub]
- 15563: igs/goldstar.cpp: Corrected DIP switches and inputs for Cherry Bonus. [Ioannis Bampoulas]
- 15564: machine/mc68681.cpp: Fixed race conditions that caused incorrect handling of transmission completion. [David Rand]
- 15566: akai/s900.cpp: Added a preliminary driver for the Akai S900/S950 sampler family. [DBWBP, Devin Acker]
- 15567: formats/scl_dsk.cpp: Added support for SCL format TR-DOS disk images. [holub]
- 15569: cpu/ns32000: Added the NS32CG16 graphics/printer variant. [David Rand]
- 15570: sound/va_vco.cpp: Added pulse wave DC compensation, reset-type sync and triangle-derived pulse waves. [m1macrophage]
- 15571: machine/ncr5380.cpp: Don’t generate an interrupt on ICR-issued SCSI reset for the DP8490. [David Rand]
- 15572: tvgames/elan_ep3a19a.cpp: Dumped the Lexibook Color Console IG10 (DualMax 20 in 1) TV game. [TeamEurope, David Haywood]
- 15574: atlus/cave.cpp: Made the Japanese Sailor Moon game the parent. [Vas Crabb]
- 15575: handheld/hh_mediatek_mt6260a.cpp: Dumped 25 Accutime Kids Smart Watch variants (not working). [TeamEurope, David Haywood]
- 15577: tvgames: Addd three TV games using SunPlus SoCs (two working). [TeamEurope, David Haywood]
- 15579: cpu/es5510/es5510.cpp: Fixed the WRITE_REG and WRITE_REG16 macros writing incorrect values. [Christian Brunschen]
- 15580: machine/pic8259.cpp: Fixed OCW3 write behavior. [Devin Acker]
- 15581: leapfrog_mfleappad_cart.xml, leapfrog_leappad_cart.xml: Added seventeen items (not working). [TeamEurope, David Haywood]
- 15582: sega/model1_m.cpp: Fixed TGP coprocessor RAM port reads and writes (fixes collisions in Virtua Fighter). [Francisco García]
- 15583: sound/scsp.cpp: Added the serial interface and hooked up MIDI input and output. [Matthew Daniels]
- 15586: pinball/s11.cpp: Added a High Speed version from a Cirsa/Unidesa PCB. [Rockman i uri666arcade, Recreativas.org, ClawGrip]
- 15587: sound/va_vco.cpp: Improved tuning precision and moved helper math functions to util/corefloat.h. [m1macrophage]
- 15589: nintendo/nes_vt09.cpp: Added the Lexibook Plasma Console (IG810, 60-in-1). [TeamEurope, David Haywood]
- 15590: megaduck.xml, myvision.xml, pv1000.xml: Added 45 working homebrew games. [Inufuto, telanus]
- 15591: taito/README.md: Added a list of known Taito product numbers. [Lord Nightmare, Al Kossow, Angelo Salese]
- 15592: cpu/powerpc/ppcdrc.cpp: Fixed little endian mode selection for the 601. [Rairii]
- 15593: cpu/powerpc/ppcfe.cpp: Correctly swizzle physical addresses when reading instructions in little endian mode. [Rairii]
- 15594: cpu/ns32000: Disassemble the NS32532 CINV instruction, and corrected the LMR and SMR MMU register names. [David Rand]
- 15595: atari/starwars.cpp, pinball/de_3.cpp, sega/model1.cpp: Adjusted descriptions for various Star Wars games. [JimCarlTay]
- 15597: sega/model1_v.cpp: Added line drawing, improved palette handling, and improved polygon rendering. [Francisco García]
- 15598: taito/capr1.cpp, taito/capr2.cpp: Added two Capriccio Sesame crane games (not working). [stonedDiscord]
- 15599: namco/namcos23.cpp: Fixed Crisis Zone input issues, and disabled the ACIA clock to improve performance. [Tovarichtch]
- 15602: gridcomp/gridcomp.cpp: Switched back to the old i7220 device (reverts #15395). [Valera Klachkov]
- 15606: osd/sdl3/osdsdl.cpp: Explicitly set the background application and click-through hints for macOS. [Valera Klachkov]
- 15607: homebrew/pc532.cpp: Hooked up AIC6250 pseudo-DMA, got System V working, and marked the system working. [David Rand]
- 15609: bally/astrocde.cpp: Corrected circuit board numbers in comments. [lizard43]
- 15611: bus/coco/coco_ssc.cpp: Improved the sound activity detection emulation. [Tim Lindner]
- 15612: skeleton/st25.cpp: Added 24 gambling games on the NSM/Löwen ST25 platform (not working). [stonedDiscord]
- 15614: machine/mc68681.cpp: Assert TxRDY when transmit holding register becomes available (regressed after #15564). [David Rand]
- 15615: cpu/m6809/hd6309.cpp: Corrected flag calculation and cycle counts for division instructions. [Tim Lindner]
- 15616: akai/s900.cpp: Added version 1.2c ROMs as a BIOS option. [Devin Acker]
- 15619: apple/apple2.cpp, apple/apple2e.cpp, apple/apple2gs.cpp: Fixed issues with slot arbitration. [arekkusu42]
- 15620: cpu/nec: Improved carry and overflow flag calculation for division instructions. [Devin Acker]
- 15621: ui/utils.cpp: Made the custom filter menu heading localisable. [Gently]
- 15622: sound/cem3394.cpp: Use voltage-controlled oscillator and filter devices as building blocks. [m1macrophage]
- 15625: video/mc6845.cpp: Validate that column width is non-zero; misc/rcorsair.cpp: Tried decoding color PROMs. [Angelo Salese]
- 15626: apple/apple2gs.cpp: Fixed values read from reserved bits in various I/O registers. [arekkusu42]
- 15628: apple/apple2gs.cpp: Added notes where hardware documentation is unclear or incorrect. [arekkusu42]
- 15630: machine/generalplus_gpl951xx_soc.cpp: Added internal ROM support. [cyanic, David Haywood]
- 15631: igs/igs_m027xa.cpp: Updated the note about PCBs used for Jungle King 2004. [Ioannis Bampoulas]
- 15633: cpu/ns32000: Fetch the module static base after restoring the PSR on RETT or RETI. [David Rand]
- 15634: sinclair/next/snapshot_nex.cpp: Added NEX ZX Spectrum Next snapshot format handling. [holub]
- 15635: sinclair/spec_snqk.cpp: Support files with SNX extension containing SNA format data. [holub]
- 15636: sound/cem3394.cpp: Replaced the CV-dispatching function with multiple setter functions. [m1macrophage]
- 15638: Added foot switches to various Ensoniq synthesizer layouts. [Christian Brunschen]
- 15640: sinclair/next/specnext.cpp: Fixed mismatched memory share sizes. [holub]
- 15651: bus/xerox820: Instantiate device finders for card interfaces; xerox/xerox820.cpp: Tidied ROM definitions. [David Rand]
- 15642: sega/model1.cpp: Improved video and timer emulation (improves NetMerc, fixes MT06600). [Francisco José García García]
- 15644: formats/p6001_cas.cpp: Removed PC-6001 cassette format that never worked. [Angelo Salese]
- 15645: Added 31 software items for the NEC PC-6001 family (six working). [Neo Kobe Collection, Angelo Salese]
- 15646: imagedev/microdrv.cpp, sinclair/zx8302.cpp: Implemented working Sinclair QL Microdrive emulation. [Sylvain Glaize]
- 15647: sound/va_vcf.cpp: Removed the obsolete “streamless” mode (unnecessary after #15622). [m1macrophage]
- 15488: xerox/xerox_lpk.cpp: Completed emulation of the low-profile (G25) keyboard for some 820-II and 16/8 systems. [David Rand]
- 15649: sega/model1.cpp: Fixed two bad bits in the 315-5711 DSP’s internal ROM (fixes MT07563). [Francisco García]
- 15654: Improved memory handling and added internal ROMs for some GeneralPlus SoCs. [Davd Haywood, cyanic]
- 15655: sequential/prophet5.cpp: Emulated oscillator scale trimmers. [m1macrophage]
- 15656: cpu/ns32000: Always fetch static base from supervisor space on RETT or RETI. (reverts #15633). [David Rand]
- 15657: machine/ncr5380.cpp: Implemented target mode. [David Rand]
- 15658: machine/ncr5380.cpp: Fixed issues with initiator DMA, bus release and self-initiated bus reset. [David Rand]
- 15659: igs/pgm.cpp: Marked Dragon World 2 games as not working, and also cleaned up some code. [cam900]
- 15661: konami/ddribble.cpp: Treat sprite X coordinates as 9-bit signed values. [Andrea Bogazzi]
- 15663: Updated to allow building with Emscripten 6.0.2. [holub, Steve Elbows]
- 15665: machine/wd1002_05.cpp: Support all documented floppy sector sizes. [David Rand]
- 15668: xerox/xerox820.cpp: Refactored the floppy and G25 keyboard emulation, and completed the MK-83/MK-84 emulation. [David Rand]
- 15669: sound/coreaudio_sound.cpp: Fixed a potential deadlock on exit. [David Rand]
- 15670: Added an option to override the start time for real-time clock devices. [Tim Lindner]
- 15672: sega/flashbeats.cpp: Emulated peripherals, added an internal layout and promoted the system to working. [SpiralBrad]
- 15673: nmk/nmk16.cpp: Added Puzzle World. [alfa75, nnap, David Haywood]
- 15675: Adjusted metadata for many Taito and Hot-B games. [JimCarlTay]
- 15676: gaelco/gaelco3d_v.cpp: Fixed some graphics alignment issues (fixes MT03342). [Jos van Mourik]
- 15677: sinclair/next/specnext.cpp: Fixed issues with UART I/O port reads. [holub]
- 15678: cpu/h8/h8_dma.cpp: Update the active channel on starting or stopping DMA (fixes MT09456). [Leopold]
- 15679: jaleco/megasys1.cpp: Dumped the microcontroller for Avenging Spirit. [Tailsnic Retroworks, Sergio Galiano]
- 15680: akai/s1000.cpp, sound/l6009.cpp: Added preliminary Akai S1000 and S1100 emulation. [Robin Whittle, Devin Acker]
- 15681: nec/pc6001.cpp, nec/pc6001_kbd.cpp: Made the PC-6001 keyboard a separate device and fixed some issues. [Angelo Salese]
- 15682: nintendo/aleck64.cpp, snk/neogeo.cpp: Made “Hudson Soft” name consistent in metadata. [JimCarlTay]
- 15683: misc/crystal.cpp: Corrected the capitalization of “Sonokong” in metadata. [JimCarlTay]
- 15684: tvgames/bk139in1.cpp, tvgames/generalplus_gpl16250_mobigo2.cpp: Moved some systems to separate sources. [David Haywood]
- 15686: sound/ics2115.cpp: Changed volume control behaviour to match hardware measurements. [cam900]
- 15688: sound/cem3394.cpp: Reduced sound stream updates that are no longer necessary. [m1macrophage]
- 15689: nec/pc6001.cpp: Modernized banking, and implemented fallback compatibility mode for the SR variants. [Angelo Salese]
- 15690: vsystem/aerofgt.cpp: Made sprite RAM double-buffered, delaying sprites by one frame. [cam900]
- 15694: machine/generalplus_gpl162xx_b_soc.cpp: Created devices for known CPU types with differences noted. [David Haywood]
- 15695: fairchild/channelf_a.cpp: Corrected out-of-range sound channel (fixes GitHub #15696). [BensonRSI]
- 15697: machine/s97801.cpp: Emulated the Siemens 97801 terminal. [David Rand, Plamen Mihaylov, Udo Moeller]
- 15699: ice/vp101.cpp: Reformatted the manufacturer strings. [JimCarlTay]
- 15700: sequential/sixtrak.cpp: Improved accuracy and updated the default non-volatile RAM content. [m1macrophage]
- 15701: akai/akaiax80.cpp: Hooked up the sub CPU (uses the same internal ROM as the main CPU) and keys. [Devin Acker]
- 15702: cpu/upd7810: Improved emulation of the HLT instruction and fixed the mnemonic in disassembly. [Devin Acker]
- 15704: Added 52 software list items for the NEC PC-6001 family (28 working). [Neo Kobe Collection, Angelo Salese]
- 15705: namco/namcos23.cpp: Marked Gunmen Wars and Race On! as lacking camera emulation (MT06586). [JimCarlTay]
- 15710: xerox/xerox820.cpp: Fixed the default BIOS for 820-II variants with the standard keyboard. [David Rand]
- 15712: sega/model1_v.cpp: Clip line drawing to the viewport (fixes memory corruption after #15597). [Francisco García]
- 15715: sega/model1.cpp: Return the latched count when reading a stopped timer (fixes regressions after #15642). [Francisco García]
- 15716: hash: Bulk converted direct redump links in software lists to the new project site. [Angelo Salese]
- 15717: compis.xml: Added 36 items (fifteen working). [FakeShemp]
- 15719: video/zeus2.cpp: Fixed incorrectly culled polygons affecting road drawing in Cruis’n Exotica. [Jos van Mourik]
- 15720: cirsa/neptunp2.cpp: Added Euro Bingo 7 (not working). [Victor Ferandez (City Game), ClawGrip]
- 15725: xerox/xerox820.cpp: Marked the Digital Research Computers Big Board with 5.25" drives working. [David Rand]
- 15726: dataeast: Split the 32-bit ARM-based systems into three source files for systems with common hardware. [cam900]
- 15727: debugger/debuggdbstub.cpp: Added the RP2A03G CPU device as an M6502 alias. [Michael Billington]
- 15728: spectrum_cass.xml: Added three working items and improved metadata. [Spectrum Computing, ArcadeShadow]
- 15733: plugins/autofire: Don’t reload settings on a soft reset. [Devin Acker]
- 15735: dataeast/deco16ic.cpp: Made tilemap registers and configuration into structures, and cleaned up related drivers. [cam900]
- 15736: dataeast/deco146.cpp: Made the sound latch pending flag readable. [cam900]
- 15737: dataeast/karnov.cpp: Cleaned up code. [cam900]
- 15738: sega/model1_v.cpp: Skip drawing for degenerate moiré direct polygons. [Francisco García]
- 15739: pacman/pacman.cpp: Added a Triunvi bootleg of Ms. Pac-Man. [Davidc96, ClawGrip]
- 15743: dataeast/deco16ic.cpp: Made m_control an array rather than a very small memory share. [cam900]
- 15744: dataeast/decbac06.cpp: Cleaned up code. [cam900]
- 15746: dataeast/vaportra.cpp, dataeast/darkseal.cpp: Use different tags for the palette device and palette RAM. [cam900]


Source changes
--------------
New systems marked not working
------------------------------
Xiao Mifeng [SongJi]
Xiyang Tianshi [SongJi]

New working clones
------------------
Mahjong Angel Kiss (ver 1.0, 92048-01 version) [Hammy]

-new WORKING machines (Planet Patrol) (#15354) [mamehaze]

New working systems
-------------------
Planet Patrol [Dillweed]

-zaccaria/zaccaria.cpp: Add a new Money Money set (#15355) [ClawGrip]

New working clones
------------------
Money Money (set 3) [Luis Arrufat]

-Add tape support to Sony NEWS drivers and clean up CD-ROM support (#15353) [Brice Onken]
 * Add SCSI tape drive recognized by NEWS-OS 4
 * Fix CD-ROM type for proper identification by NEWS-OS
 * Have the tape drive identify as a Sony NWP-546

-skeleton/extrema_m27sv.cpp: hookup basic video, hookup palette bank [angelosa]

-gpl951xx - more aggressive template use (#15352) [mamehaze]
 * generalplus_gpl951xx_soc - use templates for timebase and timers, add more timers [David Haywood]
 * generalplus_gpl951xx_soc - basic 'manual' ADC mode support [David Haywood]
 * generalplus_gpl951xx_soc - provide address when required in autocmd mode for spifc, to prevent wrong addresses being written
    [David Haywood]
 * generalplus_gpl951xx_soc - add stub logging more registers [David Haywood]
 * gpl_renderer - port improved linemap code from spg_renderer so that other BPPs can be handled [David Haywood]
 * generalplus_gpl951xx_rtc - allow setting / reading of timer registers [David Haywood]
 * generalplus_gpl951xx.cpp - various cleanups driver-side, including template use [David Haywood]

-dominator/senterprise: move lcd hw to its own device [hap]

New working systems
-------------------
Microtronic 2090 [hap, Jason T. Jacques, Decle, Michael A. Wessel]

New working systems
-------------------
Chess 3008 [hap, Berger]

New systems marked not working
------------------------------
Xingyun Xiaochou / Xingyun Shouji (V233CN) [little0]

-skeleton/zorba.cpp: Set raw screen parameters. [Vas Crabb]
 * This gives the correct resolution.  The actual horizontal total should be 910, as it switches to 9 clocks per character during
    horizontal blanking, but I don't think our 8275 CRTC device can deal with that.

-adp/adp.cpp: Add new not working game (#15336) [stonedDiscord]

New systems marked not working
------------------------------
Kimme und Korn [stonedDiscord]

-Changed ROM extensions for all games to match their PCB footprint position names. [stonedDiscord]

-skeleton/fc100.cpp: cleanups: [angelosa]
 * convert chargen area to a memory view;
 * move cart hookup in memory map;
 * fix game driver type (is a COMPuter not a CONSole);

-skeleton/flashvga2.cpp: make it execute some code [angelosa]

-sega/saturn_cd_hle.cpp: extend mirror ranges of registers [angelosa]

-hash/sat_cart.xml: demote ar to supported=no, test1f to supported=partial [angelosa]

New working software list items
-------------------------------
saturn: Dezaemon 2 Save Game Manager, Dezaemon 2 Save Game Manager Vol. 2 [Madroms, satakore.com]

New software list items marked not working
------------------------------------------
saturn: Pseudo Saturn Installer [CyberWarriorX, Pseudo Saturn Team], Pseudo Saturn Kai Flasher [cafe-alpha], USB Cart Flasher
  [andersm]
sat_cart: Pseudo Saturn [CyberWarriorX, Pseudo Saturn Team]

-popnrun: remove "Yukai Tsukai" from companystring, remove useless quantum (besides, with the scanline timer it's already more than
 60hz) [hap]

-skeleton/flashvga2.cpp: Hook up UART [AJR]

-igs/igs036crypt.cpp: added some notes and corrected a couple of decryption keys [IQ_132]

-skeleton/flashvga2.cpp: basic video hookup [angelosa]

New systems marked not working
------------------------------
Ganso Janken Man [Darksoft, TeamEurope]
Hello Kitty no Oshiro e Iko [Darksoft, TeamEurope]
Itadaki Nyandora Kids [Darksoft, TeamEurope]

-igs/igs036crypt.cpp: Fixed misspelling in notes (#15367) [James Charles Taylor]

-tecmo/tehkanwc.cpp: Add note about 'tehkanwch' with double sized ROMs (#15361) [ClawGrip]

-namcos2.cpp: Correct Final Lap 2 ROM labels. [sjy96525] (#15359) [sjy555525]
 * namcos2.cpp: Correct Final Lap 2 ROM labels. [sjy96525]
 * vegas.cpp: Correct San Francisco Rush 2049 description [sjy96525]
 * namcos2.cpp: Correct Parent Final Lap 2 description
 * namcos2.cpp: Correct clone finalap3a description
 * spacing

-skeleton/flashvga2.cpp: map i2c EEPROM and Timekeeper [angelosa]

-Split midway project into bally and williams according to brand owner. [Vas Crabb]
 * Videa/Sente stuff from the brief period before it was acquired by Bally is still in the bally project.

-bally, williams: Updated #include guards. [Vas Crabb]

New working software items (a2600.xml)
--------------------------------------
Tarzan (prototype) [Hidden Palace, AJR]

-sunwise/jankmg2.cpp: Add CTC, sound and output stubs [AJR]

-emu/driver.cpp: Marked several device_t overrides as final. [Vas Crabb]
 * There's too much opportunity for confusion if these are overridden further down the tree.

-handheld/unknown_bftetris_lcdc.cpp: 256KiB is too heavy for a device class. [Vas Crabb]

-taito/cucaracha.cpp: add LCD screen and GFX bank [angelosa]

-adp/stellafr.cpp: Add non working games (#15324) [stonedDiscord]

New systems marked not working
------------------------------
Castello II (W1) [stonedDiscord]
Disco (W1) [stonedDiscord]
Fifty Five (F1) [stonedDiscord]
Logo (W1) [stonedDiscord]
Monopoly Tisch (F2) [stonedDiscord]
Multi (F2) [stonedDiscord]
Optimus (W1) [stonedDiscord]
Sunny Top (W1) [stonedDiscord]
Swing [stonedDiscord]
Viva [stonedDiscord]
Vulkan (F2) [stonedDiscord]
Würfel Fix (F3) [stonedDiscord]

New clones marked not working
-----------------------------
Granada (W1) [stonedDiscord]
Turbo Sunny (W1) [stonedDiscord]
Würfel Fix (F2) [stonedDiscord]

-igs/goldstar.cpp: decrypted jkrmastc. Needs own portmap. [Ivan Vangelista]

-skeleton/extrema_m27sv.cpp: fix gfx_layout, add NVRAM and attribute RAM view selects, hookup most inputs [angelosa]

-osd/eminline.h: Retired operations that are in C++20 <bit>. [Vas Crabb]
 * cpu/tms34010: Attempted to fix setcd for the case with two bits set.  It was definitely wrong before - the mask to clear the
    first bit was calculated incorrectly.
 * akai/mpc60.cpp, akai/mpc2000.cpp, akai/mpc3000.cpp, skeleton/softbox.cpp: Suppress side effects for debugger reads.
 * akai/mpc60.cpp, akai/mpc2000.cpp, akai/mpc3000.cpp: Don't pretend switch matrix is a multiplexer.

-Merged neogeo project with snk project. [Vas Crabb]

-Updated the rarely-used ci.flt. [Vas Crabb]

-qx10: Add extra wait state to m1 cycles (#15380) [Brian Johnson]

-cpu/h8: Formalize the contracts between H8 family peripherals and the CPU and interrupt controller so H8/500 can share.
 [R. Belmont]

-taito/cucaracha.cpp: add base inputs and DIPs [angelosa]

-image.cpp: Fix regression with opening sockets [AJR]

-Fixed up some stuff: [Vas Crabb]
 * video/st7735_lcdc.cpp: Fixed line drawing loop start, allocate frame buffer on start.
 * apple/apple2video.cpp: Configuration doesn't belong in saved states.

-cpu/m68000: Update bftst to reluctant reads when fetching data from memory (#15365) [Brice Onken]

-apple/macquadra605.cpp: Changed default RAM size for maclc575 to a power of 2, also changed lc475 and lc575 to LC040 which is more
 correct. (MAMETesters #9455) [R. Belmont]

-cpu/h8500/h8500dasm.cpp: Fixed incorrect disassembly of SCB, PJSR, PJMP, and TRAPA. [R. Belmont]

-circus: update screen per scanline for more accurate collision detection [hap]

-lib/formats/flopimg.h: add missing header [Patrick Mackinlay]

-taito/cucaracha.cpp: replace video emulation with artwork based LED matrix [angelosa]
 * add scrollx and scrolly
 * fix SFX playback at game start (missing OKI mirror)
 * game engine timer IRQ is more around 100 Hz, for lip sync at game start

-apple2e: laser128 improvements (#15384) [arekkusu42]
 * fix laserprn_busy_r() to handle Cnxx banking, fixes #15373
 * add EX 6.0 BIOS
 * fix machine date and name metadata
 * add notes on unemulated EX/2 features

-add Casiotone RC-1 driver, fix uPD7801 INT0 behavior (#15371) [Devin Acker]

New NOT_WORKING machine
-----------------------
Casiotone RC-1 [Devin Acker, =CO=Windler]

-taito/cpzodiac.cpp: base video and inputs [angelosa]

New systems marked not working
------------------------------
Winner's Club - Wild Roses [Darksoft, TeamEurope]

New clones marked not working
-----------------------------
The New 1997 Joker Master - New York (V3G) [Ioannis Bampoulas]

-Cleaned up various stuff. [Vas Crabb]

-apple/apple2e.cpp: Use downcast for better diagnostics in debug builds. [Vas Crabb]

-nintendo/nes_vt369_vtunknown_soc.cpp: Fixed initialiser list. [Vas Crabb]

-circus: add sprite wraparound [hap]

-circus: small correction to border lines, add border to ripcord [hap]

-acedrive: remove unofficial sub-title [hap]

-nemesis: add bs_ prefix to bubsys games, mark bs_rf2 a not working [hap]

-nemesis: group bubsys mcfg with the other mcfgs [hap]

-sony/news_68k.cpp: Implement NWS-1250 driver (#15364) [Brice Onken]

New NOT_WORKING machine (#15325)
--------------------------------
R&D Co., Ltd. GALPRO [Devin Acker]

-adp/stella8085.cpp: Fix 4040 board IO (#15382) [stonedDiscord]
 * Add 4040 board IO map
 * Replace DIY IO70 with proper 8255 PPI
 * Replace device tags
 * Remove io73

-Converted several things from std::enable_if to requires clauses. [Vas Crabb]
 * Gets rid of a layer of templating in emu/emumem_hedp.cpp, makes a few other things easier to read.

-sord/m5.cpp: Added a side effects check. [Vas Crabb]

-matsushita/kn5000_cpanel.cpp, matsushita/kn5000.cpp: Generally cleaned up code. [Vas Crabb]

-m5_cass.xml: Restored WAV dumps of Solar System Forces tapes. [Vas Crabb]
 * The proper raw recordings from Ola Andersson were replaced with cooked dumps with no explanation.  If they work now, they can be
    promoted again, but I haven't tested them.  If raw tapes don't work, that needs to actually be fixed.

-a2gameio: Change SW0/SW1/SW2/SW3 inputs to normally read as 1 instead of 0 if unconnected. This agrees with observed behavior on
 actual Apple II family hardware. [AJR]
 * apple/apple2e.cpp: Add optional shift key mod for models that support it (permanently enabled for apple2ep, as before)

-apple2: improve accelerator delay emulation (#15387) [arekkusu42]
 * apple2e: improve accelerator delay emulation
 * implement the (sticky) Zip Chip delay cancel via C05E
 * fix default slot speeds to match Zip hardware and Laser documentation
 * fix DEVSEL writes to trigger delays
 * fix IOSEL and C800 access to only delay on Laser, per documentation
 * fix PTRIG to only delay on C070
 * wrap address map direct accessors in delay lambdas
 * apple2gs: improve accelerator delay emulation
 * implement the (one-shot) Zip GS delay cancel via any write
 * fix default slot speeds to match Zip hardware
 * fix DEVSEL writes to trigger delays
 * fix IOSEL and C800 access to not delay
 * fix PTRIG to delay on C020 and C070
 * implement IRQ and counter delays
 * implement C036 motor-on bits override of C05C slot speeds
 * also fix the 5x/Ax un/lock keys

New NOT_WORKING machines (#15391)
---------------------------------
Akai S612 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai X7000 Sampling Keyboard [DBWBP, Fetaldreamcore, Devin Acker]

New NOT_WORKING clones
----------------------
Akai S700 MIDI Digital Sampler [DBWBP, Devin Acker]

-ripcord: workaround for initial ram contents issues [hap]

New systems marked not working
------------------------------
Fuxing Gaozhao [SongJi]
Huanzhu Gege (set 1) [SongJi]

New clones marked not working
-----------------------------
Huanzhu Gege (set 2) [SongJi]

New working software list items
-------------------------------
pc98_flop_orig: Yajiuma Pennant Race 2 1991 [Krugman]

-layout/cucaracha.lay: LED colors closer approximation [Dirk Best]

-hash/32x.xml: QA pass [angelosa]

-namco/dangbar.cpp: split dangbar to own state, hookup Z80 LED CPU in there [angelosa]

-emu, util: Replaced most uses of enable_if with requires clauses. [Vas Crabb]
 * This uses requires clauses to replace enable_if in almost all cases where it was just used to exclude functions from overload
    resolution. This makes the code more readable.  enable_if is still used for partial specialisation.
 * util/strformat.h: Un-templated a number of functions.  Several of these could have been un-templated when we adopted C++17 (due
    to if constexpr) but it wasn't done at the time.  Also completely dropped C++17 support since requires clauses are a C++20
    feature.
 * emu/device.h: Added first-class concepts for a couple of things.

-emu: Hopefully pacify GCC. [Vas Crabb]

-util/delegate.h: More effort to pacify the Generally Cursed Compiler. [Vas Crabb]

-namcos22: revert cdea363c3eae1a019474ed2bf05880f16be31f21 [hap]

New systems marked not working
------------------------------
Star Sapphire [hap, Berger, Chessguru]

-add some digiblast carts (#15396) [mamehaze]

New software list items marked not working
------------------------------------------
digiblast_cart.xml: [mamehaze]
Sonic X 1 (Italy / Spain, set 1) [trabantrom]
Totally Spies! 1 [anonymous]
Winx Club + 5 Atari Games (Italy / Spain, set 1) [trabantrom]
Winx Club + 5 Atari Games (4 language version) [anonymous]
Crazy Jack [trabantrom]
Cuccioli Cerca Amici (Italy) [trabantrom]
DigiQUAD [trabantrom]
Gormiti 2 episodi (Italy) [trabantrom]
Gormiti Lotta Oscura (Italy) [trabantrom]
Gormiti Masters of the Gorm Island (Italy) [trabantrom]
Pitfall The Lost Expedition [trabantrom]
Rayman 3 [anonymous]
Spider-Man Mysterio's Menace [trabantrom]
Sponge Bob + 5 Atari Games (Italy / Spain) [trabantrom]
Superstar Chefs [trabantrom]
Wade Hixton's Counter Punch [trabantrom]

-added 7 Smart TV carts [TeamEurope] (#15390) [mamehaze]

New software list items marked not working
------------------------------------------
smarttv_cart.xml: [mamehaze]
Avventure nello Spazio (Italy) [TeamEurope]
La Scuola di Smart TV - 4 anni (Italy) [TeamEurope]
La Scuola di Smart TV - 5+ anni (Italy) [TeamEurope]
Mondosauro (Italy) [TeamEurope]
Cuccioli Labrador (Italy) [TeamEurope]
Winx Club Bloom (Italy) [TeamEurope]
i-move (Italy) [TeamEurope]

-Use C++20 mathematical constants rather than M_PI and similar macros [AJR]

New working clones
------------------
Happy Jackie (v119U) [Hammy]

-shared/xbox_nv2a.cpp: Remove outdated workaround for missing library function [AJR]

-sound/votrax.cpp: Add missing library header [AJR]

-akai/x7000.cpp: fix DMA controller addressing (#15398) [Devin Acker]

New working clones
------------------
Mahjong Diplomat (Japan) [Hammy]

-gridcomp: replaced driver of bubble memory subsystem with i7110 (#15395) [fulivi]

-sinclair/next/specnext_copper.cpp: NOP uses ula coordinates for base offset (#15388) [holub]

-bus/megadrive/cart/sram.cpp: fix Sega SRAM view register (bit 0 is enable and bit 1 is write protect) [angelosa]

New working software list items
-------------------------------
c64_cass: Forbidden Forest, Lazy Jones [C64 Ultimate Tape Archive V5.0]

New software list items marked not working
------------------------------------------
c64_flop_misc: Rags to Riches, Space Taxi [archive.org]

New working clones
------------------
Futari Mahjong Ron II (set 2) [Hammy]

-emu/output.cpp: Allow initialising output finders with arrays of matching dimensions. [Vas Crabb]
 * Also got rid of all but one of thee uses of get_value/set_value in emulation code and marked them deprecated.

-pinball/flicker.cpp: Outputs still need to be resolved manually. [Vas Crabb]

-emu/output.h: Fixed dangling reference (was supposed to be in the first commit). [Vas Crabb]

-sony/news_68k.cpp: Fix typo in nws12x0 DIP switch defaults (#15409) [Brice Onken]

-formats/mfi_dsk: drop debug histogram dump that segfaults on small MFI (#15414) [Felipe Corrêa da Silva Sanches]
 * mfi_format::load() ended with a debug block that dumped a per-track cell-length histogram to stderr, walking a hard-coded
    46-track x 2-side grid. get_buffer() only bounds-checks with assert (compiled out in release builds), so on an MFI smaller than
    46 tracks or single-sided the loop indexes track_array past its end and segfaults.
 * Remove the debug dump; load() now just returns once the tracks are in.

-ssapphire: ssaphire was a typo [hap]

-itautec/i7000: drive the screen from the MC6845 CRTC (#15419) [Felipe Corrêa da Silva Sanches]
 * Replace the placeholder tilemap renderer with an MC6845_UPDATE_ROW callback driven by the CRTC at ports 0x08/0x09, so the
    geometry and column count come from the CRTC registers the boot ROM programs. Also made some adjustments to the color palette so
    that it better matches photos of the real device.

-z80sio: Fix Rx interrupt logic (#15394) [fulivi]

-taito/taito_l.cpp: new plgirls2 parent set (Europe) (#15370) [Sergio G.]

New working clones
------------------
Play Girls 2 (Europe) [Kebrank]

-nakajima/nakajies.cpp: Several updates (#15368) [wilbertpol]
 * Add 10Hz timer, fixes empty battery display.
 * Add PC Card/PCMCIA support.
 * Add power button.

-hash/c64_cass.xml, hash/spectrum_cass.xml: bulk replace BraveStarr SW item titles [angelosa]

-hash/c64_cass.xml: promote skylinea [angelosa]
 * note claimed to press CBM but game prompts to press RUN STOP instead

New software list items marked not working
------------------------------------------
c64_flop_misc: Bop 'n Rumble, The Detective Game, Samurai Warrior: The Battles of... Usagi Yojimbo [archive.org]

-bus/c64/epyx_fast_load.cpp: suppress side effects on reads [angelosa]

-hash: bulk add hyphen to Yie Ar Kung-Fu titles [angelosa]

-hash/c64_cass.xml: update QA [angelosa]

-Core header streamlining [AJR]
 * Retired the util::endianness enum class in favor of the std::endian type introduced in C++20.
 * Stripped save privileges from endianness_t (now an alias for std::endian), since its specific values may be nonstandard. This
    type is mostly used for configuration parameters anyway.
 * Removed the endianness and floating point utilities from emucore.h. C++20 versions of the latter now reside in their own utility
    header (corefloat.h).

-util/endianness.h: Remove accidentally reintroduced emucore.h names [AJR]

-mos6566: Fixed non-expanded multicolor sprite collision detection. [Curt Coder]
 * Fixes Space Taxi on c64.

-src/emu: #include <cstdio> for future-proofing [AJR]

-emu/output.cpp: Updated API: [Vas Crabb]
 * Added a lightweight output proxy class for interacting with outputs from outside a device context.  If an output doesn't exist,
    it stores a local value.  Note that this means layouts cannot create outputs, e.g. to communicate between views.  Outputs are
    only created by output finders when resolving objects.
 * Made output finders participate in object resolution in the device lifecycle.  They no longer need to be manually resolved.
    Conversely, you can't avoid creating outputs by not explicitly resolving them.
 * Added some validation rules for output names.
 * Got rid of the deprecated get_value/set_value.  The Lua versions will stick around a bit longer to give people time to migrate.
 * Some other internal API changes in preparation for per-device outputs.

-emu, util: Replaced remaining uses of std::enable_if and void_t with C++20 constraints and concepts.  This makes some lines
 considerably shorter, to the point that some of them may even fit on your screen. [Vas Crabb]

-util/strformat.h: Fixed formatting bool values with numeric conversions. [Vas Crabb]

-emu/devfind.cpp: Made object finders and similar things explicitly non-copyable.  Copying them never behaved intuitively.
 [Vas Crabb]

-util/dynamicclass.h: Brought back an enable_if as GCC doesn't seem to be able to deal with the alternative. [Vas Crabb]

-micropin.cpp: Added override qualifiers, removed declaration of non-existent method. [Vas Crabb]

-segapico: write to upd MD together with reset [hap]

-There are a lot of clock information in device instanciation that gets a 0 because the information is not available or it just
 doesn't make sense.  Allow them to be removed and push that to the constructors. [Olivier Galibert]
 * There are a number of cases where a weird interaction between DEFINE_DEVICE_TYPE_PRIVATE and pure methods make it impossible, see
    DL1416T for instance.

New systems marked not working
------------------------------
Special 8 Way (v122F) [Hammy]

-misc: remove some empty device/machine_start [hap]

-vgmplay: fix OKI clock regression [hap]

-Move timer setups with time_until_pos from device_start to device_reset so that they're correctly resynced on reset.
 [Olivier Galibert]

-Change decrmc3 not to avoid ambiguity between clock and entries [Olivier Galibert]

-cem3340.cpp, prophet5.cpp: Implemented bandlimited oscillator sync. (#15427) [m1macrophage]
 * cem3340.cpp, prophet5.cpp: Implemented bandlimited oscillator sync.
 * cem3340: Minor comment fixes.

-Revert "Move timer setups with time_until_pos from device_start to" [Olivier Galibert]
 * This reverts commit ea7f65ecb1b65d975c259b3936d658b33780d133.
 * Not 100% it's not going to break anything, and it's kinda hard to test and not that important.

-machine/wd1010: disable verbose logging by default (#15431) [David Rand]

-Fixed up a bunch of stuff: [Vas Crabb]
 * nichibutsu: Fixed passing NB1413M3 variant as clock.  This is the kind of regression that could have lurked for months and been a
    nightmare to track down.  This is why you need to actually check your changes before committing.
 * virtual/vgmplay.cpp: Fixed passing divider as clock when instantiating C352.
 * dataeast/decrmc3.cpp: Devices must expose a public standard signature constructor.  All the verbs like -listxml, -validate,
    -romident, etc. assume it's available via device type objects, and bad things happen if it isn't.
 * Removed default argument values from protected constructors.  It's error-prone and leads to bugs.  It also wasn't thought through
    very well.  For example if a device actually tried to construct the base class in pc/pc_t1t.cpp with the default values that
    were added, it wouldn't do anything useful, it would just crash.
 * bus/thomson/nanoreseau.cpp: Fixed no_id not being passed to the base class constructor.  This is a great example of why default
    argument values in protected constructors are a bad idea - it leads to bugs like this that sit unnoticed.  (This isn't a recent
    regression, it seems to have been broken for a long time.)
 * thomson/thomson.cpp: Fixed passing no_id value as clock when insantiating nanoreseau device.  This could have been nasty to track
    down as well, but it already wasn't working due to the above bug.
 * Removed default zero clock for some slots that provide an input clock to cards where it's common to use the input clock to drive
    devices on the card.  It should be possible to use DERIVED_CLOCK in these cards.  A default zero clock will just encourage
    people to be lazy and not set the bus clock.  Set the bus clocks for a few systems, added FIXME comments for others.
 * Removed default zero clock for devices that actually need the clock frequency.  If you're disabling a device by setting the clock
    to zero, or setting it to zero with the intention of changing it later, you should be explicit about that.
 * frontend/mame/luaengine.cpp: Added Lua bindings for new public output API, added deprecation warnings to the wrappers that
    emulate the old API.  Also updated the two affected internal layouts to use the new API.
 * emu/output.cpp: Shuffled the code for the output proxy move assignment operator to handle self-assignment properly.
 * Losing a whole night's sleep trying to play spot the bug in a massive bulk change that clearly wasn't actually reviewed by a
    human before pushing isn't my idea of fun.  Nextt time, I'll just revert it.

-util/delegate.h; Put requires clauses on template parameter lists. [Vas Crabb]

-cpu/z80/z80.cpp: Prioritized non maskable interrupt over maskable in case of race. (#15434) [holub]

-Some non-working Software List additions (Smart TV) (#15432) [mamehaze]

New software list items marked not working
------------------------------------------
smarttv_cart.xml: [mamehaze]
English Luna Park (Italy) [TeamEurope]
Winnie the Pooh - Le Avventure di Winnie the Pooh (Italy) [TeamEurope]
Spider-Man - Spider Sense (Italy) [TeamEurope]
il Bosco dei Numeri (Italy) [TeamEurope]
mart TV Evolution (bundle cartridge, Italy) [TeamEurope]

New software list items marked not working
------------------------------------------
yeno_laptop_cart.xml: [mamehaze]
Decouvertes 1 (France) [TeamEurope]
Decouvertes 2 (France) [TeamEurope]

-generalplus_gpl951xx.cpp: factory reset some sets, remove one that is a duplicate after factory resetting [David Haywood]

-new NOT WORKING system (My Life) (#15429) [mamehaze]

New systems marked not working
------------------------------
My Life (UK) [Team Europe, David Haywood]

New clones marked not working
-----------------------------
My Life (Italy) [Team Europe, David Haywood]

New software list items marked not working
------------------------------------------
mylife_cart.xml: [mamehaze]
Hannah Montana (Italy) [Team Europe, David Haywood]
Summer Party (Italy) [Team Europe, David Haywood]

New clones marked not working
-----------------------------
Hana Awase 6 (Japan, bootleg) [Hammy]

-cpu/z80/z80.cpp: Revert #15434 "Prioritized non maskable interrupt over maskable in case of race." (#15436) [holub]

-Fix CI [Olivier Galibert]

-scripts/src/osd/sdl_cfg.lua: Fix INI_PATH quoting (#15444) [Cesare Falco]
 * Co-authored-by: Cesare Falco <c.falco@ubuntu.com>

-issdxb: add dips and protection simulation (#15440) [Devin Acker]

Machines promoted to working
----------------------------
International Superstar Soccer Deluxe (SNES bootleg) [Devin Acker]

-sinclair/next/specnext_layer2.cpp: Latched pixels read between screen updates. (#15437) [holub]

-hash: bulk replace ThunderCats SW item titles [angelosa]

-ui/tapectrl.cpp: comment typo fix [angelosa]

-hash/c64_cass.xml: move game collections as separate category, perform some QA on them [angelosa]

-tim011: Add HFE floppy format [AJR]

-macpwrbk030: correct asc device type in memory maps [hap]

-mb87013: move out of roland dir; akai/x7000.cpp: add mb87013, other small corrections (#15408) [Devin Acker]
 * mb87013: move out of roland dir, add to s700 and x7000
 * s612: correct DRAM size [skip ci]
 * s700, x7000: correct polarity of a couple of inputs

-xerox/bigbord2: Boot CP/M, wire SASI HD, mark working (#15412) [David Rand]
 * xerox/bigbord2: Boot CP/M, wire SASI hard disk, fix warm-boot DRQ race
   - Brings the Big Board II driver from "MACHINE_NOT_WORKING" up to a functional state.  Five inter-related changes, all small and
      local to bigbord2.cpp.
   - 1) 74LS151 DMA-RDY mux: track the selected input dynamically. syslatch2 bits 0-2 select which of eight RDY sources feeds the
      Z80 DMA's /RDY pin; the existing driver only re-evaluated the mux inside syslatch2_w, so per-byte FDC DRQ / SIO WRDY edges
      that happen *after* a syslatch2 write never propagated to the DMA. Result: DMA boot read of the CP/M loader sets WD179x bit 2
      (Lost Data) and the BIOS prints "BIOS error on A: drq".  Fix: store m_dma_sel + an m_cc[8] cache of all eight mux inputs, then
      have fdc_drq_w / sio_wrdya_w / sio_wrdyb_w (and sasi_req_w below) call m_dma->rdy_w() whenever their index matches m_dma_sel.
   - 2) Soft-reset re-init.  The state above (m_dma_sel, m_cc[], DMA RDY level, m_fdc_rq, the NMI line) was left stale across a soft
      reset, so the boot DMA on the second cold-attempt session was non-deterministic.  machine_reset() now restores it to the
      power-on values the cold-boot ctors produce.
   - 3) FDC INTRQ + DRQ -> Z80 /NMI gate (HALT-conditional).  Per the schematic, the WD179x's INTRQ (pin 39) and DRQ are OR'd,
      inverted and AND'd with /HALT to drive /NMI -- so the CBIOS' HALT+INI PIO path moves one byte (or finishes a command) per NMI
      while the CPU is halted, but the gate stays quiet during a DMA transfer (CPU bus-released, not halted).  Implemented via the
      Z80 halt_cb() callback (zero polling latency) + a single m_fdc_rq byte tracking INTRQ in bit 0, DRQ in bit 1, and NMI-asserted
      in bit 7.  This is needed for CBIOS variants that use the HALT+INI path (e.g. cbios.s1) on warm boot's CCP reload; the V1.1
      monitor in bigbrdii.u85 is interrupt-driven and never halts, so the gate stays quiet for it.
   - 4) Race-window mask in fdc_status_r.  MAME's wd_fdc::command_end() clears BUSY without dropping DRQ when LOST_DATA is *not* set
      -- there's a literal "TBD: lost data should probably negate DRQ" comment in the code.  That exposes a transient BUSY=0 + DRQ=1
      state real WD179x DMA hardware doesn't (arbitration grabs the trailing byte before BUSY drops).  Without this mask the V1.1
      CBIOS' DISKOP polling exits its "wait for BUSY=0" loop, masks the returned status with AND $9F, sees bit 1 (DRQ) set, and
      reports "BIOS error on A: drq track N sector M" on every warm boot.  Re-assert BUSY in the status read while the race is open
      so the BIOS keeps polling; the DMA drains the data register within microseconds and the next read returns a clean STS=00. The
      byte stays in the FDC's data register -- the mask only delays when the BIOS sees the command complete, it doesn't fabricate or
      hide data.
   - 5) Xebec S1410 SASI hard disk subsystem.  Adds a small in-driver bigbord2_sasi_host_device that bridges between the BB-II's two
      SASI ports (D8 data / D9 status) and the nscsi bus + s1410 target.  D9 status bits map BSY=0x02, MSG=0x08, C/D=0x20, I/O=0x01
      and (for the DMA-variant ST412 BIOS) REQ=0x80.  SEL and RST come in through outlatch1 (U96, an LS259 addressable latch) Q3 and
      Q2.  SASI REQ is surfaced via req_cb() so it can feed mux input 7 to the DMA RDY; the cbios.s2 INIR variant uses the DMA's
      read-status command to wait for REQ, the DMA-variant reads D9 bit 7 directly.  An optional set_seek_timing() call from
      machine_start() opts the s1410 into a realistic ST-506 cylinder-aware seek model (3 ms track-to-track, 85 ms average, 205 ms
      full-stroke at 3600 RPM, 1:1 interleave -- per the April 1982 ST412 OEM manual) -- depends on the s1410 changes submitted as a
      separate PR.
   - PAL ROM declarations for U23 (PAL16L8) and U34 (PAL10L8) are added as NO_DUMP -- the parts have their security fuse blown, but
      the mem/io decode is already hard-coded from the CUPL equations in the existing roms/bigbord2/BB2_U23_Replacement.txt and U34
      counterpart, so the ROMs are cosmetic for the audit.

What has been tested
--------------------
- **Stock CBIOS, V1.1 9-March-83 monitor** in `roms/bigbord2/`'s [David Rand]
bigbrdii.u85: boots CP/M 2.2 cleanly off the standard DDBOOT.S1 [David Rand]
8" SSDD floppy (FM 26x128 boot track + MFM 8x1024 data tracks). [David Rand]
Sustained warm-boot CCP reloads, file copy A: -> B: and back, [David Rand]
full directory listings, EDitor sessions. [David Rand]

-**bb2mon (24-JUNE-82) and BBII_Monitor_V6.12 (2-FEB-85) CBIOS source variants** (sister releases from bitsavers) read the same way:
 BUSY-polling DISKOP, mask $9F, bit 1 = "drq", bit 2 = "overrun".  Same fix applies to all three. [David Rand]

-**Seagate ST-506 (5 MB, 153 cyl) via the s1410** using the CYLS:306, HEADS:4, SECS:32, BPS:256 CHD geometry the cbios.s2 INIR
 variant expects (HSTTRK*32 + sector LBA, 256 B/sector per the WINSTUFF DPB).  Phase chain completes cleanly all the way through
 DATA-IN -> STATUS -> MSG-IN -> bus-free; 300 KB sustained read takes ~65 s, matching the user's first-hand experience with the real
 hardware ("painfully slow stepper design").  The Xebec ST-412 (10 MB, 306 cyl) path is identical [David Rand]

-- the only difference is the CHD's cylinder count -- but has not been live-validated on this branch. [David Rand]

-**Sound, CRT, keyboard (including control characters)**: all reachable from the standard CP/M shell, no observed regressions
 relative to the legacy `bigboard` driver. [David Rand]
 * xerox/bigbord2: Mark working
   - With the preceding commit's boot fixes, FDC NMI gate, SASI subsystem and warm-boot DRQ race mask the BB-II driver is
      functionally complete: CP/M 2.2 boots, floppy R/W is reliable across cold and warm boots, the Xebec S1410 SASI hard disk is
      wired end-to-end and exchanges full READ / WRITE / STATUS / MSG-IN phase chains, sound plays, the CRT renders, the keyboard
      handles control characters, and SIO channel B is reachable via the standard `-rs232b` slot.
   - Validated with:

-The V1.1 9-March-83 monitor in `roms/bigbord2/bigbrdii.u85` (the stock CBIOS) booting CP/M 2.2 off the standard 8" SSDD DDBOOT.S1
 boot floppy, with subsequent warm-boot CCP reloads and file copies between A: and B: completing cleanly. [David Rand]

-A Seagate ST-506 (5 MB, 153 cyl) attached via the S1410 controller -- realistic seek timing (3 ms track-to-track / 85 ms average /
 205 ms full-stroke at 3600 RPM per the April 1982 ST412 OEM manual) is engaged via the s1410's optional set_seek_timing() hook from
 machine_start().  300 KB sustained reads land at ~65 s, matching first-hand experience with the real hardware ("painfully slow
 stepper design"). [David Rand]

Drops MACHINE_NOT_WORKING; MACHINE_SUPPORTS_SAVE is kept.
---------------------------------------------------------
Co-authored-by: AJR <ajrhacker@users.noreply.github.com> [David Rand]

-sony_news: Add NWU-671CA (NWF-671C) install tapes for NEWS-OS 4.1C [Bitsavers] (#15410) [Brice Onken]

-bus/nscsi/s1410: Add an optional cylinder-aware seek-timing model (#15411) [David Rand]
 * Mirrors the dtc510 approach: introduces an opt-in set_seek_timing(track_us, average_us, full_us, rpm, interleave) API that
    replaces the device's legacy flat 85 ms per-command delay with a power-law model fitted to the published track-to-track,
    average, and full-stroke seek times.  No call from a driver -> behavior is unchanged for the existing s1410 users (victor9k,
    mikromik, x37_sasi, db4105, idpartner_sasi).
 * The model state lives on the device:
   - m_seek_model: enable flag (false until set_seek_timing() is called)
   - m_last_cylinder: head position so subsequent same-cylinder I/O is billed at rotational latency only, not a fresh average seek
   - m_interleave / m_rpm / m_seek_track_us / m_seek_range_us / m_seek_exp: the fitted curve parameters
     * scsi_data_command_delay() then:
   - Same-cylinder I/O (dist == 0): rev_us * interleave / spt
   - Cylinder change: rev_us/2 (avg rotational latency) + track_us + range_us * (dist / ncyl)^exp
     * The exponent is solved from the three calibration points so an average-length seek (~1/3 stroke) costs exactly average_us.
        For the ST-506/ST-412 (track 3 ms, average 85 ms, full-stroke 205 ms per the April 1982 ST412 OEM manual) that gives exp ~=
        0.82, which captures the controller's "burst mode" multi-cylinder behavior -- faster than naive 3 ms/cyl stepping for long
        seeks while still cheap on short ones.
     * The header documents the API with ST-506 and ST-412 invocations side by side.  Both drives use identical set_seek_timing()
        parameters because the controller's burst mode adapts to the CHD's reported cylinder count via image->get_info().cylinders
        -- the 5 MB ST-506 (153 cyl) and the 10 MB ST-412 (306 cyl) are distinguished only by the physical media size, not by the
        timing call.

-machine/upd765.cpp: Nominally distinguish more variant FDC types [AJR]
 * bus/vme/mvme327a.cpp: Un-default clock for FDC
 * mpc60scsi: Remove clock from NCR5380 (IC doesn't have a clock input)

New systems marked not working
------------------------------
Hana Awase Maihime [Hammy]

-seta/speedatk.cpp: some work on hanaren [Ivan Vangelista]

-a2kbd: Add unknown Apple II clone keyboard with AUTO [AJR, Internet Archive]

-agat: experimental write support for 840KB floppies (#15362) [shattered]

-dsp563xx/hi08: forward DSP HTX writes to the host (#15369) [Felipe Corrêa da Silva Sanches]
 * htx_w only logged the outgoing word; it did not store it in m_htx or update m_isr. Host-side reads of HRX (offsets 5/6/7)
    therefore always returned zero and the host never saw ISR_RXDF asserted, so any 80C535 firmware polling HSR for a reply from the
    DSP after the bootstrap upload would spin forever.
 * Store the word the DSP placed on HTX into m_htx, raise ISR_RXDF (which in turn asserts host-side HRDF and clears DSP-side HTDE
    through hsr_r's view), and let the host's read of the trigger byte at offset 7 clear ISR_RXDF so the DSP can transmit the next
    word.
 * With this in place virusb boots all the way to its interactive UI: the LCD shows the patch / parameter pages and the panel
    buttons drive the menu.

-kartduel: add MACHINE_NODEVICE_LAN flag (#15366) [FMecha]

-Add bruteforced PLDs to Money Money (set 3) [Luis Arrufat] (#15397) [ClawGrip]
 * Add bruteforced PLDs to Money Money (set 3) [Luis Arrufat]
   - And placeholders for PLDs and 82s100 PROMs on every set (same PCB for both games)
 * Load from 0x0000
 * Fix note abou PLD at 1a on ROM board

-skeleton/eks515.cpp: Some decryption [AJR]

-12 new Cocopad dumps [Ivan Vangelista]

New software list items marked not working
------------------------------------------
leapfrog_leappad_cart.xml: [Ivan Vangelista]
Minna de tanoshiku! CoCoPad (Japan) [TeamEurope, David Haywood, Fujix]
Oshaberi CoCoPad Mic (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Step 9-gatsu gou - Shimajirou no Otetsudaiyasan (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Step - 2005 nen 5, 7, 9 gatsu gou (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Step - 2005 nen 11 gatsu gou / 2006 nen 1, 3 gatsu gou (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Step - 2005 nen 3 gatsu Welcome gou (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Jump 5-gatsu gou - Shimajirou to ABC / 7 gatsu gou - The Three Little Pigs (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Jump 9-gatsu gou - Shiamjirou to Ribby no Eigo Jiten (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Jump 11-gatsu gou - Shimajirou to Ribby no CoCoPad Eigo party / 1-gatsu gou - Shimajirou to Ribby no Shougakkou Tanken
  (Japan) [TeamEurope, David Haywood, Fujix]
Oyako Eigo Jump 1 gatsu gou - Shimajirou to Ribby no Shougakkou Tanken (Japan) [TeamEurope, David Haywood, Fujix]
2008 July Shimajirou to Ribby no Eigo Jiten / 2008 September Onahashi CoCoPad Time Machine de Daibouken! (Japan)
  [TeamEurope, David Haywood, Fujix]
2008 November Shimajirou to Ribby no CoCoPad Game Party / 2009 January Shimajirou to Ribby Shougakkou Tanken (Japan)
  [TeamEurope, David Haywood, Fujix]

-sh/sh7709s.cpp: Add support for cache invalidation and entry writeback (#15144) [Jesus Ramos]
 * sh/sh7709s.cpp: Add support for cache invalidation and entry writeback
   - Map the cache address array to handle cache line flushing as well as writes to CCR that cause a cache invalidatation
   - Fixes the sdram region check as only area 3 is mapped to SDRAM on cv1k
   - Add basic uncached access handling as the instructions that execute to invalidate/flush cache lines have to be from an uncached
      region
 * cpu/sh/sh7709s.cpp: Uncached access enablement and code cleanup
   - Enable uncached accesses and fixup missing case for uncached penalty
   - Add notes about cv1k slowdown
   - Address some review comments, moved register timing functions to member functions and moved some #define's to private static
      constexpr instead
   - Added some TODO's that need to be fixed and some timings that need verification

-sega/smpc.cpp: add some notes [angelosa]

-nec/pc8801.cpp: convert mem_r/_w in lambda memory map [angelosa]
 * first step in modernizing memory map(s), necessary for waitstates;
 * accessing ALU doesn't automatically change to work RAM bank in GVRAM;

-genie: Disable command line string escaping - fixes GitHub #13150. (#15413) [Julian Sikorski]
 * Cherry-picked from commit e745009c30879e63c628b9c2556a6b6e22c5af17.

-ussr/sm7238.cpp: Tidied code. (#15451) [shattered]
 * Grouped related things, marked infrequently called member functions cold.

-Made outputs name scope local to devices. [Vas Crabb]
 * This allows multiple devices in the system to have outputs with the same names, paving the way for stuff like floppy drives
    exposing head position and motor state as outputs without needing to worry about coming up with unique names.  For now, SVG
    items still use unqualified names, and layouts instantiated by the root device can use unqualified names.

-render/drawbgfx.cpp: Fixed drawing at the wrong resolution in the first window after resizing a window other than the first one.
 [Vas Crabb]
 * Also improved behaviour if the first window is resized while recording to AVI, and got rid of some unnecessary file statics.

-osd/sdl, osd/sdl3: Generally better handling of resizing windows and generating text input events for special keys. [Vas Crabb]

-emu/input.cpp, emu/inputdev.cpp, emu/uiinput.cpp: Reduced coupling and improved encapsulation. [Vas Crabb]
 * Removed input.h from emu.h - emulation code shouldn't be using it for anything besides debugging features, and even then it's not
    great as it's opaque and it's quite disconcerting, especially when the debugging keys conflict with default input assignments.
 * Removed debug keys for a few systems/devices where it's a leftover for something that's fairly well understood.

-nintendo/nes_vt369_vtunknown.cpp: Add 36-in-1 Classic Games phone case (#15438) [Roman Kuraev]
 * nintendo/nes_vt369_vtunknown.cpp: Add 36-in-1 Classic Games phone case
   - Add ROM definitions for the verified external, internal and serial dumps for the 36-in-1 Classic Games phone case.
   - Support the split GPIO/protection exchanges used by this VT3xx-derived hardware, and add the LCDC/tilemap and DMA behaviour
      needed for the language selector, game menu and selected games to boot.
 * video/ppu2c0x_vt.cpp: Restrict VT369 64-byte name rows
 * video/ppu2c0x_vt.cpp: Use VT369 background base for name row mode
 * video/ppu2c0x_vt.cpp: Fix VT369 name row mode regression
 * nintendo/nes_vt_soc.cpp: Gate VT03 timer logging

New working systems
-------------------
36-in-1 Classic Games phone case [Roman Kuraev]

-emu/output.h: Hopefully fix building with GNU libstdc++. [Vas Crabb]

-docs: Add another example of how to use the 'ep' command [AJR]

-emu/output.h: Apparently GNU libstdc++ wants the opposite parameter order. [Vas Crabb]

-osd/interface/output.h: Fixed dangling reference. [Vas Crabb]

-hash/c64_cass.xml: clarify a bunch of notes [angelosa]

-nec/pc8801.cpp: translate area 8000-83ff as memory_view [angelosa]
 * also lift MACHINE_IMPERFECT_GRAPHICS flag for all systems but vanilla PC-8801.

-nec/pc8801.cpp: more mapping changes: [angelosa]
 * convert GVRAM access as address_map_bank;
 * convert ALU access as memory_view, and make it available for mk2SR+ machines only;
 * suppress debugger side_effects for alu_r;
 * move dictionary ROM handling in MA+ machines, fix access priority (i.e. GVRAM and ALU wins if either enabled);

-docs: Updated output finder documentation. [Vas Crabb]

-frontent/mame/cheat.cpp: Fixed test for empty output test (fixes MT09467). [Vas Crabb]

-bus/nscsi: move the opt-in seek-timing model into nscsi_harddisk_device (#15448) [David Rand]
 * The cylinder-aware seek-timing model added to the Xebec S1410 and proposed for the DTC-510 was identical between the two
    controllers.  Hoist it into their common base, nscsi_harddisk_device, so it is written once and is available to any hard-disk
    controller built on it without subclassing.
 * set_seek_timing(), the model state, the fitted-exponent math (seek_time()) and a generic scsi_data_command_delay() now live in
    the base, which applies the model to the SCSI READ/WRITE/SEEK opcodes in both their 6-byte and 10-byte forms.  The base default
    remains attotime::zero unless a driver calls set_seek_timing(), so every existing nscsi_harddisk user is unchanged.
 * The legacy flat 85 ms per-command delay deliberately stays in s1410 and dtc510 -- it is a per-controller quirk, not a property of
    all hard disks -- so those two controllers are byte-for-byte unchanged with no model set, and delegate to the base only on the
    model branch.

-bus/scsi/scsihle: deassert REQ between phases; hold BSY in COMMAND (#15453) [David Rand]
 * scsi_change_phase() now deasserts REQ on entry, so the initiator sees a clean REQ low->high edge with the new phase's C/D-I/O
    lines settled. Previously the per-byte REQ-deassert timer was cancelled by the next phase's re-assert, leaving REQ continuously
    high across e.g. COMMAND->DATA-IN, so an initiator that samples the control lines on the REQ edge read the stale previous-phase
    C/D/I/O.
 * A selected target also asserts BSY on entry to COMMAND, so a fast SEL deassert racing the sel_timer cannot leave BSY low during
    the connection.

New systems marked not working
------------------------------
Cool-Bi Cool-Bi [Hammy, little0]

-dataeast/deshoros.cpp: minor cleanups [angelosa]

-hash/c64_flop_orig.xml: bbsb and spoker requires floppy to be write protected to work [angelosa]

-nec/pc9801.h: doesn't need legacy SCSI headers [angelosa]

-subsino/subsino_kr_h8.cpp: hookup RAMDAC and placeholder SG001 devices [angelosa]

-nec/pc8801.cpp: kick off a pc8801_flop_orig SW list [angelosa]

New software list items marked not working
------------------------------------------
pc8801_flop_orig: Mario Bros. Special [Krugman, anonymous]

-cpu/powerpc: Bug fixes [R. Belmont, debug assisted by Claude Opus]
 * SPR[MQ] doesn't exist on non-601, PCI Macs gets confused if it's present on 603/604.
 * TLBL: Compute both user and supervisor permissions.  PCI Macs run the 68k emulator in user mode.
 * 603: PCI Macs look for processor version 0x00030001 for 603.  Arcade games don't care.
 * 603: RFI unconditionally clears MSR[TGPR] on models with the TGPR mechanism.  Verified against the 603 User's Manual and QEMU.
 * 603: BAT permission violations are supposed to raise DSI, not TLB miss.  PCI Macs use this to trap and emulate accesses to
    NuBus-style I/O addresses.

-machine/gen_latch.cpp: Disable lost value logging by default, don't call it a warning. [Vas Crabb]

-subsino/subsino_kr_h8.cpp: Flesh out I/O ports a little and hook up DS2430A [AJR]

-cpu/powerpc/ppcdrc.cpp: Set function parameter when calling it. [Vas Crabb]
 * Setting the value when generating code won't work.
 * Also, make the most of the smarter, templated UML_CALLC to eliminate many pointer casts.

-nec/pc8801.cpp: remove V2 options for pc8801/pc8801mk2 [angelosa]

-intel/i430lx.cpp: hookup skeleton for Intel 430lx/430nx based chipset [angelosa]

New systems marked not working
------------------------------
Gigabyte GA-586IP [The Retro Web]

-intel/i430lx.cpp: initial i82378zb SIO hookup [angelosa]

-apple2: improve Zip Chip emulation (#15464) [arekkusu42]
 * apple2e: tidy up apple2ep initializers obsoleted by 14c441d
 * apple2e.cpp, apple2gs.cpp: improve Zip Chip emulation
   - implement Ctrl-Reset interaction
   - improve annunciator side-effects
   - fix unlocking to be pedantically correct
   - implement C05B LC bit
 * apple2e: implement C05E state switches
 * apple2gs: implement CPSFollow
 * las128ex: fix C070 delay

-formats/imd_dsk: Add save support (IMD write for flopconvert) (#15385) [David Rand]
 * formats/imd_dsk: Add save support
   - IMD has been read-only in MAME's flopimg pipeline since 2017 — load() parses ImageDisk files, but flux-level images (MFI,
      captured floppies, running emulation state) cannot round-trip back to IMD.  This change implements imd_format::save() so
      flopconvert and any future driver-side "save as IMD" path work in both directions for standard MFM and FM media.
   - The save side decodes the flopimg flux representation per track, detects MFM vs FM and cell-size by scoring four common
      (encoding, cell_size) combinations (MFM @ 1000/2000 ns and FM @ 2000/4000 ns covering 250 and 500 kbps in both modes), then
      emits Dunfield IMD 1.20 records.  Per-track detection handles mixed-density disks (e.g. CP/M boot disks with an FM 128-byte
      boot track on cyl 0 head 0 and MFM data tracks elsewhere) automatically.
   - Specifics:
     * New imd_format::extract_track_rich() walks the MFM/FM bitstream once and produces records carrying physical sector order,
        DAM-deleted flag, and CRC validity for both address and data records.  The shared extract_sectors_from_bitstream_*_pc()
        helpers in flopimg.cpp discard this information; rather than widen them and disturb every caller, this format keeps a local
        extractor.  Flux-noise phantom IDAMs are filtered by requiring addr_crc_ok or data_crc_ok at the push site and by
        deduplicating shared sector IDs to prefer the candidate with the best CRC status.
     * New imd_format::detect_track() probes the four (encoding, cell_size) combinations per track and picks the one with the most
        cleanly- decoded sectors, scored by IDAM CRC.  Re-runs per track so mixed- density disks decode honestly without per-driver
        tuning.
     * New imd_format::save() walks tracks in IMD's canonical order, emits per-track records with the right mode byte, sector
        numbering map, optional cyl/head maps, and per-sector type byte (with the compressed-fill optimisation for sectors whose
        bytes are all the same value).  Deleted DAM and bad-CRC sectors round-trip to IMD types 3-8 as appropriate.
     * Header timestamp + comment are preserved across an IMD->IMD pass via a mutable string member captured on load(); other source
        formats produce a fresh "IMD 1.20: <localtime>" header with a short "Created by MAME flopconvert" annotation.
   - Validation:
     * 24 / 24 disks in a local archive of T-200 5.25" DSDD images (mixed-density boot tracks; bad-CRC sectors; rescue-merged tracks
        combined from multiple Greaseweazle captures) round-trip byte-identical at the sector-data level (header timestamps differ
        as expected).
     * Cross-validated against a Greaseweazle-produced IMD of an 8" T-250 bios.001-1.imd disk: byte-identical sectors after IMD ->
        MFI -> IMD.
   - Limitations (warn / refuse rather than corrupt):
     * Refuses to save tracks with mixed sector sizes within a single track — IMD has no way to represent that.
     * Probes the four common (encoding, cell_size) pairs; tracks at 300 kbps (IMD modes 1 / 4) fall back to mode 5 (MFM 250).
        Adequate for all CP/M and PC media; rare exotic disks would need the probe list extended.
 * formats/imd_dsk: Drop mutable comment cache; always emit fresh header
   - Per review feedback on PR #15385: the format manager is a const singleton, so caching per-image state on it via `mutable` is
      wrong (it would race under concurrent loads).  Remove `m_loaded_comment` and the two read sites (clear in load() entry, assign
      at load() exit, preferred branch in save()).
   - save() now always emits the generic "IMD 1.20: <localtime>" / "Created by MAME flopconvert" header — IMD->IMD passthrough no
      longer carries the source disk's first-line text forward.  Header is purely informational; data-emission path is unchanged,
      and round-trip byte fidelity at the sector level is unaffected.
 * formats/imd_dsk: Use std::localtime for portability
   - CI Windows builds (clang-x64, clang-arm64, gcc-x64) failed because localtime_r is POSIX-only.  Switch to dereferencing
      std::localtime's thread-local result, matching the existing pattern in src/lib/util/timeconv.cpp (which uses *std::gmtime in
      the same way). Portable across Linux, macOS, and Windows.
   - Single call from a single-shot save() routine, so the thread-local buffer's reuse hazard does not apply here.
 * formats/imd_dsk: Fix 8" media handling on load and save
   - Two related fixes for 8" floppy disks that surface together because both stem from load() not propagating media metadata:
   - 1) detect_track() probed only 300 RPM cell rates (1000/2000/2000/4000 ns).  MAME's internal flux representation is canonical
      200,000,000 ns/revolution regardless of disk RPM, so 360 RPM media stores its cells at different internal cell_sizes than 300
      RPM media:
   - 300 RPM, MFM 500 kbps: 1000 ns/cell  (5.25" HD, 3.5" HD) 360 RPM, MFM 500 kbps: 1200 ns/cell  (8" DSDD/SSDD) ...
   - The 20% cell-size mismatch overruns the PLL's ~25% lock tolerance for MFM density, so 8" disks loaded through any FF_8 driver
      and saved back to IMD lose every MFM track -- detect_track returns "mode 3 with no sectors" and save emits empty 5-byte stubs.
      Adds the four missing 360 RPM probes alongside the existing 300 RPM ones.  5.25"/3.5" media at 300 RPM is unaffected: the new
      probes simply score zero on it and lose the per-track contest.
   - 2) load() did not call image.set_form_variant() on the loaded image. The floppy_image therefore kept FF_UNKNOWN/variant=0,
      which propagates to any subsequent save (the MFI header records form_factor=0 instead of "8   "/"SSDD") and to MAME runtime
      code that consults image.get_form_factor() for rotation rate / cell timing.  Adds inference from track count + density +
      heads:
     * 77-track  -> FF_8 + SSDD/DSDD/SSSD/DSSD by encoding + sides
     * 40-track  -> FF_525 with the same per-encoding/per-sides logic
     * 80+ track -> FF_525 (ambiguous 5.25"/3.5"; 525 is the IMD-era default and the 500/250 kbps probe selection handles either)
   - When the caller supplied a real form_factor, it is preserved and only the variant is inferred.
   - Validation: a 77-track 8" SSDD CP/M boot disk (Big Board II DDBOOT.S1.imd) with an FM 128-byte boot track 0 plus 76 MFM
      1024-byte data tracks round-trips byte-identical at the sector level through imd -> mfi -> imd, and now also round-trips
      through a real MAME session (mount writable, write a file from CP/M, exit) without losing the MFM tracks.

-formats/imd_dsk.cpp: Use existing ccitt_crc16 function [AJR]

-formats/imd_dsk.cpp: Remove unused function [AJR]

-gaiden: re-add Ninja Ryukenden rom that was wrongly removed (replaced) in
 https://github.com/mamedev/mame/commit/75f98a0b5266fd46bc7e78e498181a8ab495cebf (the changes are BPL<->BGE and the ROM checksum,
 not a bad dump, contrib credit of this 'new' set goes to the original dumper) [hap]

New working clones
------------------
Ninja Ryukenden (Japan, set 3) [Patrik Styrnell]

-machine/i82378zb_sio.cpp: add some infrastructure for X-Bus devices [angelosa]

New systems marked not working
------------------------------
Soyo SY-029C2 [The Retro Web]

-machine/i82434lx_pcmc.cpp: implement PCI Configuration Space Access Mechanism 2 [angelosa]

New working clones
------------------
Punch-Out!! (Rev A, harder) [Guru, Arcade Classics Australia]

-nintendo/punchout.cpp: merged driver into single file [Ivan Vangelista]

-machine/i82378zb_sio.cpp: hookup flash device, fix RTC type [angelosa]

-output/network.cpp: Re-wrote to fix the worst of the implementation bugs. [Vas Crabb]
 * Note that this doesn't change the protocol, it's still fundamentally unsuitable for things with large numbers of frequently
    updated outputs.  It should work OK for a system with cabinet lamps now, but e.g. something with a bitmapped display won't work
    so well.
 * Allow clients to remain connected across multiple sessions if the user hard resets, launches another system from the system
    selection menu, etc.
 * Allow connections over IPv6.
 * Don't unsafely access the running_machine from worker threads.
 * Ensure buffers remain valid until asynchronous writes complete.
 * Only keep a single write per socket outstanding, batch up messages that arrive in quick succession into single writes.
 * Fixed obviously broken parsing of incoming commands, use of unsafe strtok, and assumption that one read completion will
    correspond to one command (commands must be terminated with CR or LF).
 * Shut down in an orderly fashion and wait for I/O to complete.
 * Made object lifecycles clearer, avoid accessing mutable state from multiple threads as much as possible, protect remaining shared
    mutable state with mutexes.
 * Added some error logging.

-frontend/mame/luaengine.cpp: Removed some leftover crud. [Vas Crabb]

-hash/sony_news.xml: Updated NWU-671CA tape names and comments. (#15465) [Brice Onken]

-ensoniq/esqvfd.cpp: Fixed constructing output finder with uninitialised device (fixed GitHub #15499). (#15462)
 [Christian Brunschen]
 * Moved output finders to derived classes that know their size.
 * Dynamically allocate storage for characters/attributes/underlines matching the size.
 * Added an esq1-family-specific VFD class, still sharing a common 2x40-display superclass with the vfx-family one.
 * Updated output tags in layouts instantiated by associated devices to use qualified names.
 * Added a display-only view to VFX family layouts without buttons or sliders, that does not require scripting.
 * ensoniq/esqlcd.cpp: Don't derive from the Ensoniq VFD device, its completely separate.

-ensoniq/esqvfd.cpp: Pay the penalty for not waitinf for CI (address of pointer, MAME helper is not in namespace std). [Vas Crabb]

-apple/pippin.cpp: Now plays the startup sound and gets into the boot search code. [R. Belmont]
 * apple/athensprime.cpp: Implementation of Apple "Athens Prime" I2C programmable dual-VCO clock generator. [R. Belmont]
 * apple/taos.cpp: Implementation of Apple "Taos" framebuffer controller. [R. Belmont]
 * apple/awacs_macrisc.cpp: Improved register handling and now plays properly. [R. Belmont]
 * apple/heathrow.cpp: Rewrote IRQ controller to work properly, fixed SWIM3 hookup, added SCSI hookup support. [R. Belmont]
 * apple/bandit.cpp: Map system RAM into PCI memory for DMA, fixed PCI device mapping for Aspen variant. [R. Belmont]
 * machine/6522via.cpp: Issue shift-out completion IRQ immediately when externally clocked.  Matches the shift-in behavior and fixes
    unfavorable timing margins on PCI PowerMacs. [R. Belmont]

-esq5505.cpp and more: Cleanup Ensoniq VFX family layout loading. (#15469) [Christian Brunschen]
 * Since the recent output_finder changes, output names are now resolved relative to the device that creates them. When the layouts
    aer loaded by the esqpanel device, but the outputs created by the esqvfd device contained within it, then for the layout to find
    the outputs it must use a qualified name - "vfd:vfd~n~".
 * If we have to use qualified names for some things, we might as well use them throughout the keyboard-specific layouts (vfx,
    vfxsd, sd1, sd132).
 * This allows us to move the loading of the layouts from the esqpanel device (from which ioports can be resolved without a
    qualified name) to the `esq5505` class's method that configure each keyboard - since the qualified names allow us to find not
    only outputs for use by the esqvfd device, but also io ports that are on the esqpanel device.
 * This in turn allows us to get rid of passing a "panel type" in to the esqpanel device so that it would load the correct layout.
 * All in all a lot simpler.
 * Code updated, and layouts regenerated accordingly.

-pc88va_flop_orig.xml: use 8 bytes for CRC32. (#15470) [Thomas Klausner]

-dgnalpha: Fix ROM mapping. BASIC now works again. [AJR]

-machine/i82434lx_pcmc.cpp: fill in config_map regs [angelosa]

-machine/i82378zb_sio.cpp: fill in config_map regs [angelosa]

-bus/isa/ide.cpp: convert to remap fn [angelosa]
 * intel/i430lx.cpp: remove X-Bus IDE usage, mount working FDC and IDE ISA slots instead.

-VT3xx promotions (#15476) [mamehaze]
 * attempt to handle 'one page' bit in VT register 0x4106, needed by various games in the Lexibook multigames [David Haywood]

Systems promoted to working
---------------------------
Arcade Center - 30-in-1 (JL1800_01) [Roman Kuraev, David Haywood]
Arcade Center - 60-in-1 (JL1810GR) [Roman Kuraev, David Haywood]
Compact Cyber Arcade TV - 120 in 1 (JL2370) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Disney Princess (120-in-1) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Cars (JL2360DC-1, 120-in-1) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Star Wars Rebels (JL2365SW) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Frozen (JL2365FZ) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - PJ Masks (JL2365PJM) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Barbie (JL2365BB) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Cars (JL2365DC) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Finding Dory [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Paw Patrol (JL2367PA) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Batman (JL2367BAT) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Lilo & Stitch (JL2367D) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Disney Princess (JL2367DP, 150-in-1) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Spider-Man (JL2367SP, 150-in-1) [Roman Kuraev, David Haywood]
Console Colour - Minnie Mouse (JL2800MN) [Roman Kuraev, David Haywood]
Console Colour - Disney's Planes (JL2800PL) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - 200 in 1 (JL2355) [Roman Kuraev, David Haywood]
My Arcade Portable Gaming System with 140 Games (DGUN-2561) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - 250-in-1 (JL2375) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - 250 in 1 (JL2377) [Roman Kuraev, David Haywood]
Retro TV Game Console - 300 Games [Roman Kuraev, David Haywood]
Retro TV Game Console - Frozen - 300 Games [Roman Kuraev, David Haywood]
Retro TV Game Console - Disney Cars - 300 Games (JG7800DC-1) [Roman Kuraev, David Haywood]
Retro TV Game Console - PJ Masks - 300 Games (JG7800PJM-1) [Roman Kuraev, David Haywood]
Zone Fusion [Roman Kuraev, David Haywood]
Seal 30-in-1 (VT based, Model FN098134) [Roman Kuraev, David Haywood]
Mini Game Player 48-in-1 [Roman Kuraev, David Haywood]
Tetris Arcade in a Tin [Roman Kuraev, David Haywood]

Clones promoted to working
--------------------------
Compact Cyber Arcade - Frozen (JL2365FZ-6) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Frozen (JL2367FZ) [Roman Kuraev, David Haywood]
Compact Cyber Arcade - Paw Patrol (JL2365PA-5) [Roman Kuraev, David Haywood]

-docs: Improved compiling environment documentation. [Vas Crabb]
 * Link back to tutorial for Windows set up on main web site, better MSYS2 debugger recommendations, updated macOS/Xcode requirement
    for out-of-the-box building.

-namco/cgang.cpp: Don't require -mouse to work in click-to-play mode, also allows playing on a touch screen (makes the game too
 easy). [Vas Crabb]

-new working USA V.Smile dump (#15433) [Atapi]

New working software list items
-------------------------------
vsmile_cart: Elmo's World - Elmo's Big Discoveries (USA) [Sterophonick]

-sinclair/next/specnext.cpp: Fixed regs 0xb0, 0xb1 read and 0x0a write (#15471) [holub]

-jpm/jpmsru.cpp: Updated reel outputs in layouts. [Vas Crabb]

-Bulk updated remaining slot machine layouts that use yscroll for reel scroll. [Vas Crabb]

-intel/i430lx.cpp: hookup SW lists [angelosa]

-Removed some unnecessarily added :pos from some layouts. [Vas Crabb]
 * Only the output names changed, the element names don't need to change.

New working clones
------------------
Winners Circle (81, set 3) [Hammy]
Winners Circle (81, set 4) [Hammy]

-barcrest, bfm, jpm, maygay, misc: Made reel tags match layouts. [Vas Crabb]
 * Also removed some more unnecessary :pos (still plenty more where that came from).

-floppy: Fix bad seek rate calculation with 4-phase steps as used with Apple II; add direction feature to sound sample declarations
 [Michael Zapf]

New systems marked not working
------------------------------
Manpuku Hanten (Japan, main ver. 2.00, video ver. 2.00) [Hammy]

-cpu/z80/z80n.cpp: Fixed NMI handling (RAMS' frogger works now) (#15477) [holub]

-cpu/z80/z80.lst: Fixed minor hw discrepancy (#15478) [holub]

-pic8259: Don't clear interrupt requests when ICW1 is rewritten in level active mode and lines are active. Fixes wangpc boot. [AJR]
 * wang/wangpc.cpp: Minor updates
   - Change PIC timers 0 & 2 to set interrupt outputs when active low
   - Add side effects test to read handlers
   - Use logmacro.h for verbose logging

-qfire: add clickable area for lightgun trigger like cgang [hap]

-machine/em_reel.cpp: Use same default local output name as machine/steppers.cpp. [Vas Crabb]
 * Also removed many superfluous :pos from layouts.

-lb186: Hook up disk control register and ID jumpers; patch ROM to work around timing issue preventing floppy boot [AJR]

-hash/pc8801_flop.xml: bulk replace part name disk into flop1 [angelosa]

New systems marked not working
------------------------------
Deep Scan / Car Hunt [Benjamin Roux]

New working software list items
-------------------------------
pc98_flop_orig: Multi Paint System [Krugman]
pc98: Multi Paint System: Secret Fun Set Plus [Shoutmon]

-upd765: make sure ST0 side bit it set to the last side actually accessed [cracyc]

-debugger/qt: A couple of qualiity-of-life improvements: [Vas Crabb]
 * Memory and disassembler views inherit source/expression when opened from the same kind of view.
 * Device windows show more information about address spaces and allow double-clicking to open a memory view.
 * Properly treat names as UTF-8 in a couple of places.

-hash/pc8801_flop.xml: update QA Koei redbook edition [angelosa]

-sinclair/sprinter.cpp: Fixed VRAM write mirroring. (#15389) [holub]

-williams/williams.cpp: Added Robotron: 2084 prototype (Release 3). (#15358) [SynaMax]
 * This prototype/location test version was recovered from a Vid Kidz development system.

New working clones
------------------
Robotron: 2084 (Release 3) [SynaMax]

-sound/va_vco.cpp: Moved generic oscillator functionality from cem3340 to va_vco. (#15479) [m1macrophage]

-1942,vulgus: add 2nd soundlatch [hap, Jim Westfall]

-apple2gs: fix slow_cycle() usage (#15487) [arekkusu42]
 * only slot ROM should be slow, not internal ROM
 * fix double-slow write_slot_rom()
 * inhibited memory access should be slow

New working clones
------------------
Galaxian (Olympia bootleg) [IZ8DWF]

-bmc/bmcpokr.cpp: got dbshahb to almost working [Ivan Vangelista]

-added another JAKKS Spiderman SPG110 set (#15360) [mamehaze]

New clones marked not working
-----------------------------
Spider-Man (JAKKS Pacific TV Game) (SPG110 hardware, new style stick, set 2) [Team Europe]

-cpu/ns32000: account for bus width in operand access timing (#15493) [David Rand]
 * top() charged 16-bit-bus operand timings on every device variant: an aligned 32-bit operand cost two bus cycles on an NS32032,
    double the correct figure, making 32-bit-bus parts uniformly slow.  Generalize to the device's bus width: the first bus cycle
    costs 3 (4 with address translation), each additional one 4, with the cycle count derived from operand size, alignment and bus
    width.  The 16-bit case reproduces the previous values exactly; the NS32008 is now correctly charged 8-bit-bus timings.
 * Calibrated against period hardware: dhrystone 1.1 compiled with the 1985 Green Hills/Definicon toolchain, run on an emulated
    DSI-32 coprocessor (NS32032-10), scores 1290-1360 dhrystones/second against the official result of 1282-1315 for the real board
    (previously 970-1100).

-hd44780: fix char size selection in 2-line mode (#15458) [Devin Acker]

-machine/nscsi_hle: allow targets to defer phase transitions (#15483) [David Rand]
 * An nscsi_full_device target previously had to queue its entire phase sequence (data, status, message) before returning from
    scsi_command(), so a command involving slow media work had to complete synchronously.
 * Make TARGET_NEXT_CONTROL hold the connection in the current state when the control queue is empty instead of popping an invalid
    entry, and resume stepping when scsi_data_in()/scsi_data_out()/ scsi_status_complete() push new entries.  A target can now
    return from scsi_command() with nothing queued, run the medium operation off a timer, and queue the data/status phases when it
    finishes.
 * Targets that queue everything up front never reach the new path; no behavior change for existing devices.

-Add bruteforced PLDs to "triviaes4" [Jordi Tuells] (#15492) [ClawGrip]

New working clones
------------------
Pleiads (bootleg, ManilaMatic) [Trol, Hammy, Porchy]

-cpu/i86: support port I/O wait states via access retry (#15497) [David Rand]
 * IN, OUT, INS and OUTS (including the 80186/80286 REP forms) now restart the bus cycle when a device signals a wait state through
    cpu_device::retry_access(), allowing ISA IOCHRDY to be modelled. Register and string-pointer updates are deferred until the
    access completes, so a stalled cycle has no side effects.  No behavior change for devices that never request a retry.

-bus/isa: add Definicon DSI-32 coprocessor board (#15494) [David Rand]
 * NS32032 (10 MHz) + NS32081 FPU + NS32082 MMU + 2MB RAM + SCN2681 DUART on an ISA card (Definicon Systems, 1985; BYTE
    August/September 1985). The board carries no firmware: the host loads the 32IO kernel and user program through a paged 64K
    memory window (segment E000h or D000h, page latch and control port jumper-selectable) and releases the 32032 from reset; the two
    processors then converse through a mailbox page, with the DUART's OP5 driving the PC's IRQ2.
 * Modelled from the original loader sources (32KH.INC, 32K.ASM, IOPROC.ASM, LOAD.C) and 32IO.A32.  Verified with the unmodified
    production software under PC-DOS 2.10 and CP/M-86 1.1: LOAD.EXE, LOAD.CMD and LOADINT (interrupt mode) boot the shipped 32IO and
    Definicon monitor, and the period Green Hills C compiler, assembler and linker self-host on the card.  Documentation, software
    and ready-made boot disks: https://github.com/davidlrand/mame-system-media (Definicon-DSI-32)

-machine/ns32082: fix translated address composition, do not translate interrupt cycles (#15499) [David Rand]
 * The final physical address used the level-1 PTE's MS bit where it must use the level-2 PTE's, corrupting bit 24 of every
    translation whose PTEs differ in MS.
 * Interrupt-acknowledge and end-of-interrupt bus cycles (ST 4-7) address the interrupt controller at a fixed physical address and
    are not translated; translating them faults inside interrupt entry the moment supervisor translation is enabled, since no
    operating system maps the ICU's hardwired address.

-apple2e: machine_config consistency (#15495) [arekkusu42]
 * make -listslots ordering consistent across apple2 family
 * don't redundantly configure W65C02 and dasm_trampoline
 * tk3000, ace2200: don't use A2E swlist on W65C02 machines
 * ace500: does not have internal gameio, followup #14388

-machine/ns32202: track level-triggered pending state, honor in-service priority on acknowledge (#15500) [David Rand]
 * Level-triggered pending bits now continuously reflect the input lines: a bit clears when its line is no longer active, including
    when ELTG or TPL writes change a bit's effective sense.  Software uses this to dismiss and re-arm latched interrupts by toggling
    a line between level and edge sensing.
 * In fixed-priority (NTAR) mode, interrupt acknowledge no longer acknowledges a pending interrupt that an in-service interrupt of
    higher or equal priority blocks (an equal-priority in-service cascade remains acknowledgeable); a blocked acknowledge returns
    the spurious vector, as the hardware would never have asserted INT for it.  The interrupt output is fully re-evaluated after
    every acknowledge instead of using an approximation that left it asserted while only blocked interrupts were pending.

-eks515: Identify one CPU architecture [AJR]

-redump one smarttv cart, add another, add a mylife cart (#15504) [mamehaze]

New software list items marked not working
------------------------------------------
mylife_cart.xml: [mamehaze]
Club Disco (Italy) [Team Europe]

-smarttv_cart.xml: Disney/Pixar Cars 2 (Italy) [Team Europe]
 * redumped smarttv_cart enlunait [Team Europe]

-sinclair/next/specnext_sprites.cpp: Fixed memory corruption (#15509) [holub]

-sinclair/next/specnext.cpp: Rearranged IO mapping to proritize proper port selection in case of decoring 'conflict' (#15502)
 [holub]

-sinclair/next/specnext.cpp: Fixed AY selection (#15503) [holub]

-Replaced deprecated reel components in some slot machine layouts. [Vas Crabb]

-Replaced most of the remaining deprecated reel components in slot machine layouts. [Vas Crabb]
 * I'm pretty sure some of these have the wrong number of symbols on the reels, but it's really hard to check when some of them
    aren't even hooked up to any systems and they often have empty strings as symbol text.
 * The sc4dnd*.lay (Deal or No Deal) layouts have reels defined that aren't referenced in any views (the SteppersReel7 element in
    each of the three layouts).

-machine/68307.cpp: Comment out line that doesn't work and wasn't tested. [Vas Crabb]
 * All this does is cause an assertion failure on start.  You can't configure a devcb after it's resolved.  This obviously wasn't
    tested at all.  Using a callback intended for stuff outside the device for things internal to the device isn't a good idea in
    the first place.  This needs to be done properly.

-minitel2: Implement sound output for DTMF tones and beeps (#14692) [Fabio D'Urso]
 * In the minitel2, sound is generated by a speaker connected to the TS7514 modem chip. A subset of its features are implemented in
    this commit:
   - Mode selection, using MCBC and DTMF lines.
   - Shift register for input control data, using the RTS (clock) and PRD (data) lines.
   - Modem register RDTMF, to select what pair of frequencies to generate while in DTMF mode.
   - Modem register RWLO, selecting what to play on the speaker. In particular, monitoring of the transmitted DTMF tones and beep
      generation have been implemented. Monitoring of TX/RX data tones and volume control has NOT been implemented.
   - Modem register RPTF, selecting a filter on the transmitted frequencies. Only the filter on DTMF tones (to select only one of
      the two frequencies in the current pair) has been implemented.
     * This subset of features is enough to play all the sounds generated by the "demov1" ROM and the original ROM (beep on invalid
        keypress, DTMF dialing tones).
     * This commit also simplifies the pre-existing logic to generate a carrier-detect signal when the line control relay is closed.

-machine/ncr5385: complete selection as soon as the target responds (#15513) [David Rand]
 * scsi_ctrl_changed() only advanced the state machine on a target BSY when SEL was no longer asserted, which is the post-selection
    case. During selection the initiator still asserts SEL, so the target's BSY response fell through to a branch that only logged,
    and SEL_WAIT_BSY was not advanced until the full 250 ms selection timeout elapsed -- every selection took 250 ms.
 * Advance SEL_WAIT_BSY when the target asserts BSY while SEL is still asserted, so selection completes when the target responds.
    The timeout path is unaffected: a target that never responds still falls through to the SCSI_SEL_TIMEOUT deadline.
 * Found while bringing up the National Semiconductor ICM-3216, whose Z80 I/O processor polls the SCSI status register with a short
    timeout that the 250 ms per selection tripped.

-mylife: Add preliminary disassembler based purely on guesswork [AJR]

-philips/minitel_2_rpic.cpp: Eliminate M_PI [AJR]

-mylife, mylifei: Add subtitles [AJR]

-philips/minitel_2_rpic.cpp: Eliminate remaining uses of M_PI [AJR]

-Replaced more deprecated reel components in layouts. [Vas Crabb]
 * With the exception of m4gambal.lay, these were all impossible configurations, with more symbols visible than there are on a reel.
    I put in arbitrary numbers of symbols so they show something, but they're definitely wrong.

-Random minor cleanups [AJR]

-pci/sis6326.cpp, video/s3virge.cpp: add PDxn ROP [angelosa]

-nec/pc8801.cpp: move keyboard handling under own devices [angelosa]
 * pc8001 uses a subset of pc8801, now input defs are common between the two;
 * pc8001mk2sr uses same keyboard mapping as pc8801;
 * preliminary handling of pc8801fh keys;

-Removed two last remaining uses of deprecated reel component. [Vas Crabb]
 * Also manually patched up bad geometry and alignment in j6bnkrcl.lay.

-emu/rendlay.cpp: Removed reel component. [Vas Crabb]
 * It's produced a warning for over four years, it's no longer used in internal artwork, and it never even really worked.

-cpu/powerpc: Two 601-specific fixes [R. Belmont]
 * 601 instruction MMU exceptions were being reported more like data exceptions, which caused the Power Mac 7200 to not import the
    Open Firmware device tree.
 * The 601 real-time counter was always reading nanoseconds as zero due to unnecessary floating point usage.

-nec/pc88_kbd.cpp: hookup pc88va variant [angelosa]

-es5510.{h,cpp}: When writing data to DOL, round towards zero. (#15527) [Christian Brunschen]
 * A bug report by sjs@sojusrecords.com identified residual noise when playing certain sounds on an SD-1 - specifically, the
    OMNIVERSE sound has a reverberating tail that goes to silence on a real SD-1, but retains a never-ending tail on an emulated
    SD-1.
 * They investigated this further and found that this was consistent with a different, undocumented rounding difference when writing
    data to DRAM: whereas the documentation suggests a simple truncation of the internal 24-bit value to 16 bits, which is in effect
    rounding towards negative infinity, changing this to rounding towards zero eliminates the residual noise.
 * This change is based in part on the patch they sent me.
 * Further, per the es5510 documentation,
 * > ## 3.5.3 RAM Data Interface > > # Data Input Latch (DIL) > > [...] The DIL is 16 bits wide, left justified, so programs
    accessing > the DIL will see the least significant 8 bits as 0. > > [...] > > # Data Output Latch (DOL) and FIFO > > [...] Like
    the DIL, it is also 16 bits wide and is left justified.
 * Accordingly, change the type of `dil` to `uint16_t` and `dol` to `uint16_[2]`; and move the shifting and rounding aspects to when
    the emulation reads/writes DIL and DOL internally, rather than when they values are read or written to/from RAM / IO. This seems
    like it would be closer to how the chip probably works internally.

-added a VT multigame (working) and a clone of a GeneralPlus multigame (functional, but not working) (#15511) [mamehaze]

New working systems
-------------------
game on! TV 50 in 1 Arcade Game [Team Europe, David Haywood]

New clones marked not working
-----------------------------
BornKid 16 Bit Handheld Games 220-in-1 [Team Europe, David Haywood]

-nec/pc8801.cpp: dump pc8801ma actual BIOS [cybermind]
 * hookup setup mode overlay at startup.

-video/pc_vga_cirrus.cpp: Fix BitBLT transparent colour mask indices & update VRAM dynamic properties (#15532) [BlueRain-debug]
 * Fix BitBLT transparent colour mask register mapping
 * Update VRAM type handling
 * Fix the id of GD5446
 * Update SR6 read handling

-added germ wars as parent to survival [Dillweed] (#15526) [mamehaze]

New working clones
------------------
Germ Wars (Germany) [Dillweed]

-osd/windows, debugger/win: Play nicely with multiple monitors with different scaling. [Vas Crabb]
 * This fixes all the major/obvious stuff.  There are some things that are hard-coded in the Windows debugger (e.g. EDGE_WIDTH and
    adding constant 4 pixels to the font height for the edit box/combo box height).
 * Right now, the Windows debugger takes the suggested pixel size when moving a window to a monitor with different scaling.  It may
    be better to adjust the size to keep the same character dimensions for the debugger views.

-cpu/es5510: inline implies static linkage - no need for both.  Also use constexpr (which implies inline). [Vas Crabb]

-bmc/popobear.cpp updates: [Ivan Vangelista]
 * added IRQ enable. Fixes problem with magkengo RAM test on boot;
 * ported over pixmap emulation from other bmc drivers. Used for test menus and other diagnostic messages;
 * added DIP banking;
 * improved inputs for qiwang and magkengo;
 * tried to abstract tile emulation so it isn't completely hardcoded to what popobear does (still incomplete for tiles, still needs
    doing for sprites);
 * separated memory map for magkengo and clone and reversed protection, they now boot.
   - .-. phoenix/phoenix.cpp: demoted pleiadsmm to MNW

-bmc/popobear.cpp: Added qiwang input names from test mode in comments. [Vas Crabb]

-tektronix/tek440x.cpp  rename region for bootrom to "bootrom" (#15534) [Adam Billyard]

- rename boot ROM
-----------------
Co-authored-by: Adam <adam@light-up.co.uk> [Adam Billyard]

-es5510.cpp: round DOL towards -infinity after all. (#15537) [Christian Brunschen]
 * This partially reverts the functional change in https://github.com/mamedev/mame/pull/15527; but keeps the code and makes it a
    compile-time choice, for now, while this continuies to be investigated.
 * It also keeps the changes that made DIL and DOL actually 16 bits wide.
 * All based on investigation by @guilioz in [this comment](https://github.com/mamedev/mame/pull/15527#issuecomment-4711323638) by
    @guilioz, which appears to show that the hardware ESP does _not_ round towards zero after all.

-cpu/mylife/mylifed.cpp: Decode another instruction [AJR]

-cpu/mylife/mylifed.cpp: Decode yet another instruction [AJR]

-Clean up some stuff after running valgrind: [Vas Crabb]
 * hp/hp98x6.cpp, homebrew/z80clock.cpp: Don't call live signal functions at config time when devices aren't ready for them.
 * sega/naomigd.cpp: More idiomatic configuration, avoids unnecessary members.
 * emu/romload.cpp: Fixed passing open mode as CRC to emu_file::open, be more explicit about where reference wrappers are created.

New working clones
------------------
Phoenix (JP Leisure bootleg) [Trol]

-pinball/s3.cpp: added note about original PROM-based code arrangement [f205v, PinMAME]

-sega_beena_cart.xml, tvdear.xml: Add 4 software list items (#15240) [qufb]

New working software list items
-------------------------------
(sega_beena_cart.xml) [qufb]
Doraemon Tanoshii En Seikatsu Youchien Hoikuen (Rev. T-120002-1100) [TeamEurope]
Doraemon Waku Waku Sekai Isshuu Game: Asonde Oboeru Chizu Kokki [TeamEurope]

New software list items marked not working
------------------------------------------
(sega_beena_cart.xml) Soreike! Anpanman Doki Doki! Rescue Drive: Car Navi-tsuki [TeamEurope]
(tvdear.xml) Illust-Cassette No. 1 - Pochacco [TeamEurope, QUFB]

-emu/romload.cpp: Hopefully avoid potential crash loading delta CHDs. [Vas Crabb]
 * Should address GitHub #15535.  Unfortunatly this bloats the code a bit with template instantiations, but I can't think of a
    cleaner way right now.

-sega/naomigd.cpp: Don't configure child device before it's instantiated. [Vas Crabb]

-added Tivi Boo and a SmartTV cart (not working) + Spanish My Life (#15536) [mamehaze]

New systems marked not working
------------------------------
Tivi Boo (France) [Team Europe]

New clones marked not working
-----------------------------
My Life (Spain) [Team Europe, Clawgrip]

New software list items marked not working
------------------------------------------
smarttv_cart.xml: La Casa Di Topolino (Italy) [Team Europe]
mylife_cart.xml: Club Disco (Spain) [Team Europe, Clawgrip]

-oric1_cass.xml: Added 13 working items + 10 not working + 1 redumped (#15300) [ArcadeShadow]

New working software list items
-------------------------------
3K FreeCell [Defence Force]
Awass [Inufuto]
CC65 Chess [Raxiss]
Fifteen Puzzle [Raxiss]
Le Manoir du Dr. Genius (release 1) (Oric-1 only) [The Oric Site]
Le Manoir du Dr. Genius (release 2) (Oric-1 only) [The Oric Site]
Le Manoir du Dr. Genius (release 3) (Oric-1 / Atmos) [The Oric Site]
Le Mystère de Kikekankoi (Oric-1 / Atmos release) [The Oric Site]
Le Mystère de Kikekankoi (release 1) [The Oric Site]
Le Mystère de Kikekankoi (release 2) [The Oric Site]
Le Secret de Kaïpur [The Oric Site]
Put Up [Raxiss]
Stormlord (60Hz, Atmos) [Defence Force]

New software list items marked not working
------------------------------------------
2048 [Raxiss]
Fire [Raxiss]
Flood-It [Raxiss]
Lights Out [Raxiss]
Line 4 [Raxiss]
Manhole [Raxiss]
Mitosis [Raxiss]
Neutron Star [Raxiss]
Othello (Raxiss) [Raxiss]
SameGame [Raxiss]

Redumped software list item
---------------------------
Adventure Quest [The Oric Site]

-mylife: Identify CPU architecture as Elan eDSP and tentatively assign model type; reformat and improve disassembly [AJR]

-cpu/edsp/edspdasm.cpp: Minor correction [AJR]

-upd765 and derivatives: fix default DRQ behavior during write/scan (#15543) [Devin Acker]
 * Standard uPD765-style FDCs should default to generating one DRQ per byte for write/scan commands rather than behaving like they
    have the 82072-style FIFO.

-cpu/sh/sh7604.cpp: DIVU OVF/OVFIE are full r/w flags [angelosa]
 * fix MT09485

-bus/a2bus/a2bus.cpp, kaneko/suprnova.cpp: Documentation updates [AJR]

-vulgus, 1942: spriteram is write-only, add 16x256 sprite size [hap]

-1942iti: improve bg scroll and sound [hap]

-igs/igs009.cpp, igs/spoker.cpp: Minor optimizations and cleanup: (#15514) [cam900]
 * Restrict drawing to cliping rectangle.
 * Suppress side effects for debugger reads, fixed some save state issues, improved logging.
 * Reduced duplicated code, made some variables const,
 * igs/igs009.cpp: Fixed DIP switch input matrix.
 * igs/spoker.cpp: Note that jbell uses alternative hardware to other versions in description (different driver file).

-konami/nemesis.cpp: Cleaned up machine configuration and improved address maps. (#15474) [cam900]
 * Hooked up add-on board for bs_rf2.
 * Corrected address mapping:
   - In Bubble system and its ROM based conversion hardwares, RAM mapped to 0x70000-0x73fff is optional (via Addon board), and used
      and needed in gradius only.
   - GX561 board has no RAM at `0x060000-0x067fff`, and (bs_)rf2 doesn't used that area.
 * Promoted bs_rf2 to working with unemulated protection.
 * Made ROM region sizes match mapped sizes.
 * Improved logging, reduced duplication, made some variables const.
 * Added part numbers for add-on boards.
 * Gradius add-on board reference: https://aucview.aucfan.com/yahoo/f242702941/
 * rf2 add-on board reference: https://auctions.yahoo.co.jp/jp/auction/r1125298651

Systems promoted to working
---------------------------
Konami RF2: Red Fighter (Bubble System) [cam900]

-SC01: fix the noise injection filter [toxieainc]

-bmc/popobear.cpp: Improved sprite rendering. (#15550) [mamehaze]

-docs: Added an initial policy on AI-assisted contributions. [Ryan Holtz, Vas Crabb]

-Cleaned up various stuff. [Vas Crabb]

-3rdparty/portmidi: Updated to upstream version 2.0.8. [Vas Crabb]

-3rdparty/portmidi/pm_win: Fixed discarded const qualifier errors. [Vas Crabb]

-3rdparty/zlib: Updated to upstream version 3.1.2. [Vas Crabb]
 * There are supposed to be empty directories at zlib/test/find_package_no_components_test and
    zlib/test/find_package_wrong_components_test but git doesn't have a way to represent that.

-3rdparty/zlib/zconf.h: Hard-code macros set by configuration script. [Vas Crabb]

-cpu/v620/v620dasm.cpp: Eliminate static unordered_map usage [AJR]

-homebrew/pc532: add the Culbertson Apr-1990 monitor and a SCSI tape (#15553) [David Rand]
 * Add Bruce Culbertson's 27-Apr-1990 ROM monitor (direct-exception mode) as a third BIOS option.
 * Add an NSCSI tape on the DP8490 bus (slot 2), alongside the harddisk.

-cpu/ns32000: add a translation look-aside buffer to the NS32532 on-chip MMU (#15555) [David Rand]

-natsemi/icm3216: Implemented the Z80 I/O processor and SCSI subsystem. (#15531) [David Rand]
 * Implemented the host<->IOP mailbox at 0xa000a0, the MiniBus main-memory bridge, the NCR5385 wiring with the DREQ-driven 74LS646
    byte/word DMA path, the completion interrupt back to the NS32202, and the MM58274C real-time clock.

Systems promoted to working
---------------------------
National Semiconductor ICM-3216 [David Rand]

-skeleton/elzet80.cpp: make the screen work (#15549) [stonedDiscord]
 * skeleton/elzet80.cpp: boot rom, PIO and DART
 * skeleton/elzet80.cpp: gfxdecode chargen rom
 * skeleton/elzet80.cpp: display works
 * skeleton/elzet80.cpp: serial ports
 * skeleton/elzet80.cpp: INT
 * skeleton/elzet80.cpp: update video xtal
 * skeleton/elzet80.cpp: add printer and floppy pio

-src/lib, src/tools: Header management [AJR]
 * Remove inclusion of coretmpl.h from opresolv.h.
 * Add #include <cstring> to source files that were using its functions, mostly for the sake of future-proofing.

-opresolv.h: Add a few more missing standard headers [AJR]

-machine/ncr5380: fix pseudo-DMA initiator stalls and self-reset IRQ (#15552) [David Rand]
 * Three fixes for ncr5380-family controllers driven as CPU pseudo-DMA initiators, found during pc532 (DP8490) bring-up:
   - state_step(): a DMA wait state polling for a REQ/phase change returned no delay, so state_timer() re-armed at zero, freezing
      emulated time so the target could never change the bus.  Poll at the SCSI REQ/ACK period (100 ns) from those wait states
      instead.
   - scsi_ctrl_changed(): a bus phase change ends the DMA transfer and must deassert DRQ.  Leaving it asserted with phase-match
      clear hangs drivers that poll (DRQ && !PHASEMATCH) for end of transfer.
   - icmd_w(): a bus reset the host commands itself via ICR /RST must not raise a self-interrupt.  device_reset() already deasserts
      IRQ, and the nscsi bus does not reflect a device's own /RST back to it, so only an externally-initiated reset interrupts (via
      scsi_ctrl_changed()).

-rallyx: Replace BANG sample with netlist. (#15424) [Ricardo Bittencourt]
 * rallyx: Replace BANG sample with netlist.
   - Remove the sample from rallyx and replace it with a netlist. The circuit was traced from the service manual directly, and only
      one component had to be added: MB3730_SIL. For this opamp, I tried to match as best as possible the datasheet. Output audio is
      very similar to the sample, but not equal, the sample may have some filtering due to the acoustics of the cabinet.
 * rallyx: Reduce noise and use unified amplification.
   - Changed the MB3730 model to expose a parameter GAIN, whose default is the datasheet typical value. On rallyx, decrease the gain
      of the BANG source to reduce the noise floor, and inject the WSG audio using R28/C28, as in the original circuit.

-cpu/powerpc: Updates [arbee]
 * Fixed lwarx/stwcx atomic loads/stores. [Matthew Daniels]
 * Fixed 601 alignment exception reporting.  Allows Mac OS to properly emulate unaligned loads/stores. [R. Belmont]
 * Modernization pass: C comments to C++, some constants converted to constexpr. [R. Belmont]
   - AI disclosure: Claude Opus 4.8 found the 601 alignment exception problem.  The fix is 100% organic by RB.

-tama4u, tamaid, tamamixm: Add device stubs for specific MCU models [AJR]

-s1c33l17, s1c33l27: Correct A0RAM range [AJR]

New clones marked not working
-----------------------------
Sport of Kings (France, P436.08) [Hammy]

-tama4u, tamaid: Better guess at MCU type [AJR]

-sound/segapcm.cpp: Split discrete logic variant and 315-5218 variant. (#15482) [cam900]
 * Fixed output rate divider for both variants.
 * Use struct for voice registers.
 * Use address map to replace read/write handlers.
 * Use shared_ptr for register storage.
 * virtual/vgmplay.cpp: Fixed Sega PCM mirrored write.

-tektronix/tek440x.cpp: Added the X2210 NVRAM for Ethernet. (#15517) [Adam Billyard]

-cpu/powerpc, skeleton/elzet80.cpp: Tidy. [Vas Crabb]

-apple/macpdm.cpp: Allow AMIC to be properly detected and use zeroed PRAM when no save exists. (Github #14191) [R. Belmont]
 * This allows pmac6100 to be identified when returning hardware-accurate values, and fixes issues stemming from our Cuda default
    PRAM being acceptable for 68k but poisoning PowerMacs.  Will recheck late-period 68k machines to see if they're better this way
    as well.

New working software list items
-------------------------------
saitek_schess: Hyper Modern Super Strong [Sean Riddle, Nick(spacious_mind)]

-popobear.cpp: support different height tilemaps + rowscroll modes on other layers (fixes qiwang piece display, popo bear ending)
 (#15551) [mamehaze]

-newsin7, newsin7a: Removed trade entity from manufacturer name (#15541) [James Charles Taylor]

-ssfindo.cpp: Removed #if 0 in favor of LOG() and an if (0), removed a use of ->pc() in logging in favor of
 machine().describe_context(). [Ryan Holtz]

-sound/awacs.cpp: Flip reporting of which buffer just emptied.  Fixes sound on pmac6100. [R. Belmont]

-apple/macpdm.cpp: Improve RAM mapping, sizes up to 136MiB now work. [R. Belmont]

-bus/isa: Added the PD-32 NS32016 coprocessor board (public-domain, 1986). (#15501) [David Rand]
 * The PD-32 is a public-domain NS32016 coprocessor for the IBM PC, published as a constructible design in Micro Cornucopia issue
    32. It carries an NS32016, NS32081 FPU, NS32082 MMU and NS32202 ICU, and runs the ZAIAZ port of AT&T UNIX System V Release 2
    with host PC console and disk I/O.

-subsino/subsino_kr_h8.cpp: gfx decode 4bpp format [angelosa]

-nec/pc8801.cpp: add SDIP device, makes setup mode to be functional [angelosa]
 * currently for pc8801ma only
 * marked the other FH+ machines with setup.bin NO_DUMP placeholder

-nec/pc88va.cpp: hookup MEMSW variant [angelosa]

-nec/pc88va_v.cpp: implement IDP vertical magnify [angelosa]
 * fix display of text layer in setup menu at 24kHz

-edsp: First draft of an execution core [AJR]

-edsp: Guess the remaining jump conditions [AJR]

-edsp: Add program banking control [AJR]

-nec/pc88va_v.cpp: add IDP text strips limit on RH sums [angelosa]
 * fix text display in mightmag

-nec/pc88va.cpp: implement DAC1BIT [angelosa]
 * shanghai clicks when selecting tiles

-cs4031: Reset keyboard controller command d1 write status after the data write. Fixes MT5547. [Dirk Best]
 * Without this unrelated keyboard controller data writes could end up being blocked.

-edsp: Add timers 0 & 1 [AJR]

-machine/ncr5380: make ICR-issued SCSI reset interrupt chip-specific (#15571) [David Rand]
 * A host-issued SCSI reset (writing the ICR ASSERT /RST bit) raises an interrupt on the base NCR5380/53C80: "SCSI reset RST is
    similar to a chip reset, but generates an interrupt", and the chip monitors /RST including the one it drives.  The DP8490 EASI
    is the exception -- its ICR-issued reset performs the chip-reset actions, which "[do] not create an interrupt" (DP8490 datasheet
    6.4 -> 6.2), unlike an externally applied reset (6.3), which does.
 * Gate the self-reset interrupt on the device type so the base 53C80 interrupts while the DP8490 does not.

-homebrew/gigatron.cpp: Made RAM size configurable, cleaned up code. (#15491) [cam900]
 * Use ram_device for RAM, allowing configurable RAM size (default size is 64K, matching previous behaviour).
 * Use an indexed screen bitmap and palette device.
 * Reduced preprocessor macros, made some variables const, added notes.

-emu/emupal.cpp: Added a helper for 6-bit BGR palettes. [cam900]

-nec/pc88va.cpp: tentatively hookup RAM at 512KB~640KB mark [angelosa]
 * fix hatisora crash after stage 1

-bus/pc8801/pc8801_31.cpp: bulk replace SASI -> SCSI wording [angelosa]

-nec/pc88va_v.cpp: implement backdrop color [angelosa]

-sound/va_vco.cpp: Added new VCO functionality. (#15570) [m1macrophage]
 * New functionality:
   - Triangle-derived pulse waves.
   - DC compensation of pulse waves.
   - "reset" sync type.
     * Other changes:
   - Factored out discontinuity detection.
   - Extended usage documentation.

-bus/isa/opus_pm.cpp: Emulated the Opus Systems PM NS32016/NS32032 coprocessor cards. (#15542) [David Rand]
 * New ISA card options for the Opus Systems Personal Mainframe NS32000 UNIX coprocessor boards (both boot Opus5, the Opus port of
    AT&T UNIX System V R2):
   - opus_pm100  Opus 108PM  NS32016
   - opus_pm110  Opus 110PM  NS32032

-cpu/ns32000: Gate external-MMU address translation on CFG M [David Rand]

-emu/diimage.cpp: Fixed unloading media when the core doesn't open the file. [Vas Crabb]
 * Fixes, among other things, "[empty slot]" not working for MIDI ports.

-bus/isa/opus_pm.cpp: Fixed stupid editing errors on my part. [Vas Crabb]

-emu/ioport.cpp. emu/rendlay.cpp: Use std::countr_zero in place of loops. [Vas Crabb]

-new NOT WORKING machine (Lexibook IG10) (#15572) [mamehaze]

New systems marked not working
------------------------------
Color Console IG10 (DualMax 20 in 1 TV part) [Team Europe, David Haywood]

-added 2 VT sets (#15556) [mamehaze]

New working clones
------------------
Compact Cyber Arcade - Paw Patrol (JL2365PA-A, 75-in-1) [Team Europe]

New systems marked not working
------------------------------
Sudoku (Lexibook, LG600FR, TV part) [Team Europe]

-edsp: Add a few more instructions [AJR]

-apple/macpdm.cpp: Further RAM mapping improvements.  Fixes random instability, including 8.1 hanging at Finder and 8.5 not booting.
 [R. Belmont]

-machine/z80dma.cpp,sinclair/next/specnext*.cpp: Fixed few missing save states (#15558) [holub]

-pc98: Add prototype support of CLGD5428 based PC-9801-96 (#15506) [BlueRain-debug]

-mylife: Confirm XTAL value [AJR]

-upd71071: refactor based on v5x_dmau_device (#15512) [Devin Acker]

-cpu/powerpc: Updates [R. Belmont]
 * Flags are now computed for all floating point instructions, which makes SANE much happier on the Mac
 * The unique 601 decrementer is now fully supported, which allows pmac6100 to set the correct Gestalt ID
 * Fixed a corner case in SRAWx where the destination register was not updated
 * ICBI and ISYNC now end the DRC block and ICBI flushes the DRC code cache (may gate that on PPCDRC_COMPATIBLE_OPTIONS in the
    future)
 * More C to C++ style comment modernization and fixed some of the tab damage in the instruction commentary
 * Tested on arm64 and x64 backends with a variety of games including scud, bujutsu, landhigh, and gradius4
   - AI disclosure: some bugs were found by Claude Opus 4.8 (1M context), which also generated a working but very suboptimal proof
      of concept for the FP flag calculations.  None of that survived aside from the basic facts about IEEE-754 floating point.

-xerox/xerox820.cpp: replace bad u35 dump in the 820-II v5.0 v018 BIOS (#15467) [David Rand]

-ppc: Temporarily disable the unimplemented decrementer_int_callback for ppc601 to make master compile until the missing code is
 pushed. [Olivier Galibert]

-segas32: convert to using an irq ack method [Olivier Galibert]

-v60: Make irq ack cycle explicit through devcb [Olivier Galibert]

-nec/pc6001_v.cpp: cleanup some video modes with BIT macro usage [angelosa]

-nec/pc8801.cpp: dump pc8801mc actual BIOS [Ford Seidel, Coolfox]

-cpu/powerpc: Push the correct ppccom.cpp with the 601 decrementer IRQ working. [R. Belmont]

-F8: Make the interrupt cycle explicit [Olivier Galibert]

-atlus/cave.cpp: Made the Japanese Sailor Moon game the parent. (#15574) [Vas Crabb]
 * Only the title screen is translated in the non-Japanese version.  The rest of the "localisation" just consists of removing text.

-pc/cs4031: Easier mapping for ISA accesses, allows UMB to be available in DOS. [Dirk Best]

New working clones
------------------
Joker Poker With Hi-Lo Double-Up (version HL-DLX-T-021286) [Siftware]

Clones promoted to working
--------------------------
Trivia Hangup (version Trivia-2-011586) [Siftware]

-misc/smsmcorp.cpp: dumped question ROMs for Trivia Hangup (version Trivia-2-011586) [Siftware]

-add a bunch of Accutime watches (25 sets) (#15575) [mamehaze]

New systems marked not working
------------------------------
Kids Smart Watch: Barbie (Accutime, BAB4064PH) [Team Europe]
Kids Smart Watch: Batman (Accutime, BAT4732PH) [Team Europe]
Kids Smart Watch: Disney Princess (Accutime, PN425?) [Team Europe]
Kids Smart Watch: Encanto (Accutime, ENC4000) [Team Europe]
Kids Smart Watch: Frozen (Accutime, FZN4151PH) [Team Europe]
Kids Smart Watch: Frozen (Accutime, FZN4587) [Team Europe]
Kids Smart Watch: Gabby's Dollhouse (Accutime, GAB4007PH) [Team Europe]
Kids Smart Watch: Lilo & Stitch (Accutime, LS4027PH) [Team Europe]
Kids Smart Watch: L.O.L. Surprise (Accutime, LOL4264PH) [Team Europe]
Kids Smart Watch: Minecraft (Accutime, MIN4045) [Team Europe]
Kids Smart Watch: Marvel Avengers (Accutime, AVG4597PH) [Team Europe]
Kids Smart Watch: Marvel Avengers (Accutime, AVG4597) [Team Europe]
Kids Smart Watch: Paw Patrol (Accutime, PAW4275PH) [Team Europe]
Kids Smart Watch: Pokemon (Accutime, POK4231PH) [Team Europe]
Kids Smart Watch: Rainbow High (Accutime, RNB4017PH) [Team Europe]
Kids Smart Watch: Ryan's World (Accutime, RYW4003AZ) [Team Europe]
Kids Smart Watch: Spider-Man (Accutime, SPD4588) [Team Europe]
Kids Smart Watch: Toy Story (Accutime, LTY4000PH) [Team Europe]
Kids Smart Watch: Marvel Avengers Black Panther (Accutime, AVG4608PH) [Team Europe]
Kids Smart Watch: Harry Potter (Accutime, HP4107PH) [Team Europe]
Kids Smart Watch: Jurassic World (Accutime, JRW4041) [Team Europe]
Kids Smart Watch: L.O.L. Surprise (Accutime, LOL4588TK) [Team Europe]
Kids Smart Watch: Peppa Pig (Accutime, PPG4086PH) [Team Europe]
Kids Smart Watch: Star Wars: Stormtropper (Accutime, STM4353PH) [Team Europe]
Kids Smart Watch: Star Wars: The Mandalorian (Accutime, MNL4023PH) [Team Europe]

-input/input_sdl.cpp, input/input_sdl3.cpp: Incrased maximum joystick buttons to 128. [Vas Crabb]

-apple/macpdm.cpp: Side effects check, formatting. [Vas Crabb]

-pc/filetto.cpp: add diplocations, add (unused) second dip bank [angelosa]

-nec/pc88_sdip.cpp: implement pc8801mc MEMSW device variant [angelosa]

-input/input_sdl.cpp, input/input_sdl3.cpp: Cleanup. [Vas Crabb]
 * More compact button state, be explicit about where limits come from, removed some leftover crud.

-nec/pc88_kbd.cpp: fix pc88va crash over the identifier [angelosa]

-hash/pc88va.xml: fix illcity floppy boot order [angelosa]

-nec/pc88va_v.cpp: implement g3msk [angelosa]
 * fix alantia garbage GFXs

-edsp: Figure out another pair of instructions [AJR]

-edsp: Instructions should actually consume cycles [AJR]

-edsp: Fix ALU instructions with indirect destination [AJR]

-edsp: Disassemble even more instructions and emulate a few of them [AJR]

New working systems
-------------------
Toshiba T-200 and T-250 [Dave Rand]

Systems promoted to working
---------------------------
Big Board [Dave Rand]

Clones promoted to working
--------------------------
MK-82 [Dave Rand]
Moj mikro Slovenija [Dave Rand]

New clones marked not working
-----------------------------
Big Board (5.25" drives) [Dave Rand]

-mylife: Hook up I2C EEPROM [AJR]

-added a JAKKS Plug and Play clone (working) + a Lexibook SPG293 based unit (not working) + 1 working SPG24x unit (#15577)
 [mamehaze]

New working systems
-------------------
Poker & More 18-in-1 (Germany) [Team Europe]

New working clones
------------------
Dragon Ball Z (JAKKS Pacific TV Game, Game-Key Ready, set 2) [Team Europe]

New systems marked not working
------------------------------
Gameclick (JL2400) [Team Europe]

-segaxbd: add aburnera (set 2) (#15393) [vivacap]

New working clones
------------------
After Burner (set 2) [vivacap]

-sega/segaxbd.cpp: updated comments, put newer aburner set as parent [Brian Troha]

-sega/segaxbd.cpp: Use actual versions rather than arbitary "set numbers". [Vas Crabb]

-input/input_common.h: Moved stuff that isn't common out of the common header. [Vas Crabb]

-goldstar.cpp: Corrected DIP switches and inputs for Cherry Bonus. (#15563) [Ioannis Bampoulas]

-misc/goldnpkr.cpp: decrypted dash_a37 and clone [Ivan Vangelista]

-cpu/powerpc: Fixed uninitialised variable causing crash on start. [Vas Crabb]
 * Also fixed regression in lwarx ignoring reservation mask - looks like a bad merge.

-igs/goldstar.cpp: More consistent DIP switch setting labels. [Vas Crabb]

-toshiba/t250_sasi.cpp: Added side effect checks to reads. [Vas Crabb]

-debugger/win/uimetrics.cpp: Fixed uninitialised member variable. [Vas Crabb]

-pinball/s11.cpp: Add a High Speed clone from a Cirsa / Unidesa PCB (#15586) [ClawGrip]

New working clones
------------------
High Speed (Unidesa / Cirsa license) [Rockman i uri666arcade de l'associació ARCADE, Recreativas.org]

-cpu/ns32000: add NS32CG16 graphics/printer variant (#15569) [David Rand]

-Add preliminary Akai S900/S950 driver (#15566) [Devin Acker]

New NOT_WORKING machines
------------------------
Akai S900 MIDI Digital Sampler [DBWBP, Devin Acker]
Akai S950 MIDI Digital Sampler [DBWBP, Devin Acker]

New NOT_WORKING clone
---------------------
Akai S950 MIDI Digital Sampler (with SCSI) [DBWBP, Devin Acker]

-bus/nscsi/sa1403d: Shugart SA1403D rigid/floppy SASI controller HLE (#15484) [David Rand]

New working systems
-------------------
Colonial Data Services SB-80 [Dave Rand]

New working software list items
-------------------------------
c64_flop_orig: 1541/1571 Drive Alignment [Curt Coder]
c64_quik: Broken Limits [Curt Coder]

-nec/pc88_sdip.cpp: fix V1 mode hookup for pc8801mc [angelosa]

-nec/pc88va_v.cpp: implement picture mask [angelosa]

-sound/scsp.cpp: Added serial interface, hooked up MIDI input/output. (#15583) [Matthew Daniels]
 * sega/model2.cpp, sega/model3.cpp: Send commands to the SCSP via the USART properly. Magical Truck Adventure now successfully
    reads "region check" code from SCSP.

-ensoniq/esqvfd.cpp, layout/esq1by22_eps.lay: Added an Ensoniq EPS family VFD display layout. (#15472) [Christian Brunschen]
 * Adds the individual word segments above the 1x22 character display. Sizes & placement are approximate, generated based on the
    Arimo font rather than measurements. New segments are not hooked up to outputs yet.

-misc/goldnpkr.cpp: decrypted dynchance and clones [Ivan Vangelista]

-floppy_sound: Allow out-of-bounds track numbers to be passed to the sound routine. [Michael Zapf]

-bus/archimedes/podule/scsi_acorn.cpp: Use onboard SRAM as DMA memory; eliminate access to main CPU via absolute tag [AJR]

-Cleaned up various stuff: [Vas Crabb]
 * bus/nscsi/sa1403d.cpp: It's unsafe to register vectors that may be resized or reallocated for save states.
 * machine/am9517a.cpp: A default argument value for a protected constructor is a bug waiting to happen, a default zero clock for a
    device_execute_interface is a bug waiting to happen.
 * video/ym7101.cpp: Make some effort to return a realistic value from data_port_r when side effects are suppressed.
 * konami/zr107.cpp: Refactored out common address map, added TODO for area where Midnight Run EAC tests SRAM.
 * sega/model3.cpp: Got rid of a trampoline for UART reads.  There's still a hacky UART write handler.

-sega/model1: fix Virtua Fighter collision via TGP copro-RAM port model (#15582) [Francisco José García García]
 * The copro RAM data port (TGP side) had a bug that broke VF's collision pre-filter (op 0x63), causing skipped knockdowns and the
    characteristic "both fighters fall on one hit" double-knockdown.
 * VF stores each vertex to check as 4 bytes (X/Y/Z/radius) and bits 16 & 17 of the address select the stride for the address
    auto-increment.  VF is the only game that sets the stride to anything other than 1 so this is a no-op for the other games.

-added Lexibook Plasma Console (#15589) [mamehaze]

New working systems
-------------------
Plasma Console (IG810, 60-in-1) [Team Europe]

-sinclair/next/specnext.cpp: Handled BRAM RO case (#15524) [holub]

-machine/keyboard: add natural-keyboard control characters to generic_keyboard (#15530) [David Rand]

-c64: Improved keyboard mapping. [Curt Coder]

New systems marked not working
------------------------------
Presenter 2000 [MSX's Archeology]

-taito/pres2k.cpp: Fix VDP clock [AJR]

-taito/pres2k.cpp: fix year comment [angelosa]

-cpu/powerpc/ppcdrc.cpp: Fixed little endian mode selection the 601. (#15592) [Rairii]
 * PowerPC 601 uses a bit in HID0 to enable little endian mode.

-imagedev/floppy: derive twosid_r() from media variant (#15418) [David Rand]
 * imagedev/floppy: derive twosid_r() from media variant
   - Read media-sided-ness from the floppy_image variant tag rather than from observed track data via get_actual_geometry().  Drives
      sense single- vs double-sided media physically (e.g. 8" Shugart TS# on pin 30, from the index-hole position) so the answer
      must come from the media itself, not from whether the host happens to have written to head 1.  An unformatted SSSD diskette is
      still single-sided.
   - Before this change, twosid_r() reported TWO-SIDED to a host BIOS for any freshly-mounted unformatted media (heads==0 from
      get_actual_geometry returns false) and could permanently mis-report after a host wrote spurious noise to head 1 of a
      single-sided diskette.
   - No call-site changes needed: all 17 twosid_r() callers and the uPD765 ST3 plumbing already do the right thing once this returns
      correctly.
 * imagedev/floppy: fall back to geometry when variant is untagged
   - twosid_r() switched on the variant tag with default=two-sided, which relied on every format setting the variant.  Formats that
      never call set_variant() leave it 0 and were silently reported two-sided.  Treat variant 0 as 'unknown' and fall back to the
      previous get_actual_geometry() result, so untagged formats keep their old behaviour while tagged media get the deterministic
      answer.

-bus/pc_kbd: correct IBM PC/AT 84-key matrix positions, add natural keyboard control characters (#15498) [David Rand]

-ns32000: disassemble NS32532 CINV; correct LMR/SMR MMU register names (#15594) [David Rand]

-irem/vigilant.cpp: added PCB info and ROM labels to kikcubic [Brian Troha]

-misc/goldnpkr.cpp: decrypted lfhouse and clone [Ivan Vangelista]

-sega/segaxbd.cpp: used version number in After Burner 2 title  [Brian Troha]

-Cleaned up a few things. [Vas Crabb]
 * sinclair/next/specnext.cpp: Got rid of some read trampolines in address map.
 * cpu/ns32000/ns32000.cpp: Use virtual member functions rather than doing things based on type().
 * konami/zr107.cpp: Got rid of I/O ports that just obfuscate things.

-c64: Emulated the Action Replay cartridge (v4.1 and up). [Curt Coder]

Software list items promoted to working
---------------------------------------
c64_cart: [Curt Coder]
Action Replay v4.1, Action Replay v4.2 (v1), Action Replay v4.2 (v2), Action Replay v4.2 (v5.0 v1), Action Replay v4.2 (v5.0 v2),
  Action Cartridge Plus 5 (Germany), Action Cartridge Plus 6.0, Action Cartridge Plus 6.0 (Germany), Action Replay v7.3, Action
  Replay v5.0, Action Replay v5.0 (NTSC), Action Replay v5.1a, Action Cartridge Plus v7.0 (Derko), Action Cartridge Plus v7.0
  (Triumwyrat), Action Replay v7.5, Action Replay v8.4, The Fairlight Cracking Cartridge, Action Replay v6.0 (Triad), Action Replay
  v6.0 [Curt Coder]

-taito: initial checkin of Taito product numbers [Lord Nightmare, Al Kossow, Angelo Salese] (#15591) [Angelo Salese]
 * taito: initial checkin of Taito product numbers [Lord Nightmare, Al Kossow]
 * taito/README.md: add missing entries and fix some formatting
 * taito/README.md: fill in a few known entries
 * taito/README.md: add refs to non-taito folder mentions

-prisma: add Go button enable bit [hap]

-bus/isa: Add Promise EIDEMAX [Dirk Best, The Retro Web]

-cpu/powerpc/ppcfe.cpp: Correctly swizzle physical address when reading instructions. (#15593) [Rairii]
 * The PowerPC recompiler currently swizzles the address on memory access, but the same swizzle must be performed on instruction
    access. This makes the relevant change in the frontend to honour the current little-endian mode state in the recompiler.

-chdman: Add a few Quantum Fireball templates as example for newer IDE drives [Dirk Best]

-misc/goldnpkr.cpp: moved the set formerly known as tpkborama from misc/boramz80.cpp and decrypted it [Ivan Vangelista]

-misc/goldenpkr.cpp: removed accidentally committed stuff [Ivan Vangelista]

-taito/README.md: rectify and add some lines [Angelo Salese, Guru, negunma]

-taito/scyclone.cpp: convert irq to set_irq_acknowledge_callback [angelosa]

-taito/tnzs.cpp: tnzs/tnzsj audiocpu runs in IM1, no need for set_input_line_and_vector [angelosa]

-comad/zerozone.cpp: audiocpu runs in IM1, no need for set_input_line_and_vector [angelosa]

-nec/pc8401a.cpp: convert to set_irq_acknowledge_callback [angelosa]

-added some french leappad / my first leappad software list entries (#15581) [mamehaze]

New software list items marked not working
------------------------------------------
leapfrog_mfleappad_cart.xml: [mamehaze]
La journee extraordinaire de Flop (France) [Team Europe]
Winnie et l'arbre à miel (France) [Team Europe]
Koa et les chiffres fous (France) [Team Europe]
Disney/Pixar Cars (France) [Team Europe]
Dora the Explorer - À la rescousse (France) [Team Europe]
Les fourmis au volant! (France) [Team Europe]

New software list items marked not working
------------------------------------------
leapfrog_leappad_cart.xml: [mamehaze]
Musique, Maestro! (France) [Team Europe]
Livre interactif (France) [Team Europe]
Ratatouille (France) [Team Europe]
Interactif Sciences - Extraordinaires mammiferes! (France) [Team Europe]
Le Roi Lion (France) [Team Europe]
Disney Princesse - Histoires de princesses (France) [Team Europe]
Scooby-Doo et le mystere des beignets (France) [Team Europe]
Winnie et les pots de miel (France) [Team Europe]
Le Monde De Nemo (France) [Team Europe]
Koa fait les courses (France) [Team Europe]
On Peut Compter Sur Flop! (France) [Team Europe]

-taito/capr1.cpp, taito/capr2.cpp: add new NOT WORKING machines (#15598) [stonedDiscord]

new NOT WORKING machines
------------------------
Capriccio Sesame [stonedDiscord]
Capriccio Sesame 2 [stonedDiscord]

-input: Allow using sdljoy input module with OSD=windows and USE_SDL=1 or USE_SDL3=1. [Vas Crabb]
 * Also fixed handling of joytick trackballs for OSD=sdl and OSD=sdl3 and fixed some issues building with OSD=windows USE_SDL3=1.

-taito/capr1.cpp, taito/capr2.cpp: guess release dates for csesame1 and csesame2 [angelosa]

-konami: Z80 based audio CPUs all runs in IM1, no need for set_input_line_and_vector [angelosa]

-misc/gunpey.cpp: convert to set_irq_acknowledge_callback [angelosa]

-msx/sfkick.cpp: convert to set_irq_acknowledge_callback [angelosa]

-upl/ninjakd2.cpp: consolidate in single file, convert to set_irq_acknowledge_callback [angelosa]

-namco/dangbar.cpp: convert to set_irq_acknowledge_callback [angelosa]

-shared/timeplt_a.cpp: runs in IM1, no need for set_input_line_and_vector [angelosa]

-seibu: convert single irq source drivers to set_irq_acknowledge_callback [angelosa]

-technos/blockout.cpp: audiocpu runs in IM 1, no need for set_input_line_and_vector [angelosa]

-upl/xxmissio.cpp: (allegedly) convert to set_irq_acknowledge_callback [angelosa]

-tatsumi/apache3.cpp, tatsumi/roundup5.cpp: convert to set_irq_acknowledge_callback [angelosa]

New working software list items
-------------------------------
pc98: Steel Gun Nyan [archive.org]

-Cleaned up some stuff. [Vas Crabb]

-nec/pc88va_v.cpp: fix animefrm color regression [angelosa]

-nec/pc88va_v.cpp: document shinraba text layer intro btanb [angelosa]

-hash/pc98.xml: fix validation [angelosa]

-Revert "gridcomp: replaced driver of bubble memory subsystem with i7110 (#15395)" (#15602) [Valera Klachkov]
 * This reverts commit 7a8ed907ef9298b2907c8eb02e786dfee2b94b47.

-cuebrick: PCB notes [AJR]

-cuebrick: Note undumped ROM [AJR]

-cuebrickj: Move comments to correct HW revision [AJR]

-cuebrick: Add (correct) PCB ID in comments [AJR]

-cpu/powerpc: BxxL instructions need to set LR even if the branch is not taken.  Allows Mac OS 9 to boot to Finder. [R. Belmont] AI
 disclosure: Claude Opus 4.8 helped trace the bug, the (trivial) fix is completely hand-written. [arbee]

-upd765: fix formatting [cracyc]

-edsp: Disassembler checkpoint [AJR]

-cpu/m68000/m68000.h: Use std::countr_zero [AJR]

-Statically link SDL for OSD=windows and USE_SDL=1 or USE_SDL3=1. [Vas Crabb]
 * Also set USE_SDL3=1 for Windows CI builds as the polling mode SDL joystick module won't be built in other configurations and it
    has legitimate use cases.

-handheld/evolution_handheld.cpp: Note ROM signatures in comments [AJR]

-handheld/evolution_handheld.cpp: Demystify the boot mirroring [AJR]

-handheld/evolution_handheld.cpp: Map more ROM to prevent tomyspt and hoppech from running off the rails [AJR]

-yuleyuan: Map more ROM to pass a checksum test [AJR]

-handheld/evolution_handheld.cpp: Do some DMA [AJR]

-mc68681: fix transmitter deadlock in tra_complete (#15564) [David Rand]
 * The transmit-complete handler chose the next transmitter state from the TxRDY status bit rather than from whether another byte
    was queued in the THR.  On a race between a CPU THR write and the final bit-time of the byte being shifted out, two cases could
    permanently wedge the transmitter:
   - completion with TxRDY set and a byte buffered took the "else" path, set TxEMT, and dropped the buffered byte;
   - completion with TxRDY clear and nothing buffered did nothing, leaving the transmitter idle with both TxRDY and TxEMT clear.
     * In either case TxRDY never re-asserts and the transmit clock stays stopped, so a byte never drains and a polled transmitter
        spins forever waiting on TxRDY.
     * Decide from the queue instead: load a buffered byte if one is present, otherwise mark the transmitter idle by setting both
        TxRDY (THR empty) and TxEMT (shift register empty).  This is a no-op on the normal path, where tra_callback has already set
        TxRDY by the time completion is reached.

-sinclair/next/specnext_dma.cpp: Forced Search mode to Transfer instead (#15528) [holub]
 * sinclair/next/specnext_dma.cpp: Forced Search mode to Transfer instead
 * added undocumented logging

-lib/formats/scl_dsk.cpp: Added SCL format support (#15567) [holub]

-sound/swp30: saturate AWM2 interpolation output to prevent wrap clicks (#15505) [Charles Vestal]
 * The 4-tap cubic interpolation result in streaming_block::step() was stored straight into an s16. Cubic interpolation overshoots
    the input range near peaks, so when source samples approach full scale the value exceeds the s16 range and the store wraps
    (+32767 -> -32768) -- a one-sample sign inversion that is audible as a click on loud notes (e.g. bright sustained strings),
    while quiet notes are unaffected.
 * Accumulate in s32 and saturate to the s16 range. Hardware saturates, so this also matches the real device.

-es5510.cpp: fix `WRITE_REG{16}` macros. (#15579) [Christian Brunschen]
 * es5510.cpp: fix `WRITE_REG{16}` macros.
   - As identified by sjs@sojusrecords.com, the `WRITE_REG` and `WRITE_REG16` macros were not writing their 'x' parameter to a
      register as intended, but were instead writing the contents of the `value` variable from calling code. Quite frequently this
      happened to be the correct thing to write, which hid the bug.
 * Remove redundant #ifdef section; LOG_EXEC's use of LOGMASKED already handles the compile-time conditional logging.

-i8259: fix OCW3 write behavior (#15580) [Devin Acker]
 * only set/clear RIS when RR=1
 * only set/clear SMM when ESMM=1
 * exit polling mode after one read cycle

-swa: Removed "Arcade" and added manufacturer name to title, corrected year (#15595) [James Charles Taylor]
 * starwars: Added manufacturer to title
 * stwr_106 and clones: Added manufacturer to title

-homebrew/pc532: wire the AIC6250 pseudo-DMA; boot System V; mark working (#15607) [David Rand]
 * Wire the AIC6250 SCSI controller's BREQ/BACK pseudo-DMA, mirroring the existing DP8490 path: a CPU-RDY-gated doubleword transfer
    through the 0x3800'0000 window, each byte acknowledged with back_w(1).  Add the AIC6250 DMA window, hook breq_cb (resolving the
    prior drq TODO), and a 10 us quantum for the CPU<->DUART/ICU interleave.  Add a dual-boot BIOS (AIC6250/System V + DP8490/NetBSD
    loader).
 * With the disk path working the board boots System V Release 2.0 to login off the AIC6250 SCSI disk; mark the driver working.

-sinclair/screen_ula.cpp: Latched pixels read between screen updates. (#15447) [holub]

-plugins/keypress: New plugin for recording player behaviour (#15379) [holub]
 * Co-authored-by: angelosa <lordkale4@gmail.com>

-sinclair/next/specnext.cpp: Implemented DMA delay (allows to stop DMA in Continious mode for ISR) (#15378) [holub]

-Added working homebrew cartridges. For the My Vision, Megaduck and PV-1000 (#15590) [Ectoplasm]

New working software list items (pv1000.xml)
--------------------------------------------
SwordWork [Inufuto]

New working software list items (megaduck.xml)
----------------------------------------------
Aerial [Inufuto]
AntiAir [Inufuto]
Ascend [Inufuto]
Awass [Inufuto]
Battlot [Inufuto]
Bootskell [Inufuto]
Cacorm [Inufuto]
Cavit [Inufuto]
Cracky [Inufuto]
Guntus [Inufuto]
Hopman [Inufuto]
Impetus [Inufuto]
Lift [Inufuto]
Mazy [Inufuto]
Mazy2 [Inufuto]
Mieyen [Inufuto]
Neuras [Inufuto]
Osotos [Inufuto]
Ruptus [Inufuto]
Svellas [Inufuto]
SwordWork [Inufuto]
Yewdow [Inufuto]

New working software list items (myvision.xml)
----------------------------------------------
Aerial [Inufuto]
AntiAir [Inufuto]
Ascend [Inufuto]
Awass [Inufuto]
Battlot [Inufuto]
Bootskell [Inufuto]
Cacorm [Inufuto]
Cavit [Inufuto]
Cracky [Inufuto]
Guntus [Inufuto]
Hopman [Inufuto]
Impetus [Inufuto]
Lift [Inufuto]
Mazy [Inufuto]
Mazy2 [Inufuto]
Mieyen [Inufuto]
Neuras [Inufuto]
Osotos [Inufuto]
Ruptus [Inufuto]
Svellas [Inufuto]
SwordWork [Inufuto]
Yewdow [Inufuto]

-sega/model1: HUD layering, blink palette and wireframe fixes (#15597) [Francisco José García García]
 * sega/model1: tile palette bit15 = intensity/shade bit
   - The Model 1 tile palette top bit (bit15) is an intensity/shade bit, not an unused 'x' as the plain xBGR_555 decode assumes.
      Almost every entry has it set (full brightness); a handful clear it to render dimmed - e.g. the Star Wars Arcade menu backdrop
      pen (palette[0]=0x7777).  Ignoring the bit left those pens too bright (the FIGHTER CONTROL backdrop rendered bright blue
      instead of the arcade's grey).
   - Replace the COL region's plain palette_device::write16 with a handler that halves the channels when bit15 is clear.  0x7777 ->
      (94,111,119), matching the arcade; entries with bit15 set are unchanged.
 * sega/model1: moiré direct poly on transparent pen fades to backdrop
   - A Star Wars Arcade gunner 2nd-viewport overlay is a single moiré (stipple-translucent) direct poly whose flat colour resolves
      to the transparent texture pen (index 0x1000 -> palette 0x8000 -> black).  Painting the pen literally gives a hard black/scene
      checkerboard over the gunner; the arcade alternates backdrop/scene.
   - Treat a moiré direct poly on the transparent pen as a "fade toward backdrop" overlay and paint the backdrop pen (0x400) so the
      stipple reads backdrop/scene/backdrop/scene.  Scoped to push_direct (2D direct polys) so 3D object shadows are untouched.
 * sega/model1: draw direct polys above the HUD tilemaps
   - The Star Wars Arcade FIGHTER CONTROL / cockpit screens put their callouts, pointer lines and viewport tints in direct
      (2D-projected) polys, which the hardware draws on top of the tilemap HUD.  They were rendered interleaved with the 3D objects,
      so the indicators ended up buried under the HUD.
   - Split tgp_render into two passes selected by render_pass: the first walks the display list drawing only the 3D objects
      (skipping the direct blocks), then the HUD tilemaps are composited, then a second pass walks the list again and draws only the
      direct polys, on top of everything.  Display-list state (matrices, viewports, lighting, RAM uploads) is re-applied identically
      in both passes so the direct polys project with the correct viewport.
   - push_direct previously guarded its vertex projection on z > 0 and snapped behind-"camera" vertices to (0,0).
      project_point_direct only offsets x/y by the viewport centre and ignores z, so that guard spawned huge spurious triangles
      radiating from the screen origin - harmless while buried under the HUD, but a bogus red cross over the SWA cockpit once the
      direct polys draw on top.  Project every direct vertex unconditionally instead.
 * sega/model1: tile colour mode field (blink, unlit UI elements)
   - Bits [11:10] of the tile colour word select a colour mode.  Bit 10 marks a flat UI element (radar blips, HUD text) that is
      drawn unlit at full intensity instead of being shaded by the scene lighting; mode 01 additionally blinks, rotating the BGR
      channels on alternate frames (the radar blips).
 * sega/model1: rasterize degenerate quads as wireframe lines
   - Line primitives reach the rasterizer as a quad with two coincident vertex pairs. Drawing them with the scanline filler
      collapses near-horizontal wires to a few pixels, so detect that case and draw a proper line instead (e.g. the Star Wars Arcade
      target box).
 * sega/model1: draw 0x41 objects above the HUD with a stencil
   - Reorganise rendering into a below-HUD pass (0x01 objects and 0x02 direct polys, sharing the per-viewport z-sort) and an
      above-HUD pass for the 0x41 objects such as the Star Wars Arcade radar blips. The hardware only lets the above-HUD objects
      show through "background" HUD pixels, so the HUD is snapshotted before the pass and its bright features restored over the
      result.
 * sega/model1: invert moiré checkerboard parity
   - Draw the moiré dither on the opposite pixels in both the scanline filler and the wireframe line, matching the hardware pattern.
 * sega/model1: iterate overlay stencil by scanline within cliprect
   - Walk the snapshot/restore buffers with row pointers over the cliprect instead of a flat loop with a divide and modulo per
      pixel, and name the near-black threshold.

-hash: Consistency for WWF WrestleMania (#15357) [ArcadeShadow]

-sinclair/next/specnext.cpp: Attempt to fix edge rendering cases (#15376) [holub]
 * sinclair/next/specnext.cpp: Attempt to fix edge rendering cases
 * fix border

-akai/x7000.cpp: Add playback and sampling (#15468) [Devin Acker]

-sound/va_vco.cpp: Improved tuning precission and moved helper math functions to corefloat.h. (#15587) [m1macrophage]
 * Made ramp_time_to_thresh() sub-sample-accurate.
 * Moved functions around to help with the above.
 * Improved some comments.

-misc/hideseek.cpp: dumped SH2 internal ROM [Guru]

-misc/hideseek.cpp: corrected botched include [Ivan Vangelista]

New working clone
-----------------
Street Fighter III 2nd Impact: Giant Attack (Asia 970930) [msamiullah]

-nec/pc88va_v.cpp: implement text/sprite transmask, make single plane 4bpp and 8bpp not cross page boundaries [angelosa]

-nec/pc88va_v.cpp: refactor graphic drawing fns to use a struct for params [angelosa]

-nec/pc88va_v.cpp: implement sprite Y wraparound [angelosa]

-nec/pc88va_v.cpp: attempt to make a sense over GFX vertical wraparound [angelosa]

-nec/pc88va_v.cpp: implement GFX transmask [angelosa]

-bally/astrocde.cpp: Fix documentation typos for board numbers (#15609) [d]
 * Correct two minor part number typos inside the driver text comments:
   - Change Space Zap game board from 90706 to 90708, matching official Midway service manuals and schematics.
   - Change Ten Pin Deluxe CPU board from 91456 to 91465, correcting a transposition error to match the driver's summary list.

-scmp: Increment PC before opcode/argument fetches, not after. (Yes, this is idiosyncratic.) [AJR]

-handheld/evolution_handheld.cpp: Nominally distinguish CPU types [AJR]

-cpu/drcbec.cpp: Fixed overflow flag calculation for ADDC. [Vas Crabb]
 * This is a case of GitHub #15043.  SUBB doesn't seem to be affected.

-taito/capr1.cpp, taito/capr2.cpp: Use most widely accepted release dates. [Vas Crabb]

-sbowling: correct coin inputs [hap, dink]

-va_vco.h: zerofill sync_event struct (gcc warning about uninitialized var) [hap]

-misc f8: add device finder for f3853 [hap]

-Refine sound activity circuit implementation (#15611) [tim lindner]

-jedutil: Add support for Atmel ATV750 (#14947) [Matthew Millman]

-megatech: Document door controls; capitalise DIP labels and add their locations (#15013) [eientei95]

-Fixes for Crisis Zone performance and inputs [Tovarichtch]
 * namco/namcos23.cpp: Fix crszone input and disable idle debug-UART clock (#15599) [Tovarichtch]

-bfm/bfm_ad5.cpp: remove unnecessary set_periodic_int call [angelosa]

-alpha/champbas.cpp: audiocpu runs in IM1, no need for set_input_line_and_vector [angelosa]

-edevices/fantland.cpp: convert to set_irq_acknowledge_callback [angelosa]

-irem/m90.cpp: convert dynablsb* and bomblord to set_irq_acknowledge_callback [angelosa]

-stern/berzerk.cpp: convert to set_irq_acknowledge_callback [angelosa]

-tatsumi/tx1.cpp: convert to set_irq_acknowledge_callback [angelosa]

-sunelectronics/shanghai.cpp: convert to set_irq_acknowledge_callback [angelosa]

-cinematronics/dlair2.cpp: convert to set_irq_acknowledge_callback [angelosa]

-nec_fdd/pc80s31k.cpp: convert to set_irq_acknowledge_callback [angelosa]

-emu/diexec.h: mark set_input_line_vector and set_input_line_and_vector as deprecated [angelosa]

-frontend/mame/ui/viewgfx.cpp: Update GFX layout and tilemap viewer (#15136) [cam900]
 * frontend/mame/ui/viewgfx.cpp: Update GFX layout viewer
 * emu/drawgfx.h:
   - Split clear dirty function
   - Add function for clear dirty of all elements
   - Add gfx viewer specific getters
 * frontend/mame/ui/viewgfx.cpp:
   - Add tilemap palette offset display
   - View full gfx regardless internal clip
   - Add clip status viewer (clip start : clip size)
   - Display clipped gfx, and add offset in mouse overlay
   - Display tilemap palette offset in mouse overlay
 * aristocrat/aristmk4.cpp, namco/namcos22_v.cpp:
   - Use clear_all_dirty for predecode gfxs

-sonix16: Add WDT register stub [AJR]

-cpu/drcbec.cpp: Better condition code calculation. [Vas Crabb]
 * Fixed issues with carry calculation for ADDC.
 * Use constexpr templates for flag calculation rather than separate macros for 32-bit and 64-bit variants.
 * Avoid conditionally evaluated expressions in carry calculation for ADDC/SUBB.

-nec/pc88va_v.cpp: OFX and OFY are ignored with layer = 1 [angelosa]

-nec/pc88va_v.cpp: implement X fractional dot scrolling [angelosa]

-cpu/drcbec.cpp: Fixed dumb bug in zero flag calculation. [Vas Crabb]

-mc68681: assert TxRDY at the THR->shift transfer (#15613) [David Rand]
 * GitHub PR #15564 cured a transmitter deadlock but asserted TxRDY (together with TxEMT) only in tra_complete's idle branch, i.e.
    at end-of-transmission. Per the SCN2681/MC68681 datasheet TxRDY is asserted at the THR->shift-register transfer, one full
    character time earlier, so firmware that pipelines on TxRDY (the Ensoniq VFX inter-board link and MIDI, e.g. sd132) saw the
    ready window a character time late and dropped bytes, tripping SYSTEM ERROR 144.
 * Assert TxRDY in the reload branch where the queued THR byte transfers into the shift register; the idle branch sets TxEMT only.
    This keeps #15564's deadlock cure (TxRDY still re-asserts whenever a byte is queued) while restoring the correct one-character
    buffering window.
 * Tested on sd132 (VFX) and pc532 System V (4x SCN2681 console).

-src/devices: Use std::has_single_bit in various assertions and sanity checks [AJR]

-nec/pc88va_v.cpp: layer strip 3 is actually from graphic A not B [angelosa]

-cpu/hd6309: Correct DIVD and DIVQ flag logic and cycle counts (#15615) [tim lindner]
 * Updated division algorithms to match hardware behavior verified by Fuzz6309 and XRoar.
 * Fixed edge-case condition code handling for overflows and signed attributes.
 * Implemented dynamic execution cycle adjustments using metrics discovered by hoglet67.
 * Refined, formatted, and debugged implementation with the help of Gemini 1.5 Pro.

-nec/pc88va_v.cpp: refine scrolling [angelosa]

-nec/pc88va_v.cpp: reverse graphic A layers draw order [angelosa]

-cpu/powerpc: Updates [R. Belmont]
 * Fixed 601-specific corner cases in DIVWUx/DIVWUOx/DIVWx/DIVWOx [hardware testing thanks to DingusDev]
 * Fixed typo in 601-specific ABS/NABS that was causing incorrect decimal number printing
 * Make the forced DRC cache flush on ICBI optional, it was killing Mac OS 9 performance
 * Track at a 4K page granularity which logical pages have compiled code and flush only when necessary
   - apple/macpdm.cpp: Updates [R. Belmont]
 * Use modern logging instead of spamming everything all the time
 * SCC DMA register minimal functionality to get past the LocalTalk check in Mac OS 8.5 and later
 * RAM mapping (and the nanokernel heap layout) now matches DingusPPC
 * All supported Mac OS versions (7.1.2P, 7.5, 7.5.3, 7.5.5, 7.6.1, 8.0, 8.1, 8.5, 8.6, 9.0, 9.0.4, and 9.1) now boot to Finder
   - AI disclosure: Claude Opus 4.8 assisted in finding the bugs and suggested some of the fixes, all of which I implemented and
      tested.

-cpu/powerpc: Move UML-accessible variable into the DRC cache. [R. Belmont]

-apple2/e/gs: fix slot arbitration (#15619) [arekkusu42]
 * apple2gs: implement INTCXROM (it overrides SLOTC3ROM and SLTROMSEL.)
 * apple2gs: implement INTC8ROM (propagate 8bf4bac) replacing CNXX_INTROM, so slot3 internal firmware works like hardware.
 * apple2gs: undo 9dee876, unpopulated C800 returns floating bus.
 * apple2/e/gs: stop special-casing CFFF reads; allow the (slot/internal/floating) read to happen during the cycle disabling any
    expansion ROM.  This allows matching card-specific behavior.
 * also some tidying to make the three drivers more similar.

-osd/sdl: enable SDL3 macOS click-to-focus behavior (#15606) [Valera Klachkov]

-s900: add v1.2c ROM (#15616) [Devin Acker]
 * s900: add v1.2c ROM, add note about possible CPU flags issue (and patch around it for now)

-nec/pc88va_sgp.cpp: implement CLS [angelosa]

-nec/pc88va.cpp: hack CPU clock to double speed [angelosa]

New systems marked not working
------------------------------
Carnival 37 [Hammy]
Exciting Fever [Hammy]

New working clones
------------------
Last Bank (Japan, v1.30J) [Hammy]

-skeleton/cosmo68k.cpp: added DIP definitions, some more inputs and outputs [Ivan Vangelista]

-skeleton/carnival37.cpp: bump RAMDAC colors, fix GFX decoding, add inputs, flip screen and coin counters [angelosa]

-skeleton/carnival37.cpp: add dip switches [angelosa]

-frontend: language translate support was missing from a heading string (#15621) [Gently28]

-F2MC-16: External interrupts do not seem to have a iack/vector fetch cycle, according to the docs.  And essentially none of the
 drivers use interrupts in the first place [Olivier Galibert]

-zeroteam: fix the bird dumbass [Olivier Galibert]

-skeleton/carnival37.cpp: fix CRTC type and setup, add player 2 inputs and hopper [angelosa]

Systems promoted to working
---------------------------
Carnival 37 [Angelo Salese, Hammy]

-plugins/portname: Replaced use of deprecated function that has since been removed. [Vas Crabb]

-gunmast: Update sync measurements in comments [Guru]

-metro/metro.cpp: Correct MSM6295 clock for gunmast & pururun [Guru]

-apple2gs: fix reserved I/O bits (#15626) [arekkusu42]
 * force reserved bits to zero in several I/O registers, matching hardware.
 * force reserved bits to one in C03C sound GLU, matching hardware.

-cpu/nec: update carry and overflow after division based on observed HW behavior (#15620) [Devin Acker]

-nec/pc88va_v.cpp: narrow 5bpp drawing to layer strip 1 [angelosa]

-nec/pc88va_v.cpp: extend singleplane ROP writes to 16-bits [angelosa]

-nec/pc88va_v.cpp: move FSA/DSA fixed overrides in layer_params_t [angelosa]

-hash/pc88va.xml: update QA, promote some sets [angelosa]

-sound/cem3394.cpp: Incorporated va_vco oscillator implementation. (#15622) [m1macrophage]
 * Reduces aliasing.
 * Corrects some patches.

-nec/pc88va_sgp.cpp: VD support [angelosa]

-kaypro/kaypro.cpp: Emulate the WD1002-HD0 hard disk controller on the Kaypro 10 (#15430) [David Rand]

-video/mc6845.cpp: hpixels_per_column must be non-zero (#15625) [Angelo Salese]
 * A zero value causes implicit no setup in CRTC parameters, make it a mandatory parameter thru `-validate`.
 * Other changes:
   - reorder device blocks
   - remove empty device_reset trampolines
   - mark register/data methods as virtual (CRTC-II and MOS8563 overrides them)
   - misc/rcorsair.cpp: fix 6845 validation, attempt at decoding color proms, fix CPU clocks

-xerox/xerox820.cpp: 820-II disk personalities, SASI rigid disks, and the 16/8 8086 coprocessor (#15485) [David Rand]

-misc/hideseek.cpp: identify OKI, inputs and VDP mappings [angelosa]

-cpu/nec: gate behaviour described in PR #15620 behind a setter for now [angelosa]

-misc/hideseek.cpp: fix lambda capture [angelosa]

-apple2gs: followup #15626: add comments where hardware behavior differs from documentation (#15628) [arekkusu42]

-nec/pc88va_v.cpp: push down one line if past the X wrap point [angelosa]

-ns32000: fetch module static base after PSR restore on RETT/RETI (#15633) [David Rand]

-sinclair/next/specnext_copper.cpp: Added disassembler. (#15403) [holub]

-sinclair/next/specnext_vtest.cpp: Factory Video test (joystick's XYZ to activate) (#15377) [holub]

-cpu/z80: Allowed 'Run to Next Interrupt on this CPU' not just for standard_irq but daisy as well (#15363) [holub]

-sinclair/spec_snqk.cpp: Allowed to use snx as a sna alias (#15635) [holub]

-sinclair/next/specnext.cpp: Added support of *.nex snapshot format (#15634) [holub]

-sonix16: Fix decoding of BCLR and BSET [AJR]

-cpu/drcbeut.cpp: Add support for invalidating code blocks in a specific logical address range without flushing the entire cache.
 [R. Belmont]
 * This allows TLB/MMU page invalidations to do targeted generated-code flushes without the performance hit of flushing the entire
    DRC.  PowerPC DRC changes which use this are currently being regression tested and will follow.

-Cleaned up some Xerox 820 stuff. [Vas Crabb]
 * Mostly putting private classes in anonymous namespaces and keeping member initialisation in the same file as the constructor
    body.

-bus/pc98_cbus/lha201.cpp: make default INT and ROM address to be usable out-of-box [angelosa]

-nec/pc88va.cpp, nec/pc98ha.cpp: hookup HALT to HREQ signal [angelosa]

-nec/pc88va_v.cpp: implement multiplane Y scroll and fix address bank/mask [angelosa]

-machine/wd1002_hd0.cpp: Fix build after a14a0c1a000e7e68387abc3040783b472fc366c7 [AJR]

-sinclair/next/specnext.cpp: Fixed regressing in specnext. (#15640) [holub]
 * partially reverting 2c61e52f4dc2cd54e19b569608c965abcfb9c803

-devices/cpu: Invalidate up to the max length of a sequence prior to the starting address to catch sequences extending into the
 window. [R. Belmont]
 * Not 100% ideal, but it performs well inside the constraints of the existing DRC data structures.

-bus/a2bus/a2applicard.cpp: Updates and refinements [AJR]
 * Add maximum quantum to allow CP/M to boot reasonably quickly
 * Use a memory view to bank out the Z80 boot ROM
 * Add dump of the Franklin ACE 80 CPU Card [Internet Archive]

New clones marked not working
-----------------------------
Jungle (USA, VA 1.05) [Ioannis Bampoulas]

-nec/pc6001.cpp: use a snapshot image for cas and p6 handling [angelosa]

-cpu/powerpc: Updates [R. Belmont]
 * When pages are invalidated with ICBI, only invalidate generated code on that page.
 * For invalidate-everything cases, use a generation counter so that used blocks will recompile on their next call but unused ones
    won't (idea from OG's sound system).
 * STRICT_VERIFY now does a byte-exact position-exact check.  Some Mac OS self-modifying blocks were eluding the simple checksum.
 * New option PPCDRC_STRICT_601_SELF_MODIFY enables monitoring writes to see if they hit a generated code block.  Mac OS Sound
    Manager self-modifies without issuing ICBI (which is valid on 601 hardware due to the unified cache).  This is a significant
    performance hit which is why it's optional.
 * DRC code cache size bumped from 32 MiB to 128 MiB.  The working set of Mac OS 9.1 idling in Finder was over 32 MiB so the cache
    was constantly thrashing.
   - This greatly improves the stability of pmac6100 and makes Mac OS 9.1 fully usable (see my video of it running MacMAME full
      speed with sound from a network share).  Regression tested against an assortment of Konami and Taito PowerPC-based arcade
      games.
   - AI disclosure: Bug finding assistance by Claude Opus 4.8 and it suggested some design elements for the 601 self-modify fix.
      Code is by me.

-generalplus_gpl951xx_soc.cpp: added GPL951xx internal ROM and allow systems to boot from it [cyanic, David Haywood] (#15630)
 [mamehaze]

-bionicc: add tile flipping to tx tilemap, fix palette brightness [hap, Jim Westfall]

-bus/xerox820: Restored card-interface device_finder instantiations. (#15641) [David Rand]
 * The copro and disk-daughterboard card device types are exposed through their abstract interfaces via DEFINE_DEVICE_TYPE_PRIVATE,
    which does not instantiate the device_finder templates. Without an explicit instantiation, a required_device/optional_device of
    device_xerox820_copro_card_interface or device_xerox820_dbslot_card_interface fails with an undefined symbol at link time, so
    instantiate them in each interface's source file.
 * Also define the identical x820ii5/x820iis/x820iilp ROM sets in terms of x820ii's rather than repeating the shared content macro.

-hash/apple2_rom.xml: Correct release year for Programmer's Aid #1 [AJR]

-xerox/xerox820.cpp: Moved ROM load macros out of macros. [Vas Crabb]

-sound/va_vcf.cpp: removed no-longer-needed "streamess" mode. (#15647) [m1macrophage]
 * sound/va_vco.h: updated comments.

-Zilog System 8000 (3 new NOT WORKING) + Z8010 MMU + Z8000 CPU improvements (#15386) [ArcLight22]
 * New NOT WORKING machines
 * System 8000 [s8000] System 8000 Model 20/30 [s8000v1] System 8000 Series Two [s8000s2]* cpu/z8000/z8000.cpp: Changed address
    space for PSA reads, fixes interrupts not working
   - cpu/z8000: Added output callback for N/S state change
   - Added initial S8000 machine and layout files
   - cpu/z8000: Fixed inc/dec versions of I/O instructions
     * removed inc/dec lines for operands that shouldn't change
     * made instruction names in comments and dasm consistent with official documentation
     * fixed incorrect instruction ids in z8000_disassembler::disassemble
     * fixed incorrect source read length in soutib/sotirb instruction
   - s8k: Renamed sio_map(), added info about FPP
   - cpu/z8000/z8000.h: Added CPU status codes and is_ifetch1()
   - cpu/z8000/z8000.cpp: Made hack in RDMEM_W() more specific to the Olivetti M20/M40/M44
   - cpu/z8000: Enabled segmentation trap handling
   - Added initial Z8010 MMU implementation + segmented OS jumper and CPU board registers for s8k
   - s8k: Added self-triggering callback to CTC2 (used for RTC)
   - s8k: Set v2.2 as the default BIOS
   - s8k: Added more RAM options (based on testing) + some cleanup
   - s8k: Improved correctness of ram_r()
   - s8k: Adjusted main clock frequency and added new value to emu/xtal.cpp
   - s8k: Changed main XTAL value again
   - cpu/z8000/z8000ops.hxx: Made sure ldctl instruction in/out values are sanitized
   - cpu/z8000: Fixes for interrupts and stack handling
     * z8000.cpp: read PC before changing FCW for all interrupts
     * z8000ops.hxx: changed PUSH*()/POP*() functions to correct misaligned stack pointers
     * 8000dasm.cpp: fixed incorrect argument display for indexed cpb instruction
   - General cleanup, coding style changes (per MAME guidelines), fixes for SIO
   - s8k: Renamed ROMs and daisy device, added v3.0 BIOS and set it as the default
   - Added ZBI bus, slot and card
     * rewrote S8000 CPU as a ZBI card
     * added S8000 CPU-A 1.0 and HPCPU boards
     * added parity and ECC memory boards (no error detection yet)
     * added more info about S8000 models and architecture
     * s8k.lay: made the power LED dynamic (based on having a board in the CPU slot)
     * set max. RAM to 4 MB
     * new machines: s8000v1, s8000s2
   - Minor fixes for Z8000 CPU
     * inverted meaning of N/S state output
     * changed the order of interrupt handling according to the manual
     * fixed a typo
   - z8010: Clear DSC after changing SAR
   - Added BUSREQ/BUSACK support, fixes for VI and LED timing
     * fixed handling of simultaneous vectored interrupts
     * made HPCPU SCC & CIO use the Z80 interrupt daisy chain
     * added BUSREQ/BUSACK signals to Z8000 CPU (from Z80) and ZBI bus
     * added delay timer for USER and DMA LEDs in zilog/s8k.cpp
     * cleaned up bus/zbi/zbi.cpp
     * renamed "System 8000 1.0" to "System 8000 Model 20/30"
     * fixed minor typo in emu/xtal.cpp
   - Added SMDC board, changed CPU-A SCR accessor functions to be 16-bit
     * added new ZBI card device: SMDC
     * set SMDC as the default disk slot device for s8000 and s8000s2 configs
     * made the CPU-A SCR read/write functions support word access (on odd address)
     * changed CPU-A 1.0 ROM names
     * additional clarifications in comments
   - s8k_cpu.cpp: Set SMD disk as the default boot device
   - bus/zbi/zbi_cards.h: Fix include guards
   - Conformance changes to Z8000 and S8K CPUs
     * changed temporary hack in cpu/z8000/z8000.cpp into a setting (enabled by default)
     * changed ROM loading macros in bus/zbi/s8k_cpu.cpp for boards with only one BIOS
   - bus/zbi/s8k_smdc.cpp: Better handling of drive errors
   - bus/zbi/s8k_smdc.cpp: Disable interrupts by default
   - cpu/z8000/8000dasm.cpp: Fixed incorrectly displayed cpb and ldb instructions

-zilog/s8k.cpp: Output finders no longer need (or have) resolve() [AJR]

-i386: fix copy paste error in fxsave [bachimusprime]

-tools/castool.cpp: retire pc6001_cas format (#15644) [Angelo Salese]
 * was a non-working attempt to make it fit a needle in an haystack.

-konami/konamigv.cpp: Added freshly initialised Flash content for Dead Eye. [Vas Crabb]

-sega/model1: repair 2-bit corruption in 315-5711 TGP copro ROM (Wing War, SWA, NetMerc) (#15649) [Francisco José García García]
 * The 315-5711.bin dump has two single-bit corruptions (spurious bit 1 in the low byte, likely a D1 line fault during ROM capture):
   - PC 0x8B: brif alw #0x59e → #0x59c (op 0x34 dispatch) The handler for the specialised affine inverse begins at 0x59c with setup
      instructions (mov $7,x1; mov $4,d). Jumping to 0x59e skips this setup, leaving x1=0x100 from the previous slot, reading
      data[0x301]=ZERO → division by zero → 270 NaN words leak to FIFO.
   - PC 0x67e: lia #2 → lia #0 (op 0x38 record loop) Op 0x38 performs segment-vs-collision-model tests. The loop at 0x67d-0x685
      calls subroutine 0x686 (returns 0=hit, 1..4=miss) and adds a constant via addd. With lia #2, every result was offset by 2, so
      the V60 host always saw 2..6 and never detected hits (brif zrd). The twin idiom in op 0x18 (same subroutine, same handler
      pattern) confirms lia #0 is the intended value.
     * Both games and MAME itself run the unrepaired dump, so the arcade machine is the oracle. Wing War's machine gun now registers
        damage correctly after this fix.

-nec/pc88_kbd.cpp: refine pc88va_kbd_device i/f a bit [angelosa]

-xerox820: complete the low-profile (G25) keyboard; recover the v5.0 u36 (#15648) [David Rand]
 * xerox_lpk (the G25 low-profile keyboard):
   - add PORT_CODE to every key station; it was PORT_CHAR-only, so nothing mapped in emulated mode (only with -natural)
   - correct the layout to typewriter-paired US, matching the keytops and the v5.0 u36 decode table (shift-2='@', shift-6='^', ...)
   - add the function keys, numeric keypad and cursor/editing cluster from the LPKYBD.MAC keystation table (94 key stations)
     * xerox820:
   - x168/x1685/x168s ship the X928 ASCII keyboard, not the G25; use the standard 820-II keyboard for them
   - fill the v5.0 u36 (was NO_DUMP) with 537p10831 (cda7f598), recovered from the Balcones v5.0 source disk B23D13 (U36-V18.ROM);
      v50 and v50v018 then hold identical romsets, so drop the redundant v50v018 BIOS

-nec/pc6001.cpp: 31 new dumps (#15645) [Angelo Salese]
 * nec/pc6001.cpp: kick off pc6001mk2_flop and pc6001mk2sr_cass SW lists hash/pc6001_cass.xml: remove "power", part of the AX-6 set
    as Powered Knight hash/pc6001_cass.xml: remove "block", part of the AX-1 set as Break Out L hash/pc6001mk2_cass.xml: mark
    castleex as bad dump

New working software list items
-------------------------------
pc6001_cass: AX-1, AX-10 [Neo Kobe]
pc6001mk2_cass: Grobda, Vital Lamp, Yakyuu Kyou [Neo Kobe]
pc6001mk2_flop: Asalt (v1.1) [Neo Kobe]

New software list items marked not working
------------------------------------------
pc6001_cass: AX-2, AX-3, AX-4, AX-5, AX-6, AX-7, AX-8, AX-9, Space Harrier, Tiny Xevious 2 [Neo Kobe]
pc6001mk2_cass: 3D Golf Simulation: Super Version, American Truck, Attack!! Hiroko-chan, The Black Onyx, Dezeni Land, Hurry Fox,
  Hurry Fox: Yuki no Maou hen, Hydlide, New Fan Fun, Pac-Man, Salad no Kuni no Tomato-hime [Neo Kobe]
pc6001mk2sr_cass: Jewels, Living Armor, Pakuridius: '88 Dragon Breath, Satan [Neo Kobe]

New software list items marked not working
------------------------------------------
px4_cart: R.I.V.M. Diagnose Terminal Rel. 1.1 [Jeff_Birt]

-hash: standardize Game Arts famista entries [angelosa]

-nec/pc6001.cpp: fix pc6001 crashes with some SWs [angelosa]

-hash/pc6001mk2_cass: demote castleex [angelosa]

New working software list items
-------------------------------
pc6001_cass: F-Dot 2 [Neo Kobe]

New software list items marked not working
------------------------------------------
pc6001_cass: Take Off 6000 [Neo Kobe]
pc6001mk2_cass: The Castle, Mandelbrot demo, Volguard [Neo Kobe]

-sega/segapm.cpp: add enough 32X glue logic to make it boot [angelosa]

New working clones
------------------
Great Sluggers '94 (prototype?) [CoolMod ]

-namco/namconb1.cpp: consolidated driver into single file [Ivan Vangelista]

-skeleton/carnival37.cpp: used short types uniformely, enabled save state support [Ivan Vangelista]

-fmtowns: init pcm mask reg to 0 [cracyc]

-bus/msx/ctrl: emulate the Dual Joyport for pc88va:famista [angelosa]

Software list items promoted to working
---------------------------------------
fmtowns_cd: Pro Yakyuu Family Stadium - '90 Pennant Race-ban [cracyc]

-Revert "ns32000: fetch module static base after PSR restore on RETT/RETI (#15633)" (#15656) [David Rand]
 * This reverts commit dbc43a938114322ef0dc8afd7e2207b0e69b74a4.
 * Module descriptors reside in supervisor space: fetching SB through user translation on a return to user mode reads memory where
    no module table exists, clobbering SB on every interrupt or trap return.  Dual-space NS32000 System V (ICM-3216, PD32, Opus -
    all binaries proven on real hardware) fails at the first interrupt taken by a user process.  The PC-MX2 behavior that motivated
    #15633 was ordinary demand paging, not a user-space fetch requirement; it boots correctly with the restored order.  The NS32532
    pc532 (NetBSD and System V) is unaffected either way.

-machine/ncr5380.cpp: implement target mode (#15657) [David Rand]
 * The target role (the file's standing TODO): in target mode the Target Command Register drives the phase lines and, outside DMA,
    REQ (SP-1051 6.4); Start DMA Send sends to the initiator and Start DMA Target Receive is implemented (6.8.1, 6.8.2); a new
    REQ/ACK-handshake state group moves the data.  The Select Enable Register now latches and raises the selection/reselection
    interrupt on a bus ID match (6.6, 8.1), with a guard so a chip selecting outward never matches its own ID.  All target paths are
    gated on MODE_TARGET, which no existing machine sets; initiator behavior is unchanged.
 * First consumer: the ET532 SCSI coprocessor card (NS32532 board operating as a target on the pc532 532SC bus), including
    target-initiated reselection.

-machine/ncr5380.cpp: initiator DMA, data bus and reset fixes (#15658) [David Rand]
 * machine/ncr5380.cpp: implement target mode
   - The target role (the file's standing TODO): in target mode the Target Command Register drives the phase lines and, outside DMA,
      REQ (SP-1051 6.4); Start DMA Send sends to the initiator and Start DMA Target Receive is implemented (6.8.1, 6.8.2); a new
      REQ/ACK-handshake state group moves the data.  The Select Enable Register now latches and raises the selection/reselection
      interrupt on a bus ID match (6.6, 8.1), with a guard so a chip selecting outward never matches its own ID.  All target paths
      are gated on MODE_TARGET, which no existing machine sets; initiator behavior is unchanged.
   - First consumer: the ET532 SCSI coprocessor card (NS32532 board operating as a target on the pc532 532SC bus), including
      target-initiated reselection.
 * machine/ncr5380.cpp: initiator DMA, data bus and reset fixes
   - Four corrections to initiator behavior, each against SP-1051 (the design manual already cited in the header):
     * DMA phase mismatch and DRQ (6.7, 10.3, 10.5.2): a send leaves the request for the next, never-transferred byte pending across
        the mismatch ("the DRQ signal does not reset when a phase mismatch interrupt occurs"); the host completes the transfer by
        cycling DACK once more so ACK can release.  A receive has no pending request, so raising DRQ there fed pseudo-DMA read loops
        a garbage byte.  DRQ is now raised at a mismatch only for OUT transfers.
     * Initiator data-bus release (ICR bit 0, 8.5): the data drivers are enabled only while the phase lines match the target-command
        register; on a mismatch "DB0-DB7, DBP will not be driven even though the ASSERT DATA BUS bit is active".  Previously the
        last data byte stayed wire-OR'd over the target's STATUS byte.  Release-only; the drivers re-enable through the normal
        register paths.
     * Self-initiated bus reset (8.3, 9.3): the base 5380 interrupts on any RST transition including its own ("this interrupt cannot
        be disabled") -- that behavior is unchanged.  The DP8490 EASI diverges: firmware written for the real part (the NetBSD/pc532
        ROM monitor) asserts RST and treats a resulting interrupt as a fault, so the suppression is scoped to dp8490_device only.
     * A DMA wait state that made no progress and requested no delay now re-arms at the SCSI REQ/ACK period instead of zero, so
        emulated time advances and the target can respond (previously hung the emulation).

Validated together: Macintosh Plus/SE boot System 6.0.8 from SCSI to the Finder (with an AppleCD attached); NetBSD 1.5.3 and System
  V on pc532 (DP8490) boot with disk I/O exercise; ET532 target-mode suite.
-----------------------------------------------------------------------------------------------------------------------------------
Co-authored-by: AJR <ajrhacker@users.noreply.github.com> [David Rand]

-nec/pc6001.cpp: fix pc6001mk2sr/pc6601sr boot regression [angelosa]

-nec/pc6001.cpp: implement pc6001mk2sr/pc6601sr text mode CLUT [angelosa]

-commodore/c64: Fix performance drop while formatting a diskette. [Curt Coder]
 * Fixes MT 08584.

-nec/pc6001.cpp: hookup pc6001mk2sr_flop SW list [angelosa]

New software list items marked not working
------------------------------------------
pc6001mk2sr_flop: PC-6601SR Utility Disk [Mike Stedman]

New software list items marked not working
------------------------------------------
pc6001mk2sr_cass: 9-gyou no Michi, The Akunin, The Akunin 2, The Akunin 3, Lizard Quest, Lizard Quest II: Shitennou no Houfuku,
  Lizard Quest III: Shi no Kami Gaabarian, Lizard Quest IV: Gold Lizard, The Order, Wu-m Wakarannou [Neo Kobe]

New software list items marked not working
------------------------------------------
pc6001mk2_flop: Hudson Soft Best Hit Game Pack 3 [Neo Kobe]

-taito/asuka.cpp: dumped PALs for mofflott [Apocalypse, Darksoft]

-hash/pc6001mk2sr_flop.xml: fix validation [angelosa]

-nec/pc8001.cpp: make pc8001mk2sr N80SR BASIC bootable [angelosa]
 * hash/pc8001mk2sr_flop.xml: mark all SWs as not supported

-a2sic: Change default BIOS to older revision and note why [AJR]

-spectred: Emulate unique keyboard based on 8035 MCU [AJR]
 * Restructure ROM loading so various Applesoft BASIC statements are interpreted correctly

-devices/machine/wd1002_05.cpp: Support all documented floppy sector sizes (#15665) [David Rand]
 * The WD1015 front-end selects the floppy sector size from SDH bits 6-5 (00=256, 01=512, 10=1024, 11=128) and routes the command to
    the WD2797. The floppy read/write/format paths were fixed at 512 bytes and encoded the WD2797 sector length without the length
    (L) bit, so real Xerox 16/8 media (IBM 128<<N, ID N=2 = 512) read back as 1024 and the Expansion Module II INIT utility could
    not format a disk.
   - derive the selected sector length from SDH bits 6-5 for the host read/write/format byte counts and the buffer bound
   - issue WD2797 read/write with the L bit set (128<<N), matching 16/8 media
   - clear the per-command floppy error before each command: the box ROM's geometry probe issues SEEK-then-READ through a shared
      status poll, so a stale record-not-found must not abort the following command
   - widen the shared WD1002-HD0 board sector buffer to 1K, per the manual

-`esq5505.cpp,{vfx,vfxsd,sd1,sd132}.lay`: add footswitch support and update button documentation. (#15638) [Christian Brunschen]
 * esq5505.cpp: Update button documentation comments.
   - Update names to match labels on the actual keyboards.
     * Adds entries for "buttons" 0 and 1. These correspond to the "Foot Switch" ("Ft. Sw.") jack input for connecting Sustain /
        Sostenuto pedals such as Ensoniq's own SW-1 basic foot Switch or their SW-5 Dual foot switch.
     * Button 29 is "Replace Program".
     * Buttons 30 and 31 are labeled 'Multi A' and 'Multi B' on VFX.
     * Button 52 is labeled "BankSet" on SD-1 and SD-1/32.
   - Also slightly reformat the entries for the buttons that are not present on the VFX, putting their label when present first, and
      documenting the error second.
 * {vfx,vfxsd,sd1,sd132}.lay: Regenerate layouts.
   - Regenerated layouts now include optional foot switches in the Full and Compact views.
   - These are mapped to "buttons" 0 and 1.
   - On the "Master" page, the second line allows assigning `FOOTSWITCH`es, with `FS1` being the left footswitch and `FS2` the right
      one; they can be assigned to sostenuto&sustain, patch selects, and the left (`FS1`) to preset-changing and a few
      sequencer-editing functions.
   - Pedals are hidden by default, but can be enabled in MAME's Video Options menu.
   - Also, buttons now use a single SVG `<image>` with one `<color>` per state, rather than one `<image>` per state.

-video/upd3301.cpp: reset status on set interrupt mask ME low [angelosa]
 * fix pc8801:laptick garbage text layer display

-hash/pc6001mk2_flop.xml: mark all SWs as not supported [angelosa]

-nec/pc8001.cpp: convert loose membanks into memory_view [angelosa]

-nec/pc8001.cpp: hookup ALU memory_view for mk2sr [angelosa]

-nec/pc8801.cpp: move ALU hookup in a device, share with pc8001mk2sr [angelosa]

-nec/pc8001.cpp: hookup GVRAM for mk2/mk2sr [angelosa]

-apple/apple2e.cpp: Initialize variable [AJR]
 * laser128o: Correct ROM labels

-nec/pc8001.cpp: fix snapshot regression [angelosa]

-nec/pc8001.cpp: pc8001mk2sr fixes: [angelosa]
 * add separate work RAM memory_view control from 0xe2 port;
 * hookup GVRAM palette;
 * basic port of GVRAM display from pc8801;

-konami/ddribble.cpp: Implement sprite X wraparound (#15661) [Andrea Bogazzi]

-nec/pc8001.cpp: Fix clang error: 'ram_w' is a protected member of 'pc8001_state' [AJR]

-osd/sound/coreaudio_sound.cpp: fix a deadlock on exit (#15669) [David Rand]
 * coreaudio_stream::close() took m_stream_mutex before calling AUGraphStop. AUGraphStop blocks until the CoreAudio I/O thread
    finishes any in-flight sink_render callback, and that callback also takes m_stream_mutex -- so holding the mutex across
    AUGraphStop deadlocks: this thread waits for the callback to finish, the callback waits for the mutex.
 * Stop the graph first (which quiesces the I/O thread, so no further callbacks fire), then take the mutex for the rest of the
    teardown.

-hash/pc8001mk2sr_flop.xml: move pack1,pack2 and pack3 from pc8801_flop.xml, split pc8001mk as clones of them [angelosa]

-nec/pc8001.cpp: implement 320x200 2 plane mode for pc8001mk2sr [angelosa]

-nec/pc8001.cpp: move PICU handling from pc8801 [angelosa]

-nec/pc8001.cpp: implement PR2 video priority swap and flush ALU register on port 33 writes for pc8001mk2sr [angelosa]

-nec/pc8001.cpp: pc8001mk2 implement 2bpp video mode and PR1 [angelosa]

-hash/pc8001mk2sr_flop.xml: move mappya from pc8801_flop.xml [angelosa]

-hash/pc8801_flop.xml: identify some sets actually belonging to pc8001/mk2/mk2sr [angelosa]

-sound/cem3340.cpp, sequential/prophet5.cpp: emulated oscillator scale trimmers. (#15655) [m1macrophage]
 * Made resistors for the CEM3340 "tempco generator" configurable.
 * Used the above on the prophet5 LFO, and to implement the scale trimmers of the VCOs.

-handheld/evolution_handheld.cpp: Copy ROM to RAM at reset time for SNC7001A and SNC7648S [AJR]

New working clones
------------------
Turbo Force (Japan) [buffi, Brian Troha]

-cinematronics/leland.cpp: corrected upyoural labels, inverted upyoural/alleymas parent clone relationship [Brian Troha]

-taito/nycaptor: consolidated driver into single file [Ivan Vangelista]

-igs/igs_m027xa.cpp: updated PCB info for jking04 (#15631) [Ioannis Bampoulas]

-skeleton/st25.cpp: New systems marked not working (#15612) [stonedDiscord]

New systems marked not working
------------------------------
Amarillo [stonedDiscord]
Avanti [stonedDiscord]
Ballermann 6 [stonedDiscord]
Big Action 3000 E [stonedDiscord]
Big Kick [stonedDiscord]
Blizzard [stonedDiscord]
Booster Speed [stonedDiscord]
City Tower [stonedDiscord]
Colossos [stonedDiscord]
Galaktica [stonedDiscord]
Jamaica [stonedDiscord]
Majesto [stonedDiscord]
Matrixx [stonedDiscord]
Multiclassic [stonedDiscord]
Pur Pur Royal [stonedDiscord]
Robin [stonedDiscord]
Rotamint Alpha [stonedDiscord]
Rotamint Macao [stonedDiscord]
Super Pasch [stonedDiscord]
Super Take Off E [stonedDiscord]
Tango [stonedDiscord]
Tobago [stonedDiscord]
Unimint Arena [stonedDiscord]
Xeno [stonedDiscord]

-comx/comx35.cpp: Consolidate driver in single file [AJR]

-cpu/m68000: Major FPU overhaul [R. Belmont, parts suggested by O. Galibert] This fixes glitched polygons in taitojc.cpp games,
 Marathon now runs properly on 68k Macs, and A/UX gets to a root filesystem panic instead of immediately exploding.  Softfloat 3's
 global state is now saved and restored around execution, so multiple 68k cores can work in a system, or a 68k with an i386. [arbee]
 * FMOVEM.L ctrl-reg predecrement: An decremented by total size first, FPCR/FPSR/FPIAR stored ascending (was reversed; push/pop
    pairs swapped FPCR and FPIAR). Both directions.
 * FMOVE.L #imm,FPCR now actually applies rounding mode/precision (early return skipped the softfloat update).
 * FMOVEM.L #imm with multiple control registers reads one longword per register (was else-if, one only).
 * FMOVEM.X transfer order corrected everywhere: control/postinc FP0→FP7 ascending, predec FP7→FP0 descending (memory image was
    fully reversed; corrupted asymmetric save/restore lists).
 * New apply_fpcr_rounding() called from every FPCR load path; FRESTORE of a null frame resets rounding state.
 * execute_run() saves/restores the process-global softfloat rounding state per timeslice and re-applies FPCR (multi-CPU
    cross-contamination fix).
 * FPU state (FP0-7, FPCR/FPSR/FPIAR, just-reset flag) registered for save states; rounding re-derived on state load.
 * device_reset puts the FPU in documented reset state: NaNs in FP0-7, zeroed control regs, first FSAVE yields a null frame.
 * New GET_EA_FPE() resolves control-mode EAs exactly once per instruction (replaces the (d16,An)-only "offset kludge").
 * FMOVE.X/FMOVEM.X gained (d8,An,Xn) both directions and (xxx).W both directions (were fatalerror), and stores to (xxx).L.
 * Multi-register FMOVEM loads from (xxx).L/(d16,PC)/(d8,PC,Xn) no longer re-fetch extension words per register (read garbage
    addresses and skidded PC).
 * (xxx).W sign-extended in all FPU EA helpers (READ/WRITE_EA_8/16/32/64, fmove_fpcr); missing (xxx).W cases added to
    READ_EA_64/WRITE_EA_16/WRITE_EA_64.
 * Conversion rewritten: float128 and integer based, all 17 digits exact, ±Inf/NaN handled (was host double + string parsing, ~16
    digit limit, no specials).
 * Store k-factor rounding done in exact integer arithmetic with a sticky bit; honors FPCR rounding modes sign-aware (tie case found
    by the IIci ROM's Float_Test).
 * All legal EA modes for packed loads/stores (was a small subset).
 * Dynamic k-factor sign-extends the low 7 bits of Dn (was the raw 32-bit register).
 * k > 17 clamps to 17 digits and sets OPERR/accrued IOP.
 * 4-digit exponents write E3 at the FPSP-documented position.
 * FPU first-word decode moved into m68k_in.lst as 14 per-form entries (fpgen, FScc Dn + per-EA-mode via generator derivations,
    FDBcc, FTRAPcc.W/.L/none, FBcc.W/.L, FSAVE + predec, FRESTORE + postinc); m68040_fpu_op0/op1 nested switches deleted.
 * Fixed dispatch collisions: FScc (xxx).W/(xxx).L misrouted to FTRAPcc on 020/030; FTRAPcc executed as FScc on 040 (wrote a byte
    through (d16,PC)); FDBcc hit the cpdbcc stub (PC desync) on 020/030.
 * FDBcc implemented (decrement/branch, integer-DBcc displacement conventions).
 * FTRAPcc consumes its operand before trapping (taken traps stacked a PC pointing at the operand).
 * Illegal FPU encodings now take F-line exceptions by omission (f27d-f27f, f380-f3ff, FSAVE postinc/PC-relative, FRESTORE predec,
    undefined second-word class) instead of fatalerror.
 * FSAVE/FRESTORE are supervisor-checked (privilege violation in user mode) and follow the PRM-exact legal EA sets, including
    (xxx).W.
 * FSAVE/FRESTORE Frame-pointer off-by-4s fixed: predec/postinc no longer double-adjust; FRESTORE advances match the emitted 28-byte
    (68881 idle) / 4-byte (null, 040 idle) frames exactly.
 * FCMP is a true comparison, not a subtraction: equal infinities compare equal (no spurious NaN/OPERR), NaN operands set NAN only,
    I always cleared per PRM, N mirrors the destination sign on equality (-0 vs +0, -inf vs -inf → N|Z).
 * FMOD/FREM FPSR quotient sign bit is the quotient's sign, sign(dst) XOR sign(src) (was the remainder's sign; SANE reads it for
    trig octants).
 * FPAE accrued-byte constants fixed (OVFL/UNFL were swapped, OPERR collided with DZ); accrued byte is now sticky with the
    documented 68881 mapping.
 * sync_exception_flags maps softfloat invalid → OPERR (non-SNaN); FADD/FMUL/FDIV/FSDIV/FDDIV masks include INEXACT (FMUL also
    OVFL).
 * BSUN (+accrued IOP) set by IEEE-nonaware conditionals on a NaN.
 * FMOVE.S/.D stores clear and sync INEX/OVFL/UNFL uniformly (FPSR no longer depends on destination format).
 * FGETEXP specials: ±0 → ±0, ±inf → NaN+OPERR, NaNs quieted, denormals normalized.
 * FSIN/FCOS/FTAN/FSINCOS reduce arguments ≥ 2^63 by 2π and retry (previously returned the raw argument, |result| > 1).
 * FSINCOS with FPs = FPc keeps the sine result (was cosine).
 * FINT/FINTRZ use extF80_roundToInt in extended precision (were clamped through a 32-bit int, broke |x| ≥ 2^31); both report INEX2.
 * FMOVE.L/.W/.B out-of-range/NaN conversions saturate by source sign and set OPERR, not INEXACT (softfloat's x86-style
    0x80000000-for-positive-overflow corrected).
 * FPIAR is now properly captured by arithmetic-class instructions.
 * FPCR/FPSR writes masked to architecturally writable bits.
 * Debugger FP0-7/FPCR/FPSR registers available on the 68020 (were gated 030+).
 * Stray printf on FTWOTOX removed.
 * std::bit_cast replaces float32/float64 pointer type-puns.
   - AI disclosure: bug analysis, the changelog, the packed decimal encoder and decoder, the comprehensive unit test, and the big
      dispatch refactor were generated by Claude Fable 5.  Additional bug analysis and code review by GPT 5.6 Terra.
   - Test details: A generated unit test Lua boot script (available on request) boots the Mac II to a known state and takes over its
      execution to run code sequences injected into RAM.  In each case the test was run before and after changes were made.  Live
      software testing included dendego, sidebs, and macqd950 running Marathon, Wolfenstein 3D (the Mac port uses the FPU), the
      Jigsaw Puzzle DA (uses FPU trig to generate the puzzle), and the shareware Extended Calculator.

-misc/ladyfrog.cpp: Consolidate driver in single file [AJR]

-ausnz/aussiebyte.cpp: Consolidate driver in single file [AJR]

-ti/avigo.cpp: Consolidate driver in single file [AJR]

-telercas/tms1800.cpp, telercas/tms600.cpp, telercas/tms2000e.cpp: Consolidate each driver in single file [AJR]

-ussr/b2m.cpp, ussr/mikro80.cpp, ussr/vector06.cpp: Consolidate each driver in single file [AJR]

-misc/calomega.cpp: Consolidate driver in single file [AJR]

-misc/calomega.cpp: fix -Werror=unused-function violations [angelosa]

-nec/pc8001.cpp: backport video from mk2SR to mk2 [angelosa]

-acorn/aristmk5.cpp: fix MEMC access, hookup il0 for COMM ports 4-7 [nerd4gw]
 * on this implementation MEMC register writes are by actual offset not data written. Fix sound in dimtouch and others;
 * Without COMM port irqs some games like qnile will hang after a number of played spins;

-added Puzzle World (#15673) [mamehaze]

New working systems
-------------------
Puzzle World [alfa75, nnap]

-upd765: don't set side bit in st0 before a seek [cracyc]

-sound/cem3394.cpp: replaced CV dispatching function with multiple setter functions. (#15636) [m1macrophage]
 * sequential/sixtrak.cpp: removed no-longer-used LOG_CV.

-misc/amstarz80.cpp: fleshed out the driver. AI disclosure: Claude Opus 4.8 helped with the GFX ROMs decoding [Ivan Vangelista]

-apple/apple2e.cpp: General cleanup [AJR]
 * Don't use magic numbers from ROM locations to determine system type
 * Set up system type flags during machine configuration
 * Use ROM_RELOAD to eliminate duplicate file names and hashes within sets

-sinclair/next/specnext.cpp: Fixed io ports 0x153b, 0x163b reads. (#15677) [holub]

-GPL16250 cleanup checkpoint / milestone (#15654) [mamehaze]
 * added 2 internal ROMs from GPL16250 devices (assumed to be generic for GPL16250 parts for the time being) [cyanic]
 * removed sketchy NAND handling logic from gpl16250_soc and pump through the nandflash.cpp device instead [David Haywood]
 * removed the NAND/SPI split from gpl16250_soc, all GPL16250 chips support both (as do some earlier chips) [David Haywood]
 * added some NAND types needed for the JAKKS games etc. to nandflash.cpp [David Haywood]
 * added a few getters to nandflash.cpp so that we can manually get data out of the device for the existing bootstrap simulations
    now that a device is being used [David Haywood]
 * attempted to identify which GPL162xx model a few sets are [David Haywood]
 * misc cleanups [David Haywood]

-h8: update active DMA channel on start/stop (#15678) [Leopold]
 * Notify the H8 CPU when DMA channel active state changes so newly-started transfers are considered for execution.
 * For H8H full address mode, restore completion behavior that clears DTCRA. This lets Brother LW-840ic and LW-700i firmware observe
    DMA completion instead of polling indefinitely.

-h8/h8_timer8.cpp: if an IRQ is pending when you enable it, fire the IRQ.  tg100 demo playback needs this. [R. Belmont]

-formats/csw_cas.cpp: Fix loading RLE data [Miodrag Milanovic]

-zpa/iq151.cpp: added CSW format and better support for real tapes [Miodrag Milanovic]

-luxor/x37: Fix floppy/SASI DMA corruption. [Curt Coder]

-jaleco/megasys1.cpp: Dumped the microcontroller for Avenging Spirit. (#15679) [Tailsnic Retroworks, Sergio Galiano]

-luxor/x37: Fix SASI disk ID and interrupt polarity. [Curt Coder]

-hash/pc8801_flop.xml: mount mouse as default in batlskin [angelosa]

-igs/pgm.cpp: Marked Dragon World 2 games as not working. (#15660) [cam900]
 * Hangs due to incomplete protection simulation - see https://github.com/mamedev/mame/issues/15659

-igs/igs025.cpp, igs/igs028.cpp: Minor modernize, cleanups: [cam900]
 * Removed hardcoded tags, reduced duplication.
 * Made data members private, made some variables constant.
 * Use a callback to read source data.

-igs/pgmprot_orlegend.cpp: Fix argument in function. [cam900]

-igs/igs022.cpp, igs/igs028.cpp: Fixed ROM data bus width (8 bit data bus), [cam900]

-Cleaned up some stuff. [Vas Crabb]
 * Mostly to get rid of vestigial stuff in jaleco/megasys1.h, including a declaration for a member function that had been removed.

-floptool: Add read-only support for Adam/EOS filesystem [AJR]

-hd63450: Advance BAR after each array-chain entry fetch. [Curt Coder]
 * Fixes x37 SASI disk mounting.

-formats/fs_adam_eos.cpp: Simplify code [AJR]

-formats: Clean up usage of emplace_back [AJR]

-sound/scsp.cpp: implement MSLC delayed sample updates [Angelo Salese, celeriyacon]
 * fixes: #15584, MT09202, repeated vstriker samples, possibly more;
 * sega/coolridr.cpp: relicense as BSD-3, make sound DMA non instant, fix potential irqs lost from SCSP to SH-1, log cleanups, hack
    around SH-1 clock to half speed (something is clearly amiss on this implementation);

-psion/workabout.cpp: Corrected the ESC key mapping for Workabout mx. [Nigel Barnes]

-psion/psion5mx.cpp: Amplifier does not disable buzzer output. [Nigel Barnes]

-torch/triplex.cpp: Added working keyboard with MCU. [Nigel Barnes]

Systems promoted to working
---------------------------
Luxor X37 [Curt Coder]

New working software list items
-------------------------------
x37_hdd: D-NIX 5.12 [Curt Coder]

-sega/coolridr.cpp: pull high serial reads for aquastge, fix call attendant messages [angelosa]

-nec/pc6001.cpp: move keyboard in own device (#15681) [Angelo Salese]
 * implement tape break behaviour
 * implement kana keys

-some Mobigo changes (moved Mobigo 2 to it's own driver, added a missing boot ROM, added a French MobiGo 1 set) (#15684) [mamehaze]
 * added missing SPI ROM to mobigo2 set, this appears to be the boot ROM which explains why the NAND had no GPnandnand header
 * identified that (at least some) Mobigo 1 units have an SPI ROM too, but it isn't used for booting, but instead either user
    content, or built in games
 * moved mobigo2 to it's own file due to the differences in hardware setup compared to the original mobigo
 * moved a few things out of generalplus_gpl16250_spi.cpp that do not actually appear to be gpl16250 after further research on them

new NOT WORKING clones
----------------------
MobiGo (France) [Team Europe]

New working clones
------------------
Series 3c (German) [repa4ok]

New clones marked not working
-----------------------------
Psion 618C [Nigel Barnes]

-psion/psionwamx: Added configuration EEPROM. [Nigel Barnes]

New working systems
-------------------
WE816 [Nigel Barnes, Dan Werner]

Machines promoted to WORKING
----------------------------
Yamaha TG100 [R. Belmont]

-cpu/h8500: Preliminary H8/500 family execution core and peripherals [arbee]
 * Based heavily on O. Galibert's H8/300 family work, and shares some peripherals
 * DTC (auto-DMA on IRQ) is not yet supported
   - AI disclosure: Claude Opus 4.8 assisted with H8/300 sharing planning and the Python generator.

-roland/boss_se70.cpp: Add RAM [AJR]
 * h8500: Minor flag fix for disassembler

-sound/cem3394.cpp: removed unecessary stream updates. (#15688) [m1macrophage]
 * Some simplificatioms:
   - Removed no-longer-necessary stream updates.
   - Moved route gain updates that only happen in one place out of update_mix().
   - Simplified pulse width computation.
   - Removed on/off state for pulse waveform. Similar to the real hardware, the pulse waveform is always "on", but it effectively
      becomes 0 at both pulse-width extremes due to the pulse dc compensation (configured in `device_add_mconfig()`).

-h8500: Emulate DADD instruction [AJR]

-h8500: Make DADD take cycles [AJR]

New systems marked not working
------------------------------
Sony DPS-D7 Digital Delay Unit [DBWBP]

-h8500: Fix Z flag calculation for DADD [AJR]

-tvgames/bk139in1.cpp: An attempt at partial decryption [AJR]

-bvm20f1e: Generate a fake internal ROM [AJR]

-sony/bvm.cpp: Cleanup [AJR]

-misc/jungleyo.cpp:updated ROM patches to a reset stack pointer value which does't cause the games to fail on first boot. AI
 disclosure: Claude Opus 4.8 identified the problem [Ivan Vangelista]

-sound/ics2115.cpp: Changed volume behaviour to match hardware measurements. (#15686) [cam900]
 * reference: https://github.com/MiSTer-devel/Arcade-IGSPGM_MiSTer https://github.com/laoo/PGMTech

-vsystem/aerofgt.cpp: Fix and Add notes about sprite delay. (#15690) [cam900]
 * Made sprite RAM double-buffered, delaying sprites by one frame.

-Preliminary Akai S1000/S1100 driver (#15680) [Devin Acker]

New NOT_WORKING machines
------------------------
Akai S1000 MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]
Akai S1100 MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]

New NOT_WORKING clone
---------------------
Akai S1000PB MIDI Stereo Digital Sampler [Robin Whittle, Devin Acker]

-channelf_a.cpp: Fix sound output channel (#15695) [BensonRSI]
 * Corrected stream.put arguments for sound output, to allocated stream.

New working systems
-------------------
EACA Genie III (Germany) [Dirk Best, oldcomputers-ddns.org]

-nec/pc6001.cpp: modernize banks for pc6001mk2 (#15689) [Angelo Salese]
 * use a ram_device in place of differing work RAM uses;
 * hookup cart for pc6001mk2;
 * pc6001mk2sr/pc6601sr: implement pc6001/pc6001mk2 fallback compatibilty mode;

-topbladv: Corrected Sonokong capitalization (#15683) [James Charles Taylor]

-11beat, kabukikl, neobombe, panicbom, starsldr: Changed manufacturer name ("Hudson") to "Hudson Soft" (#15682)
 [James Charles Taylor]

-gaelco3d.cpp: graphics off-by-one fixes (#15676) [JvM]
 * gaelco3d: fix MT03342
   - Use an exact reciprocal for zbase, rather than recip_approx().  On SSE2 builds, recip_approx uses the SSE rcpss approximation,
      which shifted texel sampling by ~1 pixel.
 * gaelco3d: snap outer-edge verts to screen edge

-emu: Add -rtc command-line option for fixed baseline time overrides (#15670) [tim lindner]

-Various Taito, Hot-B, Toaplan (except perfrman), and Wood Place games/drivers: Removed trade entity from manufacturer names
 (#15675) [James Charles Taylor]
 * Various Taito, Hot-B, and Wood Place games/drivers: Removed trade entity from manufacturer names
   - Other changes:
     * Cleaned up game driver spacing in some drivers
     * alphaxz, clshroad, firebatl, firetrap, kingofb, m660, thedeep: Standardized "Wood Place" and "Woodplace" manufacturer names
        to "Wood Place"
     * akkanvdr: Changed title back to "Akkanvader"
     * cubybop: Added Japan region to description since the game has a Japan region warning
     * kollon: Credited CyberFront as manufacturer instead of Taito
     * raycris, rayforce, rayforcej, raystorm: Removed space after "Ray" in title
     * tcobra2: Co-credited Takumi as manufacturer
     * twinhawk: Co-credited Toaplan as manufacturer
     * dataeast/kingobox.cpp: Renamed driver to kingofb.cpp
     * taito/lgp.cpp, taito/ninjaw.cpp, taito/superqix.cpp, taito/taito_f3.cpp, taito/tnzs.cpp: Spacing cleanup, changed game driver
        comments to single-line comments
 * taito/taito_f3.cpp, taito/taitotx.cpp: Further manufacturer name/spacing cleanup
   - Other changes:
     * kof98um: Credited SNK Playmore as manufacturer instead of SNK
     * sinvzen, spceking: Removed trade entity from manufacturer name
     * orca/kyugo.cpp, toaplan/rallybik.cpp, toaplan/slapfght.cpp, toaplan/toaplan1.cpp, toaplan/twincobr.cpp, toaplan/wardner.cpp:
        Removed trade entity from Taito / Taito America manufacturer name
 * Fixed mame.lst
 * shikigama: Marked it as clone of shikigam
 * taito/arkanoid.cpp: Changed a comment to single-line
 * taito_l.cpp: Fixed "Fighting Hawk" capitalization in comments

-nec/pc6001.cpp: add screen set_raw, hookup 5.25 floppies for mkIISR machines [angelosa]

-nec/pc6001.cpp: hookup bus request, remove one level of indirection in rom loadings [angelosa]

New working clones
------------------
American Poker II (bootleg, set 5) [Hammy , Pinballarcadedruid]

-Tidied random stuff, including: [Vas Crabb]
 * akai/s1000.cpp: Put escaped Unicode characters in comments.
 * nec/pc6001_kbd.cpp: Use regular Yen symbol for name and character.
 * nec/pc8801.cpp: Template draw_bitmap on plot function type to avoid std::function construction.

-gstriker: Use full name of game and manufacturer [AJR]

Machines promoted to WORKING
----------------------------
Donkey Kong / Donkey Kong Jr. / Mario Bros. [R. Belmont]

-namco/dkmb.cpp: De-skeletonized the Cosmodog/Namco 3-in-1 Donkey Kong / DKJr / Mario Bros. [R. Belmont]
 * machine/intelfsh.cpp: Added support for the AMD 29LV160DT. [R. Belmont]
 * AI disclosure: Claude Fable 5 helped reverse-engineered the blitter.

-upd7810 and variants: rework HLT instruction behavior (#15702) [Devin Acker]

-ax80: subcpu uses the same internal ROM as maincpu; hook up subcpu and keys (#15701) [Devin Acker]

-vp101: Separated slash in manufacturer names with spaces (#15699) [James Charles Taylor]

New clones marked not working
-----------------------------
Magical Jack (VI 1.1C) [Pinballarcadedruid]

-nec/pc6001_kbd.cpp: hookup stop key to joy map command [angelosa]

-nec/pc6001.cpp: hookup tape play, stop and baud select commands [angelosa]

-seta/hanaawas.cpp: dumped MCU [Porchy, Hammy]

-hanaawasa: Fix player inputs [AJR]

-hanaawas & hanaawmh: Read inputs through MCU; add coin counters [AJR]

-seta/hanaawas.cpp: Further cleanup [AJR]

-drumsta: Preliminary ADSP hookup [AJR]

-adsp2100: Disassemble IDLE instruction (not emulated yet) [AJR]

New working systems
-------------------
George Scolaro ET532 [David Rand]

-machine/dp8390.cpp: implement internal loopback [David Rand]

Systems promoted to working
---------------------------
ADE Elettronica MK-83 [David Rand]

New working systems
-------------------
ADE Elettronica MK-84 [Enrico]

-ppccom: fix uninitialized variable that caused debug builds to crash. [R. Belmont]

-novation/drumsta.cpp: Add missing overrides [AJR]

-daifugo: Use synthetic IO MCU based on that of hanaawmh [AJR]

-nec/pc6001.cpp: 52 new dumps (#15704) [Angelo Salese]
 * hash/pc6001_cass.xml: rename and identify "amita" as "amidamu"
 * hash/pc6001_cass.xml: remove headon, part of AX-6 set

New working software list items
-------------------------------
pc6001_cass: 3D Asteroid Fire, Asteroid Escape, Bound Ball, Led Zone, Lode Runner, Magnetic Field, Miyuki the Shoubushi, Nana-chan
  no Kinjirareta Asobi, Pack'n Boy, PC-6000 Note No. 1, PonyCa 2 Game Series: Galac Convoy & Shooting Invaders, Pyramid II, Raita no
  Growing Up, Slender Island, Space Mouse, Star Destroyer, Tiny Golf, Ultra Yonin Mahjong, Zunou 4989 [Neo Kobe]
pc6001mk2_cass: Front Line, Galaxian, Jelda, Led Zone (mkII), Nana-chan no Kinjirareta Asobi (mkII), Professional Mahjong, Soreyuke!
  Kurukuru, Suidou Kozou, Zunou 4989 (mkII) [Neo Kobe]

New software list items marked not working
------------------------------------------
pc6001_cass: 1-Screen Programs, Eformn, Fruit Panic (v1.1), Fruit Panic Append, Genma Taisen, Holy Sword, Mystery House, Mystery
  House II, Ougon no Haka, Portopia Renzoku Satsujin Jiken [Neo Kobe]
pc6001mk2_cass: Aspic, Karuizawa Yuukai Annai, Kaze no Tani no Nausicaa, Lizard, Nobunaga no Yabou, Star Arthur Densetsu I: Wakusei
  Mephius, Star Arthur Densetsu II: Ankoku Seiun, Star Arthur Densetsu III: Terra 4001, Tritorn, Victorious Nine [Neo Kobe]
pc6001mk2_flop: Colony Odyssey Bouken-hen, Space Bluster FZ [Neo Kobe]
pc6001mk2sr_flop: Golf Island (66SR) [Neo Kobe]

-snk/neoprint.cpp: Move into snk/ folder, Hook up NEO-ZMC, Updates (#15106) [cam900]
 * Reduce literal tag usages and runtime tag lookups
 * Fix naming
 * Fix spacing
 * Suppress side effects for debugger read
 * Make some variables constant
   - machine/neo_zmc.cpp: Make NEO-ZMC as device

-bus/pc98_cbus: initial support for PC-9801-03 CMT interface [angelosa]

-sega/flashbeats.cpp: Added layout and promoted system to working. (#15672) [SpiralBrad]
 * cpu/h8/h8_refresh.cpp: Added H8/3006 / H8/3007 refresh controller compare-match timer device.
 * sound/scsp.cpp: Improved SDIR ("sound direct") emulation.
 * sega/dsb2.cpp: Implemented ROM banking.

Systems promoted to working
---------------------------
Flash Beats [SpiralBrad]

-sega/model1.cpp: Improved video and timer emulation. (#15642) [Francisco José García García]
 * Improved lightbanks, backdrop and specular highlights.
 * Implemented GLUE interrupt mask register.
 * Set p1 = p0 for type == 2 (triangle) degenerate polygons in push_object.
 * Inject initial NetMerc head tracker orientation on reset.
 * Persist the zmode-0 flat-z register across objects in a DL walk.
 * Use UART ready flags for IRQ3.
 * Implemented programmable timer for IRQ0, assuming similar behavior to System 32.
 * Select light parameter bank per polygon via flags bit 22.
 * Implemented specular lighting, gated by the GEO mode word.

-Re-applied reverted changes, cleaned up stuff. [Vas Crabb]

-Fixed syntax error. [Vas Crabb]

-nec/pc6001.cpp: narrow bus request to 256x192 when in VDG mode [angelosa]

-nec/pc6001_v.cpp: fix screen geometry in mkII+ text modes, fix width N,25 in pc6601sr [angelosa]

-nec/pc6001_v.cpp: cleanup border calculation [angelosa]

-nec/pc6001.cpp: implement 16K RAM option for pc6001 [angelosa]

-nec/pc6001_kbd.cpp: default typing is actually lowercase, also fix wrong shift + left scancode [angelosa]

-hash/pc6001_cass.xml: move sharrier and txevious2 to pc6001mk2_cass [angelosa]

-machine/dimm_spd.cpp: Don't respond on the I2C bus if size is set to empty. [R. Belmont]
 * machine/i2chle.cpp: Add overridable method so configured devices that don't wish to respond may (not) do so. [R. Belmont]
 * machine/mpc106.cpp: Fixed a bunch of issues with RAM mapping which combined to make imac trash MAME's heap. [R. Belmont]
 * apple/burgundy.cpp: Fixed a bunch of uninitialized variables and an inaccuracy in the DMA handling. [R. Belmont]
 * apple/imac.cpp: Report the correct sizes for the RAM DIMMs now that they're mapped properly by the mpc106. [R. Belmont]
 * AI disclosure: Debugging/tracing assistance by Claude Fable 5.

-sega/model1: Clip wireframe lines to the viewport (#15712) [Francisco José García García]
 * The wireframe rasterizer walked its Bresenham from raw projected coordinates. Those come from the unclipped projection, and a
    degenerate projection (z ~ 0 with the boot-time zoom still 0) yields inf/NaN, whose float->int conversion is undefined
    behaviour: x86 hosts get INT32_MIN where arm64 saturates and maps NaN to 0. wingwar generates such vertices while booting, and
    on x86 the resulting (INT32_MIN, INT32_MIN) pairs matched the two-distinct-vertices wireframe case and walked a ~2^31-pixel line
    with overflowing error terms - the gray screen boot lockup reported against GitHub PR #15597 (Windows only, and only when the
    below-HUD pass draws, since the above-HUD pass pushes no geometry there).
 * Before that rasterizer existed these quads went through the scanline filler, which fill_slope()/fill_line() clamp to the
    viewport, so the same garbage stayed harmless and bounded. Give the line rasterizer the same property: Liang-Barsky clip the
    segment to the viewport before walking it. In-view lines are untouched; wires that used to leak a few pixels past the viewport
    edge now stop at it like every other primitive. Attract snapshots of vf, vr, vformula, swa, wingwar and netmerc are
    pixel-identical to master apart from one such leak. Verified against the boot hang by mimicking x86 conversion semantics on
    arm64: hangs before, completes after.

New working clones
------------------
Fancy World - Earth of Crisis (set 2) [nnap]

-misc/ampoker2.cpp: consolidated driver into single file [Ivan Vangelista]

-nec/pc9801.cpp: fix bug with dedicated C-Bus PC-9801-03 overlay reads [angelosa]

-bus/pc98_cbus/pc9801_03.cpp: allow tape record and playback [Robbbert, Angelo Salese]

New systems marked not working
------------------------------
Lucky Joker [Hammy]

-astrocorp/astrcorp.cpp: fixed a couple of GFX glitches [Ivan Vangelista]

-unico/goori.cpp: enabled save state support [Ivan Vangelista]

-vsystem/pspikes_ms.cpp: fleshed out driver a bit [Ivan Vangelista]

-hash: Bulk converted direct redump links to the new project site. (#15716) [Angelo Salese]

-genie3: Add DMK floppy format and an initial software list [Dirk Best]

New working software list items
-------------------------------
Genie III CP/M 2.2XV3, 1.31 [Dirk Best]
G-DOS 2.1 [Dirk Best]
G-DOS 2.4 [Dirk Best]
CP/M 2.2a [Dirk Best]
NEWDOS/80 Games Disk 1 [Dirk Best]
NEWDOS/80 Games Disk 2 [Dirk Best]
NEWDOS/80 Games Disk 3 [Dirk Best]
NEWDOS/80 2.0A (with AGCAP) [Dirk Best]
NEWDOS/80 2.0A [Dirk Best]
NEWDOS/80 2.0A (with PELOT) [Dirk Best]
SCRIPSIT Word Processing (NEWDOS/80 2.0A) [Dirk Best]
NEWBASIC 2.1 and other BASIC software (NEWDOS/80 2.0A) [Dirk Best]

-All items provided by oldcomputers-ddns.org. [Dirk Best]

-nec/pc6001.cpp: fix kanji handling in pc6001mk2sr/pc6601sr [angelosa]

-nec/pc6001_v.cpp: improve address generator for VDG modes [angelosa]
 * fix mid-scanline attribute changes for eformn and txevious2

-GPL162xx refactoring milestone (#15694) [mamehaze]
 * added device types for the known types of GPL162xx chip
 * configured each of those devices with the correct RAM, and notes on other differences etc.
 * attempted to identify the CPU types of all the dumped sets based on expected RAM sizes and feature use
 * added stubs for a few things, with slight refactoring of existing code to prepare for future changes

-igs/dunhuang.cpp: used hopper_device [Ivan Vangelista]

-cirsa/neptunp2.cpp: Add Euro Bingo 7 (not working) (#15720) [ClawGrip]

New systems marked not working
------------------------------
Euro Bingo 7 (V8.0, CAA) [Victor Fernandez (City Game)]

-namco/ygv608.cpp: add manufacturer in longname [angelosa]

-nec/pc6001.cpp: move CGSW view handling in base pc6001 under PPI port C handling [angelosa]
 * fix tutankhm and turpin text display

-imagedev/floppy.cpp: hookup 3.5 single side single density floppy drive for pc6601 [angelosa]
 * formats/msx_dsk.cpp: add geometry for 3.5 SSSD
 * Fix pc6601/pc6601sr mounting of .dsk images

New software list items marked not working
------------------------------------------
pc6001mk2_flop: PC-6601 Nihongo Word Processor, PC-6601 Utility Disk [Neo Kobe]

-M68k: MMU fixes and updates [R. Belmont]
 * 68040 form of PTEST fixed and handled (previously didn’t decode correctly)
 * Fixed PFLUSH decoding so incorrect F-line traps don't occur
 * Indirect page descriptors write back U/M bits properly instead of potentially corrupting the page table
 * Reset now properly clears ITTx/DTTx
 * MMUSR now shown in the debugger to help track failed translations
 * PFLUSH on 68881/68030 now properly compare the ATC tag
 * Fixed typo causing misinterpretation of long-format descriptors
 * Indirect descriptors now are handled properly
 * PTEST on 68881/68030 properly handles levels shallower than the table depth
 * PMOVE to TTx now properly flushes the ATC
 * TC consistency check no longer throws exceptions on valid TC values with junk in the TI fields
 * MMU EA decoding now only accepts forms the real MMUs do
 * Added some guards against invalid page tables
   - M68k: FPU fixes and updates [R. Belmont]
 * FPU opcode now validated before doing any EA calculations
 * 68040-specific FSxxx/FDxxx instructions implemented
 * 68881 transcendentals implemented and verified
   - M68k: cycle counting overhauled for 68030 and 68040.  Timings are significantly better but still inaccurate, especially on
      68040. [R. Belmont]
   - 3rdparty/softfloat3: Fixed several errors in the transcendental helpers, including wrong parameter order [R. Belmont]
   - AI disclosure: MMU and FPU debug/tracing and fix planning assisted by Claude Fable 5.  Cycle count refactor assisted by GPT 5.6
      Terra.
   - Testing: A/UX 3.1.1 now boots properly on a range of 68030 and 68040 machines (with some driver changes not included here).  It
      previously was impossible to boot on 68040.  A generated Lua boot script hijacked 68030 and 68040 Macs to run a variety of
      synthetic FPU and MMU tests.  Tested taitojc, Marathon, Wolfenstein 3D, and Jigsaw Puzzle on Mac OS.  Tested NeXTSTEP on 68030
      and 68040.  Tested HP/UX m68k.  Tested funkball on x86 to verify x87 is unhurt by the softfloat3 helper fixes.

-video/zeus2: Fix Cruis'n Exotica road rendering (#15719) [JvM]
 * video/zeus2.cpp: Fix road/near-horizontal surfaces being culled. [mourix]
   - The "Fast HSR Removal" pre-cull tested only the view-space Z of the polygon normal, an orthographic facing test applied before
      the vertex transform. For near-horizontal surfaces such as the road, this sign flips and culls quads that actually face the
      camera, resulting in portions of the Cruis'n Exotica road being missing.
 * video/zeus2.cpp: Add near-plane clipping and perspective-correct texturing. [mourix]
   - Quads straddling the near plane were rejected outright, which dropped the nearest road segment in Cruis'n Exotica. Clip them
      against the near plane instead, as the Zeus 1 renderer does, keeping the visible portion.
   - Textures were U/V interpolated linearly in screen space, which warped the geometry straddling the screen edge. Now carry U/Z,
      V/Z and 1/Z per-vertex and divide per-pixel so texturing is perspective-correct.

-plan80: Driver overhaul [AJR]
 * Correct keyboard, filling in missing key names
 * Use 8255 device for keyboard strobe output and modernize keyboard scanning
 * Add XTAL-based timing parameters for CPU and screen

-machine/s97801.cpp: Emulated the Siemens 97801 terminal. (#15697) [David Rand, Plamen Mihaylov, Udo Moeller]
 * This is the block terminal of the Transdata 9780 family and the SINIX console for the PC-MX2.  Low-level emulation throughout.
 * machine/s97801_kbd.cpp: Emulated the detached keyboard for the Siemens 97801 terminal. Currently using the 97801-111
    International layout.
 * bus/rs232/s97801.cpp: Added an RS-232 peripheral wrapper for the Siemens 97801 terminal.
 * siemens/s97801.cpp: Added a runnable system wrapper for the Siemens 97801 terminal.

New working systems
-------------------
Siemens 97801 (terminal) [David Rand, Plamen Mihaylov]

-xerox/xerox820.cpp: Fixed the 820-II standard-keyboard default (#15710) [David Rand]
 * The standard-keyboard 820-II machines (x820ii, x820ii5, x820iis) defaulted to the v5.0 "RX" monitor, whose firmware decodes
    keyboard input through the u36 position->char table for the low-profile keyboard and does not work with the standard ASCII
    keyboard.  They now default to v4.01, the latest firmware that drives the standard keyboard directly.
 * x820iilp needs its own ROM_START so it can keep v5.0 for its low-profile keyboard (it cannot share x820ii once that defaults to
    v4.01); the 16/8 family already defaults to v5.0.

-sega/model1.cpp: Return the latched count when reading a stopped timer (fixes vf hair physics regression from #15642). (#15715)
 [Francisco José García García]

-igs/dunhuang.cpp: Improved inputs a bit. [Vas Crabb]
 * Also cleaned up some random stuff.

-layout/s97801.lay: Reference screen by tag, don't bother with screen-only view. [Vas Crabb]
 * MAME generates screen-only views anyway.

-nec/pc9821.cpp: identify unused gaiji part as SRAM in pc9821ap2 [angelosa]
 * gets rid of set the software dip at every boot after the first
 * reduces number of manual setups for .hdi boots out of being mostly in 256 bps format
   - BREAKING CHANGE: this also makes pc9821ap2 default to 5 MHz GDC, for most uses it's advised to change that to 2.5 MHz in setup
      menu.

-namco/namcos23.cpp: Added unemulated camera flag to games that use the namcoss23_gmen_state class (#15705) [James Charles Taylor]

-apple/macii.cpp: Fixes to make A/UX work on IIx, IIcx, IIci, IIsi, and SE/30. [Plamen, R. Belmont]
 * Hook up the SCSI IRQ.
 * Map the pseudo-DMA to its entire range.
 * Move the default HDD to SCSI ID 0, which matches reality and what A/UX hardcodes.
   - apple/macscsi.cpp: Fixes to cooperate with A/UX's disk driver [Plamen]
 * A/UX splits pseudo-DMA transactions up instead of doing them contiguously like Mac OS.  This was causing macscsi to lose data on
    reads.
   - AI disclosure: Plamen's original patch was assisted by Claude Opus 4.8.  This CL was edited by RB to eliminate changes that
      weren't necessary.

-bus/pc98_cbus/sb16_ct2720.cpp: hookup joy port [angelosa]

New working software list items
-------------------------------
pc98: Wolfenstein 3D [Neo Kobe]

-nec/pc98_sdip.cpp: fix DSW1 and 2 legacy handling [angelosa]

-720: fix factory reset eeprom (see broken hiscore table), set initial joystick angle to 90 [dink]

-Rolled up three fixes: [Vas Crabb]
 * cpu/mips3/mips3drc.cpp: Fixed two issues with SC instruction: fixed failure to store full sign extended result (GitHub #15730);
    fixed behaviour when Rs and Rt are the same register.
 * bus/gio64/newport.cpp: Fixed passing xmap/cmap revision as clock when instantiating devices (GitHub #15731, this is another
    regression from the poorly considered bulk changes in d066f16134121f02a2fd9716582a17f8ee66f6d5 that I missed when trying to fix
    the damage).  Also got rid of some unnecessary devcbs.
 * sega/model1.cpp: Don't set palette format when palette write handlers shouldn't be used.  Since GitHub #15597
    70e0c03dadafe7e30b6ccc116e885aeb026e60d8, palette RAM decoding is done in driver glue code.

-cpu/mips3/mips3drc.cpp: Fixed SCD when Rt and Rs are the same register, too. [Vas Crabb]

-spectrum_cass.xml: Added 3 working items (#15728) [ArcadeShadow]

New working software list additions
-----------------------------------
Die Feuerfaust (The Fist of Fire) (The Adventure Workshop, two sided) [Spectrum Computing]
Star Wars (Erbe Software) [Spectrum Computing]
The Fifth Quadrant (Dro Soft) [Spectrum Computing]

Merged sets
-----------
Championship Jet Ski Simulator - Easy + Championship Jet Ski Simulator - Hard [ArcadeShadow]
The Hollow - Text Version + The Hollow - Graphic Version [ArcadeShadow]
The Hollow - Text Version (set 2) + The Hollow - Graphic Version (set 2) [ArcadeShadow]

-Metadata cleanups and fixes: parent/clone relationships, descriptions, publishers, years and languages info. [ArcadeShadow]

-debugger/debuggdbstub.cpp: Add rp2a03g as m6502 alias to enable NES/Famicom debug (#15727) [Michael Billington]

-Sinclair QL Microdrive working (#15646) [Sylvain Glaize]
 * Read, Write and Format are working with Minerva and JS ROMs at least.
 * Works with QLAY microdrive images.
 * No influence on IF1 Sinclair Interface, which is only stubbed.
 * Started as a continuation of previous work but then changed the internal representation to allow format/write.
 * Also did some cleaning/upgrade to the driver (but did not touch the serial communication and clock parts of the zx8302)

-asmjs: Made buildable with latest emscripten 6.0.2 -- [holub, Steve Elbows] (#15663) [holub]

-compis.xml - Add 36 new dumps (#15717) [Rebecca Wallander]
 * ## New working software list items (compis.xml) Användbara procedurer i Pascal 1.5 (nät/skollicens) [FakeShemp] Compis Pascal
    3.12 [FakeShemp] CompisNet 2.0 (version 5314) [FakeShemp] CompisNet II Plus (CPMBOOT, version 7244) [FakeShemp] Datorn i början
    (enanvändare) [FakeShemp] Enter 1.3 (demo, nät/skollicens) [FakeShemp] HarmoniEtt 2.0 (gamma) [FakeShemp] HarmoniTvå 2.0 (alfa)
    [FakeShemp] Skriv lätt, skriv rätt (version 6401) [FakeShemp] Spara-låna-vinna (enanvändare) [FakeShemp] Systemskiva I (version
    6245) [FakeShemp] Systemskiva 2.0 [FakeShemp] Systemskiva för hårdskiveenhet 2.01 (version 6335) [FakeShemp] Systemskiva för
    hårdskiveenhet 1.00 (version 7242) [FakeShemp] Turbo Pascal 3.01 [FakeShemp] Uppgraderingspaket 1 för Compis I (version 6262)
    [FakeShemp]
 * ## New not working software list items (compis.xml) CompisNet IB 2.01 (version 6191) [FakeShemp] Skatteprogram S91 [FakeShemp]
    Compis Kommunikation 1.2 [FakeShemp] CompisNet I PASBOOT med nyteknik [FakeShemp] Distributionskunskap (version 8014)
    [FakeShemp] GraphMaster 2.0 (nät/skollicens) [FakeShemp] IBM DOS 3.00 [FakeShemp] Intresse-fallenhet-yrkesval (enanvändare)
    [FakeShemp] Kemi 1 (nät/skollicens) [FakeShemp] Matematikverkstad I (beta 19860606) [FakeShemp] Mät absorption (nät/skollicens)
    [FakeShemp] Mät halveringstid (nät/skollicens) [FakeShemp] Mät med fotoceller 1.0 (enanvändare) [FakeShemp] MätEtt
    (nät-skollicens) [FakeShemp] Mätvärdesinsamling 1.0 (alfa, enanvändare) [FakeShemp] ProfiRange (version 6181) [FakeShemp]
    ProfiText: Textbehandling med Compis (version 6181) [FakeShemp] Skriv lätt, skriv rätt (version 8101, ekonomiredaktionen)
    [FakeShemp] StatEtt (beta, nät/skollicens) [FakeShemp] Tabba lätt (version 7235) [FakeShemp]

-m68k: Even more fixes for A/UX [R. Belmont]
 * The 68020+ bf* instructions all had a bug where they could trash the next byte in memory
 * Fixed disassembly of PMOVE
 * Consolidated handling of unimplemented coprocessor instructions
   - apple/djmemc.cpp: A/UX wants the memory controller registers to read back or else it blows up [R. Belmont]
 * A/UX 3.1.1 now boots to multiuser on macqd800, macqd610, and macqd650
   - apple/scsidma.cpp: As theorized long ago, A/UX uses full real DMA mode.  Implemented it. [R. Belmont]
 * A/UX 3.1.1 now boots to multiuser on maciifx
   - apple/maciici.cpp: Hooked up SCSI IRQ and DRQ to VIA2 to try and get m68k Linux unstuck, but no go. [R. Belmont]
   - AI disclosure: Claude Opus 4.8 assisted with the bug hunting.

-debugger/osx/debugview.mm: Fixed a race condition and a QoL issue. [R. Belmont]
 * The Cocoa debugger could push stale scroll position information back to the core.  This manifested most often as the disassembly
    view refusing to update after stepping into a large PC move (JSR/JMP/TRAP or an IRQ gets taken), or the debugger console not
    scrolling automatically.
 * QoL: disassembly views that track curpc (like the one in the main debugger window) should not restore to the saved PC from the
    .CFG file.  Fixes the disassembly view not showing where the real PC is on debugger startup.
   - AI disclosure: the race condition was traced with assistance from Claude Fable 5.

-dataeast/deco32.cpp: Split and renaming due to hardware differences, Updates (#15726) [cam900]
 * dataeast/*: Split driver due to hardware differences
   - captaven* into dataeast/captaven.cpp
   - fghthist*, tattass*, nslasher* into dataeast/fghthist.cpp, Fix naming of machine configuration related name of fghthist and
      clones
   - dragngun*, lockload* and clones into dataeast/dragngun.cpp
 * dataeast/deco156.cpp: Rename driver to dataeast/hvysmsh.cpp
   - Split driver state via hardware configurations
   - Fix namings
   - Reduce duplicates
   - Fix metadata via in-game version information screen and title screen
   - Fix notes for version information screen
 * dataeast/backfire.cpp, dataeast/hvysmsh.cpp, dataeast/wcvol95.cpp, dataeast/simpl156.cpp: Fix bitmap fill behaviour (restricted
    into cliprect)
 * Fix namings of dataeast/deco156_m.* into dataeast/deco156.*
 * dataeast/simpl156.cpp: Reduce duplicates

-xerox/xerox820.cpp: mark bigboard5 as working (#15725) [David Rand]
 * The Big Board 5.25" variant boots CP/M from the Xerox 820 software list (the machine already inherits flop_list from xerox820()).
    Verified with the "cpm" entry (130s22100ds_cpmrev3.imd, 40/18/128 FM): the ROM monitor B command loads CP/M, DIR reads the
    directory, and a Ctrl-C warm boot reloads the CCP and returns to the prompt.
 * No 5.25" media was previously present in the tree to exercise it, which is likely why the flag was never revisited.

-bus/rs232/auto3a: add an auto-baud, auto-framing ADM-3A terminal (#15557) [David Rand]

-paperboy: coin3 is service coin [dink]

-nscsi/cd.cpp: Change interpretation of play position slightly so games with redbook audio play it again. [R. Belmont]

-src/mame: bulk replace raw demo sound strings into the DEF_STR equivalent [angelosa]

-cave/cv1k.cpp: identify some inputs in mmmbanc [angelosa]

-nec/pc9801.cpp: overhaul dip switch settings [angelosa]

-nec/pc8001.cpp: hookup expansion slot [angelosa]

New working software list items
-------------------------------
pc8001_flop: NRTDRV88 for JMB-X1 [Bookworm]

-dataeast/deco16ic.cpp: Made tilemap register/config into structs, Updates (in related drivers): (#15735) [cam900]
 * Made some variables const educed duplication, improved names.
 * Suppress side effects for debugger reads.
 * dataeast/deco16ic.cpp: Fixed register usage, fixed mark tilemap dirty behaviour.
 * dataeast/backfire.cpp: Fixed speaker configurations (each screen paired with mono speaker).
 * dataeast/dreambal.cpp: Fixed notes (tilemap generator is 141).
 * dataeast/mirage.cpp: Reduce unnecessary memory region.
 * dataeast/sshangha.cpp: Fixed logging.

-pacman/pacman.cpp: Added an additional bootleg of Ms. Pac-Man from Triunvi. (#15739) [ClawGrip]

New working clones
------------------
Ms. Pac-Man ('Made in Greece' Triunvi bootleg) [Davidc96]

-sega/model1_v.cpp: Skip degenerate moire direct polygons. (#15738) [Francisco José García García]
 * wingwar's display list carries a constant record with all four vertices on one point; the flat-quad filler painted it as a stray
    dot at the viewport centre.

-dataeast/karnov.cpp: Cleaned up code. (#15737) [cam900]
 * Improved names, made some variables const, made some data manipulation (or lack thereof) clearer.

-dataeast/deco146.cpp: Made sound latch pending flag readable. (#15736) [cam900]
 * Also suppress side effects for debugger reads, and made some variables const.
 * dataeast/captaven.cpp, dataeast/dblewing.cpp: Use sound latch pending flag from ioprot device (dataeast/deco104.cpp,
    dataeast/deco146.cpp).

-sequential/sixtrak.cpp: Improved accuracy: (#15700) [m1macrophage]
 * Corrected the range of the pitch wheel.
 * Added VCF capacitor jitter. Corrected the range of VCO capacitor jitter.
 * Increased the overall audio volume.
 * Added some key bindings to make it possible to play chords with the computer keyboard.
 * Updated the NVRAM, since change first two changes require a tuning and pitch wheel centering.
 * Added a warning in the layout if outdated NVRAM content is detected.

-bus/pc98_cbus/sb16_ct2720.cpp: convert CT1741 from ISA variant as standalone device [angelosa]

-bus/isa/sb16.cpp: concile with the new CT1741 DSP core [angelosa]

-plugins/autofire: Don't reload settings on a soft reset. (#15733) [Devin Acker]
 * Work around "start" callbacks actually being called on reset.

-Started applying changes necessary to migrate to 64-bit offs_t. [Ryan Holtz, Vas Crabb]
 * Mostly cribbed from GitHub #15295 with some additional cleanup and conflict resolution.

-nec/pc9821.cpp: remove SB16 left-over lambda [angelosa]

-dataeast/vaportra.cpp, dataeast/darkseal.cpp: Fix naming conflict with palette and palette RAM (#15746) [cam900]

-tutor: fix array oob access [hap]

-dataeast/deco16ic.cpp: Made m_control an array rather than a very small memory share. (#15743) [cam900]

-dataeast/decbac06.cpp: Cleaned up code: (#15744) [cam900]
 * Improved naming, reduced duplication, made some variables const.
 * Removed a driver name comparison.
 * Turned RAM areas into memory shares.

-dataeast/dec8.cpp: Suppress side effects for debugger reads, reduced literal tag usage. [cam900]

-dataeast/actfancr.cpp: Made some variables const. [cam900]

-srcclean across the tree. [Vas Crabb]

-Adjust some software lists: [Vas Crabb]
 * compis.xml: Demoted various items due to undumped keys or being listed as not working.
 * a7800.xml: Be consistent with other software lists for "Mazy 2".
 * leapfrog_leappad_cart.xml: More consistent transliteration of Japanese dates.
