What's New:
- New games: Open 5 Cards
- New Working games: Joker's Wild (B52 system, BP55114-V1104, Ver.054NMV), Joker's Wild (B52 system, BP55114-V1104, Ver.054NMV, Harrah's GFX) and Joker's Wild (B52 system, WP02001-054, Ver.031WM)
- New Non-Working games: Bingo Planet (Rev C) (M1 Satellite board), Black jack (Olympic Games, v5.04, upgrade kit for Wild Card), Dream Rail Lovely, Multi-Action 6710-21, Multi-Action 8350-00-R1, Operation Tiger Second Mission (Ver 2.02 J), Packy's Treasure Slot (Japan, main ver. 1.3, video ver. 1.1), Renda Fighter (Japan, main ver. 2.02, video ver. 2.03) and Wild Card (Olympic Games, v2.0)
- New clones: Guardians / Denjin Makai II (bootleg), Hachoo! (Japan), Lord of Gun (World), Magic Train (Ver. 1.4), Martial Beat (G*B47 VER. JAB), Panda Train (Ver. 1.3), Phoenix (bootleg), Scud Race / Sega Super GT - Deluxe (Export), Side by Side (Ver 3.0 OK), Sports Authority Challenge (Rev 3), Sugorotic JAPAN (STJ1 Ver.A), Vuelo Espacial (Spanish bootleg of UniWar S), Wild Fang (year hack?) and Zoku Otenamihaiken (V2.05J 2003/05/12 18:00)
- New PinMAME games: Space Game (Bingo 6+1)
- New devices: es1946_solo1e, h8325_intc, h8325_timer16_channel, jaleco_vj_king_qtaro, jaleco_vj_qtaro, k1801vm1, ns32532, oti64111_pci, p80c552, p80c562, p87c552, pcf8573, promotion_vga, scorpion_ic, vt6306, wd9710_pci and xm3301
- Bob Zed (What's new video): https://youtu.be/oKk_yX25rQ8
- CPU
. DEC T11: Improved accuracy: Ignore least significant bit of PC when fetching opcodes. Correct MTPS and MFPS to be byte-wide. Reject instructions not implemented by each variant.
. Hitachi H8
. Status flags are set no matter the irq enable flags (h8\h8_timer16.cpp). Fixed V flag with INC opcodes. Fixed add/sub16 H flag and rotxl2 lsb (h8\h8.cpp). Like subx, addx does not modify Z flag if result is 0. Fixed jsr abs8i return address. Added fetch_noinc for jsr opcodes and preliminary support for movfpe/movtpe (h8\h8.lst). Changed bsr rel16 fetch_noinc back to internal(1) (h8\h8.lst).
. Port registers are not modified at reset (h8\h8_port.cpp). Improved cycle timing for pre-h8s arch (h8\h8.cpp and h8\h8s2000.cpp). Added software standby mode and optional NVRAM (h8\h8.cpp). Fixed Yamaha MU100 regression with 16bit timer (h8\h8_timer16.cpp). Return 0xff for unconnected digital input ports (h8\h8.cpp). Fixed divide by 0 crash (h8\h8_timer8.cpp).
. RTE does not block interrupts (h8\h8.cpp). h8h does not have 16-bit iscr. Added support for rising edge interrupts. Base h8 does not have ISR. Don't clear irq pin inputs at reset (h8\h8_intc.cpp). Pass along ddr on write for high-impedance pins (h8\h8_port.cpp). Small correction in recalc_event (h8\h8_timer8.cpp). Shorthand variable types (h8\*.*).
. Appears to be better for performance without virtual calls for r/w functions (h8\h8.cpp). Set logerror verbosity to 0 (performance issue in (MESS) Kasparov GK 2000). Added variables to save_item (h8\h8*.*). Correct interrupt timing after software standby (h8\h8.cpp).
. Correct H8/300 opcode map (i suspect H8/300H also has opcodes in the map that belong to newer arch but didnt check). Fixed mov with negative disp for H8/300 (h8\h8.lst).
. Hitachi HD6309: Added missing index addressing modes. Pop CPU state if indexed addressing mode caused illegal operation trap (m6809\hd6309.lst).
. MCS-51: Correctly override some SFR names in dissassemblers (mcs51\mcs51dasm.cpp)
. Microchip PIC16C62x: Core overhaul: Use callbacks rather than address space for I/O ports. Eliminated unsafe use of get_write_ptr and let the internal memory map decode each special register individually. Eliminated several macros, magic ID numbers and some unnecessary tables. Adjust execution of a few opcodes to avoid reading operands twice and set flags correctly. Added PCLATH to state display (pic16c62x\pic16c62x.cpp).
. Motorola MC6800: Shorthand variable types (m6800\m6800.cpp)
. Motorola MC6801: If NVRAM it's currently not battery-backed, don't save at all. Shorthand variable types. Added input ports ddr override mask (m6800\m6801.cpp).
. Motorola MC68000: Regenerated C++ source files.
. National Semiconductor COP4xx: Zerofill class variables (cop400\cop400.cpp)
. NEC uPD78C10: Moved near empty upd7811 file to upd7810
. Philips P80C562/P87C552: Added placeholder device types for P87C552 and P80C562 (see funeball.cpp and midqslvr.cpp), with custom SFR definitions for their disassemblers (mcs51\mcs51.cpp).
. RCA CDP180x: Fixed disassembly of LBNQ, LBNZ and LBNF (cosmac\cosdasm.cpp)
. Texas Instruments TMS32010: Fixed memory access helpers for variants with 64k-word program space (tms32010\tms32010.cpp)
. Toshiba TMP68301: Added parity tx support (m68000\tmp68301.cpp)
. Z80 SCC Channel: Implemented RTxC clock source. Fixes serial emulation at 115200 or 230400bps.
. Zilog Z86xx: A little more optional logging for IRQs (z8\z8.cpp and z8\z8ops.hxx)
- SOUND
. Discrete Sound: Use appropriate memory barriers for task synchronisation (sound\discrete.cpp)
. Namco C140: Timer reload value = written reg data + 1, fixes music tempo in Dragon Saber (sound\c140.cpp) (ID 08814).
- DEVICE
. 8042 Keyboard/Mouse Controller: Improved behavior coming out of reset, locking device until AA is written to command port. Allow some systems to write D1 command first (machine\8042kbdc.cpp).
. ATA Connector: Added 'Matsushita CR589 CD-ROM Drive' (cr589) as mountable option (ata\atadev.cpp)
. CD-ROM: Removed unreachable additional handler for MODE2/2336 tracks (util\cdrom.cpp)
. Discrete Netlist: Removed duplicate $(OBJ)/devices from object directories in netlist\build\makefile
. Floppy
. Various fixes. Get the volume label from the root directory, rather than from the extended BPB (which is less reliable). Ignore long file name entries for now (formats\fs_fat.cpp). Delete unused getter that leaked details (imagedev\floppy.cpp).
. Floppy fixes. Refilter list of specific floppy formats using the known form factor and variant before trying to mount a filesystem on an image. Sort identify results by decreasing score (code already expects the best format to be first) (tools\image_handler.cpp).
. Fujitsu MB87030 SCSI controller: Fixed some bit definitions for the SCMD register (machine\mb87030.h)
. Intel 8275 CRTC: Moderate change to API and major expansion of configuration possibilities. Changed the "draw character" callback to pack all attribute flags in a single parameter. A bit enum is provided to facilitate unpacking the bits. Allow for configurations in which up to four CRTCs are attached to the same character clock and screen. The secondary CRTCs are not fully emulated with regard to timing and some output callbacks, but their character and attribute outputs may be merged with those of the primary screen through the same display callback.
. Microchip PIC16C5x: Register file cleanup: Use member variables for core special registers, eliminating unsafe abuse of get_write_ptr and permitting watchpoints to trigger on accesses to these. Use arrays for TRIS registers and port read/write callbacks. Narrow the width of some variables and function parameters. Store FSR and show in debugger without extra high bits. Eliminated now-unnecessary reset kludge (pic16c5x\pic16c5x.cpp). Fixes PIC16F54 debug problems in Magic Card Export 94 (ID 08818).
. Motorola MC6845 CRTC: Mark set_show_border_area and set_visarea_adjust as hack setters (video\mc6845.h)
. PCI: Propose a way to find the busmaster space for newpci (machine\pci.cpp)
. VGA: CRTC logmacro and fixed a bunch of masks towards SVGA (video\pc_vga.cpp)
. Voodoo 1 PCI: Fixed default values, allows SiS 85C496 chipset to detect card (video\voodoo_pci.cpp).
. Winbond W83977TF Super I/O: Hookup basic LPT port (machine\w83977tf.cpp)
. Z80 DMA Controller: Added PULSE mode handling (machine\z80dma.cpp)
- aristmk5.cpp
. Fixed set chips selector. It was limited to 7 entries before, making some set chips unreachable.
. Added set chip v4.04.01. One ROM doesn't match the checksum in the sticker and gives CRC error.
- hexion.cpp, spy.cpp and thunderx.cpp
. K052591: Modified K052591 PMC emulation to reflect how the real programs work. Added comments to PMC program dumps. Use multibyte.h functions, variable scope and type cleanup.
. hexion.cpp: Added special 16-byte VRAM clearing command for K052591. Fixed a potential heap smash and don't mark tiles dirty unnecessarily. Fixed tile invalidation range when 16-byte clear is not four-byte aligned.
. spy.cpp: Confirmed K052591 projection function constants, more accurate collision check without the need for special case handling. Fixed video enable never being set to false and added an object finder for ROM bank (reduce tag lookups).
. thunderx.cpp: Simplified K052591 collision check, fixed object flags updates. Fixed pointer comparison. Realign PMC program comments.
- lastfght.cpp and subsino2.cpp: Fixed timing-related regressions
- lindbergh.cpp: Added basic legacy VGA control (video\gf7600gs.cpp)
- merit3xx.cpp: Invert char and attr RAM, allows 'Multi-Action 6710-13' and 'Multi-Action 6710-21' to show error message. Updated DIP switch spelling and other metadata updates.
- midyunit.cpp: Updated DIP definitions/locations
- pgm.cpp: Fixed PGM input regression (igs\pgmprot_igs027a_type1.cpp), fixes kov and kovplus do not work.
- tetrisp2.cpp: Added preliminary King Qtaro PCI video decoder card device (jaleco\jaleco_vj_qtaro.cpp). Video decoding is not implemented yet. Get DMA space from up the PCI chain (jaleco\jaleco_vj_qtaro.cpp).
- Dragon Saber: Namco C140 timer reload value = written reg data + 1, fixes music tempo in Dragon Saber (sound\c140.cpp) (ID 08814).
- Dragon World 3/Dragon World 3 EX: Fixed games hangs after beginner or expert selection (igs\pgmprot_igs025_igs022.cpp, pgmprot_igs025_igs028.cpp, pgmprot_igs027a_type2.cpp and pgmprot_orlegend.cpp) (ID 08822)
- Galactic Storm: Added PLDs dumps
- Game Magic
. Redumped game CD-ROM. Converted driver to new PCI. Added correct BIOS (m7s04.rom) from (MESS) PC/AT 586. Hookup Voodoo 2 card. Added OAK OTI Spitfire (VGA). Added segment, aperture and basic SVGA pixel modes. Preliminary HW cursor and added path for 32bpp color mode (video\pc_vga_oak.cpp). Fixed BAR2 IO flag and added revision register (pci\oti_spitfire.cpp).
. Added basic Toshiba XM-3301 ATAPI CD drive (bus\ata\xm3301.cpp). Allows mounting with TAISATAP.SYS in DOS, allows gammagic to moving on to Voodoo init.
- GameCristal: Added game port to 'SiS 7018 Audio AC97' (machine\sis7018_audio.cpp). Added base x86 interface for atirageiidvd_device (video\atirage.cpp). Placeholder for extended clock modes, reformat sequencer logging and added extend QA notes (video\pc_vga_sis.cpp).
- Joker's Wild (B52 system, BP55114-V1104, Ver.054NMV): Created default NVRAMs. Improved the documentation. Cleaned up the driver. Promoted parent and clones to working.
- Magic Card Export 94: Microchip PIC16C5x register file cleanup: Use member variables for core special registers, eliminating unsafe abuse of get_write_ptr and permitting watchpoints to trigger on accesses to these. Use arrays for TRIS registers and port read/write callbacks. Narrow the width of some variables and function parameters. Store FSR and show in debugger without extra high bits. Eliminated now-unnecessary reset kludge (pic16c5x\pic16c5x.cpp). Fixes PIC16F54 debug problems in Magic Card Export 94 (ID 08818)
- Mahjong Ougon no Hai (Japan): Dumped MCU (not correctly hooked up yet). Added proper address map.
- Major Havoc: Removed timer_set
- Matrix: Preliminary (?) decryption
- Pool 10: Removed empty read-protected PLD baddumps from clone Pool 10 (Italian, Dino 4 hardware, encrypted) (ID 08824)
- Popper: Added addressable latch device
- Psychic Force 2012: Added base x86 interface for atirageiidvd_device (video\atirage.cpp)
- Rainbow Islands: Fixed crash/exception immediately after start in clones Jumping (ID 08826)
- Soreike Kokology/Soreike Kokology Vol. 2: Fixed some bit definitions for the SCMD register (machine\mb87030.h)
- Super Free Kick: Reverse analog control (ID 08825)
- Thayer's Quest: LED display DA3 is not connected (fixes possible crash). Updated PORT_NAMEs, removed PORT_SERVICE because it takes the F2 key by default and swap F1-F4 and 1-0 with 1-4 and F1-F10 because of default IPT_COIN mapping. TODO: Conflict between keyboard and service mode default key (F2).
- Traverse USA: Added an alternate palette PROM arrangement (One/Two character palette PROMs BIOS) for Traverse USA and clone MotoTour
- Description changes of Hachoo! (World, set 1), Hachoo! (World, set 2) and Sports Authority (Rev 1)
- Dipswitch fixes in cheekyms.cpp, goldnpkr.cpp and midyunit.cpp
- Renamed (lordgun) to (lordgunu), (mtrain) to (mtraina), (sidebs) to (sidebsj), (sprtauth) to (sprtauth1) and (zokuoten) to (zokuotena)
- MAME
. MEMORY SYSTEM: Fixed little Endian byte read/write to 64-bit areas. Apparent copy/paste error was causing big Endian semantics to be used (emu\memarray.cpp).
. UI
. Swap columns when sorted by shortname. Added UI header. Don't add switch item ordering menu entry when there's only 1 swlist item (ui\swlist.cpp).
. Readjust visible width if heading width exceeds that of the menu (ui\menu.cpp)
. Added the global cheat enable toggle to the menu. Indicate if no cheats were found. Moved global cheat enable to the bottom. Fixed reset(reset_options::REMEMBER_REF) with add/remove favorite (ui\cheatopt.cpp).
. Added quick save/load state shortcut, default key undecided (emu\inpttype.h and ui\ui.cpp).
. Use forwarding header (#include "utilfwd.h") (util\options.h)
. Default UI keys cleanup: Pause moved from P to F5. Step single frame moved from Shift-P to Shift-F5. Create save state moved from Shift-F7 to F6. Toggle cheats moved from F6 to Shift-F6. Restored tabulation (emu\inpttype.ipp).
. Fixed OSD interaction with updated default keys (emu\inpttype.ipp, input\input_windows.cpp and sdl\osdsdl.cpp)
. OSD SDL default keys: Removed ctrl-blocks on F3 and F4 and moved OpenGL filter from LCTRL+F5 to LALT+F10. Moved prescale keys from CTRL+F6/F7 to ALT+F8/F9 (sdl\osdsdl.cpp). Don't indicate max value for SDL modify_prescale. Show prescale popup when it hasn't changed due to hitting the limit. This makes it easier to see that you’ve hit the limit and MAME isn't just ignoring your keystrokes (mac/window.cpp and sdl/window.cpp).
. OSD Windows default keys: Moved post processing key from LCTRL+LALT+F5 to LALT+F10 (input\input_windows.cpp)
. MAME default keys: Moved rewind step from SHIFT+tilde to SHIFT+F4, moved cheat from SHIFT+F6 to SHIFT+F8 and moved quick save/load from (none) to SHIFT+F6/F7 (emu\inpttype.ipp).
. Added filename to save/load state message (emu\machine.cpp)
. CHDMAN
. Added --hunksize/-hs option for createdvd command and default to 4K hunks (2 sectors, same size as hard disk hunks). Also removed --outputbin/-ob option from extractdvd command - it did nothing as it's CD-specific.
. Added preliminary CHDMAN documentation. Most common options have at least basic descriptions, supported options are listed for all commands and supported compression algorithms are described (docs\source\tools\chdman.rst).
. Fixed numerous issues, including: Support input start/size options for createdvd. Fixed not reporting an error on unrecognised command line options. Fixed --fix/-f option for verify command not working. Report an error when conflicting options are supplied (e.g. hard disk template and C/H/S geometry, or input start offset in both bytes and hunks). Previously the results would be unpredictable. Detect more invalid combinations of options and detect when output unit size or hunk size doesn't match parent. Changed order of processing options for createhd so using a template cannot not inadvertently result in an invalid combination of sector size and hunk size. Don't require an explicit unit size for createraw if an output parent CHD file is supplied. Fixed an object leak in createcd (util\chd.cpp, tools\chdman.cpp, docs\source\tools\chdman.rst).
. Report unsuitable CHDs as "invalid image" rather than "unsupported operation" (imagedev\cdromimg.cpp). Report unsuitable CHDs rather than crashing (imagedev\harddriv.cpp).
. Calculate size of buffer needed to store hunk map (util\chd.cpp), fixes CHDMAN fails to create disk images if compressed hunk map is larger than expected.
. Fixed cases where bits would be dropped when reading and writing. In some cases, bits would be dropped when writing if there wasn't enough space in the buffer. Fixes bad hunk maps being written to CHD files and incorrect hunk map data being read. Adjust m_doffset based on m_dbitoffs when flushing. Fixes issues exposed when reading LaserDisc CHDs (util\bitstream.h).
. Multi-Language: Updated Russian UI translation. Updated copyright years (language\*\strings.po).
. Delete NVRAM file on save if there's a write error or result file is 0 bytes (emu\machine.cpp)
- Dipswitch fixes in lazercmd.cpp, meadows.cpp and midyunit.cpp
- Compiling
. Consolidated drivers in single files (cheekyms.cpp, citycon.cpp, lazercmd.cpp and meadows.cpp)
. Fixed compilation against musl (Linux C standard library; musl.libc.org) (netlist\plib\pexception.cpp and sound\pulse_sound.cpp)
. Fixed INPUT_PORTS_END and ROM_END macro indent (n8080.cpp and rfslots8085.cpp)
. Removed some unnecessary backslash line continuations. Removed unnecessary preprocessor line continuations from C++ code. Use parentheses to avoid need for line continuations in expressions in Python code. Removed line continuations at the end of lists in makefiles.
. Fixed a couple shortsights (scripts\src\video.lua)
- Debugger: Fixed lockup and debug assert (debugger\debugimgui.cpp)