Homepage - mameworld.info/mameinfo
E-Mail - [email protected]
Visit ARCADE AT THE MOVIES
0.281GIT - New games: Ultraman Club - Lucky Numbers, Waku Waku Pajero and Y-Unit Test ROM (v1.40) - New Working games: Allien Attack (Game FBV2, ver.T), Animal House (V1.0, set 1), Animal Wonders (ver A900 66), Animal Wonders (ver A900, bootleg), Bio-Hazard Battle (scrambled bootleg of Mega Drive version), Cherry Bonus III (ver.5.1), Cherry Bonus III (Ziogas V4.1 hack, set 1), Cherry Bonus III (Ziogas V4.1 hack, set 2), Cherry Master (bootleg, Game FB55 Ver.2), Cherry Master (ver.4, set 2), Crazy Bonus 2002 (Ver. 1, dual game), Cuty Line Limited (ver.1.30), F-16 Super 8 Lines, Golden Regular (version 388/2000), Hamburger House, Hamburger House 9, Hard Drivin's Airborne (prototype, rev 2.7), Joker Master 2000 Special Edition (V512/513), Joker Master 2000 Special Edition (V515), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 1), Poker Master (ED-1993, dual game, set 1), Poker Master (ED-1993, dual game, set 2), Si Se 7 (4-colors 7's), Super 97-2 (Witch Bonus), Super Real Magic (V6.3) and Win Cherry (ver 0.16 - 19990219) - New Non-Working games: Bahia, Bare Knuckle III (Conny bootleg of Mega Drive version), Big Jackpot, Bullet Mark, Burning Rubber (Amcoe), Contra (Conny bootleg of Mega Drive version), Criterium 75, Disc, Disc Bonus, Disc Jackpot, Doppelstart, 'Gunstar Heroes / Snake Rattle n' Roll / Joe & Mac (Conny bootleg of Mega Drive versions)', Hou Ye Leyuan (S103CN), Joker Poker (Merkur), Jumbo Jumbo Fun, Love Generation (Power Link), Macao, Premium Double Eight (V5.3FA), Rasant, Sanguo Lieche (880103 1.6 CHINA) and Side Pocket (Conny bootleg of Mega Drive version) - New clones: All American Football (Tecmo, Japan), Asteroids 1981 (Tetris + Cherry Master with space graphics), Battle Shark (US, older), Blue Hawk (Japan, NTC license, set 2), Cherry Bonus III (Micronic v1.2, hack), Cherry Bonus III (Reel Magic 7 bonus, set 1), Cherry Bonus III (Reel Magic 7 bonus, set 2), Cherry Master I (ver.1.01, spanish, CODERE, set 1), Cherry Master I (ver.1.01, spanish, CODERE, set 2), Cherry Master I (ver.1.01, spanish, CODERE, set 3), Cherry Master I (ver.1.01, spanish, Dyna), Florida Skill Deluxe 2K (FBV2 ver.T), Florida Skill Deluxe 99 (FBV2 ver.T), Hacha Mecha Fighter (bootleg with Raiden sounds), Joker Master 2000 Special Edition (V512), Jumbo Jumbo, King Fruit (VZ 1.04), Lonestar Roundup (set 1), Lonestar Roundup (set 2), Looping (US, set 3), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 2, Macedonia), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 3), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 4), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 5), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 6), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 7), Miss Bingo (Crazy Bonus DB, dual game), Miss Bingo (Poker Master HW, dual game), Monster Maulers (ver UAA), New Lucky 8 Lines (set 19, W-4), New Lucky 8 Lines (set 20, W-4, 58%), Pack System (Game FB55 ver.2, encrypted), Skill Master (Ver.fst v3.0), Skill Master (ver.fst v5.0), Space King Part II (Space Invaders II bootleg), Super Reel Magic (ver.6.3.0, set 1), Super Reel Magic (ver.6.3.0, set 2), Super Spacefortress Macross / Chou-Jikuu Yousai Macross (bootleg with Raiden sounds), Tetris + Cherry Master (unencrypted bootleg, set 1) and Tetris + Cherry Master (unencrypted bootleg, set 2) - Removed games: 'UFO Catcher 7 Second' - New drivers: amcoe_au1250.cpp, banpresto_bpsc68000.cpp and criter75.cpp - New devices: 5080pa, amgda, intel_8256, konami_twin16_video, mb8795, pcat512me, spi_sdcard, sst_39sf020, ubpnic, zxbus, zxbus_adapter, zxbus_nemoide, zxbus_neogs, zxbus_slot and zxbus_smuc - New Clrmame: https://mamedev.emulab.it/clrmamepro/#downloads - CPU . ARM7: Removed the recompiler that had never been completed (arm7\arm7.cpp) . Dynamic Re-Compiling . drcbec: Improved behaviour for float-to-int conversion. Apply floating point rounding mode to arithmetic (cpu\drcbec.cpp). . drcbex86: i686 has no red zone (cpu\drcbex86.cpp) . drcbex64 . Slightly optimised flag calculation for some variants of the multiply instructions (cpu\drcbex64.cpp). . Fixed some cases where GETFLGS would produce incorrect results when the destination is not a UML register permanently assigned to a host register (cpu\drcbex64.cpp). . drcbearm64 . Added missing source load for optimised ROLINS case. Fixes bad ROLINS results in some cases where the result is in memory. Hopefully fixes Hyperstone E1 systems corrupting SR on absolute jumps (e.g. kdynastg failing to boot) (cpu\drcbearm64.cpp). . Optimised shift and rotate operations. Don't calculate carry flag when not requested. Don't calculate zero and sign flags when only carry is requested. Avoid branches when calculating carry, optimise for non-zero shift. Improved strategy for selecting working registers (cpu\drcbearm64.cpp). . Implemented float-to-int conversion using rounding mode. Also optimised code generation for UML ROL (rotate left) and slightly optimised carry flag calculation for left shift (save one instruction) (cpu\drcbearm64.cpp). . Added NEON vector register assignments to the header comment (cpu\drcbearm64.cpp). . Fixed some cases of 32-bit operations not clearing the upper bits of a UML register (there are still a few remaining). Optimised unordered flag test - only the V bit needs to be tested. Fixed rounding mode dispatch for FTOINT (cpu\drcbearm64.cpp). . Apply floating point rounding mode to arithmetic (cpu\drcbearm64.cpp). . Improved code generation a bit: Avoid unnecessary operand loads for add/subtract operations where both sources are identical. Improved code generation for rotate through carry with immediate shift count and/or immediate zero source (cpu\drcbearm64.cpp). . UML . Added a couple of simplification rules. ADDC's inputs are commutative and TEST with an immediate zero operand effectively ignores the other operand. Got rid of a redundant assignment (cpu\uml.cpp). . Added simplification rules for FFRINT and FFRFLT (cpu\uml.cpp). Added a simplification rule for pathological cases of SEXT (cpu\uml.cpp). Added some simplification rules for multiply and divide (cpu\uml.cpp). . Fixed potential assertion failure when a degenerate rotate through carry is converted to a move (cpu\uml.cpp). . drcumlsh . Removed helpers for generating the unimplemented JMPH instrcution. Trying to use it would cause a compile error (cpu\drcumlsh.h). . Use "src" rather than "src1" if there's only one source operand (cpu\drcumlsh.h). . Doc . Documented the most common DRC UML integer arithmetic and logical instructions. Documented some UML floating point arithmetic instructions. Also replaced mathematical symbols for Boolean algebra with less desirable C operators as they were upsetting pdflatex (docs\source\techspecs\uml_instructions.rst). . Documented more DRC UML floating point instructions (docs\source\techspecs\uml_instructions.rst). Documented several DRC UML shift/rotate instructions (docs\source\techspecs\uml_instructions.rst). Documented the DRC UML SEXT instruction (docs\source\techspecs\uml_instructions.rst). Documented the DRC UML integer multiplication and division instructions (docs\source\techspecs\uml_instructions.rst). . Documented DRC UML rotate through carry instructions (docs\source\techspecs\uml_instructions.rst). - SOUND . Konami 053260 KDSC: Added TODO about reverse-engineered pan LUT. The pan LUT is mentioned in the reverse-engineered based on work by Furrtek: https://github.com/furrtek/SiliconRE/blob/master/Konami/053260/k053260_schematics.PDF . Sega 315-5313 Megadrive VDP: Acknowledge irqs only if enabled. Fixes regressions with (MESS) chukrck2 & d_titov2. Delay VINT regular triggers. Fixes (MESS) mazinsagj hang regression (video\315_5313.cpp/h, hash\megadriv.xml). . SN76496: m_sega_style_psg was wrong way around. Fixed recent regression with initial period. Fixes megatech.cpp games have a loud noise in one of the sound outputs (ID 09258). Whitespace cleanup. 'ready state' variable was missing from savestates. Initial volume is 0xf on Sega PSG. No need to savestate volume table. Only write ready pin devcb if ready pin changed, no need for in_noise_mode function and added pinout diagram to h file (sound\sn76496.cpp). . Yamaha YMF271 OPX: Update stream before reading status registers and fixed a performance regression (sound\ymf271.cpp). Note: Performance regression was from MAME 0.195 (Allow 4 channel output...). It was clearing the complete mix buffer at each stream_update, instead of only clearing amount of samples, making seibuspi driver boot-up sequence about 2.5 times slower. - DEVICE . Flash ROM: Added SST_39SF020 and fixed sector size for SST_39SF0*0 (machine\intelfsh.cpp) . Floppy/PC Harddisk . Allow images loaded from software lists to be write protected (imagedev\floppy.cpp). Set m_mon to 1 (motor off) in constructor (imagedev\floppy.cpp). Fixes (MESS) mtu130 crashes MAME, if you try to load a software-list item that is missing (ID 09005). Fixes (MESS) LSI m3 crashes when attempt to use missing disk (ID 09255). . Basic fix for pc_chd support in imgtool. Take ownership of stream in pc_chd_image_open. 'imgtool::image::internal_open' passes an rvalue reference to the stream to the 'open' function of the image format module. It expects the 'open' function to take ownership if it keeps a reference to the stream. If 'open' does not do so, the 'stream' is going to be destroyed at the end of 'internal_open'. 'pc_chd_image_open' fails to take ownership, yet it persists a reference to the stream as part of 'info->hard_disk'. This causes an use-after-free condition. Correct determination of total sectors of a FAT volume. The number of total sectors of a FAT volume is stored either in the 16-bit word at offset 19 or, if that word is zero, in the 32-bit word at offset 32 instead. The 32-bit word is not a high word to build a 48-bit value in conjunction with the 16-bit word at offset 19, but it supersedes it (modules\fat.cpp and imgtool\modules\pc_hard.cpp). . Correct recalibrate steps for Intel N82077 FDC. As documented in the datasheet it should be 80 for this FDC (machine\upd765.cpp). Recognize more file types (formats\fs_prodos.cpp). . Added a default implementation for 'supports_save'. Since the default implementation of 'save' is a stub that always fails, it makes sense to also add a default implementation of 'supports_save' that returns 'false'. That way, there's one fewer method that needs to be implemented for read-only image formats. Removed the now-redundant implementations in concrete format classes (formats\flopimg.cpp). . I2C Memory: Fixed (MESS) later Acclaim sport games fails I2C checks during POST (sega\megadriv.cpp) (GitHub #13998) . Intel 8251 USART: Don't do binary math on bool. Removed unneeded calc_parity function (machine\i8251.cpp). . Intel 8256AH Multifunction microprocessor support controller: Added Intel 8256 MUART. Don't do binary math on bool. Removed unneeded calc_parity function. Small cleanup (machine\i8256.cpp). . Konami 001006 Texel Unit: Fixed save state support. Added save state registration and fixed initialization for bilinear flag. Use fixed sized integer for device selection (konami\k001006.cpp). . Konami 007121 Video Controller: Use callback for sprite color bank/code bank and moved global x offset into configuration. Renamed set_spr_dx to set_sprite_offsets similar to how these displacement functions are named on other konami chip devices (konami\k007121.cpp). . Konami 053936 PSAC2 tilemap generator: Reduced duplication and added notes about emulation deficiencies. Updated notes based on reverse-engineering by Furrtek. Also cleaned up code (video\k053936.cpp). . Konami 056832 Tilemap Generator: Removed duplicate function . MagicEyes VRender0: Updates and cleanups (machine\vrender0.cpp) . MOS 6522 VIA: Changed timer1 count=0 change from MAME 0.277 to only when in continuous mode (machine\6522via.cpp). Fixes several Vectrex games hang MAME (ID 09249). . National Semiconductor INS8250/NS16xxx UART: Avoid setting data frame when bit encoding doesn't change (machine\ins8250.cpp) . SNK68 Sprites: Added flipscreen variable to savestates (other vars are configuration) (shared\snk68_spr.cpp) - 3x3puzzl.cpp: Moved videoram DMA out of screen_update - alpha68k_n.cpp: Small cleanup to gamelist spacing. Only enable transparent color to Super Stingray. Fixes also kyros and kyrosj seems to have two graphical problems on the last level of the game (stage 5) (ID 01148). - amusco.cpp: Fixed colors - coinmstr.cpp: Small cleanup - crystal.cpp: Tidied up driver a little. Added lamp outputs used by Office Yeoin Cheonha and Urachacha Mudaeri and fixed button order/names for Urachacha Mudaeri. - ddenlovr.cpp . Fully separate emulation from Dynax driver (dynax\hanafuda.cpp). Eliminated the intermediate bitmap from Hanafuda Hana Tengoku (Japan). . Added DIP switch locations for Super Hana Paradise. Improved DIP switch labels for Hanafuda Hana Gokou. Fixed DIP switch labels and added locations for Mahjong Dai Touyouken and Return Of Sel Jan II. . Credit limit should be multiplied by coin rate for Hanafuda Hana Gokou, Mahjong Dai Touyouken and Return of Sel Jan II. - ddenlovr.cpp, dynax.cpp and royalmah.cpp: Improved DIP switch labels for non-working mahjong games based on manuals (dynax\mjdipsw.h) - decocass.cpp: Small cleanup. Removed coin NMI and watchdog from screen_update. Correct watchdog enable and hook up flip screen and removed some tag lookups. - djmain.cpp: Increased screen width. Removed tag lookups. Added more LED outputs and README. Enable MACHINE_SUPPORTS_SAVE flag. Use generic gfx decode layout. Use std::swap for swap layer. Make some variables constant. Fixed namings. Added notes. - dynax.cpp: Upgrade some optional devices to required devices (dynax\dynax.h) - es9501.cpp . Started fleshing out the driver. Added preliminary sprite drawing routine (disabled for now). Enabled sprites so they can be checked more easily. Hookup irq source/mask, added missing layer and fixed palette reads. Minor maintenance work (shorthand variable types everywhere, save state support and comment updates). . Handcrafted EEPROM for Star Ball. Added inputs for Special Dream 9 and Star Ball. Fixed 'Dream 9 Flower' irq regression. - f1gp.cpp, gstriker.cpp and tail2nos.cpp: Hook up RS232 to F-1 Grand Prix, Grand Striker and Tail to Nose. - fortune1.cpp: Clean up some of the rot - fromance.cpp and fromanc2.cpp: Use standard mahjong matrix - goldstar.cpp . Driver improvements. Fixed/improved hopper support to the recently supported games/sets. Added new functions to the PPI 8255 to allow hook the hopper. Changed some default DIP switches to get the hopper limit high. Correct notes. Some minor clean-ups. Works on extra lamps support. Some inputs fixes. Fixed missing EoF. Added technical and games notes, minor clean-ups. Changed DIP switches banks #1 & #2 polarity to cherry master sets. A lot of work on memory map, registers and inputs. . Rearranged inputs and created machine drivers for the A900/animalw series. Fixed the horrible noise on the animalw, animalwbl and lucky8t due to use of AY8910 instead of SN76489. . Added hopper support to alienatt, animalhs, animalhsa, animalw, animalwbl, cb3, cb3a, cb3b, cb3c, cb3d, cb3e, cb3f, cb3g, cb3h, cb3s51, chryglda, chthree, cmaster, cmasterb, cmasterbv, cmasterc, cmasterd, cmastere, cmasterf, cmasterg, cmasterh, cmasteri, cmasterj, cmasterk, cmasterl, cmezspin, cmezspina, cmezspinb, cmfun, cmv4, cmv4a, cmv4zg, cmv4zga, cmv801, cmwm, crazybon, crazybonb, cutyline, cutylinea, cutylineb, goldstar, f16s8l, goldstbl, hamhouse9, jkrmast, jkrmasta, luckylad, magodds, magoddsa, magoddsb, match98, moonlght, moonlghta, moonlghtb, moonlghtc, nc96 (+clones), ncb3, nfb96 (+clones), pkrmast, pkrmasta, pokonl97, schery97, schery97a, skill98, super972 and wcherry. . Added hopper support to machines amcoe1 (+amcoe1a), amcoe2 (+nfm (+amaztsk)) and wcat3 . Improved the lucky 8 lines 1P control panel. Assigned 1P control panel for clones f16s8l and super972. Added stop buttons to clones lucky8b and lucky8l. Fixed Lucky 8 Lines reel misalignment in Double-Up mode. The viewport is now focused on the active reels tilemap and the inactive ones are hidden. . Added hopper support to chryangl set. Forced DSW to Hopper Limit 1000. Decoded the bipolar PROMs, fixed planes and get correct colors for the games Cherry Angel (set 1) and Cherry Angel (set 2). . jkrmast improvements: Added hopper support. Inputs and DIP switches. Decoded the bipolar PROM and fixed colors. Added reels stop buttons. Fixed title tilemap/scroll bug and DIP switches. Reworked the screen update to take rid of the boolean states toward a real video register for Joker Master. Removed the imperfect graphics and imperfect colors flags to all the Joker Master sets. . pkrmast improvements: Added hopper support. Added/Fixed outports. Reworked Inputs. Reworked and fixed DIP switches banks. Added defaults to the DIP switches. Added sound support. Fixed missing ports. Reworked I/O portmap. Decoded the bipolar PROMS. Fixed colors and coinage. Added 2x PPI 8255 support and eliminating the individual ports. Added reels stop buttons. . Fixed cmv4 hopper DIP switches polarity. Added Animal House button-lamps control panel. Added remaining lucky8t (A900) DIP switches. Fixed nfb96 DIP switches polarity. . Fixed maincpu memory region size and added stop buttons for star100. Fixed a couple of DIP switch setting labels for hgly. . Eliminated ALL the init hacks to unscramble and manipulate the Poker Master and derivatives bipolar PROMs to get proper colors. Implemented the PLDs transformations directly in the video hardware to decode on the fly the color codes. . Added RAMDAC support for Crazy Bonus machine. Removed the "loaned" unnecessary bipolar PROMs from the Crazy Bonus sets. Perfect colors for pkrmast, pkrmasta, crazybon, crazybona, jkrmast and jokermasta sets. . Documented the Poker Master's Chance Bonus behaviour/usage. Added workaround to bypass the complex crazybonb and missbingoc protection. These two are running in a daughterboard with 4 PLDs and do some writes and reads to ports to get proper pointers to NVRAM and take from there some temp values that will be computed to create the code jumps offsets. Fixed the crazybonb and missbingoc color scheme, getting correct colors. Fixed super9, super9a and superdrg crashes. Removed the "loaned" unnecessary bipolar PROMs from crazybonb. Placed crazybon and crazybona with stealth games and crazybonb and missbingoc with dual games. . Fixed Joker Master sets DIP switches and cmv4zg/cmv4zga reels bitplanes order . Super Nove improvements: Analyzed all ports and made raw inputs from the scratch. Also created the missing portmap and hooked the also missing DIP switch #5. Now all match the port test mode. Added Double Up rate DIP switch. Added some basic inputs. Fixed some inputs and added OKI samples sound system. Added workaround to map the internal palette. Fixed colors. Improved inputs. Added hopper line and hopper detection. Fixed the screen size to show the missing bottom 16 pixels. Fixed protection #4 to allow the game discount credits when play. Promoted Golden Regular (version 388/2000) to working. . Cherry Bonus III (Ziogas V4.1 hack, set 1/2) improvements: Defeated protection. Added default NVRAM with signature and harcoded values. . Win Cherry improvements: Added hopper support. Fixed 3rd reel offset in memory map, splitted proper inputs, added needed RAM at 0xc000-0xc7ff and made a temporary workaround to make the game playable. Also added 2 more skill sets. Added a lot of work toward get Win Cherry working properly. Muted the unused SN76489 for Win Cherry to avoid noise. Changed Win Cherry manufacturer to Videostar. Promoted Win Cherry to working. . Fixed the physical DIP switches banks for goldstar, goldstbl, moonlght, moonlghta, moonlghtb and moonlghtc. Renamed some roms to the MAME standards. Fixed more DIP switches polarities. . Fixed Hamburger House dump and colors. Verified hopper working. Promoted Hamburger House and Hamburger House 9 to working. . ncb3 fixes: Changed memory map 0xc000-0xc7ff into RAM. NOP'ed unknown I/O Ports. Changed Hopper Limit settings. Defaut to "Unlimited". Polarity Change for DSW2: 4, 5, 6, 7, 8. Hopper Verified on: ncb3, cb3, cb3b, cb3d, cb3g, cb3h and cb3s51. Promoted clone Cherry Bonus III (ver.5.1) to working. . Reworked inputs base for cmaster and cmv4 systems to use MAME standards, match the real 6-buttons Cherry Master control panel and arranged new buttons-lamps layouts accordingly. Fixed polarity to avoid differences with derivative system inputs. Created group of games that have internal settings on-screen, instead of DIP switches and created new inputs for them. Added workaround for a couple of hardcoded signatures needed for Allien Attack to work properly and changed inputs + control panel layout. Promoted Allien Attack (Game FBV2, ver.T) and Cherry Master (ver.4, set 2) to working. . Lucky Line III improvements: Added workaround to defeat initial protection. Bypassed the port 10h protection (disabling video). Created new memory map. Created new machine config. Created new inputs from the scratch. Promoted Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 1) to working. . Fixed inputs for clone Cherry Master (bootleg, Game FB55 Ver.2). Promoted Cherry Master (bootleg, Game FB55 Ver.2) to working. . Different fixes and new ports, hopper line work and inputs corrections for Cherry Master '91 machine. Added control panel/buttons-lamps layout to Cuty Line Limited (ver.1.30). Promoted Cuty Line Limited (ver.1.30) to working. . Promoted alienatt, animalhs, animalw, animalwbl, cb3s51, cll, cmfb55, cmv4a, cmv4zg, cmv4zga, crazybonb, f16s8l, gregular, hamhouse, hamhouse9, jkrmast, jkrmasta, ll3, pkrmast, pkrmasta, srmagic, super972 and wcherry to working. - gticlub.cpp, hornet.cpp and nwk-tr.cpp: Correct sound irq frequency. Fixes music tempo too slow compare to real hardware in NBA Play By Play and clones (ID 09240). - harddriv.cpp . Correct user4 rom loading in Hard Drivin's Airborne (prototype, rev 2.7). Promoted game to working. . Added PORT_MINMAX to brake pedal for clone Race Drivin' (compact, rev 5). Fixed clone Race Drivin' Panorama (prototype, rev 2.1) audio ROM duplicate SHA1. - hnayayoi.cpp: Cleanup driver - igs009.cpp: Added hopper device - igs011.cpp: Labeled DIP switches not shown in test mode based on manual - konamigq.cpp: Zerofill class variables - metro.cpp: Added setting descriptions from manual in comments - namcos23.cpp: Added Angler King and Race On! controls. Treat spinny things as a dial rather than half a mouse (aking and downhill). - pipedrm.cpp . Correct default 'Lives' dipswitch in Pipe Dream . Inverted dipswitch orientation in Hatris - quizdna.cpp: Small cleanup. Avoid splitting handlers on dup-ing, avoiding tons of extra allocations (emu\emumem_hedr.ipp and emumem_hedw.ipp). Fixes MAME crashes with "Caught unhandled St9bad_alloc exception: std::bad_alloc" message in all quizdna.cpp sets (ID 09251). - royalmah.cpp: Labelled DIP switches for Mahjong Cafe Paradise based on manual. Fixed DIP switch labels for Almond Pinky and Mahjong Cafe Break. Improved DIP switch labels for Ichi Ban Jyan amd Mahjong Vegas. - segas32.cpp: Fixed text flip (sega\segas32_v.cpp) - stella8085.cpp: Added lamps, layout and 5 more games (Bahia, Disc, Doppelstart, Macao and Rasant). - stellafr.cpp: Added 6 more games (Big Jackpot, Disc Bonus, Disc Jackpot, Joker Poker (Merkur), Jumbo Jumbo and Jumbo Jumbo Fun) - subsino2.cpp: Identified the odds rate setting for Bishou Jan - tmnt2.cpp: Split driver state class for different hardware configurations. Improved saved state support and reduced run-time tag lookups. Check for disabled side effects before displaying messages in read handlers. Use BIT helper for testing bits, avoid legacy start function override mechanism. Improved member names and ROM region names. - twin16.cpp: Encapsulated Konami Twin 16 video subsystem as a device. Slightly optimised sprite drawing. Use logmacro.h for configurable logging function. Usetemplates to replace memset and memcpy. Reduced duplication, made more local variables const, use more appropriate integer variable types (konami\twin16_v.h). Cleaned up code and updated comments (konami\twin16.cpp). - AGEMAME . Fixed fatalerror on sound routing (barcrest\mpu4_oki_sampled_sound.cpp and barcrest\mpu4.cpp) . Removed invert flag from 7seg element and added inverted 7seg outputs to mpu4 (the only driver that used this flag) (emu\rendlay.cpp and barcrest\mpu4.cpp) - Bio-Hazard Battle (scrambled bootleg of Mega Drive version): Promoted game to working - California Speed: Dumped alternate PIC - Classic Edition: Redumped OKI rom for Classic Edition and clones - The Combatribes: Mark button 3 as optional. Game use only 2 buttons (ID 09261). - Commando: Hook up manual sprite DMA trigger - Dynamic Shoot Kyousou: Fixed DIP switch labels - El Circulo: Added preliminary LED outputs and internal layout (layout\elcirculo.lay) - Funny Land de Luxe: Added default NVRAM content for Funny Land de Luxe. Documented interleave. - Gone Fishing 2: Dumped internal ROM - Gyruss: Changed joystick from 2*2way to 8way - Huanle Dou Dizhu: Added decryption table (igs\igs_m036.cpp) - Konami's Ping-Pong: Correct sound freq, removed joystick (game has 4 buttons) and added brief PCB notes. - Landing High Japan: Landing High Japan (VER.2.01OK) doesn't use the sub monitor, clone Landing High Japan (VER.2.02O) does. - Mahjong Natsu Monogatari: Improved DIP switch labels - Mawasunda!!: Don't use device_start to init driver - Meijinsen: Verified clone Meijinsen (set 2) dump - Operation Thunderbolt: Restored stereo sound. Operation Thunderbolt's switch to mono speakers in MAME 0.197 was based on incorrect information. - PinMAME: Dumped PICs for 'Red and Ted's Road Show' and 'The Shadow' and clones (pinball\wpc_s.cpp) - Quiz Panicuru Fantasy: Identified coinage-related DIPs for 'Medal Quiz Panicuru Roulette' - Shadow Warriors: Dumped bigger tile mask ROMs for Shadow Warriors. Measured clock for clone Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden) - Si Se 7 (4-colors 7's): Driver improvements. Redumped the program ROM. Reworked inputs to cover the game requeriments. Added its own memory map and machine config. Added support for OKI6295 sound samples system. Removed the inexistent UM3567/YM2413 device. Removed the no sound flag and confirmed OKI 6295 pin 7 connected to GND. Promoted game to working. - Skins Game: Dumped PIC - Teraburst: Verified Teraburst boards don't have the X76F041 populated - unknown 1980 poker game: Replaced custom draw function with mame tilemap - Video 21: Replaced custom draw function with MAME tilemap and added section headers to source - Yizhi Xiangqi: Hookup RAMDACs and CRTC. Fixed RAMDAC colors and hookup category for BG layer. Background layer is actually 7bpp. Fixed remaining color issues. Added preliminary inputs, hopper and copyright holder. Hookup audio ROM banking. - Fixed rom names in igs_m027.cpp - Description changes of All American Football (Leland, rev B), All American Football (Leland, rev C), All American Football (Leland, rev D, 2 players), All American Football (Leland, rev E), Allien Attack (Game FBV2, ver.T), Blue Hawk (Japan, NTC license, set 1), Crazy Bonus 2002 (Ver. 1, dual game), Crazy Bonus 2002 (Ver. 1, Shanho HW, set 1), Gone Fishing 2 (ver. 1445A), Gridiron Fight (World), Hard Drivin's Airborne (prototype, rev 2.0), Hard Drivin's Airborne (prototype, rev 2.7), Joker Master 2000 Special Edition (V512/513), Joker Poker (Gottlieb), Landing High Japan (VER.2.01OK, no sub monitor), Long Hu Zhengba Gao Qing Ban (V105CN), Looping (Europe), Looping (US, set 1), Looping (US, set 2), Lucky Line III (ver 2.00, Wang QL-1 v3.03, set 1), Majuu no Ohkoku (Japan), Merlin's Money Maze, Office Yeoin Cheonha (version 1.2), Poker Master (ED-1993, dual game, set 1), Poker Master (ED-1993, dual game, set 2), Que Huang Zhengba (V100CN), Return of Sel Jan II (Japan, NM508), Return of Sel Jan II (Japan, NM557) and Si Se 7 (4-colors 7's). - Dipswitch fixes in goldstar.cpp, gms.cpp, homerun.cpp, igs011.cpp, igs_m027.cpp, jack.cpp, megadriv_acbl.cpp, meijinsn.cpp, metro.cpp, pipedrm.cpp, royalmah.cpp, quizpani.cpp, senjyo.cpp and stella8085.cpp - Renamed (hdrivair) to (hdrivair0), (hdrivairp) to (hdrivair), (loopingv) to (loopingu), (loopingva) to (loopingua) and (unkyungyu) to (sise7) - MAME . VIDEO RENDERING SYSTEM . Use raw parameters for screen timings in exidy\carpolo.cpp and exidy\circus.cpp . Make hit test priority match visual order. Also made order of parsing view element more logical (makes interation with parameter elements less confusing). Some layouts have been updated, others still need work (emu\rendlay.cpp). . Do a 2-pass for updating artwork clickable zone input field state. Fixes Artwork held input is released after crossing overlapping clickable zone edge of same input field (ID 09252) (emu\render.cpp). No need to do std::transform here. Yoda style for loop like the surrounding source (emu\render.cpp). . Changed legacy marquee UI toggle to Marquees instead of a 2nd Backdrops (emu\rendlay.cpp). Removed invert flag from 7seg element and added inverted 7seg outputs to mpu4 (the only driver that used this flag) (emu\rendlay.cpp). . MEMORY SYSTEM . Optimize a specific but useful case (emu\emumem.cpp). Added forgotten range checks (emu\emumem_mview.cpp). . Avoid splitting handlers on dup-ing, avoiding tons of extra allocations (emu\emumem_hedr.ipp and emumem_hedw.ipp). Fixes MAME crashes with "Caught unhandled St9bad_alloc exception: std::bad_alloc" message in all quizdna.cpp sets (ID 09251). . Count references correctly for de-duplicated handlers (emu\emumem_hedr.ipp and emumem_hedw.ipp). Restrict 'check_optimize_all' to very short ranges (fixes crash in cave/cv1k.cpp games) and optimized the optimization further (emu\emumem.cpp). . Work around regression in Gaelco3D games by disabling optimization when address select is enabled (emu\emumem.cpp) . Prevent subunit offsets from being masked out in handlers (emu\emumem_mud.cpp). Fixes sound in suprnova.cpp. Short-term fix to some crashes, need more thinking though (emu\emumem_mud.cpp). . DEVICE: Avoid updating data frame if nothing changed. Don't use bitwise OR on bool. Small cleanup to spacing (emu\diserial.cpp). . INPUT: Fixed "Application" key with SDL keyboard provider (input\input_common.cpp). Also improved support for rare higher F-keys with SDL and Win32 providers. . UI/OSD: Hold ALT to INC/DEC setting by 100 (ui\analogipt.cpp) . SOFTWARE LIST: Split multiple languages/developers into separate info elements in all software lists . NETWORK: Added packet logging helper (emu\dinetwork.cpp) . Multi-Language: Updated Japanese translations (Japanese\strings.po). Added Polish translation (Polish\strings.po). . Consolidate drivers into single files (bking.cpp, gaiden.cpp, jack.cpp, rohga.cpp and senjyo.cp). Got rid of some VIDEO_START macros (rohga.cpp, gottlieb.cpp and docastle.cpp). Removed some unused/unneeded MACHINE_START / MACHINE_RESET / VIDEO_STARTs (cps2.cpp, scramble.h/_m.cpp, m92.h, model2.h, system1.h, route16.cpp, superqix.cpp and toaplan1.h) . Tidied some stuff (video\upd7220.cpp, atari\atarisy2.h, igs\igs017.cpp) - Compiling . Fixed pull_request property (.github\workflows\includeguards.yml) . Fixed missing EoF marker (lib\netlist\build\create_lib_entries.py) - Debugger . Extended memory commands for region and space (emu\debug\*). Reduced unnecessary duplication (debug\express.cpp). . Don't persist fallback expressions (debug\debugvw.cpp) 0.280 - New games: 119 (bootleg?), Gold Strike (Japan, v1.1.1 - location test), ICP EX-Turbo-GT poker, ICP F40 poker (137 Fever, 10 bet), ICP F80 poker (137 Fever, 50 bet), Shuihu Feng Yun Zhuan, Songjiangyanyi Final and 'Unknown Turbo Poker (set 1)' - New Working games: Kaimen Hu (PAN Electronics), New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus), Taishan Wuxian Jiaqiang Ban (V101CN) and Tiansheng Haoshou (V201CN) - New Non-Working games: Best of Nudge (Ver. 1.01), Bio-Hazard Battle (scrambled bootleg of Mega Drive version), Crazy Circus (Ver. US.01.7), Dajia Dou Dizhu, Dash! (A37, ver 1998/10/22), Dynamic Chance (Type-3.0 Part 1-2), Fruit Poker (V.Swe 1.74), Funny Fruit (Ver. 1.05, newer hardware), Gold Touch (Ver. 2.45), Gone Fishing (V602US), Hong Mayi (Xin Yun), Krazy Keno (V105US), Lucky Full House (ver 1.16, data ver 1.05), Medal Quiz Panicuru Roulette, Multi Game III (V.Int 3.63), Neo Print SP! Super Collection Version (Japan), Pretty Present, Star Ball (v1.0.0S), Silver Bar (Ver. 1.07), Southern Gold (Ver. 1.16) and Tankers - New clones: Allien Attack, beatmania 3rd MIX (ver JA-B), Classic Edition (Version 1.4R), Clutch Hitter (bootleg), Dash! (A37, ver 1996/11/18), Donkey Kong Jr. (Nuova Videotron bootleg), Dynamic Chance (Type-3.0 Part 1-2, alt), Dynamic Plus One (SP Type ver 1.10), Fruit Bonus 2000 / New Cherry 2000 (Version 2.3B), Fruit Bonus 2000 / New Cherry 2000 (Version 2.6 Special), Fruit Bonus 2000 / New Cherry 2000 (Version 3.1 Special), Fruit Bonus 2000 / New Cherry 2000 (Version 3.3 Special), Fruit Bonus 2000 / New Cherry 2000 (Version 3.4 Special, set 1), Fruit Bonus 2000 / New Cherry 2000 (Version 3.4 Special, set 2), Fruit Bonus 2000 / New Cherry 2000 (Version T 2.3C), Fruit Bonus 2nd Edition (Version 1.6R), Fruit Bonus 2nd Generation (Version 1.8Q), Gold Touch (Ver. 2.39), Haunted House (IGS, V107US), ICP F40 poker (100yen), ICP F40 poker (137fv_10yen_f40), ICP F40 poker (jap_9a), ICP F80 poker (137_50_100), ICP F80 poker (137_9.bin), ICP F80 poker (137_9_0jap), ICP F80 poker (137_9_10bet), ICP F80 poker (137_9_50), ICP F80 poker (137_9_60), ICP F80 poker (137_9_70), ICP F80 poker (137_9_90), ICP F80 poker (137_9_jap), ICP F80 poker (137_9_redsquare), ICP F80 poker (137_number7), ICP F80 poker (9_jap), ICP F80 poker (9_reddot), ICP F80 poker (abg), ICP F80 poker (af_80_newer), ICP F80 poker (af_80_older), ICP F80 poker (blue-green-red dots), ICP F80 poker (jap_9), ICP F80 poker (jap_9_jap), ICP F80 poker (redx_9_40_45_50_60), ICP F80 poker (redx_9_7), Kingdom Grandprix (bootleg), Lucky Full House (ver 1.15, data ver 1.04), Mini Golf (cocktail, 10/18/85), Money Machine (Version 1.3R), Monkey Land (Ver. AA.20.A), Ms. Pac-Man (bootleg, set 5), New Lucky 8 Lines (set 16, W-4), New Lucky 8 Lines (set 17, W-4, turbo, protected), New Lucky 8 Lines (set 18, W-4, bingo/fever, protected), Ozma Wars (set 3), Quiz (Revision 2.11, alt questions), Rally X (Tecnidiver bootleg), Rolling Stones (V21), Sea Invasion, Sexy Gal Tropical (Japan 850715 SXG T-01), Southern Gold (Ver. 1.14), Stone Age (Astro, Ver. AA.05.H, 2007/03/15), Techtron EX-Turbo-GT poker (set 1), Techtron EX-Turbo-GT poker (set 2), Tetris + New Lucky 8 Lines (W-4 + W4BET-VID sub board with MCU), Tiansheng Haoshou (V201CN), Tutankham (bootleg), Unknown Golden Poker (Japan Ver. 2.2), Unknown Golden Poker (PED 70%), Unknown Golden Poker (PED 80%), Unknown Golden Poker (PED 85%), Unknown Golden Poker (PED 90%), Unknown Golden Poker (PED 95%, set 1), Unknown Golden Poker (PED 95%, set 2), Unknown Turbo Poker (set 2), Unknown Turbo Poker (set 3) and Wing W90 poker (Wing 8510-A W90-3 PCB) - New drivers: 119.cpp, cadillacjack_mc68340.cpp and xinyun.cpp - New devices: mz1p16 - Bob Zed (What's new): https://youtu.be/0K2G0lYl8OI - CPU . Dynamic Re-Compiling . Not nuking the destination register on 64-bit rotate is important (fixes broken collision detection in Poosho Poosho with drcbex86 (ID 09228)), also slight optimisations (cpu\drcbex86.cpp). . Don't sign extend word register loads into upper 32 bits of host register (cpu\drcbearm64.cpp). . Intel 8086: Correction to idiv overflow (i86\i86.cpp) . Intel I386: Throw faults from i386_trap so double and triple faults can be handled properly (i386\i386.cpp and i386\i386priv.h) . NEC Vxx: Correction to idiv overflow (nec\necmacro.h). Updated MUL/DIV cycles (nec\necinstr.hxx). Small cleanup to spacing. DIV/DIVU does store a result on V33. . Motorola MC68010: Use constructor delegation (m68000\m68010.cpp) - SOUND . Sega 315-5313 Megadrive VDP: Make VDP irq enable times more deterministic. Fixed regression. Mode 4 disallows writing to registers beyond 10. Fixed (MESS) bassmpro Sega startup logo (video\315_5313.cpp) (ID 06228) . SN76496: Tone frequencies and volume are non-zero at startup (gives (MESS) BBC Micro boo-bip startup tones) (sound\sn76496.cpp) - DEVICE . Floppy: Prevent INTRQ from being raised until last DRQ is serviced unless data was already lost (ID 09236). Fixed validation by restoring wonky difference between ISA8 and ISA16 option lists (machine\wd_fdc.cpp). . ISA: Merged ISA8 options with ISA16 8-bit options, i.e. allow mounting (MESS) IBM Speech to ISA8, xtide to ISA16 (isa\isa_cards.cpp). . Konami 053244/053245 Sprite Generator: Small cleanup (konami\k053244_k053245.cpp) . Konami 053260 KDSC: Uses K053260's TIM2 output as interrupt source (sound\k053260.cpp). Small optimization to devcb. . Konami 054321 Maincpu-Soundcpu interface: Reset m_active at device_reset. . Konami 054338 Mixer and Konami 055555 Priority Encoder: Some comment cleanups . Konami 054539 ADPCM: Fixed regression with K054539 L/R speakers. Small cleanup. Update stream before writes. Added m_ prefix to class variables. Also update stream before init_flags. . Konami 056832 Tilemap Generator: Small cleanup. Re-enable update_linemap render now that it works again. Fixes zooming glitches and wrong backdrop in G.I. Joe (ID 01858). Make linemap_enable a mcfg setter (konami\k054156_k054157_k056832.cpp) . MC68681 DUART: Fixed TX disable bug (machine\mc68681.cpp) . MOS 6522 VIA: RESET does not change T1 and T2 latches/counters and Shift Register (machine\6522via.cpp) . Motorola MC6845 CRTC: Removed hack that resets line counter when screen parameters are changed (fixes split screen mode in (MESS) Elite on BBC Micro) (video\mc6845.cpp). . Paradise Systems PVGA1A Graphics Card: (Try to) pull cnf15 high for wd90c11 graphics card. Refactor all cards to use ISA remap. Fixed wd90c33_zz going in MDA mode in ct486 BIOS menu (isa\svga_paradise.cpp). . Paradise Systems PVGA1A i/f: Hookup DDR callback for PR11 writes. Fixed (MESS) Teradrive and MegaPC going in MDA video mode (video\pc_vga_paradise.cpp). . Zilog Z80 DMA Controller: Implemented BAO callback (machine\z80dma.cpp) - 1942.cpp, 1943.cpp, bionicc.cpp, blktiger.cpp, commando.cpp, gng.cpp, gunsmoke.cpp, supduck.cpp, tigeroad.cpp and vulgus.cpp: Revert global 128,6 screen offset. - astrcorp.cpp: Added dedicated inputs for keno21 and gostopac - bankp.cpp: Cleaned up a few things - btime.cpp: Merged driver with scregg.cpp - cdi.cpp: Added Interlace Graphics (GitHub #13997). Doubles vertical resolution. Minimal code to double the vertical resolution for GitHub #13231. The result is a slightly crisper looking image on most monitors due to better upscaling on images are have less oblique pixels. This was tested minimally and seems stable. Something closer to a proper interlaced image can be accomplished using the _PA bit, however current screen blanks between frames preventing the parity bit from being able to produce a correct interlace image yet. Removed excess vertical resolution. Use 2x clock multiplier. Added Interlaced Graphics. Fixes GitHub #13231. Toggle interlace effect. When the interlace bit is off, line-duplication is re-enabled. This ensures the interlace effect is only visible when the game declares the output to be interlaced. Fixed interlaced line offset. In some cases, such as during startup, the line length of the interlaced line is impacted. This corrects the offset. Fixed interlace clock speed (philips\mcd212.cpp). Cleaned up a few more things (philips\mcd212.cpp). - cham24.cpp, famibox.cpp, multigam.cpp, nes_arcade_bl.cpp, playch10.cpp and vsnes.cpp: Removed disused callback (video\ppu2c0x.cpp) - djmain.cpp: Small cleanup. Measured maincpu clock. Added screen raw params from Guru video timing measurements. Clarify x in product number. - dkong.cpp: Increased quantum for I8257 CPU - galaxian.cpp: Do global sprite clipping with a virtual function instead of setter - goldnpkr.cpp: Minor cleanups - goldstar.cpp . Driver improvements. Added hopper support to the following games/sets: bingowng, lucky8, luckybar, ns8lines and clones bingownga, lucky8a, lucky8b, lucky8c, lucky8d, lucky8e, lucky8f, lucky8g, lucky8h, lucky8i, lucky8j, lucky8k, lucky8l, lucky8m, lucky8n, lucky8o, lucky8p, lucky8q, lucky8r, lucky8s, lucky8t (fixed), lucky8tet, ns8linesa, ns8linew, ns8linewa, ns8linewb, ns8linewc and ns8linewd . Improvements for clone New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus): Rearranged the ROM load, simplified the things eliminating its own machine config and dedicated memory map. Created proper inputs, added stops and bonus buttons, added DIP switches for key in, max bet, double-up on/off, double-up rate, main game rate, changed control panel layout to one player, added technical notes and cleaned up a bit the driver. Removed special odds DIP switches. Added hopper support and removed wrong control panel, due to the lack of lamps support. Documented the 3 forced bits that allow boot the game. Fixed the Max Bet DIP switch and connected through port conditional with the new added Minimum Bet DIP switch. Promoted 'New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus)' to working. . Dumped PROMs for Jackpot Knight (V1.1) and New Mondo Plus (V0.6I) - hng64.cpp: Promoted bbust2, buriki, fatfurwa, roadedge, sams64, sams64_2 and xrally to working. Several people have tested this game quite extensively at this point, and there haven't been any logic bugs reported in the gameplay, even if the sound is still rather offensive to the ears. - igs_m027.cpp . Added decryption tables for gonefsh, jhg3d and royal5p (igs\pgmcrypt.cpp) . Added/Correct inputs, outputs and DIP switches for tshs and tswxp. Confirmed sound is OK for tshs and tswxp. Promoted tshs and tswxp to working. . Added preliminary I/O and correct OKI sound chip clock frequency for cjsxp. Improved inputs and sound. Hooked up sound ROM banking. Identified six DIP switches. Corrected test and bookkeeping inputs. Added support for fruit machine wiring option. Better I/O. Added key-in/key-out inputs and counters used in fruit machine mode. Identified some more DIP switches for cjsxp. - igs_m027xa.cpp: Added decryption tables for jking04 and krzykeno - jollyjgr.cpp: Added screen raw params. Small cleanup. - kurukuru.cpp and rgum.cpp: Changed inputs from poker type to slot type - lastduel.cpp: Updated notes - m92.cpp . Added screen raw params. Shorthand variable types. Added palette DMA and improved sprite DMA. Tweak DMA busy timing and added BTANB note. . Correct num sprites limit for clone Peter Pan (bootleg of Hook) and no need for +1 on OKI bank. - mitchell.cpp: Added rom locations for qtono1 and qsangoku - model3.cpp: Removed 'Region' from game names. Added colormod disable flag (sega\model3_v.cpp), fixes von2 blackened floor regression. Rollover scan timer at 0, not at 1 (sega\model3.c). - namcos22.cpp: Renamed cybrcycc and tokyowar analog controls - namcos23.cpp . Added support for dynamic texture scrolling. Better direct-polygon Z-sort handling. Clear all machine-class members on reset. . Added default NVRAM contents for Downhill Bikers - naomi.cpp: Dumped NAOMI Rev A and Naomi 2 Rev B Australia BIOSes - pluto6.cpp: Correct include order (video\serialvfd.cpp) - spoker.cpp: Slightly better inputs for Jingle Bell and Super Poker games - timeplt.cpp: Added hopper device for Bikkuri Card (Japan) and Chance Kun (Japan) - twinkle.cpp: Combine speakers - vendetta.cpp: Added lazy sprite DMA and removed note about tile chip (r/w go to gaps in memory map). Fixes flickering and bad characters on the life bar of bosses in Vendetta (ID 09230) and graphics issues (ID 05975). Added TODO note about sprite DMA. - 1942, Commando, Exed Exes, Pirate Ship Higemaru and Vulgus . Hook up irq prom instead of hardcoded values (no change to emulation). Added screen raw params to Exed Exes and Pirate Ship Higemaru. . Copy over input defs from 1942 for clone 1942 (Itisa bootleg), demote game to not working (not from this commit, it was already broken when added). - Amiga (alg.cpp, arsystems.cpp, cubo.cpp, mquake.cpp and upscope.cpp): Get rid of m_icr_read, fixes (MESS) cpm68k-amiga boot (machine\mos6526.cpp). - Asterix: Correct flipscreen offsets - Atari 800 (bartop52.cpp and maxaflex.cpp): A800 write_cart doesn't need returning from void fn (a800\a800_slot.cpp) - Bloxeed: Patched out undumped MCU handshake in clone Bloxeed (bootleg) and makes game boot - D-Day (Jaleco, set 1/2) . Correct text layer colors. Lower AY-3-8910 clock. Improved DMA BUSACK and audiocpu irq and changed controls to 4way. Updated notes on protection chip and use generic gfxlayout for chars. Shorthand variable types. . Assume maincpu clock is same as soundcpu. Still missed sound irqs. Increased quantum. . Correction to scroll offset and foreground cliprect. Confirmed protection device from decap and pinout. - D. D. Crew: Demoted clone D. D. Crew (bootleg) to not working - Double Dribble and Iron Horse: Added brief PCB notes - Exerion: Added DIP locations. Removed static constexpr list at top of driver. - Field Combat: Added DIP locations. Note: Colors match available references (i.e. https://youtu.be/kMfaYrmoOc4). Re-added screen raw params after Guru measured video timing. - Filetto, Magical Crystals and Smash T.V.: Dumped and verified some PLDs - G.I. Joe: Re-enable update_linemap render now that it works again (konami\k054156_k054157_k056832.cpp). Fixes zooming glitches and wrong backdrop in G.I. Joe. - Goldart (Spain): Confirmed the Dallas dump as good for Goldart (Spain) and clones (France, Covielsa license), (Germany), (Portugal) and (United Kingdom). - Golfing Greats: Uses K053260's TIM2 output as interrupt source (sound\k053260.cpp) - Invasion - The Abductors: Redumped PIC - Kaimen Hu (PAN Electronics) . Improved inputs. Mapped the DIP switches bank. New video hardware (tile get info, video start). Fixed the ROM load. Created extended GFX banks. Added a default clean NVRAM to get the game working properly. Fixed the PSG clock. Different tweaks in graphics banks and color system. Added Autohold, Coinage and Multiplier DIP switches and DIP locations. . Promoted game to working - Keno 21: Redumped gfx rom - Lethal Enforcers: Added screen raw params and enable priority shadows and simplify sprite priority. Correct shadow color. Small correction to sprite layer coords. - Lunar Rescue and Ozma Wars: Confirmed PROMs for Ozma Wars (set 1/2) and clone Lunar Rescue (Artic bootleg) - Mace: The Dark Age: Dumped alternate PIC - MegaDrive/Genesis (hshavoc.cpp, megadriv_acbl.cpp, megadriv_sunmix.cpp, megadriv_ybox.cpp, megaplay.cpp and megatech.cpp) . Sega 315-5313 Megadrive VDP: Make VDP irq enable times more deterministic. Fixed regression. Mode 4 disallows writing to registers beyond 10. Fixed (MESS) bassmpro Sega startup logo (video\315_5313.cpp) (ID 06228). . Replaced irq_callback with vpa_after/vpa_sync cpu_space_map (sega\megadriv.h) . Fixed no sound BGMs in (MESS) megadrij [teddyboy] (sega\megadriv.h) (ID 07645) - Mogura Desse: Added screen raw params. Added coin counters and do weird tilemap layout with TILEMAP_MAPPER. - Pac-Land: Added BTANB note "Jump sound effect is silent for a while after car horn sound effect". - Pool 10: Dumped and verified one PAL for clone Pool 10 (Italian, set 2) - Poosho Poosho: Not nuking the destination register on 64-bit rotate is important (cpu\drcbex86.cpp). Fixes broken collision detection in Poosho Poosho with drcbex86 (32bit) (ID 09228). - Raiden II New / Raiden DX: Correct cpu type (V33->V33A) - Revolution X: Fixed DMA register accesses (also eliminates U76 custom chip error) (midway\midxunit_m.cpp). Fixes corrupt colors in Steven Tyler cutscene of Revolution X and clone (ID 08799). - Surprise Attack: Correct shadow color - Triple Hunt: Reading x/y axis was swapped (ID 09245) - UFO Catcher 21: Added DIP description. Correct coinage DSW. - unknown Cointek game: Made it show something - Vs. Hot Smash: Fixed crash when playing sample (ID 09232) - Yie Ar Kung-Fu: Modernized interrupts and added screen raw parameters - Fixed rom names in astrcorp.cpp, es9501.cpp, igs_m027.cpp, mitchell.cpp and vulgus.cpp - Description changes of Cash'£'Vania (Qps) (Scorpion 4) (set 1-10) (ID 04830), Cash'£'Vania Club (Vx.xx), Crisis Zone (US, CSZO3 Ver. B, set 2), Crisis Zone (World, CSZO4 Ver. A), Cyber Troopers Virtual-On: Oratorio Tangram, Cyber Troopers Virtual-On: Oratorio Tangram (Revision A), Cyber Troopers Virtual-On: Oratorio Tangram (Revision B), Cyber Troopers Virtual-On: Oratorio Tangram M.S.B.S. ver 5.4, Cyber Troopers Virtual-On: Oratorio Tangram M.S.B.S. ver 5.66 2000 Edition, - 0.280: Changed description to 'Cyber Troopers Virtual-On 4: Force (Rev E)', D-Day (Jaleco, set 1), D-Day (Jaleco, set 2), D-Day (Olympia), Daytona USA 2: Battle on the Edge (Revision A), Daytona USA 2: Power Edition, Fighting Vipers 2, Fighting Vipers 2 (Revision A), Flip Shot, Frogger (Nuova Videotron bootleg), G.I. Joe (World, EAB), Geo Storm (Japan, 014 sound CPU), Geo Storm (Japan, 026 sound CPU), Get Bass: Sega Bass Fishing, Get Bass: Sega Bass Fishing Deluxe, Get Bass: Sega Bass Fishing Upright, Harley-Davidson and L.A. Riders (Revision A), Harley-Davidson and L.A. Riders (Revision B), Hearts Spades (ID 08429), Hong Mayi (bootleg of Super Star 97), Kuri Kinton (World, prototype) (ID 01067), L.A. Machineguns, Le Mans 24 (Revision B), Major Title 2 (World, set 1, 017 sound CPU), Major Title 2 (World, set 2, 016 sound CPU), Major Title 2 (World, set 3), Motocross Go! (US, MG2 Ver. A), Motocross Go! (World, MG3 Ver. A), New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus), Ninja Princess (Japan, 315-5051, 64k Ver. bootleg?), Ninja Princess (Japan, 315-5051?, 128k Ver. bootleg?), Ninja Princess (Japan, 315-5098, 128k Ver.), Ninja Princess (Japan, 64k Ver. not encrypted), NHL Open Ice: 2 on 2 Challenge (rev 1.21) (ID 08758), NHL Open Ice: 2 on 2 Challenge (rev 1.2A), Pop'n Music (ver AA-A, HDD 1.00), Pop'n Music (ver JA-A, HDD 1.00), Pop'n Music (ver KA-A, HDD 1.01), Pop'n Music (ver TA-A, HDD 1.01), Rolling Stones (V17), Roy Clark Super Picker (ID 08430), Scud Race / Sega Super GT - Deluxe, Scud Race / Sega Super GT - Deluxe (Revision A), Scud Race / Sega Super GT - Twin/DX, Scud Race Plus / Sega Super GT Plus - Twin/DX, Scud Race Plus / Sega Super GT Plus - Twin/DX (Revision A), Sega Bass Fishing Deluxe, Sega Rally 2: Sega Rally Championship, Sega Rally 2: Sega Rally Championship (prototype, 29 Dec 1997), Sega Rally 2: Sega Rally Championship (prototype, 8 Dec 1997), Sega Rally 2: Sega Rally Championship Deluxe, Ski Champ, SOS (ID 07694), Space Battle Ship Gomorrah (Japan) (ID 07995), Spikeout (Revision C), Spikeout Final Edition, Star Wars Trilogy Arcade, Star Wars Trilogy Arcade (Revision A), The Lost World: Jurassic Park (Revision A), The Ocean Hunter, The Ocean Hunter (Revision A), Tiansheng Haoshou (V101CN), Undercover Cops Alpha: Renewal Version (US), Undercover Cops Alpha: Renewal Version (World), Virtua Fighter 3 (Revision A), Virtua Fighter 3 (Revision C), Virtua Fighter 3 (Revision D), Virtua Fighter 3 Team Battle, Virtua Striker 2 '98 (Step 1.5), Virtua Striker 2 '98 (Step 2.0) and Wang Pai Dou Dizhu - Dipswitch fixes in exerion.cpp, fcombat.cpp, goldnpkr.cpp, igs_m027.cpp, midxunit.cpp, megadriv_ybox.cpp, segaufo.cpp, spoker.cpp, thepit.cpp and vulgus.cpp - Renamed (am_mg3) to (am_mg3g), (am_mg3a) to (am_mg3ga), (animalwa) to (lucky8t), (bm2ndmxa) to (bm2ndmixa), (bm3rdeaa) to (bm3rdmixe), (bm3rdmix) to (bm3rdmixa), (crszonev3b2) to (crszonev4a), (crszonev4a) to (crszonev3b2), (rollston) to (rollstonv17) and (tshs) to (tshs101) - MAME . VIDEO RENDERING SYSTEM . Do assert() check before accessing array (util\palette.cpp) . Added screen raw params to blueprnt.cpp, gijoe.cpp, lastduel.cpp, megazone.cpp, mogura.cppm naughtyb.cpp, rungun.cpp, srumbler.cpp and yiear.cpp . New sound infrastructure . Don't apply gain if value didn't change, also use u32 instead of int for io_connection index (emu\sound.cpp). . PLUGINS . Support driver sourcefile path (plugins\data\data_mameinfo.lua and data_messinfo.lua) . hiscore.dat update (plugins\hiscore\hiscore.dat) . CHDMAN: Request write permission when opening file for verify --fix; allow SHA1 fixes for CHDs otherwise treated as not writeable (tools\chdman.cpp). . Multi-Language: Updated Japanese translations (Japanese\strings.po). Added Polish translation (Polish\strings.po). . Consolidate drivers into single files (btime.cpp, midxunit.cpp, sspeedr.cpp and ojankohs.cpp) . Correct some ioport mask vs defval conflicts (alpha68k_i.cpp, balsente.cpp, by35.cpp, ertictac.cpp, goldstar.cpp and igs017.cpp) - Compiling . Fixed SPIRV shader builder compilation error with newer standard library that doesn't implicitly include stdint in as many places (3rdparty\bgfx\3rdparty\glslang\SPIRV\SpvBuilder.h). - Debugger . Don't repeatedly get the focussed window in a loop (debugger\win\debugwininfo.cpp) . Made the code for symlist marginally less dreadful (debug\debugcmd.cpp) 0.279 - New games: 'To Heart House' - New Working games: Slime Kun and Tsururin Kun - New Non-Working games: Club Ultraman - Daichi Boeisen, Cyber Troopers Virtual-On 4 Force (Rev E), Disc 2000, Disc 2001, Disc 3000, Doppelpot, DS-6000 Driving Simulator, Elite Disc, Excellent, Huanle Dou Dizhu (V104CN), Jackpot Knight (V1.1), Jin Huangguan 6th, Jin Huangguan II (V310CN), Jin Zuanshi, Kaimen Hu (PAN Electronics), Keno 21 (Ver. A-2.30), Kniffi, Major Poker Deluxe (Ver. 1.12), Merkur Service Testgeraet, Neo Print - European Version II (World) (T4i 3.07), Premiums Line, Shizhan Majiang Wangchao (Version 2.0), Super Dragon (Ver 211), Taishan Wuxian Jiaqiang Ban (V101CN), Tieban Shensuan (Mainland version 2.0), Treasure Ocean (v1.5A), 'unknown Alba game', 'unknown Paradise poker game', 'unknown YungYu game' and Zhongji Dou Dizhu (V204CN). - New clones: 280-ZZZAP (set 2), 7 Smash (set 2), Arkanoid (bootleg of version Japan, older), Arthur's Knights (v1.00), Blackjack (Cadillac Jack, Ver. 1.22), Butterfly Video Game (version U863M), Dogyuun (bootleg), Driving Force (Galaxian conversion, Seatongrove UK), Emeraldia (Japan Version D), Gals Hustler (set 2), Hana Awase (set 2), Jiyou Gaoshou (China, Ver 1.2), Magic Bomb (Ver. A4.0A, 4/06/01), Magic Bomb (Ver. A4.1A, 5/4/01), Magic Bomb (Ver. A4.2A, 7/06/01), Magic Bomb (Ver. A4.2A, 8/09/01), Magic Bomb (Ver. AA.71.A, 30/04/04), Magic Bomb (Ver. AA.73.A, 17/10/06), Magic Bomb (Ver. AB4.3A, 11/22/01S), Magic Bomb (Ver. AB4.3A, 12/19/01S), Magic Bomb (Ver. AB4.5A, 05/24/02S), Magic Bomb (Ver. AB5.0, 09/26/02), Magic Bomb (Ver. AB5.1, 01/10/03), Magic Bomb (Ver. AB6.0J, 26/11/03), Magic Bomb (Ver. BB6.0, 02/24/04), Magic Bomb (Ver. EB4.3, 08/22/01), Magic Bomb (Ver. L3.7S), Magic Bomb (Ver. L4.0S), Magic Bomb (Ver. LB5.1 12/13/02), Mahjong Electron Base (parts 2 & 3, Japan bootleg set 2), Mahjong Electron Base (parts 2 & 3, Japan bootleg set 3), Major Poker Deluxe (Ver. 1.09), Monkey Land (Ver. A1.1), San Se Caishen (Version 0118), Western Venture (Ver. AA.01.B), Western Venture (Ver. AA.02.E) and Zuanshi II (version V153A) - Removed games: Alpine Surfer (World, AF2 Ver.A, set 2), Loto-Play (set 4), Motocross Go! (Japan, MG1 Ver. A, set 2), Motocross Go! (World, MG2 Ver. A, set 2), Panic Park (Japan, PNP1 Ver. B, set 2) and Poker (Version 50.02 ICB, set 3) - New drivers: banprestomsz80.cpp, ds6000.cpp, jinhuang6.cpp, ps_m3.cpp and servicetastatur.cpp - New devices: coldfire_dma, coldfire_mbus, coldfire_sim, coldfire_timer, cs4334, k005849, mcf5206euart, pl6_fpga, pl6_pic, pl6expslot, pl6gpu, serial_vfd, serial_votraxtnt, ua858d and votraxtnt - New Cheat.dat (Pugsy): http://www.mamecheat.co.uk/ - Bob Zed (What's new): https://youtu.be/EXg3sKss5Og - CPU . Hitachi SH-2 (SH7604): Hookup UBC BARA/BARB r/w (sh\sh7604.cpp), fixes sound in (MESS) 32x aburner. . Motorola MC68010: 'ctor' accepts type param. Support being able to subclass and pass in type param (m68000\m68010.cpp). . NEC Vxx: REP opcodes are interruptable. Fixed issue with prefetch (can't do prev_icount - m_icount to determine opcode cycles since m_icount can be cleared externally) (nec\nec.cpp). Fixes incorrectly effects in 'Ninja Baseball Bat Man' (ID 06021) and the status bar in Battle Chopper and clone appear twice (ID 00816). Fixes Major Title 2 and clones hangs at title screen if flip screen is enabled (ID 05342). - SOUND . Atari C012294 POKEY: Synchronize on SOD output transitions during serial transmission. Disable logging again (sound\pokey.cpp). . Biquad Filter: Added calculator functions for RC-based band-pass filters (sound\flt_biquad.cpp) . Ensoniq ES5503: Fixed error in emulation of oscillator over-contribution glitch (GitHub #13669) and use m_ prefixes consistently. Oscillators halted by the CPU have the same behavior as those halted internally if the low bit of the mode is set, as per the datasheet. Fixes Skate or Die for the Apple IIgs's music freezing (sound\es5503.cpp) . Sony LDP-1450 HLE: Fixed display mode selection issue and grey background (machine\ldp1450hle.cpp) - DEVICE . Floppy: Include IPF, 86F disk formats in floptool. IPF is included unconditionally by scripts/formats.lua, so the HAS_FORMATS condition was always false. 86F is also included unconditionally but simply wasn't added to formats/all.cpp when it was introduced. Added 86F to the "Container FM/MFM" category for consistency with the grouping in devices/imagedev/floppy.cpp and moved IPF to the "PC" category for the same reason (formats\all.cpp). . Fujitsu MB87030 SCSI controller: Fixed SCSI hookup in (MESS) FZ-20M (machine\mb87030.cpp) . I2C Memory: Revert change from MAME 0.278 (Don't enter start condition except from idle state) that broke dreamlss. Don't falsely register I2C bus start or stop condition while device as slave is driving SDA. Modernize logging (machine\i2cmem.cpp). Fixes bmiidx2, bmiidx3, bmiidx4, bmiidx5, bmiidx6, bmiidx7 and bmiidx8 fails to boot with "E800 NO SECURITY CARD ERROR" (ID 09212). Fixes BnB Arcade has severe slowdown, black screen in attract mode and unable to start game (ID 09220). . Konami 005849 Video Controller: Added preliminary k005849_device . Konami 007121 Video Controller: FIRQ is every other frame. Removed dirtytiles_cb (konami\k007121.cpp). . Konami 051960 Sprite Generator . Improved sprite y zoom. Fixes bad sprite zooming for the planes in Devastators level 2 (ID 00505). Added sprite buffer, fixes sprite lag in Aliens (ID 02014 and ID 06873). Added sprite busy flag and irq enable. Removed old #if 0 spriteram savedump. . Improved NMI timer and sprite busy duration. . Konami 052109 Tilemap Generator: Added screen raw params to all K052109 drivers. Added col+rowscroll, fixes possible graphical corruption during stage 2 in Thunder Cross II and clones (ID 08275). Added NMI and FIRQ timers (copy paste to/from k051960). Added callback for custom scrolling to emu\tilemap.cpp and added one to K052109 for its combined col/rowscroll. Update scroll before active display (konami\k052109.cpp). . Konami 053244/053245 Sprite Generator: Removed old #if 0 spriteram savedump. Moved sprite buffer clear to reg 7. Limit sprite size to 1024x512. Assume sprite size limit is cliprect, not zoom level (konami\k053244_k053245.cpp) . Konami 053250 LVC: Small cleanup (konami\k053250.cpp) . Konami 053251 Priority Encoder: Removed obsolete code (all dirty tilemap marking after colorbase changed is done locally in drivers). Removed unused read() function (konami\k053251.cpp). . Konami Custom: Correction to device strings (Konami 0xxx instead of K0xxx) . Sega 315-6154 Northbridge: Handle statuses and IRQ callback. Updated docs (sega\315-6154.cpp). . Z80 DMA Controller: Added UA858D DMA Controller variant to machine\z80dma.cpp. Added extra memory read wait state at 28MHz for (MESS) ZX Spectrum Next (machine\z80dma.cpp). - aristmk6.cpp: Dumped SPC2 board rom gambs2m_01.05.07.u3 (SPC stands for serial protocol converter) - astrcorp.cpp: Avoided completely patching out protection routines for a bunch of games, fixes some problems at start up and when exiting test mode. Reversed remaining CPU codes. Factory reset EEPROMs. Got rid of checksum/original ROM content related patches. Switched to mnemonic suffixes for clones. Metadata improvements and Q/A for most magibomb sets. - badlands_ms.cpp and galpanic_ms.cpp: Added missing PLDs to clones Bad Lands (Modular System) and New Quiz (Modular System bootleg of Gals Panic) - battlnts.cpp and rockrage.cpp: Use screen raw parameters as in similar Konami games. Added clocks for video ASICs. - boramz80.cpp: Implemented NVRAM, hopper and protection workaround. Moved out of skeleton to misc. GFX problems remain, games are otherwise playable (tpkborama excluded, since it's encrypted). - cave.cpp: Added hopper device. Fixes Crusher Makochan and Koro Koro Quest returns "Error 3" after completing a stage (ID 09223). - cdi.cpp . Implemented cursor blinking (philips\mcd212.cpp). Fixed double width cursor. This fixes cursor width is too wide in The Challenge (GitHub #13968). Originally this flag made the cursor 2x as wide (4 pixels). However the Validation Disc (EU) test GC_Ptn has a clarifying comment that in double-resolution mode, the cursor should be half the width of the normal cursor (philips\mcd212.cpp). . Fixed Pixel Hold Clut4. Console verification identified a descrepency in CLUT4 pixel hold behavior. This corrects a factor of 2 error in the width for CLUT4 (GitHub #13513) (philips\mcd212.cpp). . Added Undefined Matte Behavior. Fixes GitHub #13976. Greenbook says not to change the MF flag within a line. However, if you do, the behavior is undefined. Console verification shows that the real console will use these values. The non-spec behavior is explained in a comment. Additionally, this tidies up the Matte function. Fixed RGB Transparency. This fixes RGB transparency checks. Previously it was checking the high bit. This would pass when checking the false condition (mode 10) but not on the true condition (mode 2) (philips\mcd212.cpp). . Fixed Cursor Inversion Color. This corrects a slight error in the cursor inversion color. A full brightness color should keep the brightness value and only invert the RGB. See MCD212 section 7.5 (philips\mcd212.cpp). . Introduce External Video Input. This replaces the static background color with a function that will switch behavior if the EV flag is set. Currently there is no DVC chip, so this will produce black output. This fixes (GitHub #13980) (philips\mcd212.cpp). . Simplified CD-i CDIC MCU. This simplifies the reference functions while making small changes to the used functions. Fixed CDIC XA audio header offset. Fixes Github #13991 (philips\cdicdic.cpp). - circus.cpp: Set maincpu ROM_LOAD to 0x0. Fixes Robot Bowl hang/freeze at boot (ID 09225). - cps1.cpp . Removed unneeded init function. Do interrupts with IPL pins and HOLD_LINE and copy over raster interrupts from cps2. Re-add cpu space map for irqack. . Correct the cpu space back to fully take into account the impact of vpa on the timings. Added debugger side effects check. Removed old TODO notes (one about raster effects and one about supposedly missing sf2 layers). Correct the cpu space back to fully take into account the impact of vpa on the timings. . Ganbare! Marine Kun irq4 is actually the same raster interrupt as on cps2 (it writes to the raster regs too). Comment out n/a button3 in Final Fight. - cps2.cpp: Improved raster irq. Make sure to mask raster counter with 0x1ff. Correction to raster irq timing. Fixes Shuma Gorath super move raster effect is not working in Marvel Super Heroes (ID 09221). - cps3.cpp, pluto5.cpp and luckgrln.cpp: Removed if(0)ed-out routines for dumping decrypted ROMs - ddragon3.cpp: Lower overall volume. Added sprite size mask and wwfwfest sprite buffer trigger. Fixes Combatribes sprite player glitch (ID 07595) (GitHub #13986). - ghosteo.cpp: evert I2C Memory change from MAME 0.278 (Don't enter start condition except from idle state) that broke dreamlss. Don't falsely register I2C bus start or stop condition while device as slave is driving SDA. Modernize logging (machine\i2cmem.cpp). Fixes BnB Arcade has severe slowdown, black screen in attract mode and unable to start game (ID 09220). - goldstar.cpp: Fixed NVRAM regression for sets in wingco_state - hikaru.cpp: Added 2nd AICA and 315-5881 encryption and fixed ROM layout. - hummer.cpp: Hooked up decryption - igs017.cpp: Fixed tarzan and starzan addrmaps. Fixes graphical or security error causes the appearance of a character that does not exist in the original game in jking200pr and all starzan dependents (ID 09193). - konmedal.cpp . Inverted hopper sensor. Reorder dsw settings (left = less, right = more). . Promoted Slime Kun and Tsururin Kun to working - m72.cpp . Tweak bg layer 2 transmask workaround. Improved tile priorities. Fixes graphic priority issues in bchopper and clone mrheli (ID 09205). . Do spritelist fill with push_back. NEC Vxx REP opcodes are interruptable, fixes status bar in Battle Chopper and clone appear twice (ID 00816). - m90.cpp: Small cleanup (irem\m90_v.cpp) - m92.cpp . Added sprite/video disable flags and put bootlegs on different hw in subclass. Updated flipscreen before screen update (irem\m92_v.cpp). . Updated dipswitches. Fixes Gun Force II has wrong difficulty setting "very easy", should be shown as "hardest" (ID 07725). . NEC Vxx REP opcodes are interruptable. Fixes incorrectly effects in 'Ninja Baseball Bat Man' (ID 06021) and 'Major Title 2' and clones hangs at title screen if flip screen is enabled (ID 05342). - mainevt.cpp: Added missing watchdog - megadriv.cpp: Fixed Megadrive version register incoherent (no TMSS ROM) (GitHub #13941). - model1/2.cpp: Sort out register update priority (mb86233\mb86233.cpp) - model2.cpp . Implemented proper lighting and improved "gamma" table. Stadium ads in Virtua Striker have the correct colors now. Do geo_parse even if frame was skipped. Removed the (void) func params from h file too. Revert frameskip workaround. . Actually fixed Super GT 24h and Over Rev reverses gas and brake activeness by default (ID 07445) - namcos22/23.cpp: Removed duplicate romsets (or rather, only the embedded s/n differs) - namcos23.cpp: Added point ROM auto-increment to Namco System 23. Improves Downhill Bikers and Race On! visuals. - phoenix.cpp: Small cleanup - pluto6.cpp: Added support for Freescale mcf5206e peripherals for Pluto 6 emulation. Cleaned up driver. - senjyo.cpp: Star Force boardset has 4mhz and 12mhz xtals and copy paste screen raw params from bombjack (pace matches PCB video). Fixes rarely no sound on Star Force (ID 09200). - stella8085.cpp: Re-enable games that were commented in 0.278 release - taitotz.cpp: Use versions as printed on Taito's hard disk labels in descriptions - tecmo.cpp . Lower YM volume in Gemini Wing and small correction to mcfg. Fixes OKI MSM5205 is quiet compared to the PCB and OST (ID 08785). . More accurate ADPCM addressing (no audible change). - tmnt.cpp: Removed VIDEO_UPDATE_AFTER_VBLANK flag and changed joystick to 4way in Cue Brick - tmnt2.cpp . Invert vblank flag and removed m_toggle hack. This fixes corrupt graphics at bonus screens in Quiz Gakumon no Susume (ID 06651) and slow transitions (ID 06652). Removed VIDEO_UPDATE_AFTER_VBLANK flag. . Re-Added support for high priority shadows (emu\drawgfx.h + drawgfxt.ipp). Fixes graphic error with high priority shadows in tmnt2 and ssriders (ID 03644). - twin16.cpp: Lower pixel clock - twinkle.cpp: Revert I2C Memory change from MAME 0.278 (Don't enter start condition except from idle state) that broke dreamlss. Don't falsely register I2C bus start or stop condition while device as slave is driving SDA. Modernize logging (machine\i2cmem.cpp). Fixes bmiidx2, bmiidx3, bmiidx4, bmiidx5, bmiidx6, bmiidx7 and bmiidx8 fails to boot with "E800 NO SECURITY CARD ERROR" (ID 09212). - vendetta.cpp: Set VIDEO_UPDATE_AFTER_VBLANK flag. Probably just sprite DMA. - Asterix: Added screen raw params. Small tweak to layer offsets. Lower soundcpu clock and added brief pcb info. - Arcadia (NMK): Removed duplicated PROM entries from ROM definition - Beyond Kung-Fu: Protection/MCU notes and research. Make most of the ingame HUD elements work: Proper dirty marking. Make the floor counter display work. Handle the credit number / continue counter. Allow high score table to be drawn. Allow high score name entry. Added notes. Make the tilemap wide enough for the background, put some dummy (column position values) in the tilemap when the command is issued. Put the draw on a timer. - Bottom of the Ninth: Fixed sprite priority regression, fixes graphics priority issue at upper part of screen (ID 09191). Small cleanup. - Chequered Flag: Assume vtotal is 264. Tweak analog controls. - Cherry Master '97: Improved GFX. Started reorganizing some. - Cherry Master '99: Dumped one PAL - Crime Fighters: Set VIDEO_UPDATE_AFTER_VBLANK flag. Writes tilemap registers during active display area, which won't have effect until the next frame. - Escape Kids: Removed black screen edges by default - Go & Stop: Reversed 'CPU code', goes in game. - Hana Awase: Added NO_DUMP entry for MCU very likely used for I/O on this set (but not the clone) - Inferno (Meadows): Fixed samples_device reset. Fixes Inferno (Meadows) crash emulation (ID 09226). - Iron Horse: Lower maincpu clock and improved screen raw params - Jin Huangguan 3-dai: Started reorganizing - Kyuukoukabakugekitai - Dive Bomber Squad: Lower quantum - Loto-Play: Added info and clock frequency for PIC-based Loto Play - Magic Bomb: Dumped GFX ROM for clone Magic Bomb (Ver. AB5.3, 20/06/03). Q/A for most magibomb sets. Improved magibomb related documentation and correct GFX ROMs for some sets. - Mole Attack: Simplify gfxlayout - Pleiads: Fixed/Swap color proms for Pleiads (Tehkan) amd clones (Centuri), (Niemer S.A.) and (bootleg set 1). Added a note about protection chips. Removed TODO note about palette banking, it is already correct when compared to PCB video. - Rampart: Removed n/c buttons - Revolution X: Redumped PIC - Rollergames: Added screen raw params - Shuang Long Qiang Zhu 2 VS: Demoted clone (China, VS203J, set 2) to not working - S.P.Y. - Special Project Y: Small cleanup - Super Basketball: Fixed default 'Starting Score' dip based on manual - Super Speed Race: Fixed sound regression and added screen raw params - Surprise Attack . Added callback for custom scrolling to emu\tilemap.cpp and added one to K052109 for its combined col/rowscroll (konami\k052109.cpp). This improved star field background scrolling and rotation in Surprise Attack (ID 06790). . Re-Added support for high priority shadows (emu\drawgfx.h + drawgfxt.ipp). Fixes graphic error with high priority shadows in suratk (ID 03644). - Swinging Singles: Added xtal and tweak palette a bit. Fixes music is too high pitched and choppy in Swinging Singles (ID 09201). Swap car green/yellow. Added 'Lives' and 'Cabinet' dsw and small cleanup. Swap palette bits0/1 back again. - Tekken 3: Used recently dumped sound ROM from clone Tekken 3 (Japan, TET1/VER.D) for clones Tekken 3 (World, TET2/VER.B), (World, TET2/VER.C), (World, TET2/VER.D) and (US, TET3/VER.D). - Toaplan: Removed hidden keybinding to test switch. Show Toaplan test switch as input instead of dip switch and removed default keybind (toaplan\toaplipt.h; batsugun.cpp, dogyuun.cpp, dt7.cpp, enmadaio.cpp, fixeight.cpp, ghox.cpp, kbash.cpp, pipibibi.cpp, raizing.cpp, snowbro2.cpp, sunwise.cpp, tekipaki.cpp, toaplan1.cpp, truxton2.cpp, twincobr.cpp, vfive.cpp and wardner.cpp). - Vapor TRX: Removed PORT_CODE for buttons - Xexex: Hook up CCU - Xin Jin Huangguan: Filled in memory map - Zombie Revenge: Redumped redumped program ROM for clone Zombie Revenge (Export) - Fixed rom names in namcos12.cpp - Description changes of 280-ZZZAP (set 1), 7 Smash (set 1), Alpine Surfer (World, AF2 Ver.A), Armed Police Unit Gallop (Japan, M72 hardware), Armed Police Unit Gallop (Japan, M84 hardware), Battle Gear (VER.2.40A), Battle Gear 2 (VER.2.04J), Battle Gear 2 (VER.2.01J, Side by Side conversion), Black Jack (Olympic Games, v5.04, upgrade kit for Wild Card), Blackjack (Cadillac Jack, Ver. 1.31), Club Ultraman - Daichi Boeisen, Densha de GO 3! Tsukin-hen (VER.2.03J), Final Furlong 2 (Japan, FFS1 Ver. A), Final Furlong 2 (World, FFS2 Ver. A), Gals Hustler (set 1), Gunforce: Battle Fire Engulfed Terror Island (Japan), Gunforce: Battle Fire Engulfed Terror Island (US), Gunforce: Battle Fire Engulfed Terror Island (World), Hana Awase (set 1), Hyper Dyne Side Arms (Japan, 861128), Hyper Dyne Side Arms (US, 861128), Hyper Dyne Side Arms (US, 861202), Hyper Dyne Side Arms (World, 861129), Jack's Venture - Inca Treasure (US.02.01.A, 2010/01/21), Jin Zuanshi, Kaimen Hu (BMC), Landing High Japan (VER.2.01OK), Landing High Japan (VER.2.02O), Mahjong Electron Base (parts 2 & 3, Japan bootleg set 1), Motocross Go! (Japan, MG1 Ver. A), Motocross Go! (World, MG2 Ver. A), Panic Park (Japan, PNP1 Ver. B), Penguin Party (TM.01.01.B, 2012/01/16), Poker (Version 50.02 ICB, set 3), Power Shovel ni Norou!! - Power Shovel Simulator (VER.2.07J), Raizin Ping Pong (VER.2.01O), Raizin Ping Pong (VER.2.01J), S.P.Y.: Special Project Y. (US ver. M), S.P.Y.: Special Project Y. (World ver. N), Stunt Typhoon Plus (VER.2.04J), Teenage Mutant Hero Turtles: Turtles in Time (2 Players ver EBA), Teenage Mutant Hero Turtles: Turtles in Time (4 Players ver EAA), Teenage Mutant Ninja Turtles: Turtles in Time (2 Players ver UDA), Teenage Mutant Ninja Turtles: Turtles in Time (4 Players ver ADA), Teenage Mutant Ninja Turtles: Turtles in Time (4 Players ver OAA), Teenage Mutant Ninja Turtles: Turtles in Time (4 Players ver UAA) and Teenage Mutant Ninja Turtles: Turtles in Time (4 Players ver UEA) - Dipswitch fixes in bottom9.cpp, konmedal.cpp, m92.cpp, mole.cpp, skylncr.cpp, ssingles.cpp, tecmo.cpp and tmnt.cpp - Renamed (emeraldaj) to (emeraldajb), (emeraldaja) to (emeraldaj), (gepoker2a) to (gepoker2), (hapfarma) to (hapfarm_in0102b), (magibomba) to (magibomb_br44), (magibombb) to (magibomb_ab45a), (magibombc) to (magibomb_ab42), (magibombd) to (magibomb_aa72d), (magibombe) to (magibomb_a31), (magibombf) to (magibomb_nb45), (magibombg) to (magibomb_nb61), (magibombh) to (magibomb_a40a), (magibombi) to (magibomb_a36a), (magibombj) to (magibomb_aa72c), (magibombk) to (magibomb_a30), (magibombl) to (magibomb_ab43a), (magibombm) to (magibomb_ab53), (magibombn) to (magibomb_eb40), (magibombo) to (magibomb_br71a), (monkeyla) to (monkeyl_aa13b), (monkeylb) to (monkeyl_aa21b), (monkeylc) to (monkeyl_aa21c), (monkeyld) to (monkeyl_a12), (monkeyle) to (monkeyl_en20b), (showhanc) to (showhandc), (skilldrpa) to (skilldrp_g10s), (speedmsta) to (speedmst_d14), (speedmstb) to (speedmst_d201ca) and (winbingoa) to (winbingo_gm051) - MAME . VIDEO RENDERING SYSTEM . Removed unused (and not working) TILE_LINE_DISABLED flag, just use cliprect for something like that. Added col+rowscroll. Added callback for custom scrolling (emu\tilemap.cpp). . Small optimization to scroll cache (emu\tilemap.cpp) . Re-Added support for high priority shadows (emu\drawgfx.h + drawgfxt.ipp) . UI: Added shift/ctrl/alt modifier keys to some controls (ui\viewgfx.cpp) . INPUT: Added coinage settings 10C_1C, 1C_10/20/25/50/100C (emu\ioport.cpp) . New sound infrastructure . Added full/channel route via menu instead of f/c keys (ui\audiomix.cpp). Moved notch filter check to ui (audio_effects\filter.cpp and ui\audio_effect_filter.cpp). . Put devtag in add ful/channel menu entry. Added not initialzed message when entering menu too early (eg. pressing tab on the red warning screen) (ui\audiomix.cpp) . Clamp final output to -32768, 32767 (emu\resampler.cpp). Fixed problem when default devices are missing (emu\sound.cpp), fixes Portaudio error when WASAPI is enabled with no audio input devices in the OS (ID 09192). . Don't repeat default settings at several places and removed unneeded float<->double conversions (emu\sound.cpp). Round default q down instead of up (probably has no audible effect) (audio_effects\eq.h). . Fixed initial -volume setting (emu\sound.cpp). Use emplace instead of emplace_back when reconfiguring mapping (emu\sound.cpp), fixes cursor highlight issue in Audio Mixer menu (ID 09204). . Finer control over HQ resampler settings (keeping max settings same as before) (emu\resampler.cpp and ui\audioeffects.cpp). Safety check for filter len (emu\resampler.cpp). . Correction to input gain calc. Increase max input db so input gain won't distort the signal. Re-added infinite release option and also infinite ratio. Added a header to advanced settings (audio_effects\compressor.cpp). . Misc sound fixes (emu\sound.cpp) . Sound modules . PortAudio: Re-add printf list of found devices with -verbose and added a check for duplicate device names (ID 09195). Can use unordered_map instead of map (sound\pa_sound.cpp) . SDL: Fall back to 2 channels if 0 channels are detected on a device (sound\sdl_sound.cpp) . Correct various games SN76489/SN76489A/SN76496 type based on PCB photos and/or schematics (appoooh.cpp, bankp.cpp, circusc.cpp, exedexes.cpp, hyperspt.cpp, ikki.cpp, mrjong.cpp, pingpong.cpp, senjyo.cpp, suprloco.cpp, tp84.cpp and trackfld.cpp) . Added PLDs to several Modular System games (Blood Bros. (Modular System), Euro League (Gaelco bootleg, Modular System), Power Spikes (Modular System), Splash (Modular System, ver. 1.0, checksum 16EDD8FB, non North America, censored), Splash (Modular System, ver. 1.0, checksum A6C431A4, non North America, uncensored) and Toki (Modular System)). - SDLMAME: Testing for glibc does not guarantee pty.h is available. It's possible to build glibc for targets where its PTY wrapper functions are not implemented (osd\modules\file\posixptty.cpp). - Compiling . Added SN76496 to scripts\target\mame\tiny.lua . MinGW/MSYS2 mktime() cannot handle dates before the Unix epoch, so use a precalculated offset between the Unix and MacOS epochs . Prevent excessive link times with the default optimization level for emscripten build (scripts\genie.lua) . Removed Wayland-EGL-backend requirement at compile-time. Since MAME 0.274 Wayland is dynamically loaded at run-time (scripts\src\3rdparty.lua). . Fixed LZMA PPMD support (src\3rdparty.lua) - Debugger . Requiring every debugger window class to care about the console window's views is bad design. That's a clear case of unnecessary coupling (debugger\win\*). . Used DCA_SELECTED color friendly for Light/Dark theme (qt\debuggerview.cpp) . Do not drop into debugger when no MAME window has focus. On Windows, the debugger has a special Windows-specific feature that drops the user into the debugger if the key sequence is pressed. This seems to be present so that the key sequence triggers dropping into the debugger not just from the main window, but also from debugger windows. This has also created an oddity where pressing the debugger key sequence from a MAME window will cause a "User-initiated break" but pressing it from a debugger window will cause "Internal breakpoint" to be displayed. However, while this logic has a check to not apply when to a MAME window, it seems to also activate even if MAME itself is not in focus. This change ensures that a stray debugger sequence in a completely unrelated application won't cause the user to be dropped in the debugger (debugger\debugwin.cpp and win\debugwininfo.cpp). . Have print command insert spaces between numbers (debug\debugcmd.cpp) . Fixed symlist default CPU: When executed with no parameters, symlist was displaying the symbol tables for the first CPU and the debugger built-in globals. Defaulting to the first CPU like that didn't make sense. It now displays the symbol tables for the VISIBLE cpu and the debugger built-in globals (debug\debugcmd.cpp). 0.278 - New games: Block Fever, Majiang Xingyun Shenlong (China, D121), Super Shanghai 2001 (set 1, red board), Trapeze / Trampoline and Victory Paradise II (V9) - New Working games: Alantin - Aladdin's Magic Lamp, Bandit (US prototype), Bomberman (Version 6.6, Avraam bootleg), Bomberman (Version 6.6, J.T. bootleg), Dark Seal (8-liner), Huahua Shijie 5 / Feixing Shijie (V107CN), Kaimen Hu, Master Boy Version II (Italy, set 2, checksum 629B), Qiji 6 (V118CN), Super Shanghai 2000 - Wrestle Fiesta (30% bonus, red board), Super Shanghai 2000 (set 1, green board), Super Shanghai 2000 (set 2, green board) and Zuqiu Wang - King of Football - New Non-Working games: 3 Mini, Action, AV-Mahjong Yanchana Koneko (Japan Ver 1.01 1990/08/23), Bai Bian Dou Dizhu, Biorhythm (For-Play), Challenge Golf (J 990326 V1.000), Chanbara Kids (Japan), Chaoji Bie Qi (V205CN), Chaoji Gan Dengyan (V110CN), Dahua Xiyou (V201CN), Dingji Dou Dizhu, Dou Dizhu II, DS-5000 Driving Simulator, Extrablatt, Fengdou Jiaqiang Ban, Fengkuang Dou Dizhu, Flashback, Gangbao Sifang, Huangpai Zuqiu Plus / Chaoji Shuangxing Plus (V103CN), Huo Qilin (V116CN), Jan Mu, Jin Huangguan 3-dai (V445CN), Jungle King 2004 (V101US), Loto-Play (set 1), Mahjong Jongoh (Japan, TTL800-03-04), Mahjong Sweet Academy (Japan, TSM010-002), Mahjong The Mysterious World Returns (Japan), Majiang Zhengba (V103CN), Majiang Zhizun (S100CN), Mega Turbo 2, Mueve, Mushiking The King Of Beetles 2003 Second (Japan), Neo Carnival, Ob-La-Di, Paint 'N Puzzle Super, Piaoliang Jinhua, Piaoliang Jinhua 2, Play 4 Texas Hold'em, Progressive Clown Magic, Pub Time Darts v1.4, Royal 5+ (V101US), San Da Ha, Shenzhou Jielong, Special Dream 9 (v1.0.7G), Super Match 2003 (Version 3.1 2003-11-04), Super Multi (DOB), System 3000 Kramergame Poker (encrypted set 4), System 3000 Kramergame Poker (encrypted set 5), SystemSP Factory Check Server, Tian Sheng Hao Shou (V101CN), Top Draw (encrypted, set 1), Turbo Poker 1 (set 1), unknown Kramer Poker (encrypted), Vision Quest, Wakeng, Xin Jin Huangguan (V400CN) and Xiyou Douniu (S110CN) - New clones: 005 (earlier version?), Allfred, Animal Wonders (ver A900 66), Animal Wonders (ver A900, Bicigo bootleg), Asterix und Kleopatra, Bang! (version 2, checksum 140E), Bang! (version 2, checksum D35D), Big Karnak (ver. 1.0, checksum 1e38b94), Break Thru (World), Cal Omega - Game 7.9b (Arcade Poker, bootleg?), Chaoji Da Manguan II (China, V765C), Cherry Bonus V Five (V1.4), Cosmic Battle (Recreativos Franco bootleg of Space Invaders), Double Axle (US, Rev 1, set 2), Dream 9 Flower (v1.00c, set 2), Fantastic Spacians (hack of 'Super Galaxians'), Flower (Japan), Football Power (version 1.4), Football Power (version 4.6), Funny Land de Luxe (W2 set), Funny Land de Luxe (W4 set), G-LOC Air Battle (Japan), Glass (development PCB), Glass (ver 1.0, Break Edition, checksum 2B43D337, 10 Nov 1993), Glass (ver 1.0, Break Edition, checksum 6241CD67, 16 Nov 1993), Glass (ver 1.0, Break Edition, checksum EBCB0BFE, 22 Nov 1993), Glass (ver 1.1, Break Edition, checksum 3D8A724F, Version 1994, unprotected, Korea), Glass (ver 1.1, Break Edition, checksum 49D5E66B, Version 1994, set 1), Glass (ver 1.1, Break Edition, checksum D7AF5496, Version 1994, US), Glücks-Stern, Goldart (France, Covielsa license), Goldart (Germany), Goldart (PIC16C54, France, Covielsa license), Goldart (PIC16C54, Germany), Goldart (PIC16C54, Portugal), Goldart (PIC16C54, Spain), Goldart (PIC16C54, United Kingdom), Goldart (United Kingdom), Grand Hand, GTI Double or Nothing Draw Poker (GoT PCB, set 1), GTI Double or Nothing Draw Poker (GoT PCB, set 2), GTI Double or Nothing Draw Poker (GoT PCB, set 3), Gun Gabacho (Japan, version 2, checksum 1C8C), Gun Gabacho (Japan, version 2, checksum B75B), Happy Farm (Ver. IN.01.02.B), Happy Pierrot (V987271), HI-LO Double Up Joker Poker (set 2), In The Hunt (Korea?), Janpai Puzzle Choukou (Japan 010820 Publicity), Jungle King (V105US), Juwel, Karo As, Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (bootleg, ver. 112CN?), Knights of Valour Plus / Sanguo Zhan Ji Zhengzong Plus / Sangoku Senki Masamune Plus (bootleg, ver. 117CN?), Kuaile Xiyou Ji (V102CN), Lady Bug (bootleg on Galaxian hardware, encrypted), Last KM (ver 1.0.0227, checksum 747a7443, prototype), Little Witch (Ver. EN.01.A), Lizard Hunt (unprotected, checksum 25A83609), Long Hu Bang II: Cuo Pai Gaoshou (China, V127C), Long Hu Zhengba 2 (China, VS210M), Long Hu Zhengba 2 (China, VS220M), Loto-Play (PIC16C54), Loto-Play (set 2), Loto-Play (set 3), Loto-Play (set 4), Lucky Star (newer Z180-based hardware, set 2), Magic Bomb (Ver. BR71.A, 30/05/14), Mahjong Gal no Kokuhaku (Japan, set 2), Mahjong Reach Ippatsu (Japan, NM526-01), Maniac Square (unprotected, version 1.0, checksum BEAE), Master Boy (1987, Modular System), Master Boy (1987, Z80 hardware), Master Boy (Italy, set 3, checksum 6918), Master Boy (Italy, set 4, checksum 680C), Master Boy (Italy, set 5, checksum E84C), Master Boy (Italy, test version), Master Boy (Spain, set 3, checksum 6070), Master Boy (Spain, set 4, checksum CC6D), Master Boy (Spain, set 5, checksum DF11), Master Boy Olympic (Italy, set 1, checksum 77A8), Master Boy Olympic (Spain, set 1, checksum 7309), Master Boy Olympic (Spain, set 2, checksum 741B), Master Boy Version II (Italy, set 1, checksum 618F), Master Boy Version II (Spain, set 1, checksum 5A0B), Master Boy Version II (Spain, set 2, checksum 5B1D), Monkey Land (Ver. EN.20.B), Moon Cresta (SNK), Multi Multi, New Splash (ver. 1.4, checksum A26032A3, Korea, set 1), New Splash (ver. 1.4, checksum A26032A3, Korea, set 2), Next Century (bootleg of Defender), Poker (Version 50.02 ICB, set 3 alt), Power Drift (Japan, Rev C), Pro Cycle Tele Cardioline (Salter fitness bike, older hardware, ver. 1.0, checksum 1AF9), Pro Cycle Tele Cardioline (Salter fitness bike, older hardware, ver. 1.0, checksum 5678), Pro Cycle Tele Cardioline (Salter fitness bike, older hardware, ver. 1.0, checksum BAE7), Pro Cycle Tele Cardioline (Salter fitness bike, unknown version), Pro Cycle Tele Cardioline (Salter fitness bike, V.1.0, checksum 3523), Pro Cycle Tele Cardioline (Salter fitness bike, V.1.0, checksum DECA), Pro Stepper Tele Cardioline (Salter fitness stepper, older hardware, ver. 1.0, checksum 6D94), Pro Stepper Tele Cardioline (Salter fitness stepper, older hardware, ver. 1.0, checksum 8BF3), Pro Stepper Tele Cardioline (Salter fitness stepper, older hardware, ver. 1.0, checksum 8E5A), Pro Stepper Tele Cardioline (Salter fitness stepper, V.1.0, checksum 2B83), Puzz Loop 2 (Japan 010201 Publicity), Quick Shots (ver 1.0, checksum AD0C), R-Shark (set 2), Radikal Bikers (prototype), Riviera Hi-Score (2131-08, U5-3C), Riviera Hi-Score (2131-08P, set 1), Riviera Hi-Score (2131-08P, set 2), Rock'n MegaSession (Japan, ver 1.0), Rollergames (Asia), Sasuke vs. Commander (set 2), Shuang Long Qiang Zhu 2 VS (China, VS203J, set 2), Speed Up (version 2.00, checksum 491B), Speed Up (version 2.00, checksum E145), Speed Up (version 2.10, checksum 9536), Splash (Modular System, ver. 1.0, checksum A6C431A4, non North America, uncensored), Splash! (ver. 1.1, checksum 4697D2BF, non North America), Splash! (ver. 1.3, checksum E7BEEBFA, Korea), Splash! (ver. 1.3, checksum E7BEEEFA, North America), Splash! (ver. 1.3, checksum E7BEF3FA, World), Squash (newer PCB), Squash (USA, ver. 1.1, checksum 015b6f8a), Sunny, Super Shanghai 2001 (set 2, red board), Super Splash (Ver 1.0, checksum 2104394E, 27 Oct 1993), Super Splash (ver 1.1, Break Edition, checksum 59D5E66B, Version 1994), Super Star 97 / Ming Xing 97 (version V153A), Surf Planet (version 1.0), Surf Planet (version 1.2), Surf Planet (version 3.1), Tai Pan Money, Target Hits (ver 1.1, checksum B1F7), Tarzan (V106FA), Tekken 3 (Japan, TET1/VER.D), TH Strikes Back (non North America, version 1.0, checksum 0206DF91), TH Strikes Back (non North America, version 1.0, checksum 0206DF91, without title), TH Strikes Back (non North America, version 1.0, checksum 020E154A), TH Strikes Back (non North America, version 1.0, checksum 020EB346), Thunder Hoop (non North America, ver. X, checksum 00000020, set 1), Thunder Hoop (non North America, ver. X, checksum 00000020, set 2), Thunder Hoop (North America, ver. C4, checksum 02A0A008), Thunder Hoop (ver. 1, checksum 02a09fcd), Thunder Hoop (ver. X, checksum 00000020, without title), Top Draw (encrypted, set 2), Top Draw (encrypted, set 3), Top Draw (encrypted, set 4), Touch and Go (non North America, checksum 056533F0), Touch and Go (non North America, checksum 056C138F), Touch and Go (non North America, checksum 056C2336), Touch and Go (North America, checksum 05737572), Turbo Poker 1 (set 2), Turbo Poker 2 (set 4), Turbo Poker 2 (set 5), Turbo Sunny, World Rally 2: Twin Racing (version 09-06, checksum 50A2), World Rally 2: Twin Racing (version 09-06, checksum 7BE1), World Rally 2: Twin Racing (version 20-07, checksum B1B8), World Rally Championship (version 1.0, checksum 3D84, 02 Apr 1993), World Rally Championship (version 1.0, checksum C448), World Rally Championship (version 1.0, checksum DE0D, 08 Nov 1993), World Rallye Championship (prototype on Modular System, 23 Nov 1992), Xor World (different hardware, ver 1.1, checksum 3333BA, prototype), Xor World (different hardware, ver 1.1, checksum 333462, prototype), Xor World (Modular System, prototype, set 1), Xor World (Modular System, prototype, set 2), Xor World (ver 1.2, checksum DB5D10, prototype) and Zulu (Ver. 2.04J, Feb 3 2004) - New PinMAME games: Bad Cats (LF-1), Cue Ball Wizard (Spanish), Super Mario Brothers (pinball, Spanish, set 1) and Super Mario Brothers (pinball, Spanish, set 2) - New drivers: biorhythm_fp.cpp, blockfvr.cpp, clownmgc.cpp, ds5000.cpp, lotoplay.cpp, mastboyo_ms.cpp, megaturbo.cpp, ncarrera.cpp, neocrnvl.cpp, play4texash.cpp, pntnpuzls.cpp, sealy_z80.cpp, sshanghai.cpp, wrally_ms.cpp and xorworld_ms.cpp - Removed games: Break Thru (bootleg), Desert Patrol and Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt) - New devices: dsb2_device, dsp16, dsp16a, i80286, i80960ka, microphone, pana_ju_386 and qsound - Bob Zed (What's new): https://youtu.be/2DxYdNeaOns - CPU . Analog Devices ADSP21062 'SHARC': Correctly align 32-bit data transfers using PM bus. Fixes glitchy characters in Fighting Vipers and Sonic the Fighters. Use mask for 32-bit writes over PM bus (sharc\sharcmem.hxx). . Data East DECO16: Turn off verbose log flag (m6502\deco16.cpp) . Hitachi H8: Wrap channel to avoid crash if end channel gets set lower than current channel (h8\h8_adc.cpp). Fixes 'Final Furlong' crashes during attract mode (ID 09160). . Hitachi HD6309/E: Correct branch cycles in native mode (m6809\base6x09.lst) (ID 09174) . Hitachi SH7709: Simulated SH-3 SCI transmitter emptying (sh\sh3comn.cpp), fixes 'Muscle Ranking Kinniku Banzuke Spray Hitter' progresses past initial loading but stops at a black screen (ID 09188), while 'Run Run Puppy' freezes at the four blue squares. Fix for SH3/SH4 DRC regression in MAME 0.277, which prevented generate_checksum_block() being called for RAM areas. . Intel 80960KA/KB: Reduced padding area size when servicing interrupt. Prevents crash due to stack overflow during ranking screen in Virtual-On. Make shli produce identical value to shlo because later models where they may differ are unsupported. Distinguish KA and KB device types (i960\i960.cpp). . Intel I386: Check for fault before setting register. Check cpl in verr and verw (i386\i386.h, i386op16.hxx and i386op32.hxx) . Motorola MC6801: Correct the ICR read handlers (m6800\m6801.cpp) . Motorola MC68000: Make pc-relative disassembly a little nicer to read (m68000\m68kdasm.cpp) . ST0016: Adjusted some visible areas and added some notes . Zilog Z80 . Optimized detection of attention needed in service step. Removed internal TADR variable - effective addresses can be passed around as needed. Changed macro call syntax in generator input. Flatten 16b rw operations in order to avoid vars manipulations. . Renamed LUT fields. Handled flags lazily. Set the flags after loadstate. Support accessing F register in debugger. Use z80 terminology for the flag vars. Fixed debugger h flag. Don't clear all input pins state at reset. - SOUND . AdLib Music Synthesizer Card: Use official product name for device string. Removed unneeded r/w trampoline. . Atari C012294 POKEY . Replaced fake serial port emulation with timer-driven line-level interface, most (MESS) Acid800 serial tests pass now (sound\pokey.cpp). . Emulated two-tone and force break serial output modes. Fixed logging message. . AY-3-8910A PSG: Removed unneeded set_volume (update the few drivers that use it to set_output_gain) (sound\ay8910.cpp; cinematronics\cinemat_a.cpp, midway\midway.cpp, pinball\icecold.cpp, shared\ballysound.cpp and zaccaria\zaccaria_a.cpp). . ICS2115 WaveFront Synthesizer: Updated stream before r/w and some irq flag fixes (ID 09031) . K007232 PCM Controller: Log wav data at keyon instead of at every stream update. Removed really old changelog (sound\k007232.cpp). . Motorola MC6809: Use < symbol for direct addressing (m6809\6x09dasm.cpp). Don't reset physical input pins state at device_reset (m6809\m6809.cpp). . OKI MSM6376 ADPCM: Fixed regression and small cleanup (sound\okim6376.cpp) . QSound (HLE): Adding parent rom reference to qsound, function body in cpp file (sound\qsoundhle.cpp). . Samples: Set stream samplerate to sample samplerate. Fixed off by 1 error when interpolating. Fixed new regression with start_raw at very low samplerate. Updated notes. Removed unneeded samples_start callback (sound\samples.cpp). . Sega 68k-based Digital Sound Board 2: Hookup DSB2 MPEG device (sega\dsb2.cpp) (flsbeats, topskatr, daytona2, dayto2pe, srally2, spikeout, spikeofe and swtrilgy) . Sound Blaster: Added command 0x80 (Play silence). Hookup command logs thru logmacro.h (isa\sblaster.cpp) - DEVICE . Cassette tape image: Added more items to savestate. Small cleanup (imagedev\cassette.cpp). . DECO Karnov Sprites: Correct 16x32 size flag and update notes (dataeast\deckarn.cpp) . Floppy: Reimplemented HxC floppy emulator HFE format. Do not exit for an unknown encoding, just inform (formats\hxchfe_dsk.cpp) . I2C Memory: Don't enter start condition except from idle state (machine\i2cmem.cpp) . Intel 8251 USART: Implemented internal serial interrupt for V50 (v5x_scu_device; machine\i8251.cpp). . Intel 8255 PPI: Removed unreachable code (machine\i8255.cpp) . K007121 Sprite/Tilemap Controller: Sprite list and related fixes: I was recently doing some testing on a Contra board around the 007121 IC and found the following: There is no sprite limit, but instead a 264 8x8 sprite block limit. There is no buffering of sprite data on the attached SRAM. From this the follow changes have been made: Use the 264 8x8 sprite block limit to determine number of sprites that should be rendered. Removed sprite ram buffering and move logic for picking sprite ram bank into k007121.cpp. Comment updates related to the limit and non-buffering. Additionally the high bit of tiles are stored in one of the control registers, if this bit changes all tiles should be marked as dirty. These changes fix a number of sprite related issues on games using this chip: Missing sprites in combatsc and left over sprites in contra. Added sprite buffer (otherwise 1 frame sprite lag in eg. hcastle, contra, labyrunr). Updated notes. Do flipscreen and dirty tilemap marking with callbacks. Update notes. Avoid shift with negative amount in drivers. Added interrupts and scrollram (konami\k007121.cpp). . K051960, K053244/053245 and K055673 Sprite Generator: Small cleanup . K051960 Sprite Generator: Disable shadow config bit 0 (it was only used in Chequered Flag and Ultraman, and both needed a workaround) (konami\k051960.cpp). . Konami 051733 math chip: Added NMI timer. Fixed divide by 0 and sqrt off-by-1. Changed rng to machine().rand(). Added lfsr and improved collision detection. No need to shift lfsr by 2. Removed old notes about then-unknown reg 6. Shorthand variable types. Simpler sqrt function (result is same). Improved reg 7. Division appears to be signed, fixes erratic gameplay logic in Devastators (ID 05726). . MC68681 DUART: Ignore TX enable if already enabled (machine\mc68681.cpp) . Mitsumi ISA CD-ROM Adapter: Shift the end of the disk by 150 sectors like the start (isa\mcd.cpp) . MOS 6551 ACIA: Correct transfer data from RSR to RDR. On real hardware, this transfer is not atomic, but done bit-by-bit on the last clock cycles of a byte reception. Do the same, so bugs in programs are not hidden from developers. Also fixes another discrepancy with reality: When the RDR is full and a byte arrives, it is transferred to the RDR, and the Overrun flag is set. Our implementation did set the flag but left the old byte in the RDR. . Sega 315-5881 Encryption: Cursory cleanups . Serial EEPROM: Added configuration parameter for DO tristate level (machine\eepromser.cpp) . Sony LDP-1450 HLE: Added preliminary support for custom On Screen Text mode (still needs checking against hardware) (machine\ldp1450hle.cpp) - aleck64.cpp: Added preliminary savestates (rsp\rsp.cpp) - alg.cpp, arsystems.cpp, cubo.cpp, mquake.cpp and upscope.cpp (Amiga): Partial revert of MAME 0.274 (Impose DDFSTOP HW limit on bits 15-8 writes). DDFSTOP mask was correct before and this workaround broke ar_ldrb. Impose upper masks for AGA/ECS chipset only (amiga\amiga_m.cpp). Fixes graphics in Leader Board Golf corrupted (ID 09176). - apache3.cpp, cyclwarr.cpp and roundup5.cpp: Minor source reorganization - astrcorp.cpp: Added sprite banking for the newer games and added "CPU code" for Wicked Witch (Ver. AA.01.A). - blktiger_ms.cpp: Fixed palette hookup - bloodbro_ms.cpp: Fleshed out the driver. Still missing sound and sprite/tilemap priorities. Added sound by slightly adapting the implementation in seibu\raiden_ms. - bmcpokr.cpp: Better inputs for 'Xingyun Dou Dizhu' and cleaned up some DIP switches. Got rid of indirection on bitmap. - boramz80.cpp: Started fleshing it out. Added inputs for the pkboram set. Added colors (xGRB format; emu\emupal.cpp). Added DIP definitions for other sets that boot. Hooked up coin counters. TODO: Black screen after first attract cycle (interrupts?). Colors, inputs and outputs. Decryption for tpkborama. Are the tpkg2 GFX ROMs correct for that set? - bwing.cpp: Correct bgpen and paletteram read - carrera.cpp . Driver improvements. Fixed color bipolar PROM decode and palette calculation, based on real games screenshots. Added NVRAM support for all games. Created default NVRAM for Carrera and clones Bomberman sets, with harcoded critical values/registers needed to get the games working. Workaround that fixed the titles corruption for both Carrera and clones Bomberman sets. Inputs and DIP switches. Fixed Alantin colors, based on the real game screenshots. Added technical and game notes. . Promoted alantin, drkseal, bsebmanbl and bsebmanbl2 to working. - cps1.cpp: Changed 'Street Fighter II': Champion Edition (RE, bootleg)' and 'Street Fighter II': Magic KO Turbo!! - Nightmare Crack' from clones of sf2 to clones of sf2ce. - dec8.cpp . Updated note about screen raw params . Invert vblank port in Real Ghostbuster. There is no ACK for NMIs. NMI on the 6309 comes from the 74LS00 @ 13C (dual input NAND gate) where input 1 is vblank and input 2 comes from a latch (74LS273 @ 3A). The latch gets updated with writes to 0x3840, which is what you write to to enable/disable NMI. So there is no hardware logic to ack NMIs. Added manual sprite DMA trigger. . Correct Gondomania and Garyo Retsuden buffered spriteram. Fixed Gondomania (US) 2P crashes (ID 09089). - ddenlovr.cpp, dynax.cpp and royalmah.cpp: Removed Payout assignments as they match the new default anyway. - falgas_m89.cpp: Used MACHINE_IMPERFECT_SOUND for the sets that do play sounds - gaelco2.cpp: Added PLD dumps to aligator, bang, footbpow, maniacsq, radikalb, snowboar, speedup, surfplnt, touchgo and wrally2 and verify bruteforced ones - gms.cpp . Mahjong keyboard, joystick and buttons, coin, key-in, service and bookkeeping work for all mahjong games now. . Hooked up mahjong keyboard for yyhm. Improved DIP switch labels for cjdlz. Identified nine DIP switches for ssanguoj. . Better inputs: Added mahjong keyboard option for Baile 2005. Hooked up key-out input for games with mahjong keyboard hooked up. Hooked up payout input in joytstick mode for games with mahjong keyboard hooked up. . Added double up game functions to input names. Improved I/O: Hooked up hopper and counters. Added payout key in mahjong matrix. Reworked inputs and DIP switches for San Se Caishen: Use conventional poker terminology, hooked up mahjong keyboard and better DIP switch labels. Improved joystick controls and added mahjong keyboard option for Jinpai Suoha - Show Hand. . Organise buttons so Big comes before Small. Added missing Key Out, Payout and hopper inputs for Super 555 and improved input names. Use poker input types for Baile 2005. . Fixed inputs and worked out lamps for Ball Challenge and Creatures of the Sea . Added internal layouts for most games with lamps. Super Ball 2001, Super Card 2 in 1, Jinpai Suoha - Show Hand, Ball Challenge and Creatures of the Sea now have clickable layouts with button lamps. Also updated a couple of input names and comments. . Added multiplexed EEPROM interface that works for most games (unfortunately, this does not eliminate the need for 68K ROM patches). - hikaru.cpp: WIP checkpoint - igs_m027.cpp . Added I/O, internal layout, fixed some inputs and hooked up sound ROM banking for clone 'Chong Chong Leyuan (V100CN)'. Changed Chong Chong Leyuan sound chip clock to 2 MHz. Speech samples and fanfares sound a lot more natural this way. . Added I/O for the 'Kuaile Xiyou Ji' clones. It's kind of similar to Tarzan Chuang Tianguan 2 Jiaqiang Ban, but with different button assignments, particularly in mahjong panel mode. Not promoting to working as they regularly give "hopper empty" errors in "joystick" mode, possibly due to not liking the timings from our hopper device. The games are playable if you use Key-Out to pay out winnings. Added internal ROM of IGS027A ARM based MCU from clone (V102CN) to clone (V104CN). . Added a few missing inputs for tct2p, klxyj102cn and klxyj104cn. And also added a more detailed comment explaining mahjong panel controls for tct2p. Added Oki banking for jking02 + clones and tct2p - igs_m027_033vid.cpp: Adjusted Oki banking so that it works for huahuas5. Hooked up hopper. Added coin counters. Promoted huahuas5 and qiji6 to working. - igs_m036.cpp: Added decryption tables for most sets - igs011.cpp . Fixed inputs for clone 'Long Hu Bang III: Cuo Pai Gaoshou (China, V242C)' (same as lbh2). Also identified the auto reach DIP switch for lhb2/lhb3 and cleaned up some code. Filled in some of the lhb2 DIP switch settings that aren't drawn properly from a hardware screenshot, cleaned up slightly and updated known issues comment for lhb3. . Improved inputs and DIP switches for Xingyun Manguan (China, V651C, set 1) and clone Wanli Changcheng (China, V638C). Determined what some of the characters that can't be seen in lhb2 DIP switch test are supposed to be. . Fixed video RAM handling. Fixes numerous graphical glitches, including missing characters in service mode (ID 08993), bad colours on vbowl game over screen, glitchy "ODDS" banner remaining on-screen in xymg, incorrect colours on copyright years on titles screens for lhb and clones, and more. There's only enough video RAM for four 8-bit layers. The "depth" register configures how many 8-bit layers are required (zero to four), and the remaining buffers are treated as pairs of 4-bit layers. For example xymg uses one 8-bit layer and six 4-bit layers. The CPU always sees an 8-bit view of video memory, and must handle updating the correct nybble to draw to an individual 4-bit layer. The blitter always uses 4-bit source data for 4-bit layers, but can use 4-bit or 8-bit source data for 8-bit layers (it also supports 5-bit source mode with the top bit read from a separate ROM area). Fixes some graphic characters missed during play in dbc, lhb, lhb2, lhbv33c, xymg and wlcc (ID 02131) (ID 02152). Fixes extra graphic during double game in xymg and wlcc (ID 02185). . Added range check on blit destination. Just log a message if a game tries to blit to an out-of-range layer for the current configuration. Also set vertical blanking time and total lines based on measurements for nkishusp, and always blit to the whole 512*256 area as in principle the CPU can read areas that aren't visible on-screen. . Hooked up hopper and fixed some inputs and DIP switches. . Reverted interrupt frequency changes from MAME 0.144u3. The commit doesn't provide a justification for changing the periodic interrupt frequencies, implying it's just cleaning up use of deprecated functionality. The change from 120 Hz to 240 Hz for systems using the "lhb" configuration caused dbc, lhb33c and ryukobou to stop recognising coins reliably (ID 05678). Despite the comments added to the machine configuration functions, changing the frequency of these timers does not change the music tempo. This changes the periodic timer frequencies back to what they were previously. The timing is still suspect. We really need someone to hook some of these games up in a logic analyser to get proper video timings and work out where the periodic interrupts actually come from. . Miscellaneous changes: Implemented video suppress bit in blitter "depth" register (used to blank the screen while setting up scenes that take multiple frames to draw). Reduced audio output levels to avoid hitting the compressor at least most of the time. Optimised blit and screen update a little. Split class up a bit more, made more things private, made a sub-map function for the blitter registers. . Correct address maps for clones Long Hu Bang III: Cuo Pai Gaoshou (China, V242C) and Te Yi Gong Neng (China, V632C). Avoids crashes. - igs017.cpp: Added NVRAM support to most sets - jaguar.cpp: Adjusted clock of the MIPS based games to the actual chip type - koftball.cpp . Identified take/w-up/high/low for King of Football . Make known inputs match test mode. Added hopper and credits in/out counters. Identified 'In-Game Music' and 'Odds Rate' DIP switches. Correct DIP switch polarity for Jinxiu Zhonghua and clone Kaimen Hu. . Added koftball counter outputs. Also identified a DIP switch and added a comment about soft settings. Split out common parts of address map, better inputs for jxzh and kaimenhu. . Identified a few DIP switches and marked games as having uneumlated protection. Promoted koftball and kaimenhu to working. . Updated drawing routine to work correctly for available dumps. More studying needed. Slightly less hacky layer enable logic. - konamim2.cpp: Various 3DO DSPP fixes. Register STATE_GENPCBASE so debugger will recognize CPU. Limit ACC to 20 bits in debugger state display. Use util::sext for sign extension in non-DRC paths. Note that this changes behavior because positive values were sometimes not truncated to 20 bits previously. Make disassembly slightly less broken, though still very much a stub. Added a real disassembler. Tweak mnemonics in disassembler (dspp\dspp.cpp and dspp\dsppdasm.cpp). - lgtz80.cpp: Decoded GFX and added preliminary video emulation. Improved reels positioning. Added ADPCM banking, expand NVRAM area and updated notes. - mainevt.cpp: Added note about htotal. K051733 division appears to be signed. Fixes erratic gameplay logic in Devastators (ID 05726). - megadriv_acbl.cpp: Simulated coin latch for clone Bare Knuckle III (bootleg of Mega Drive version) - model1.cpp: Added TGP sin/cos lookup tables - model2.cpp . Cleaned up various things. Prevent infinite loop in geo_parse() (sega\model2_v.cpp). MAME no longer hangs when exiting clone Sonic the Fighters (Japan) service menu. . Improved TGPx4 interpreter. Most Sega Model 2C-CRX games are now working with 3D graphics (mb86235\mb86235.cpp). Use std::clamp for luminance (sega\model2_v.cpp). Added TGP sin/cos lookup tables. Sound comms: Model 2B accesses SCSP via address 0x9C0000, all others access SCSP/Model 1 sound board via 0x1C80000. . Renderer improvements. Texture mirroring is now implemented correctly (carpet in clone Sonic the Fighters and pitch markings in Virtua Striker). Fixed broken textures for trees in Sega Rally and mountain in Super GT 24h (sega\model2.cpp). . Implemented 4 players support in Air Walkers. Verified and added proper communication ROM board program ROM for the Over Rev sets. - model3.cpp . Massage UART comms hack for sound in Sega Rally 2. Fixed black screen regression in Sega Rally 2 (sega\m3comm.cpp). Fixed memory test, allow lostwsga and lemans24 to boot again (ID 08790). Hookup lostwsga player 2 trigger and offscreen detect. . Hookup main board DSW bank. Implemented proper stencil mask for 2D layer (sega\model3_v.cpp). System port 8 is just an irq check strobe. Enable colormod for vs2 radar/cursors (sega\model3_v.cpp). Fixed spikeout/spikeofe bootup. Hookup model3 diplocations. Updated PCB infos. Undo right-aligned gamelist entries. - namcos21.cpp: Clear screen to palette index 0 instead of 0xff - nbmj8688.cpp: Improved DIP switches for Crystal Gal and Crystal Gal 2 - pgm.cpp . Use retry_access to sync on reads for 2-way sound comms . Updated ICS2115 WaveFront Synthesizer stream before r/w and some irq flag fixes (sound\ics2115.cpp). Fixes an error appears onscreen in kovsh and clones after a while followed by game hanging (ID 09031). - polepos.cpp: Custom audio device cleanups and fixes. Save state variables. Eliminate use of absolute tag by making device tag the same as that of the memory region. Use finder for memory region. - popeye.cpp: Simplified Popeye and Sky Skipper background code (nintendo\popeye_v.cpp) - sealy_z80.cpp: Preliminary GFX decoding, borrowed from sealy_m16c.cpp. - segac2.cpp: 'Sega DASS' device (Dual Active Seat System) is unemulated, disable cpu for now (sega\m50dass.cpp). - segahang.cpp, segaorun.cpp, segaxbd.cpp, segaybd.cpp and tmnt.cpp: Lower overall volume (even lower for segaxbd due to rear speakers clipping if user hw is plain stereo). Put rear speakers in the rear for segaxbd.cpp. - segas32.cpp: Separate the speakers that were in different cabinets (multi32). Lower overall volume. - shadoww_ms.cpp, slapfght_ms.cpp and splash_ms.cpp: Added PLDs and PROMs - stella8085.cpp: Start mapping peripherals. Update IC notes. More memory map improvements. - taito_z.cpp . Improved direct-mode poly handling and texmode 3 handling. Rework direct-FIFO handling again to avoid a crash. Use algorithms rather than memcpy. . Added new sprites roms to clone Double Axle (US). Note: These 2 ROMs known to come split on a Taito ROM 16 PCBOARD. . Dumped PLDs for Battle Shark and clones. Mark clone Raizin Ping Pong (Ver 2.01 J) HDD as BAD_DUMP. . Removed clone Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt), it was a bad dump of pwrshovl (ID 09185). - taitosj.cpp: Workaround for large speed loss (sound\discrete.cpp and taito\taitosj.cpp) - tx1.cpp: Removed set_output_gain to nonexistent output (tatsumi\tx1_a.cpp) - Bandit (US prototype): Fixes towards bandit pri == 7 uses. Promoted game to working. - Beezer: Automatically detecting streaming. Removed dac76::configure_streming_iref() (sound\dac76.cpp). - Blockout (TAX): Added gfx notes - Card Line: Use poker input types. Fixed bottom of the screen has info from the top (ID 09175). - Chequered Flag: Improved highlights - Cherry Master I: Brought clone Super Seven (ver. 2.3) to probably playable state. Left as MACHINE_NOT_WORKING as precaution until someone who can play these games verifies I/O. - Circus Charlie: Correct cpu clock and added screen raw params. Added buffered spriteram. Small cleanup to source code organization. - Cobra Command: Do not trigger input lines on other not-yet-initialized devices in device start for clones Cobra Command (M.A.C.H. 3 hardware, set 1/2) (shared\gottlieb_a.cpp) - Columns '97: Demoted game to MACHINE_NOT_WORKING (ID 08947) - Combat School, Contra, Fast Lane, Haunted Castle, Labyrinth Runner and MX5000 . K007121 Sprite/Tilemap Controller: Sprite list and related fixes (konami\k007121.cpp) . Added sprite buffer (otherwise 1 frame sprite lag in eg. hcastle, contra, labyrunr). Added screen raw params to Konami drivers with K007121. Do flipscreen and dirty tilemap marking with callbacks (konami\k007121.cpp). Fixed cocktail mode and player 2's screen is only partially flipped in all sets in labyrunr.cpp (ID 01878). Fixed player 2 cocktail mode flip screen graphics glitch in Fast Lane (ID 08439). Fixed incorrect behavior of the flipscreen in Contra (ID 00402). . Fixes Contra continue countdown sometimes leaves sprites behind (ID 00401) and the text "Player 1 (Nick)" or "CPU (Joe)" in Combat School disappear (ID 00185). Assume Combat School vtotal=264 (refresh rate is same as before). . Added missing watchdog period to Contra. Correction to bgcolor for contra (ID 03591), fastlane, flkatck and labyrunr. Correct pixel clock for all K007121 drivers. - Crazy Climber: Dumped PROM internal to the CPU module. Used PROM contents to decrpyt cclimber encrypted sets. - Desert Patrol: Added bd3.d1 prom (Produce the waveform of a human scream. Chip type is 8574 or MM6301-0J). Removed dpatrol since it's an overdump. - Dream Crown: Added controls - Enduro Racer: Fixed PCM sample ROM loading for clone Enduro Racer (bootleg set 1) - Flower: Tabulated the system definitions again - Golden Star: Got clones Super Nove (Playmark, V. M271B) and Super Nove (Playmark, V. M271C) to do something - Juno First: Correct cpu clock - Lightning Fighters: Removed NMI connection to sound CPU as it does not exist on schematics. The sound is not affected. - Malzak: Fixed some Flash and Hold control issues (video\saa5050.cpp) - Master Boy: Sorted out Master Boy sets and added missing ones. Added correct MCU ROM for Italian Version II sets. Verified old extracted MCU ROM for Spanish sets is 100% good. Promoted clone Master Boy Version II (Italy, set 2, checksum 629B) to working. - Mortal Kombat 4: Correct rom size for u2 of clone Mortal Kombat 4 (version 1.0) - New Carrera - Version 2000: Created a new driver for New Carrera. The MCU behavior has been simulated to make the game playable. The MCU also has full range memory access, so it can read ROM and Read/Write NVRAM, can draw graphics, manages reels display animation and inputs. Added more documentation, technical notes, more cleanups and fixed copyright. - Ninja Emaki: Redumped clone Ninja Emaki (Tecfri license) - Pac & Pal: Fixed 'Bonus Life' dipswitch - Phoenix (Amstar, set 1): Dumped the palette PROMs for Next Fase (bootleg of Phoenix) - Rally X: Verify clone Danger Track (bootleg of Rally X) PROMs - Super Basketball: Assume cpu clock is 1.536mhz - Super Pool 99: Fixed game not start at boot with bad ram message (ID 09099) - Super Shanghai 2000: Rearranged Super Shanghai 2000 series and added to a new driver - Promoted Super Shanghai 2000 - Wrestle Fiesta (30% bonus, red board), Super Shanghai 2000 (set 1, green board) and clone (set 2, green board) to working. - Tattoo Assassins: Added set_maximum_quantum to prevent sound glitches - Touch and Go: Sorted out sets and added missing ones - U.S. Championship V'ball: Demoted clone U.S. Championship V'ball (bootleg of Japan set) with MACHINE_IMPERFECT_SOUND - Ultraman: shadows_w is actually irq enable - Venture: Use the 1 Coin/1 Credit setting listed in the manual for Venture by default (ID 09177). - Wacky Gator: Internal layout improvements (layout\wackygtr.lay) - Wonder Boy III - Monster Lair: Added MCU dump for clone Wonder Boy III - Monster Lair (encrypted bootleg) - World Rally Championship: Improved set ordering based on research - XXX (Modular System): Added missing PROMs and PLDs to several Modular System games (automatm, bigkarnkm, cabalm, drgninjam, eurogael, ffantasym, raidenm, secretagm and tokims). - Yizhi Xiangqi: Changed game to MACHINE_IMPERFECT_SOUND - Save state . Be consistent with dummy save state var name (easy to grep if the workaround is obsolete in the future) . Removed device_sound_interface from mixins that require device to register members for saved states (emu\device.cpp). . Finalise saved state registrations before loading configuration - network devices no longer leak timers (emu\machine.cpp). - Input port: Group default double-up game control assignments on home row. Also moved Mahjong P to P and Payout to 4. This fixes the conflict between Mahjong I and Payout (emu\inpttype.ipp). - Dipswitch fixes in boramz80.cpp, carrera.cpp, gms.cpp, hikaru.cpp, igs011.cpp, igs_m027.cpp, koftball.cpp, nbmj8688.cpp, sshanghai.cpp and stella8085.cpp - Fixed rom names in gaelco.cpp, gaelco2.cpp, nbmj8891.cpp and raiden2.cpp - Description changes of Alligator Hunt (World, protected, checksum 2B34128B), Alligator Hunt (protected, prototype?, checksum B975CB0B), Alligator Hunt (Spain, protected, checksum 2B34128B), Alligator Hunt (unprotected, checksum F9C6891D), Alligator Hunt (unprotected, checksum 25A83609), Animal Wonders (ver A900, bootleg), Bandit (US prototype), Bang! (version 0, checksum B61D), Battle Gear 2 (Ver 2.04 J), Battle Gear 2 (Ver 2.01 J, Side by Side cabinet), Carrera (Version 6.7) / Bomberman (Version 6.6), Densha de GO 3! Tsukin-hen (Ver 2.03 J), Desert Patrol, Devil Fish (Mars hardware), Don Pepito, Double Axle (US, Rev 1, set 1), Dream 9 Flower (v1.00c, set 1), El auto de papa, Flower (Japan, bootleg?), Ganso Janken Man 2, Glass (ver 1.0, Break Edition, checksum C5513F3C), Glass (ver 1.0, Break Edition, checksum D3864FDB), Glass (ver 1.1, Break Edition, checksum 49D5E66B, Version 1994, set 2), Glass (ver 1.1, Break Edition, checksum D419AB69, Version 1994, unprotected, Korea), Go & Stop (Ver. EN1.10), Gun Gabacho (Japan, version 2, checksum C6BB), Happy Pierrot (V968210), HI-LO Double Up Joker Poker (set 1), Huangguan Leyuan (990726 CRG1.1), Jin Huangguan, Kasei Channel Mars TV (Japan), Kuaile Xiyou Ji (V104CN), Lady Bug (bootleg on Galaxian hardware, unencrypted), Long Hu Tebie Ban (S101CN), Lucky Star (newer Z180-based hardware, set 1), Mahjong Gal no Kokuhaku (Japan, set 1), Mahjong Reach Ippatsu (Japan, NM526-NSI), Maniac Square (protected, version 1.0, checksum CF2D), Maniac Square (protected, version 1.0, checksum DEEE), Maniac Square (unprotected, version 1.0, checksum 66B1, 960419/1 PCB), Maniac Square (unprotected, version 1.0, checksum BB73), Oh La La, Painted Lady (ver. 1.3, checksum E7BEEEFA, North America), PK Turbo Special, Power Drift (Japan, Rev B), Power Shovel ni Norou!! - Power Shovel Simulator (Ver 2.07 J), Pro Cycle Tele Cardioline (Salter fitness bike, V.1.0, checksum 02AB), Pro Stepper Tele Cardioline (Salter fitness stepper, V.1.0, checksum F208), R-Shark (set 1), Raizin Ping Pong (Ver 2.01 O), Raizin Ping Pong (Ver 2.01 J), Sasuke vs. Commander (set 1), Shin-ip Sawon - Seok Dol-i (Korea), Shinnyuu Shain Tooru-kun (Japan), Shuang Long Qiang Zhu 2 VS (China, VS203J, set 1), Shuang Long Qiang Zhu 2 VS (China, unknown version), Snow Board Championship (version 2.0), Snow Board Championship (version 2.1), Speed Master (D1.4, May 23 2003), Speed Master (D2.01.C, Apr 28 2004), Speed Master (D2.01.C, Apr 29 2004), Speed Up (version 1.00, checksum 31A9), Speed Up (version 1.20, checksum 6851), Speed Up (version 2.20, checksum 2037), Splash (Modular System, ver. 1.0, checksum 16EDD8FB, non North America, censored), Splash! (ver. 1.0, checksum 2FC9AE1D, non North America), Splash! (ver. 1.2, checksum 5071804D, non North America), Squash (World, ver. 1.0, checksum 015aef61), Super Nove (Playmark, V. M271B), Super Nove (Playmark, V. M271C), Super Seven (ver. 2.3), Super Shanghai 2000 (set 1, green board), Super Shanghai 2000 (set 2, green board), System 3000 Kramergame Poker (encrypted set 1), System 3000 Kramergame Poker (encrypted set 2), System 3000 Kramergame Poker (encrypted set 3), System 3000 Kramergame Poker (encrypted set 4), Target Hits (ver 1.0, checksum FBCB), Target Hits (ver 1.1, checksum 5152), Target Hits (ver 1.1, checksum 86E1), Tarzan Chuang Tian Guan 2 Jiaqiang Ban (V306CN), The Main Event (Destron), Touch and Go (non North America, checksum 056AA304), Touch and Go (unprotected, checksum 059CC336), Touch and Go (World, checksum 059D0235), Touch and Go (World, checksum 05A0C7FB), Vulkan, World Rally Championship (America, version 1.0, checksum 2CC1), World Rally Championship (America, version 1.0, checksum 75A5, 16 Jun 1993), World Rally Championship (version 1.0, checksum 0E56, 06 Apr 1993), World Rally Championship (version 1.0, checksum 3873, 06 Apr 1993), World Rally Championship (version 1.0, checksum 8AA2), World Rally Championship (version 1.0, checksum E586, 25 Jun 1993), World Rally 2: Twin Racing (version 26-06, checksum 3EDB), World Rally 2: Twin Racing (version 26-06, checksum 3EDB, mask ROM version), Xiaoyao Dou Dizhu (V216CN), Xor World (ver 1.2, checksum DB5D0F, prototype) and Zuqiu Wang - King of Football. - Renamed (animalw) to (animalwbl), (bang) to (bangb), (brkthru) to (brkthruu), (cb5) to (cb5_13), (dpatrola) to (dpatrol), (flowerj) to (flowerjb), (footbpow) to (footbpow12), (glass) to (glassa), (goldartp) to (goldartpt), (hpierrot) to (hpierrota), (klxyj) to (klxyj104cn), (maniacsqa) to (maniacsqb), (maniacsq) to (maniacsqa), (maniacsqu) to (maniacsq), (mastboyiv2) to (mastboyiv2a), (pdriftj) to (pdriftjb), (rivierab) to (rivierac), (sdmg2) to (sdmg2754ca), (sdmg2a) to (sdmg2754cb), (sltpstep) to (sltpstepa), (specd9) to (specd9105g), (ss2000) to (ssh2000a), (ss2000a) to (ssh2000wf), (ss2001) to (ssh2000), (thoop2) to (thoop2b), (thoop2a) to (thoop2), (touchgo) to (touchgoa), (touchgoe) to (touchgo), (touchgok) to (touchgoun), (touchgon) to (touchgonnac), (unkboram) to (pkts), (wrally2a) to (wrally2b), (wrally2) to (wrally2a), (wrally) to (wrallyd), (wrallya) to (wrallyc) and (wrallyc) to (wrallya). - MAME . VIDEO RENDERING SYSTEM . Got rid of a C string pointer, avoid the need for a static string object (monitor\monitor_module.h). Fixed an object leak (monitor\monitor_dxgi.cpp). Cleaned up some use of COM and COM-like things (font\font_dwrite.cpp and monitor\monitor_dxgi.cpp). . Fixed issue with throttling when MAME runs at slow motion (-speed lower than 0.2) (emu\video.cpp) . Added optional screen update callback for svg screens (emu\screen.cpp) . Added shadow config to savestates and might as well rename hilight to highlight (emu\dipalette.cpp) . MEMORY SYSTEM: Correct shifting direction on masks when importing a map with active umask (emu\addrmap.cpp) . DEVICES . Allow flagging devices as not working or not supporting saved states. Removed device_sound_interface from mixins that require device to register members for saved states (emu\device.cpp). . Reset the receive register when changing frame format or the port may be stuck into synchronous receive mode due to the default start bits = 0 (emu\diserial.cpp) . UI/OSD . Root device is special for non-working message (ui\info.cpp). Removed master volume slider if driver has no sound (ui\mainmenu.cpp and ui\ui.cpp). . Fixed layout issue when DIP switch bank with the most switches has the shortest name and reduced space between name and switches a bit (ui\confswitch.cpp). . Fixed some non-bug "warnings" going missing (ui\info.cpp). Don't show the audio menus when there are no audio devices (ui\mainmenu.cpp). Align allocation for directory entry structure in osd_stat (file\winfile.cpp). Updated signature for osd_stat (file\stdfile.cpp). . Changed mimimum speed setting from 0.01 to 0.1 (mame would crash with very low value, and besides, video throttle still fails below 0.1) (emu\emuopts.cpp). Added speed slider when cheats are enabled (ui\ui.cpp). . Added MAME version info to the 'missing roms' error msg (ui\imgcntrl.cpp and ui\selmenu.cpp). Use UI text/bg color for osd text popups (ui\ui.cpp). . Ensure size isn't passed to ::operator delete when destructing directory entries. osd_stat allocates additional space following the directory entry to store the name. A regular delete may pass sizeof(entry) to ::operator delete, which won't match the allocated size. This causes a problem if the runtime library checks it (may suppress the warning in MT09137) (osd\osdfile.h). . Finer control over screen refresh slider, correction to shift+alt incval (although after this commit, nothing has an incval > 100). Added separator after osd sliders. Make sure menu won't be hidden when re-entering it (POLA) (ui\sliders.cpp). . Treat incorrect ROM content as a severe warning (ui\info.cpp). Added note about file handle buffering (file\winfile.cpp). . Use terse messages for bad media. Making these messages longer hasn't reduced support burden. Adding the version will just perpetuate the myth that you need to redownload all your ROMs for every release (ui\selmenu.cpp and ui\imgcntrl.cpp). Allow info screens to be dismissed by mouse clicks or touches (ui\ui.cpp). Hiding the menu should preserve state. This is a design choice (ui\sliders.cpp). . New sound infrastructure . Make AVI able to do more than stereo (util\aviio.cpp) . Sound sliders: Press Del to set to 0db like before (mute is alt+left). Multiply internal value by 10 to allow fine grained slider controls (left/right while holding Shift) (ui\ui.cpp). . Use fat triangles instead of arrows for L/R indicators. More control over db adjustment (like with sliders, hold shift for +/- 0.1, hold ctrl for +/- 10) (ui\audiomix.cpp). . Make sure m_samples_to_update is 0 when returning from update() (emu\sound.cpp). Added sync time to savestates (emu\sound.cpp). . magmax.cpp, terracre.cpp and opwolf.cpp: Removed obsolete mixer device now that multiple sound outputs can be sent to a sound device single input (probably can be done to other drivers too. . Avoid unnecessary float/double conversions (osd\interface\audio.h). Prevent stream buffer overflow after detecting it (machine\netlist.cpp). . Added a much faster LoFi resampler and resampler configuration saving and documentation (emu\resampler.cpp, emu\sound.cpp, ui\audioeffects.cpp and usingmame\mamemenus.rst). Fixed resampler config interaction with reset and history sizes to take desynchronization into account (emu\sound.cpp, sound\pulse_sound.cpp and emu\resampler.cpp). Better step precision to avoid crackling (resampler_lofi; emu\resampler.cpp). . Like with the rest of the UI, press Del to set resampler settings to default. Gray out hq resampler settings if resampler is not hq (ui\audioeffects.cpp). . Fixed streamed inputs (sound\disc_cls.h, disc_inp.hxx and discrete.cpp). Ensure correct input of non-audio data (machine\netlist.cpp). Merged a number of speakers. . Recompute filters after loading the configuration (audio_effects\eq.cpp and filter.cpp). . Do not block on shift-f3 (sound\pipewire_sound.cpp). Removed obsolete options (compressor will be in effects, speaker report should go into a lua plugin) (emu\emuopts.cpp and ui\sndmenu.cpp). . Added a compressor. May need some tuning (ui\audio_effect_compressor.cpp). . Better decoupling of the effects thread. Fixed incorrect detection of config loading when the driver file was not yet created. Fixed synchronous streams (emu\sound.cpp). Detect EQ when not actually used (audio_effects\eq.cpp). . Do not interpolate when not changing rate, fixes pbobble2 and gunlock (emu\sound.cpp). . Re-added support for -volume option (works same as before sound rewrite) (emu\sound.cpp and emu\emuopts.cpp). Fixed range checker with negative values (emu\emuopts.cpp and util\options.cpp). No need to save master volume of 0. Disable error.log "Sound reset" message by default (emu\sound.cpp). . Updated mapping when changing audio mixer configuration (fixes issues in audio mixer menu, like randomly adding new entries when pressing l/r, cursor randomly moving to 1st entry when pressing l/r, and portaudio errors when switching devices) (emu\sound.cpp). . Implemented movable and swappable patterns (reduces allocation and copying) (osd\interface\audio.h). Moved default implementation stuff out of the header, use algorithm library in place of memcpy (sound\sound_module.cpp). Removed obsolete wave (cassette sound) device (sound\wave.cpp). . Fixed rounding issue with db adjust (ui\audiomix.cpp). Added missing header for Clang (interface\audio.h). Correct subtle timing issues, added -sound support and resampling at the edge (emu\sound.cpp). Fixed mistake on microphone channel mapping (ui\audiomix.cpp). . Allow positioning unknown and don't map (emu\speaker.h). Better handling of -sound none. Correct handling of streams closed on the OSD side (emu\sound.cpp and ui\mainmenu.cpp). . Recirculate buffers rather than removing them to reduces allocations. Scale the number of samples to skip on overrun according to the packet size (sound\sound_module.cpp). . Allow seperate display and configuration names for sound nodes. Fixed typo on mono channels (sound\namco.cpp). . Tell the OSD about the update (emu\sound.cpp). Print verbose message if module doesn't support audio_latency option. Changed audio_latency meaning similar to what it was before (20ms steps for portaudio, xaudio2, wasapi), old mame.ini default setting of 2 should work fine. . Correct stream_sink_update function (sound\js_sound.cpp). Allow to compile without threads, by defining SOUND_DISABLE_THREADING (emu\sound.cpp). Set SOUND_DISABLE_THREADING for Emscripten target (scripts\genie.lua). . Got rid of dependencies on emu and frontend. We're working to reduce circular dependencies. Adding more is a regression (sound\*). Set rate to SAMPLE_RATE_OUTPUT_ADAPTIVE (highest samplerate of device it outputs to) (emu\disound.cpp). . Fixed default.cfg load not applying default effects and rename default.cfg default_audio_effects to audio_effects (same as system.cfg, there's no clash). Fixed sync issue when starting a stream that was stopped. Fixed extremely subtle and rare problem that could happen when changing stream frequency (emu\sound.cpp). . Fixed crash after loadstate with different resampler setting (emu\sound.cpp). Moved positions to osd interface. Added special-casing for LFE and reverb (currently too subtle, need to find out why). . Removed the hard cutoff ceiling at 20K. It was an initial way to limit the number of phases and filter length, and that is done explicitely now. Plus, who knows, maybe someone will want to run ar 192KHz some day (emu\resampler.cpp). . Detect preset when entering menu (audio_effects\reverb.cpp). Don't try to filter above nyquist freq (or slightly below it) (audio_effects\filter.cpp and reverb.cpp). Improved control over audio filter cutoff freq. Don't repeat min/max freq values in multiple places. Allow finer control of frequency with shift+alt (ui\audio_effect_filter.cpp). Changed freq to u32 and apply same nyquist freq fix (audio_effects\eq.cpp). . Fixed reverb decays and disable by default reverb and compressor (audio_effects\compressor.cpp and reverb.cpp). Changed channel link range to 0-1 and most floats to 2-decimals (audio_effects\compressor.cpp). . Added reset_all for resetting all variable settings (emu\audio_effects\*). Added LR_REPEAT flag when cursor is on db (ui\audiomix.cpp). Do limit rounding with roundf instead of manually (ui\audio_effect_eq.cpp and audio_effect_filter.cpp). Changed default bands to 100,330,1k,3,3k,10k. Check band mask instead of db when building filter (audio_effects\eq.cpp). . Initialize channel positions in header file (prevents channel_position constructor initializing after initializing array of channel_position in sound backends) (osd\interface\audio.cpp). . The new menus were unusable with a touchscreen, and not conducive to localisation. It's still not possible to add sound routes with a touchscreen, but at least it's possible to configure routes that exist (mame\ui\*). Fixed localisation issues and less temporary objects (emu\sound.cpp and emu\audio_effects). . Avoid anything that could possibly depend on static initialisation order across transaltion units. Allow speaker position names to be localised (modules\sound). Don't pretend it can create output streams (sound\none.cpp). Blind attempt at updating for base class changes (sound\js_sound.cpp). . Sound modules . CoreAudio: Changed audio_latency duration option to milliseconds (lib\osdobj_common.cpp, sound\coreaudio_sound.cpp). Changed audio_latency to seconds (float), so people with existing mame.ini won't get broken sound (lib\osdobj_common.cpp, sound\coreaudio_sound.cpp). Preliminary revised macOS CoreAudio backend. Supports multiple input and output streams to multple devices simultaneously. audio_latency now is a floating-point number of 50 Hz audio frames. 0 is valid now. Channel layouts are determined when available (many devices don't support them). External effects support removed; it may return later. Rebuild the device list when the default devices change, fixes a crash when a new default device is connected. Added a callback for each active device to see if it becomes unavailable. Moved default device change check to get_generation so it happens regularly. Use property listeners to determine configuration changes instead of polling. Device additions are now tracked in addition to removals. Changing channel configuration in Audio/MIDI Setup is now tracked. Channel layout tag is a bitfield, not an enum (sound\coreaudio_sound.cpp). . PortAudio: Enhance portaudio support. Sadly, portaudio is limited to the worst case of all OSes audio supports (and ALSA est rather bad) and does not yet handle hotplug. So the result is quite limited. Also, the devices when running portaudio over emulated alsa over pulseaudio are quite ugly. Still works though. Added support for audio latency and samplerate options. Lower latency interval steps. Added api info to device names (sound\pa_sound.cpp). Added error messages (+device name). Fixed a non-const global that should be const. Popmessage instead of printf if there's a device conflict while fiddling in the audio mixer menu. Do not mess up on shift-f3 (sound\pa_sound.cpp). . SDL: Make system default work (sound\sdl_sound.cpp). Rework a case where the sound defaults are not put in place in correct order (when starting a system with mandatory cart without one) (emu\sound.cpp and sound\sdl_sound.cpp). Don't try to call SDL_GetDefaultAudioInfo for SDL older than 2.24.0 (sound\sdl_sound.cpp). Allow MAME to be built with SDL 2.0.14 or 2.0.15 with limited functionality. Correct SDL verson detection macro (sound\sdl_sound.cpp). . WASAPI: Added preliminary WASAPI sound module (not enabled yet). Improved error handling and buffer management (sound\wasapi_sound.cpp). Made WASAPI sound the default on Windows and made DirectSound lower priority than XAudio2 (lib\osdobj_common.cpp). Deal with resetting per-app device to default in Windows mixer controls. Don't print an error message on a "not found" error getting default devices - this happens when there are no active devices. Repeat the channel mask from the mix format back when initialising the audio client. Avoid another potential deadlock. It's possible for a device format property update to block an activate call. There's still a race condition in that if streams get device invalidated errors before the property update arrives, the core may try and fail to create replacement streams. This at least stops it from causing a deadlock, at worst you lose sound. Handle someone messing with the mixdown format right as MAME exits (sound\wasapi_sound.cpp). . XAudio2: Initial support for new sound system features (sound\mmdevice_helpers.cpp). Setting the default latency to the target buffer submission frequency is a bad idea. Changed total buffer size to actually match specified latency (calculation didn't conside sample size or channel count). Smarter buffer submission algorithm. Listen for critical engine errors and more Clang warnings. More paranoid cleanup: This hopefully fixes the freezes on exit when changing the sample rate underneath it. Sound may or may not work after you do this until you restart MAME due to race conditions. Better handling of critical errors and more verbose logging. More fixes: Fixed a couple more potential deadlocks when handling critical engine errors. Better tracking of the default device when devices are reconfigured. Bump node number on critical XAudio2 engine errors. The sound manager bug that this was triggering has been fixed. Sound now recovers reliably after changing the mixdown format. Hide endpoint devices in "unplugged" state. Deal with resetting per-app device to default in Windows mixer controls. Actually commit correction to autocomplete gone wrong. Fixed some stuff not getting reset on exit()/init(). Don't print an error message on a "not found" error getting default devices - this happens when there are no active devices. Use more fine-grained locking in voice callbacks, simplified further simplified buffer queueing. Changed logging back to display names. Don't request sample rate conversion if stream sample rate matches mixdown sample rate. Changed buffering strategy for output streams. This should work better with output devices like Bluetooth speakers and should be a bit smoother in general. Use abuffer for bufferring input. This simplifies the code somewhat and gives a bit more consistency across modules. XAudio2 sound will ignore the audio latency setting for now - properly synchronising streams, etc. requires more work (sound\xaudio2_sound.cpp). . LUA engine: Added set_speed_factor (mame\luaengine.cpp). Reenabling the write accessor for the LUA input_class enabled property. This is used by BletchMAME to toggle mouse capture on and off (mame\luaengine_input.cpp). . Timer system: Fixed lockup with as_string and negative attotime (emu\attotime.cpp) . 3rdparty . Updated expat to version 2.7.1 . Small BX platform detection/usage improvements (3rdparty\bx\src\mutex.cpp, os.cpp and thread.cpp). Use BX_PLATFORM_POSIX where needed. The semaphone implementation already uses BX_PLATFORM_POSIX to include on all the POSIX platforms; do the same also in other places for consistency. This is done also for , which is a POSIX API, and sched_yield() from it is already guarded by BX_PLATFORM_POSIX. Drop support for GNU libc older than 2.12. glibc 2.12 was released on 2010, and at this point any supported Linux distro has that version or way greather than that. Fixed BX include on Hurd. does not exist, the standard does exist so switch to it. . Moved some duplicated code into the common header (osd\asio.h) . PLUGINS: Allow deleting autofire buttons or input macros without needing to use the UI Clear input (plugins\autofire and plugins\inputmacro). . Added check for systems marked as supporting saved states that use devices lacking saved state support (besides slot cards) (emu\validity.cpp). Validate device input defaults. Also do input validation on non-default slot options (emu\validity.cpp). . Added muldiv64 and muldivu64 functions. Made multiply/divide helper names a bit more consistent with other functions (osd\eminline.h). . Added Belarusian translation - SDLMAME . Use dirent::d_type on any GNU libc platform (osd\modules\file\posixdir.cpp and posixptty.cpp). This BSD extension is provided by GNU libc, so enable its usage with that C library. Use on any GNU libc platform ((osd\modules\file\posixdir.cpp and posixptty.cpp). openpty() is implemented by GNU libc for all the OSes, so include when using that C library. Cast dirent::d_name to const char* before using it ((osd\modules\file\posixdir.cpp and posixptty.cpp). According to POSIX [1], the type of dirent::d_name is loosely defined as "char d_name[]", as array with an undefined size. In particular, few ways are seen in the wild: (a) "char d_name[size]", i.e. as proper array with a full size and (b) "char d_name[1]"/"char d_name[0]", i.e. as C flexible arrays. Regardless of its type, dirent::d_name is used as if it was a classic const char *, i.e. as pointer to a null-terminated string. util::string_format() uses C++ templates to collect all the arguments, and thus it will use the actual type of dirent::d_name. In case of (a) there is no issue, however for (b) the result is that only the first character is used. To ensure that dirent::d_name is fully used, explicitly cast it to const char * before passing it to util::string_format(), so the whole string is used. . Removed redundant checks when setting BASE_TARGETOS/SDLOS_TARGETOS. The vast majority of the OSes use BASE_TARGETOS=unix and SDLOS_TARGETOS=unix, which are set as default values; the few exceptions (Windows and macOS) already have their own selections. Hence drop all the empty if statements for other OSes than Windows and macOS, as actually redundant (osd\sdl.lua). . Define buffer size for openpty(). There is no defined size for the slave name returned by openpty(); OSes that have a PATH_MAX constant usually use that as limit. Create a custom OPENPTY_PATH_MAX constant specifically for openpty(), even in case PATH_MAX is not available: in that situation, use 8192 as buffer size, which hopefully should be "good enough" (osd\modules\file\posixptty.cpp). . Better handling of getting PTY path, etc. Support Issue 8 TTY_NAME_MAX/ptsname_r and pre-standard ptsname_r. Set termios flags directly rather than relying on BSD's cfmakeraw. Actually enable the XPG-8 path (file\posixptty.cpp). - Compiling . Only link asmjit if native DRCs are built (src\cpu.lua and src\main.lua) . Only check for pipewire lib if NO_USE_PIPEWIRE is 0 (osd\modules.lua) . Updated VS/MSbuild settings to reflect current ClangCL (scripts\genie.lua and scripts\src\3rdparty.lua). Cherry-pick upstream fixes for ClangCL (3rdparty\bgfx\src\renderer_d3d12.cpp and 3rdparty\flac\src\libFLAC\include\private\bitmath.h). . Moved helpers that use the __int128 type here and fixed availability detection for them (osd\eigcc.h). Added fast multiply/divide helpers for x86-64 (osd\eigccx86.h). . Cleaned up various things (machine\mc6852.cpp, sound\dac76.cpp, konami\konamigx.h, konami\konamigx_v.cpp and sega\model2_v.cpp) - Debugger . Added fallback to "0" if address evaluation fails ([win] debugger crash). Memory window address field: If address string evaluation fails, we'd fall back to the last-known-working string. This works great if the failure is due to the user changing the string. But if the user changes the source, that also can cause failures (different symbol table used for evaluation), and this fallback does not help. The fix is to add a second fallback: Use "0" as the address string when all else fails (debug\debugvw.cpp). . Debugger cleanup: Use enums for m_views indices. For the wininfos that participate as individual panes in the main console window, their viewinfos are referenced via the m_views[] array with hard-coded indices of 0, 1, and 2. Define & use enums for those indices (VIEW_IDX_DISASM, VIEW_IDX_STATE, VIEW_IDX_CONSOLE). Changed MAX_VIEWS from a hard-coded constant of 4 to the last enum in that list, which changes it to 3 (I don't think it should have been 4 in the first place). Wininfos that NEVER appear as panes in the main console window (e.g., logwin_info, pointswin_info, etc.) continue to use m_views[0]. . Debug view scroll workarounds for Cocoa debugger. Workaround to fix bottom scrolling and scrollbars the first time the debug window overflows (osx\debugview.mm). . Style over system colors. QPalette:Accent doesn't exist in Qt5 (qt\debuggerview.cpp). . Symlist usability + symbol table extensibility. Address issue #6655 (symlist command usability), added a bit of plumbing for future extensibility. symlist with no arguments displays all global *and* :maincpu symbols, with clear header text for each list. At the bottom, prints helper text to make user aware of the cpu form. To allow for adding new kinds of symbols in the future, this adds an enum field to symbol table for its 'type', for prettier printing from symlist. Symlist now traverses symbol table chain completely. . No need to try to convert string_view to const char* and fixed possible nullptr access (debug\debugcmd.cpp). 0.277 - New games: Brain Box II (Set 114), Credit Poker (ver.30e, Extra Bonus), Dellfern V18 (77's, 99's & Suits, 1 Credit), Dokidoki Kingyo Sukui, 'Double Joker Poker Dellfern 1996', Draw Poker HI-LO (bootleg, set 1), Draw Poker HI-LO (bootleg, set 2), Joker Poker 2000 (£15, Winbank), Kotekitai Slot, Noraut Poker (6007 32k), Noraut Poker (6007 64k), Paracaidista, Shatekids and Winbank Joker Poker - New Working games: Animal House (set 3), Animal House (set 4), 'GTI Double or Nothing Draw Poker', Lucky Bar (W-4 with MC68705 MCU), New Hi-Low Poker, PMA Poker, Tic Tac Toe (Sundance bootleg of New Lucky 8 Lines) and 'unknown poker game PKII/DM' - New Non-Working games: Balance Try (Japan, ver 1.00), Biorhythm, Chaoji Daheng 6th, Da Bai Sha, Da Bai Sha (H.B.), Happy Planet, Hello Kitty Koi no Shugoshin Uranai, Hong Mayi, Janken Man Ganso 2, Jin Sanse, Jipin Dou Dizhu (set 1), Katori Attack (Japan, ver 1.03), 'Keroro Gunsou - Hacha Mecha Yakyu Taikai de Arimasu!!', Kimble Double HI-LO (Z80 version, unencrypted), Love Power, Pai Pai Le 3, Petit Lot (ver. 4.1), San Da Yi, Speed Race (Taito), Super Shanghai 2000 (standard. green board), Super Shanghai 2000 - Wrestle Fiesta (30% bonus, red board), 'unknown bubble soccer game', 'unknown Kramer Poker (pcb3, encrypted)', 'unknown Kramer Poker (pcb4, encrypted)', 'unknown Kramer Poker (pcb6, encrypted)' and Zhongguo Majiang - New clones: 'Chao Ji Da Heng 2 (V311CN, alternate GFX ROMs)', Chong Chong Leyuan (V100CN), Colision (bootleg of Head On), Cruis'n Exotica (version 1.0, build 8643), Dellfern V18 (77's, 99's & Suits, 10 Credits), Dellfern V18 (Amusement Poker), Dellfern V18 (Joker Poker / Jack Plus), Dellfern V18 (Joker Poker, raise bet, 2p/10p), Dellfern V18 (£6 Jackpot Bank Poker), 'Double Joker Poker / Jacks Plus (45%-75% payout, alt)', Fengkuang Dou Dizhu II, Fenix (Explomatic, Spanish bootleg of Phoenix), GTI Double or Nothing Draw Poker (Cleco), Ichi Ban Jyan (Ver 2.35), Jipin Dou Dizhu (set 2), Kaimen Hu, The King of Fighters '96 (bug fix revision), Long Hu Bang III: Cuo Pai Gaoshou (China, V242C), Mahjong Electron Base (parts 2 & 3, Japan set 3), Mandinga (bootleg of Amidar), Manguan Caishen (China, V110C), Noraut Joker Poker (N1A), Noraut Joker Poker (text hack), Pit Boss Megatouch (9235-00-01 R0A), Poker Plus 6 Cards (set 2), Poker Plus 6 Cards (set 3), Rail Chase 2, Street Fighter III 3rd Strike: Fight for the Future (Asia 990512, NO CD), Street Fighter III 3rd Strike: Fight for the Future (Asia 990608, NO CD), Super Earth Invasion (Centromatic, Spanish), Tattoo Assassins (US prototype, Mar 14 1995, older sound), Triple Fever (V110US), Turbo Poker 2 (set 1) and Turbo Poker 2 (set 3). - New PinMAME games: Soccer Kings (alternate set 2) - New drivers: biorhythm.cpp, iam2.cpp, jankmg2.cpp, paipaile.cpp, paracaidista.cpp, sealy_8031.cpp, sg_vga.cpp, shoken_md06.cpp and testlove.cpp - New devices: bt473 and upd78c14 - New Clrmame: https://mamedev.emulab.it/clrmamepro/#downloads - Bob Zed (What's new): https://youtu.be/aPnfWaWPhJM - CPU . Atmel ATmega1280 CPU: Fixed program address masks for word addressing. Fixed PC shift in state string export (avr8\avr8.cpp). . Dynamic Re-Compiling . drcbec . Don't clear carry flag on a zero-bit rotate through carry. Fixed FSMOV/FDMOV turning things that look like signalling NaNs into quiet NaNs on i686 (cpu\drcbec.cpp). . Interpret index operand for load/store instructions as a signed value for consistency with other back-ends. Honour alignment rules when packing immediate values (cpu\drcbec.cpp). . Added stub implementations for TEST with no flag outputs to allow running with simplifier disabled. Implemented DREADM/DWRITEM with byte size access. Store pointer to address space directly in instruction stream. Added some actual detail to error messages on encountering unexpected instructions (cpu\drcbec.cpp). . drcbex86 . Got rid of unnecessary std::function use. This substantially reduces the code size and reduces allocations during code generation (cpu\drcbex86.cpp). . Don't clear carry flag on a word-sized zero-bit rotate through carry (64-bit case is more involved). Made 64-bit ROLC/RORC with zero bit count preserve the carry flag (cpu\drcbex86.cpp). . Fixed flags for 64-bit multiply instructions. Templated 64-bit multiplication helpers on the zero/sign flag source, cleaned up casting pointers to integers (cpu\drcbex86.cpp). . Be explicit about preserving flags in load/store instructions. Fixed DROLINS clobbering source in I0 and miscalculating flags when destination is I0 (cpu\drcbex86.cpp). . drcbex64 . Avoid unnecessary expensive operations when a shift operation request the zero and/or sign flags but not the carry flag. Avoid some more unnecessary register copies for ROLAND (cpu\drcbex64.cpp). . Don't construct std::function objects during code generation - they require allocation. Avoid more conditional branches on conditional MOV (cpu\drcbex64.cpp). . Optimise SUB x,0,y to a NEG instruction (gets down to one instruction from two or three a lot of the time). This had been a TODO comment for ages (cpu\drcbex64.cpp). . Removed code for special-casing some situations the simplifier can now take care of consistently. Fixed a bug causing some shifts to be treated as a no-op when the destination and source are not the same. Added a special case for comparing something to itself (cpu\drcbex64.cpp). . Removed code for another special case of ROLAND that the simplifier deals with. Removed more speical cases for things the simplifier deals with (cpu\drcbex64.cpp). . Fixed some cases where a ROLC/RORC with zero shift count could incorrectly clear the carry flag. Greatly reduced copy/paste in the code generation for multiply instructions (cpu\drcbex64.cpp). . Interpret index operand for floating point load/store as a signed 32-bit value for consistency with integer load/store. Guard against any possibility of load and store instructions altering the flags. Reduced copy/paste in floating point load/store instructions. Cleaned up some casts between integer types with differing size and signedness (cpu\drcbex64.cpp). . Don't special-case SEXT with an immediate source - the simplifier takes care of this. Fixed another bug uncovered after fixing a bug in the DRC tester (cpu\drcbex64.cpp). . Optimised shift operations slightly. Simplified code generation for CARRY. No idea why it was preserving RAX at all - it always uses RAX as a scratch register (cpu\drcbex64.cpp). . Always keep UML floating point registers in memory for SysV ABI. This was changed in MAME 0.181 ("Fixed XMM usage on x64 ABI, restores debugger functionality on Mac/Linux for DRC drivers.") but it never worked for multiple reasons: The comment mentions saving around CALLC, but there is no code to save and restore around CALLC, DEBUG and RECOVER, all of which can clobber callee-saved registers. Numerous opcode handlers assume XMM0 and XMM1 can be used as scratch registers, but this change mapped them to UML F0 and F1. This resulted in F0 and F1 getting clobbered by many UML instructions (cpu\drcbex64.cpp). . drcbearm64 . Simplified logic for choosing optimal AND strategy and apply the change to OR and XOR instructions as well and fix some cases where a 32-bit logical operation would fail to clear the upper bits of a register (cpu\drcbearm64.cpp). . Don't update flags that aren't requested in a few places. Removed code for special-casing some situations the simplifier can now take care of consistently. Added a special case for comparing something to itself (cpu\drcbearm64.cpp). . Removed more speical cases for things the simplifier deals with. Don't clear carry for ROLC/RORC with zero shift count (cpu\drcbearm64.cpp) . Interpret index operand for load and store instructions as a signed 32-bit value for consistency with x86-64. Moved code to interpret load and scale the index for integer load/store to a helper function to make it easier to update if it needs changes or fixes. Use and/orr to set carry flag directly rahter than using an intermediate register when both operands of a CARRY instruction are immediates. Fixed incorrect operand type assertion for FREAD. Use less verbose asmjit helper functions for shift operations and addressing modes (cpu\drcbearm64.cpp). . Fixed ROLAND, ROLINS and CARRY clobbering the shift input when it's a a register. Added minimal operand swizzling to allow AND, OR and XOR to work without the simplifier. Removed some special cases for situations the simplifier deals with for ROLAND and ROLINS (cpu\drcbearm64.cpp). . Optimised setting up carry flag for ADDC and SUBB. There's no need to preserve the NZV flags so a two-instruction sequence can be used (cpu\drcbearm64.cpp). . Fixed more cases where ROLAND clobbered source registers. ROLAND could clobber source registers or produce incorrect results if the desination was the same UML register as the shift or mask. Fixed a bug in the logic for deciding whether to use a temporary register for the mask for ROLINS. Also optimised ROLAND and ROLINS some more (particularly translation from UML's left rotate to ARM's right rotate) and removed a special case that the simplifier now takes care of (cpu\drcbearm64.cpp). . drcbex86, drcbex64 and drcbearm64: Got rid of the intermediate tables in favour of bit switch statements. This improves startup time, reduces code size, and gives the compiler more optimisation opportunities. Got rid of asmjit namespace qualifiers left over from when the class declarations were in headers and hence outside the scope of the using namespace statements (cpu\drcbearm64.cpp, cpu\drcbex64.cpp and cpu\drcbex86.cpp). . UML . Rewrote the UML simplification code. Fixed many cases that could cause the upper bits of a register not to cleared following a 32-bit operation. Added more simplifications. Allow many simplifications when flag updates are requested. Fixed various bits of unreachable code (cpu\uml.cpp). . Fixed assertion failures when simplification reduces operand count. Also added a few more simplifications. Fixed some cases where simplifying multiplication instructons incorrectly changed output flags (cpu\uml.cpp). . Started moving UML instruction reference to main documentation. Truncate immediates to size for a few more instructions. Added SPACE_OPCODES since it's a well-known address space now. Removed SCALE_DEFAULT. It's unimplemented by back-ends and unused by front-ends (cpu\uml.cpp). Added reference for UML flow control, data movement and emulated memory access instructions. Added a couple more UML data movement instructions (techspecs\uml_instructions.rst). . Less confusing names for parameters to read and write instruction generators (cpu\uml.h and cpu\drcumlsh.h). Removed assertion that's no longer valid (cpu\uml.h). . Made it possible to build with logging simplifications enabled (in uml.cpp it logs each step, in drcuml.cpp it logs the net change). It will produce absoluely massive logs, though (cpu\uml.cpp and cpu\drcuml.cpp). Removed woefully inadequate and badly rotted "backend validation" code (cpu\drcuml.cpp). . ppcdrc: Fixed issues in POWER div (signed divide) instruction causing GitHub #13329. This was "working" on x86-64 due to the backend treating shift/rotate instructions with zero immediate bit count as a no-op even if the source and destination registaer aren't the same. Fixing the bug in the back-end caused it to break the same way on x86-64 as it does on the other three back-ends that didn't have this bug (powerpc\ppcdrc.cpp). . Hitachi SH-3/4: Implemented specific SH3/SH4 chips & pass the required endian into the constructor, SH4 internal registers now work when using big endian. The debugger is now aware that the SH3/SH4 has an MMU. Check correct irr0 bits, after the register size was corrected. . hyperstone E1 . Don't generate code to handle a delayed branch inline. Also avoid an redundant load when checking if trace is active. Reduces generated native instruction count by about 24% on x86-64 and gives an overall performance improvement of about 3.5% in -bench scores (e132xs\e132xs.cpp). . Implemented supervisor and trace modes as recompiler modes. This eliminates or simplifies a lot of run-time checks. In particular, the trace checks on every instruction are not generated when not tracing, and simplified to just checking the P bit when tracing. Optimised code generation for RET, avoid a redundant load when checking for an overflow trap, use the exception parameter for exception codes rather than generating one function for each possible code. Also simplified interpreter code for RET. Implemented SUMS for the recompiler. Implemented privilege check for setting L (interrupt lockout) for recompiler. Not implemented for interpreter. Partially fixed tracing. P flag should be set by all instructions except RET. Trace exceptions are not triggered for branches when using the recompiler. Fixed ILC being set incorrectly for RET. Removed leftover block end from a function that no longer generates a standalone block (e132xs\e132xs.cpp). . Optimised recompiled FRAME instruction. Also added some more constants so there are a few less magic literals (e132xs\32xsdefs.h, e132xs\e132xsdrc.cpp). . Fixed XM (index move) instructions failing to update the destination register on range error for interpreter and recompiler. Fixed double-word stores when the source indicates SR (both stored words are zero) for interpreter and recompiler. Fixed recompiler failing to set ILC and P on range error and frame error exceptions. Optimised recompiled code for word size shifts. Pushed more recompiler logic from run-time to code generation time and simplified delay slot PC check and trace check logic. Use MOV rather than LOAD where possible in recompiler to improve code generation performance and symbolic memory locatin names in disassembled UML. Updated TODO list in header comment, reduced copy/paste some more (e132xs\e132xs.cpp, e132xs\e132xsdrc.cpp). . Moved interrupt check to the beginning of instruction execution. Fixes interrupts not being serviced while tracing. Further improves recompiler performance. Fixes recompiler interrupt check function calling itself recursively. Also added debugger exception hook calls to interpreter and recompiler (e132xs\e132xs.cpp, e132xs\e132xsdrc.cpp). . Call debugger exception hook for TRAP instructions. Also made cycle counts a bit more consistent between interpreter and recompiler for exceptions and traps (e132xs\e132xs.cpp, e132xs\e132xsdrc.cpp). . Made debugging Hyperstone E1 software less painful. Fixed local register display in debugger (this never worked). Made disassembler show local register indices (e132xs\32xsdasm.cpp, e132xs\e132xs.cpp). . Fixed double-counting bug in exception dispatch. Fixed unsigned comparison of signed values in MUL cycles calculation (e132xs\e132xsdrc_ops.hxx). . Fixed failing to call the debugger instruction hook for the first instruction following an interrupt, exception or trap. Use UML branches to emulate non-delayed intra-block branches, avoiding the expensive "hash jump". Re-worked the instruction description code: Calculate static branch targets for more instructions. Flag instructions that may cause mode changes. Don't be so eager to end an instruction sequence. Removed the local register input/output flags - FP may no be the same when executing the code as when describing instructions. Fixed interpreter incorrectly setting ILC when an interrupt immediately follows a RET instruction. Fixed recompiler flag calculation regressions and optimised a little (e132xs\e132xs.cpp and e132xs\e132xs*). . Disabled single-instruction-per-block mode. Don't bother with delay slot checks where it's unnecessary. Try to generate a speicalised copy of the delay slot instruction followed by a direct branch of possible. Use the pre-decoded instruction length for updating the PC. Specialised versions of the CHK instruction that always or never raise exceptions (e132xs\e132xs.cpp, e132xs\e132xsdrc.cpp). . More recompiler optimisation: Optimised double word shifts. Optimised the most common PC-relative operations to treat PC as constant when possible, including: addi PC,imm (long relative branch), add PC,Rs (computed goto), sum Rd,PC,imm (calculate PC-relative address), add Rd,PC (calculate PC-relative address), ldw.d PC,Rs,imm (PC-relative load) and stw.d PC,Rs,imm (PC-relative store). Changed template parameters to LlamaCase to make them more visible different to constants/macros (e132xs\e132xsdrc.cpp). . General cleanup and usability improvements: Aligned the operand field in disassembly. Calculate results of immediate values against the PC to make position-independent code easier to read without constantly using a calculator (e.g. this shows destinations for call Rd, PC, imm). Added more symbols to the UML helper to make logged generated code more readable. Made single-instruction-per-sequence mode configurable rather than a compile-time option. Got rid of a criminal amount of copy/paste in the disassembler and got rid of all the deprecated strcpy calls. Got rid of some duplicated constants, changed some constants from macros to enumerated values or constexpr globals. Reduced the amound of stuff in headers that doesn't need to be there (e132xs\32xsdasm.cpp). . Implemented pointer error exceptions on attempting to use a zero address register (other than SR) in the recompiler. Also optimised load/store instructions a bit and reduced copy/paste. Fixed a couple of disassembler issues (e132xs\e132xs.cpp). . Emulate pointer error exception on load/store and range error exception on store signed byte/half-word. Further optimised code generation for MOV and MOVI. These are very hot, so this alone gains a further 2% performance or so in the dgPIX games. Also some other miscellaneous cleanup (e132xs/e132xs.cpp). . Improved exception emulation: Fixed behaviour of exceptions in delay slots and fixed recompiler not updating ILC and P for some exceptions. Implemented privilege error exception on setting L in user mode for interpreter. . Log bus control and memory control setup. Miscellaneous fixes/optimisation: Fixed behaviour of delayed branches, trace exceptions, and saved PC calculation for error exceptions in delay slots for the interpreter. All instructions in delay slots, branching instructions that can raise exceptions and tracing shoud now (mis)behave properly for the interpreter, including things the manual says you shouldn't do. Fixed and optimised flag updates for left shifts for the recompiler. Optimised ROL instruction for the recompiler and made flag calculation equivalent to the interpreter both with and without the "Missioncraft flags" compile-time option. Only block interrupts for one instruction following a delayed branch. Optimised the SOFTWARE instruction a little for the recompiler. Added more SDRAM configuration logging and cleaned up code a bit (e132xs\e132xs.cpp). . Got rid of "Mission Craft flags" compile time option. Assume ROL sets the V and C flags the same way as SHL and MOVI clears the V flag (e132xs\e132xs.cpp). . Untangled device types. Got package option (T, N or B suffix) out of device type. Enabled 4x PLL clock multiplier for GMS30C2216/GMS30C2232. Implemented entering power down mode via MCR for E1 and E1-X cores. Marginally better code generation for a few instructions. Log available bus/memory configuration options for different cores. Added post load handler for E1-XS and E1-XSR cores to install SDRAM mode/configuration handlers if necessary. Improved comment about different Hynix and Hyperstone CPU models. It's rather important to initialise DRC handle pointers. Improved comment about model differences (e132xs\e132xs.cpp). . Fixed I/O for models with 16-bit external bus. Only a single I/O access is generated for an I/O word read/write. The upper half just disappears if the pins aren't present. This fixes "phantom" I/O accesses, allowing address maps to be cleaned up a bit. Reduced I/O address width for models with 16-bit external bus to match hardware. Made addressing consistent between interpreter and recompiler for I/O double-word accesses. Implemented power down via internal I/O write for E1-X and later cores (none of the games I tested actually use it) (e132xs\e132xs.cpp). . Changed STBS and STHS to do an unsigned range check. Fixes vamphalf storage test. Also fixed IO3 wake from power down (e132xs\e132xs.cpp). . Use word addressing for I/O. There are no byte enable or write strobe signals for I/O, and there's only a single operand size, so word addresses make more sense. Also changed STBS/STWS to allow any valid signed or unsigned value of the applicable size. This allows vamphalf attract mode to work as well as the storage test (e132xs\e132xs.cpp). . Use the CARRY instruction rather than a right shift to set up carry in (e132xs\e132xsdrc_ops.hxx). Added named input line number constants (e132xs\e132xs.cpp). . Cleaned up disassembler a bit, disassemble most invalid instructions as D.HU (e132xs\32xsdasm.cpp). . Intel 80186: Fixed cases where specific segment register settings could cause the i80186/188 peripherals to fail to be properly mapped into memory space. . Intel 8085A . Rewrote the enhanced no documented i8085 RDEL & DSUB instructions and their own flags. Small cleanup. . Optimized set_status by checking if devcb is unset. . Intel i960KB: Fixed disassembly of ADD , SUB & SEL for cc = l, ne, le, o. Enable decoding of a few more reg-type instructions. Added 0x prefix to unary branch destinations (i960\i960dis.cpp). . KONAMI CPU . Corrections to EXG/TFR opcode. Set EXG/TFR reg A high byte to 0x10 (GitHub #13544; m6809\konami.cpp) . Be consistent with uppercase data and reg names and renamed some opcodes (m6809\6x09dasm.cpp and m6809\konami.lst). Shift amount for the extra shift opcodes is 4-bit (m6809\konami.lst). . MIPS-I/III, PSX CPU and RSP CPU . MIPS disassembler refinements (mips1, mips3, psx, rsp). Changed hexadecimal prefix from $ to 0x ($ means something else in MIPS assembler syntax) and omit for small numbers (mips\mips1dsm.cpp, mips\mips3dsm.cpp, psx\psxdasm.cpp and rsp\rsp_dasm.cpp). . mips1, mips3, psx: Use shorthand mnemonics bal, beqz(l), bnez(l), li, move, neg, negu, not where applicable. Added delay slot to jr ra for stepping out (mips\mips1dsm.cpp, mips\mips3dsm.cpp and psx\psxdasm.cpp). . mips1, mips3: Removed invalid instructions from other MIPS cores and use .word syntax for invalid instructions (mips\mips1dsm.cpp and mips\mips3dsm.cpp). . mips3: Fixed field spacing for some instructions (mips\mips3dsm.cpp). . MOS Technology 6502: Around 10% performance gain by checking if devcb is unset that is called on every opcode (m6502\m6502.cpp). . Motorola MC68010: For 68010 only, do not throw away buserr on prefetch (m68000\m68010.cpp). . NEC uPD7725: Improved host interface, suppress side effects for debugger reads. Split host interface into separate data_r, data_w and status_r. Added access mask for µPD96050 data RAM write and simplified downstream code that uses it (upd7725\upd7725.cpp). . NEC V60: Fixed issue with CVTSW overflow flag after rounding (v60\op2.hxx) . Panasonic MN10300: Added Panasonic MN10300 disassembler . Toshiba TMPZ84C015: Isolated cpu-specific memory translate functions (z80\z84c015.cpp) . Zilog Z80 . Around 10% performance gain by checking if devcb is unset that is called on every opcode (z80\z80.lst). Improved Z80 code generation (z80\z80*.*). Revisited z80 code generator. Sort prefixes to have consistent generated output (z80\z80make.py). . Avoided wrong isunset() detection in some (MESS) Spectrum clones (z80\z80.lst and z80\z80make.py). Get rid of some flag LUTs (z80\z80.cpp/h and z80\z80.lst). . Correct name of generated nsc800 source file and removed duplicate sources from build script (src\cpu.lua, z80/z80.lst and z80\nsc800.cpp) - SOUND . Biquad Filter: Added HIGHPASS1P1Z implementation and used in the (MESS) LinnDrum (sound\flt_biquad.cpp). . Exidy SFX: Use real 8253 PIT device rather than a local implementation, fixed class memory access error, cleaned up code to use virtual member functions idiomatically (shared\exidysound.cpp). . FM core: Removed YM2608/2610 SSG gain workaround (sound\ymfm_mame.h) . MIDI: Updated to PortMidi 2.0.4. Try to get PortMidi into a state where it will build with sane compiler settings. Fixes for Linux and Clang builds. Another place that needs const hit by Linux. Another batch of K&R function declarations that upset Clang. More cases of ignoring const in the macOS code. Disable another warning to help Clang on Windows. Fixed more macOS errors. Fixed the right uninitialised local variable. Fixed more discarded const and undefined macro errors (3rdparty\portmidi\*). . Nintendo/Sony S-DSP: Updates/Cleanups: Fixed pitch modulation emulation, save state support reference (https://snes.nesdev.org/wiki/SNESdev_Wiki), indent, typenames and input clock. Reduced unnecessary lines. More std::clamp uses. Use BIT for single bit flags, lowercase hexadecimal values and reference for voice state reference (https://snes.nesdev.org/wiki/S-SMP). Use logmacro.h for logging and BIT for single bit flags (nss.cpp, sfcbox.cpp, snesb.cpp and snesb51.cpp; sound\s_dsp.cpp). . PMI DAC-76 COMDAC: Emulating multiplying capability. Added support for reference current (multiplying capability), voltage output and streaming reference current. Used those capabilities in (MESS) oberheim\dmx.cpp and linn\linndrum.cpp (sound\dac76.cpp). . Yamaha YMF292-F SCSP: Improved handling of MIDI interrupts (sound\scsp.cpp) - DEVICE . Cassette tape image: Pass byte count to wave fill function for legacy cassette formats (formats\cassimg.cpp) . Discrete Netlist: Implemented audio potentiometer law. Used it in (MESS) oberheim\dmx.cpp and linn\linndrum.cpp. Function should not be a constexpr. Also avoiding pow in constexpr constants (machine\rescap.h). . Hudson HuC6202 VPC: Chose better types for member variables, made more local variables const and reformatted code (video\huc6202.cpp). . Hudson HuC6260 VCE: Suppress side effects for debugger reads and fixed save state issues (video\huc6260.cpp). . Hudson HuC6270 VDC: Suppress side effects for debugger reads (video\huc6270.cpp). . Hudson Soft HuC6280 PSG: Improved accuracy of volume control and LFO. Optimization for games that have sound disabled (sound\c6280.cpp). . IBM Enhanced Graphics Adapter: The mask only applies to the latch not the vram (isa\ega.cpp) . Intel 82371 southbridge, MediaGX CS5530 Bridge, SiS 85C496/497 chipset and SiS 950 LPC Super-South Bridge: Correct internal_io_map from MAME 0.276 commit (machine\i82371sb.cpp, machine\mediagx_cs5530_bridge.cpp, machine\sis85c496.cpp and machine\sis950_lpc.cpp). . K007232 PCM Controller: Suppress side effects for debugger reads and cleaned up code. Use references rather than pointers where appropriate, made some variables const. Made parameter names match in header and source and reformatted code (sound\k007232.cpp). . K054338 Mixer: Update set_alpha_level. This function now returns a level, an additive blend bool and a mixpri bool. Minor style changes to the overall file. Remarks: set_alpha_level doesn't actually set anything. Maybe rename to get_alpha_level? (konami\k054338.cpp). . K055673 Sprite Generator: Went back to update zdrawgfxzoom32GP(), now down to a third of its original size before started changing it. As a thinly veiled excuse for reworking the whole function, went ahead and added additive sprite blending (to the now singular alpha call site). Remarks: The mix priority setting is not yet handled. It seems simple enough (flip dst and src), but I would like to find an example of this before I implement it (konami\k053246_k053247_k055673.cpp). . K056832 Tilemap Generator: The attr variable holds what appear to be the elusive tile (external) mix codes. Attach it to the flags variable so these bits can be accessed in the tile callback functions. Tiles with mix codes gets their own tilemap category. Remarks: I've now changed the callback to include an attr param (konami\k054156_k054157_k056832.cpp). . Keyboard . Reassigned keys on the IE15 keyboard to match the layout of a VT52 keypad (machine\ie15_kbd.cpp) . Work round a race condition in the (MESS) Compaq i8042 rom. Fixes using ctmouse.exe (v2.1 beta4) in shutms11 (machine\at_keybc.cpp) . Fixed issue with dynamic buffer resizing. Limit buffer size to 4*8MB (emu\natkeyboard.cpp). . MOS 6522 VIA: Don't generate a signal on PB7 when the timer 1 latch is programmed with 0 (machine\6522via.cpp). Note: On the Victor 9000, the clock for the audio codec is generated by a via6522. PB7 is connected to the codec's clock input. Non-speech sounds (e.g. beeps, musical notes) are produced by outputting a cyclical waveform from the codec, with the pitch determined by the frequency of the codec clock. Software running on the Victor 9000 has been observed to attempt to silence the audio by writing 0 to the T1 timer latch (not by turning off continuous mode or PB7 output). With the emulated via6522, this resulted in a high-frequency clock signal being output on PB7, causing a high-pitched squeal whenever notes are not being played. From this observed behavior we could infer that the original 6522 HW does not output a signal on PB7 when the latch value is 0, and that the Victor 9000 software was relying on this behaviour to silence the audio output (one would have to assume that the real hardware didn't produce a squeal). . Namco 186/187 or C355/187 (sprites): Updated comments and description to reflect the fact that the C355 is used with a 187 . SCSI Bus: Consistent logging order for status. Changed data release delay to 400ns to match the comment. It was previously using a value of 40ns (machine\nscsi_bus.cpp). . VGA: Only set the ramdac color when all three values are written (video\pc_vga.cpp) - 8080bw.cpp and mw8080bw.cpp: Removed shifter from some (mostly bootleg) sets that don't use it - banprestoms.cpp: Hookup DX/DY base scrolls and cleanup inputs - bfcobra.cpp: Added watchdog timer - bmcpokr.cpp: Added Oki ROM banking and mahjong controls for Xingyun Dou Dizhu and removed MACHINE_IMPERFECT_SOUND flag. - boogwing.cpp: Consolidate driver into single file - cdi.cpp: Fixed DYUV off-by-1. The DYUV decoder requires an interpolation between steps. The previous implementation was based on the manual. This interpolation is based on visual comparison to the hardware (philips\mcd212.cpp). Fixes DYUV test has wrong colors in (MESS) cdimono1 [valdisc] (ID 08957). - cham24.cpp, famibox.cpp, multigam.cpp, nes_arcade_bl.cpp, playch10.cpp and vsnes.cpp: Cleaned up code. Implemented device_palette_interface for color palette functionality. Added some missing members to save states, and use fixed-size integer types for members that need to be saved. Moved many internal functions into protected: and private: sections. Use more appropriate integer types, made many local variables const (video\ppu2c0x.cpp) [cam900]. - cle68k.cpp: Fleshed out the driver, needs correct colors/gfx decoding. Added 2nd RAMDAC place-holder. Added notes. - ddenlovr.cpp: Clones myunivbl and myunivbl2 aren't bootlegs after all, so rearrange accordingly. - dynax.cpp: Improved DIP switches for mjelctrn and clone majxtal7 - eolith.cpp: Turned single-instruction-per-sequence mode on for now until someone works out why turning it off causes Raccoon World to generate so much code it's unplayably slow. - goldstar.cpp . Added workaround and various fixes. Cleanning up the driver. . New machine driver for Lucky Bar. Added special NVRAM for Lucky Bar. Simulated the Lucky Bar MCU. Fixed Lucky Bar reels, backgroung and mask colors. Hooked the Lucky Bar MCU and added a workaround about. Added callbacks and handlers to the Lucky Bar MCU for future full support - Promoted game to working. . Fixed clones Animal House (set 3) and Animal House (set 4) graphics - Promoted games to working. . Improvements on Tic Tac Toe (Sundance bootleg of New Lucky 8 Lines): Fixed the ROM load and bipolar PROM issues. Added proper inputs. DIP Switches for Coinage, Main Game Rate and D-UP Game Rate. Promoted game to working. - igspoker.cpp: Added NVRAM support, split driver in subclasses and small cleanups. - jack.cpp: Removed unneeded irq ack callback - konamigx.cpp: Shrink GX_MAX_SPRITES, which to the best of my ability seems to be oversized. There does seem to be several oversized arrays / defs in these files, so I think this is one of them. The usual FredYeye updates to konamigx_mixer - move declarations closer to use, more suited types, renamed temp vars, etc. Changed objpool to a vector, simplifying usage (push_back, size). Replace sorting loop with reverse + stable_sort. Improved gx_draw_basic_tilemaps - read internal / external alpha mix codes based on vinmix_on. Tiles with mixcodes get drawn in a separate pass for per-tile blending. Update alpha_tile_callback and add salmndr2_tile_callback, same as the mystwarr_v callbacks. What started out as trying to sort out konamigx_mixer() to look at shadow/priority issues instead ended up with me finally getting a foot into the figurative tile blending door. The mystwarr water hack is gone, and sexyparo gets transparent windows. This might affect many GX and related games. Alpha blending might be broken in some games now, and needs to get their mix codes attached in their respective callbacks. salmndr2 got tagged in my automatic video comparison for differing from earlier versions, that's why I managed to fix it already. Known problems: fantjour - The top & bottom flames at the captain kebab ship go missing. Uses additive blending. Small cleanup to spacing. Use hexadecimal for rom file sizes (konamigx_v.cpp, konamigx.cpp and konamigx.h). - mazerbla.cpp: Updates/Cleanups: Reduced run-time tag lookups and preprocessor macros. Reduced duplication and unnecessary trampolines. Updated comments (stern\mazerbla.cpp). Implement device_palette_interface for palette functionality. Use an address space finder to access the host address space. Use logmacro.h helpers for configurable logging. Added a VRAM addressing helper. Suppress side effects for debugger reads. Cleanup 2bpp graphics drawing and screen update function (video\mb_vcu.cpp). - model1.cpp: Changed TGP frequency to 13.333 MHz (40 MHz/3). Added /3 clock divider (mb86233\mb86233.cpp). - model2.cpp . Wait state when writing to copro TGP FIFO. The Manx TT course select rotation bug was caused by the i960 running too far ahead of the TGP and overwriting 0x918000 before the TGP got a chance to read it; adding a wait state when writing to the input FIFO prevents this. Also increase clock speed of TGP to 16.666 MHz (50 MHz/3). Removed issue that no longer occurs since TGP rewrite. Added /3 clock divider (mb86233\mb86233.cpp). . Improved z-sort and clipping. Polygons in later windows are always drawn after polygons from earlier windows, regardless of z value. Four planes representing the visible frustum are now used for polygon clipping; it is no longer necessary to add 1.0 to z during projection. . Only reset the triangle z value at the start of the frame. Zero Gunner uses z value from previous object for enemy bullets; resetting z values leads to them not being visible. Setting master z-clip value to 0xFF disables z-clipping according to Model 2B-CRX manual. . Fixed error in clipping plane calculation. Panoramic views during attract sequence of various games in linked mode should now work properly (sega\model2_v.cpp). - moo.cpp and xexex.cpp: Mask out the new additive & mixpri bits from set_alpha_level calls for now, until it's known if / how they should be used over there. - mystwarr.cpp: Removed mystwarr water hack. Update mystwarr_tile_callback (and add viostorm_tile_callback) to read tile mix codes, store last read mix code in a new m_last_alpha_tile_mix_code variable. Attach m_last_alpha_tile_mix_code to mixerflags, which happens to have two unused bits. Remarks: I updated the mixerflags documentation to mention the usage of the last two bits. Known problems: metamrph - stained glass windows are near-transparent at the moment. I think additive tile blending will fix it. viostorm - Character names fade in in reverse. This also uses additive blending, so this might also get fixed once that's in. Use hexadecimal for rom file sizes (mystwarr_v.cpp and mystwarr.h). Fixes Mystic Warriors title screen not faded (ID 04254). - neogeo.cpp: Documentation update - norautp.cpp . Added support for dynamic size chars lines. That fixes the paytable shown in different games such as dphl, dphljp, dphlunkb, sureshoto, smshilo, etc, allowing to remove the imperfect graphics flags. Fixed the overflow in norautua when drawing cards in the possible straight case. Rewrote the screen update to save a big number of lines. Removed the driver init for ssjkrpkr. Added technical notes. . Proper machine config and memory map for gtipokra. Figured out the DIP switch for gtipoker 'Minimal Hand Paid'. Fixed some ROM loads. . Added inputs & DIP switches, switched CPU to i8080 and added buttons-lamps clickable layout for newhilop, pkii_dm and pma. Added ASCII PCB layout for Dellfern sets. Improved Prologic, Kimble Z80 and Noraut JP ASCII PCB layouts. . Decoded color palettes from bipolar PROMs (applies to hardware types featuring these devices). Implemented dynamic palette per line. Unified sureshoto and dphl machine config. Real colors for dphl, dphljp, newhilop, pkii_dm, pma, gtipoker, smshilo, fastdrwp, sureshoto and dphlunkb. Fixed more ASCII PCB layouts. Fixed documentation about the 3x PPI 8255 devices for both Narout and DPHL types of hardware. Documented control panels and added/fixed a lot of technical notes. Improved edge connector/pinout diagram. Splitted the video update to fix palette for non bipolar PROM sets. . Replaced dphlunkb gfx rom. Original dump cames with 'Sure Shot' gfx surely by mistake. Using gfx from dphl. Updated decryption tables for norautua/norautub. Also srcclean. . Identified the unkljfpk set as Poker Plus 6 Cards. Added new set of Turbo Poker 2 as parent and another clone set. Added support for special Turbo Poker 2 NVRAM. Added support for enable/disable the NVRAM, required by the Turbo Poker 2 MCU handling. Added the PLDs to the Turbo Poker 2 games as binaries. Added the Turbo Poker 2 (set 1) and clone Turbo Poker 2 (set 2) bipolar PROM CRC32 to rom load. Added workaround to show cards in clones Turbo Poker 2 (set 2) and Turbo Poker 2 (set 3) attract for testing purposes. Turbo Poker 2 palette decoded from bipolar PROMs. Dedicated Turbo Poker 2 memory map and machine config. . Added new inputs, worked machine configs and buttons-lamps layouts for new games. Got rid of some now unnecessary driver inits. Created an extended memory map and respective machine config. Created a machine start to init all the necessary things. Unified the bipolar PROM palette size in 256 entries. Added more documentation and ASCII PCB layouts. Added technical notes. . Adjusted the Poker Plus palette to 256 entries . Promoted gtipoker, newhilop, pkii_dm and pma to working. - segaorun.cpp, segaxbd.cpp and segaybd.cpp: Lower perfect quantum a bit - sigmab98.cpp: Dumped BIOS version 1.0 for the Sammy medal games - simpsons.cpp and thunderx.cpp: Lower overall volume to prevent clipping - ssv.cpp: Fixed width of DSP RAM acccess handlers - williams.cpp: Fixed some range computation issues with some weird views (emu\emumem_hedr.h, emumem_hedr.ipp, emumem_hedw.* and emumem_mview.cpp). Fixes memdump command causes MAME freeze in many williams.cpp games (ID 09150). - Air Buster: Added PLD dumps for the original sets - Bolsa Internacional: Added basic meat. Hookup txc/rxc. - Chaoji Da Lianzhuang: Added DIP definitions - Chase Bombers: Removed TODO note about titlescreen Taito logo, looks same on PCB. - Contra: Changed default 'Difficulty' to normal to match manual (ID 09155) - Dream 9: Fleshed out driver a bit. Added some sound and correct ROM mapping (title shows now). - Elfin: Marked game as having unemulated protection. Elfin will eventually get into a state where it ignores coins. Protection is conceptually similar to The X-Files [Vas Crabb]. - Fruit Fresh: Small cleanups - Jinxiu Zhonghua: Identified a couple of inputs - Lucky Bar: Dumped the 68705 MCU - N.Y. Captor: Fixed priority bug on spot 22 - Rohga: Armor Force: Correct 'Allow Continue' dipswitch - Spotty: Better input types - Tattoo Assassins: Redumped v2.32 (Mar 14 1995) sound roms for tattass and clone tattassa. - Venteta: Fixed CPU type for fix PC size (16 bits - also word unit) and internal RAM size (4000 bytes). Atmel ATmega1280 CPU: Fixed program address masks for word addressing. Fixed PC shift in state string export (avr8\avr8.cpp). - Wall Crash: Use the original 2*2764 ROM program ROM arrangement for clone Brick Blast (bootleg of Wall Crash). Later examples replaced the two ROMs with a single 27128 to reduce costs. - Winning Spike: Removed outdated comment and MACHINE_UNEMULATED_PROTECTION flag - Wu Lin Zhengba: Pinpoint a bunch of I/O handlers - Xingyun Manguan: Demoted clone Xingyun Manguan (China, V651C, set 2) to not working as it hangs during attract - Zooty Drum: Enabled the recompiler for Zooty Drum - it gets just as far as the interpreter now. - Dipswitch fixes in bfcobra.cpp, bolsaint.cpp, cle68k.cpp, dynax.cpp, es8906.cpp, gms.cpp, igspoker.cpp, norautp.cpp, rohga.cpp and spoker.cpp - Fixed rom names in segas16b.cpp - Description changes of Cruis'n Exotica (version 1.0, build 8764), Double Joker Poker / Jacks Plus (45%-75% payout), Draw Poker HI-LO (PKII/DM), Gacha Gachamp (GE877 VER. JAB), GTI Double or Nothing Draw Poker, GTI Poker (SMS hardware), Huahua Shijie 5 / Feixing Shijie (V107CN), Ichi Ban Jyan (Ver 3.05), Jue Zhan Shanghai Tan, Mainline Double Joker Poker / Jacks Plus), Kimble Double HI-LO (Z80 version, encrypted), Nuwang Feng New / Queen Bee New (China, Ver. 1.10), Poker Plus 6 Cards (set 1), Rohga: Armor Force, Shuiguo Leyuan II (V150UI), Turbo Poker 2 (set 2), Unknown Draw Poker HI-LO and Wolf Fang: Kuuga 2001 (Japan) - Renamed (chleagul) to (chleaguel), (chleagxa) to (chleaguexa), (chleagxb) to (chleaguexb), (crzyddz2) to (jzst), (megat) to (megata), (mjmyunivbl) to (mjmyunivh), (mjmyunivbl2) to (mjmywrldt), (numbr10l) to (number10l), (sleyuan) to (sleyuan2), (tripfev) to (tripfev108us), (tpoker2) to (tpoker2a) and (unkljfpk) to (pokplus) - MAME . VIDEO RENDERING SYSTEM . Got rid of simple_list and fixed_allocator (video\sprite.cpp) . Removed obsolete loadstate workaround (emu\screen.cpp) . MEMORY SYSTEM: Optimized cache line detection. Use EXPECTED macro instead (emu\emumem.h). Fixed some range computation issues with some weird views (emu\emumem_hedr.h, emumem_hedr.ipp, emumem_hedw.* and emumem_mview.cpp). . DEVICES . Removed duplicate getter (emu\diexec.h). If a shorter input line pulse overlaps a longer pulse, don't shorten the pulse. Deal with the annoyances of the timer state machine (emu\diexec.cpp). . Restore timers expiring at the same time in the order they were scheduled when loading a saved state (emu\schedule.cpp) . Added remove function to unset a devcb (emu\devcb.h; capcom\1943.cpp and cinematronics\cinemat_a.cpp) . 3rdparty . Updated zlib to 1.3.1 . There should be no need to force SSE2 for 64-bit builds. Re-added hack to work around GitHub CI issues. Attempt to enable SSE features explicitly specified in ARCHOPTS. It will still fall back to SSE 2 if you just use -march= to enable later SSE features (scripts\src\3rdparty.lua; Project BIMG). . Proper way to detect presence of __int128 on GCC/Clang (3rdparty\softfloat3\build\MAME\platform.h) . Updated ImGui to 1.91.9b. This was not straightforward, and we're now ahead of the ImGui version in upstream bgfx. Updated the bgfx-specific memory editor widget rather than just partially removing the code. Had to add an explicit template instantiation to imgui_widgets.cpp to avoid a link error in the bgfx-specific range slider widget. Got the imgconfig.h header a lot closer to the template from upstream ImGui (3rdparty\bgfx\3rdparty\dear-imgui\*). . INPUT: Fixed possible issue where 4way joystick value could be invalid (emu\ioport.cpp) . NETWORK . Got rid of the gross globals and functions for manipulating them in the network modules (emu\dinetwork.cpp, ui\miscmenu.cpp, interface\nethandler.h, netdev\netdev_module.h, netdev\pcap.cpp, netdev\taptun.cpp and osd\osdepend.h). . Don't return a pointer to a buffer on the stack that's about to be unwound (osd\modules\netdev\pcap.cpp) . No need to check debug enabled flag manually (devices\cpu\*) . Updated Swedish translation. Correct some Chinese UI translations. - MAC OS X: Fixed QT6 build for macosx (osd\modules.lua). Removed mac address filter from osd(emu\dinetwork.cpp, interface\nethandler.cpp, netdev\pcap.cpp and netdev\taptun.cpp). - Linux: Added code to detect attached debugger on Linux (lib\osdlib_unix.cpp) - VGM player: Added Hypervoice support and stereo output for WonderSwan sound (virtual\vgmplay.cpp) - Compiling . Detect Windows for 64-bit ARM and set PLATFORM accordingly (makefile). Added Windows 64-bit ARM build to GitHub Actions CI matrix (workflows\ci-linux.yml and ci-windows.yml). Get windows cpu arch from registry instead of wmic (makefile). . Avoid the need to set MINGW32 or MINGW64 environment variables when using a standard MSYS environment on Windows (workflows\ci-windows.yml, makefile, scripts\toolchain.lua). . Cleaned up build scripts and compiling documentation: Made it a bit easier to cross-compile for x86-64 or i686 on an AArch64 Windows system. Choose the default native recompiler back-end based on predefined macros rather than requiring the build scripts to set it. Don't require every target without a native recompiler to declare this. Got rid of the code that was supposed to set -m32 or -m64 when building GENie (it didn't work - it tried to use ARCHITECTURE before setting it). Avoid relying on the unreliable PROCESSOR_ARCHITECTURE environment variable. Got rid of stuff for versions of Xcode that are definitely no longer supported. Got rid of workarounds for very old Linux distros. Use newer makefile syntax for if/else/if structures, comment some else and endif statements for clarity. Made PTR64 a makefile-only thing - it isn't necessary in the code. . Enabled error for GCC class memory access warning to avoid rot (scripts\genie.lua) . Fixed bitwise/logical warning (cpu\drcbex64.cpp, dsp56156\dsp56ops.hxx and rfslotsmcs48.cpp) - Debugger . Fixed Qt6 deprecation warning (see GitHub #13207) (debugger\qt\debuggerview.cpp) . Added an option to show exceptionpoints in breakpoints windows (debug\dvepoints.cpp and debugger\osx\exceptionpointsview.h/mm) . Correct trace file append. Changed out+app to in+out+ate (debug\debugcmd.cpp). . Fixed obsolete callback and simplify modifier key reading (debugger\debugimgui.cpp)