MAMEINFO.DAT
* Updated to MAME 0.289GIT - http://git.redump.net/mame/log/
* Added Source/Listinfo changes
* Newest Bugs (12th Jun)
* Added/Reorganized 'Recommended Games'
* Fixed Mameinfo.dat infos
Download at: https://mameinfo.mameworld.info/
MAME Testers at: https://mametesters.org/view_all_set.ph ... ESC&type=2
Ashura-X's Nightly MAME builds: https://ashura-x.github.io/ashurax.github.io/
Recent MAME builds: https://github.com/mamedev/mame/actions
('Sign in' + Click on 'CI (Windows)' and then on a MAME post with a green check mark to download the mame-windows-gcc-XXXXXXXXXXXXXXX file)
0.289GIT
- New games: Planet Patrol
- New Working games: International Superstar Soccer Deluxe (SNES bootleg)
- New Non-Working games: Cool-Bi Cool-Bi, Deep Scan / Car Hunt, Fuxing Gaozhao, Ganso Janken Man, Hana Awase Maihime, Hello Kitty no Oshiro e Iko, Huanzhu Gege (set 1), Itadaki Nyandora Kids, Kimme und Korn (F4), Manpuku Hanten (Japan, main ver. 2.00, video ver. 2.00), Special 8 Way (v122F), Winner's Club - Wild Roses, Xiao Mifeng, Xingyun Xiaochou / Xingyun Shouji (V233CN) and Xiyang Tianshi
- New clones: Futari Mahjong Ron II (set 2), Galaxian (Olympia bootleg), Hana Awase 6 (Japan, bootleg), Happy Jackie (v119U), Huanzhu Gege (set 2), Mahjong Angel Kiss (ver 1.0, 92048-01 version), Mahjong Diplomat (Japan), Money Money (set 3), The New 1997 Joker Master - New York (V3G), Ninja Ryukenden (Japan, set 3), Play Girls 2 (Europe), Pleiads (bootleg, ManilaMatic), Punch-Out!! (Rev A, harder), Robotron: 2084 (Release 3), Winners Circle (81, set 3) and Winners Circle (81, set 4).
- New AGEMAME games: Castello II (W1), Disco (W1), Fifty Five (F1), Granada (W1), Logo (W1), Monopoly Tisch (F2), Multi (F2), Optimus (W1), Sunny Top (W1), Swing, Turbo Sunny (W1), Viva, Vulkan (F2), Wuerfel Fix (F2) and Wuerfel Fix (F3)
- New drivers: hkcastle.cpp
- New devices: dsi32, fdc9266, scsi_tape_news, subsino_sg001, upd72065, wd37c65 and wd37c65b
- CPU
. Hitachi H8: Formalize the contracts between H8 family peripherals and the CPU and interrupt controller so H8/500 can share. Fixed incorrect disassembly of SCB, PJSR, PJMP and TRAPA (h8500\h8500dasm.cpp).
. IBM PowerPC: Bug fixes: * SPR[MQ] doesn't exist on non-IBM PowerPC 601, PCI Macs gets confused if it's present on IBM PowerPC 603/604. * TLBL: Compute both user and supervisor permissions. PCI Macs run the 68k emulator in user mode. * IBM PowerPC 603: PCI Macs look for processor version 0x00030001 for IBM PowerPC 603. Arcade games don't care. * IBM PowerPC 603: RFI unconditionally clears MSR[TGPR] on models with the TGPR mechanism. Verified against the IBM PowerPC 603 User's Manual and QEMU. * IBM PowerPC 603: BAT permission violations are supposed to raise DSI, not TLB miss. PCI Macs use this to trap and emulate accesses to NuBus-style I/O addresses (powerpc\ppc.h, ppccom.cpp, ppcdrc.cpp and ppcfe.cpp).
. Intel 8086: Support port I/O wait states via access retry IN, OUT, INS and OUTS (including the 80186/80286 REP forms) now restart the bus cycle when a device signals a wait state through cpu_device::retry_access(), allowing ISA IOCHRDY to be modelled. Register and string-pointer updates are deferred until the access completes, so a stalled cycle has no side effects. No behavior change for devices that never request a retry (i86\i86.cpp).
. Motorola MC68000: Update bftst to reluctant reads when fetching data from memory (m68000\m68k_in.lst and m68000\m68kops.cpp)
. NEC uPD7801: Fixed uPD7801 INT0 behavior (upd7810/upd7810.cpp and upd7810\upd7810_opcodes.cpp)
. PowerPC drc: Set function parameter when calling it. Setting the value when generating code won't work. Also, make the most of the smarter, templated UML_CALLC to eliminate many pointer casts (powerpc\ppcdrc.cpp).
. Texas Instruments TMS34010: Attempted to fix setcd for the case with two bits set. It was definitely wrong before - the mask to clear the first bit was calculated incorrectly.
. Zilog Z80: Fixed minor hw discrepancy (z80\z80.lst). Fixed NMI handling (RAMS' frogger works now) (z80\z80n.cpp).
- SOUND
. Votrax SC-01/A: Added missing library header (sound\votrax.cpp)
- DEVICE
. DECO RM-C3 PALETTE: Changed decrmc3 not to avoid ambiguity between clock and entries. Devices must expose a public standard signature constructor. All the verbs like -listxml, -validate, -romident, etc. assume it's available via device type objects, and bad things happen if it isn't (dataeast\decrmc3.cpp).
. DSP563xx HI08 host interface: Forward DSP HTX writes to the host. htx_w only logged the outgoing word; it did not store it in m_htx or update m_isr. Host-side reads of HRX (offsets 5/6/7) therefore always returned zero and the host never saw ISR_RXDF asserted, so any 80C535 firmware polling HSR for a reply from the DSP after the bootstrap upload would spin forever. Store the word the DSP placed on HTX into m_htx, raise ISR_RXDF (which in turn asserts host-side HRDF and clears DSP-side HTDE through hsr_r's view), and let the host's read of the trigger byte at offset 7 clear ISR_RXDF so the DSP can transmit the next word. With this in place virusb boots all the way to its interactive UI: the LCD shows the patch / parameter pages and the panel buttons drive the menu (dsp563xx/hi08.cpp).
. Floppy
. Added missing header (formats\flopimg.h). Drop debug histogram dump that segfaults on small MFI. mfi_format::load() ended with a debug block that dumped a per-track cell-length histogram to stderr, walking a hard-coded 46-track x 2-side grid. get_buffer() only bounds-checks with assert (compiled out in release builds), so on an MFI smaller than 46 tracks or single-sided the loop indexes track_array past its end and segfaults. Removed the debug dump; load() now just returns once the tracks are in (formats\mfi_dsk.cpp).
. Added save support (IMD write for flopconvert). IMD has been read-only in MAME's flopimg pipeline since 2017 - load() parses ImageDisk files, but flux-level images (MFI, captured floppies, running emulation state) cannot round-trip back to IMD. This change implements imd_format::save() so flopconvert and any future driver-side "save as IMD" path work in both directions for standard MFM and FM media. The save side decodes the flopimg flux representation per track, detects MFM vs FM and cell-size by scoring four common (encoding, cell_size) combinations (MFM @ 1000/2000 ns and FM @ 2000/4000 ns covering 250 and 500 kbps in both modes), then emits Dunfield IMD 1.20 records. Per-track detection handles mixed-density disks (e.g. CP/M boot disks with an FM 128-byte boot track on cyl 0 head 0 and MFM data tracks elsewhere) automatically. Use existing ccitt_crc16 function. Removed unused function (formats\imd_dsk.cpp) (GitHub #15385).
. Fixed bad seek rate calculation with 4-phase steps as used with Apple II. Added direction feature to sound sample declarations (imagedev\floppy.cpp).
. Make sure ST0 side bit it set to the last side actually accessed (machine\upd765.cpp)
. Hitachi HD44780 LCD Controller: Fixed char size selection in 2-line mode (video\hd44780.cpp)
. IDE Fixed Drive Adapter: Converted to remap FN (isa\ide.cpp)
. MOS 6522 VIA: Issue shift-out completion IRQ immediately when externally clocked. Matches the shift-in behavior and fixes unfavorable timing margins on PCI PowerMacs (machine\6522via.cpp).
. NB1413 Mahjong Custom: Fixed passing NB1413M3 variant as clock. This is the kind of regression that could have lurked for months and been a nightmare to track down. This is why you need to actually check your changes before committing.
. Intel 8259 PIC: Don't clear interrupt requests when ICW1 is rewritten in level active mode and lines are active. Fixes (MESS) wangpc boot (machine\pic8259.cpp) (ID 09478).
. SCSI Hard Disk: Move the opt-in seek-timing model into nscsi_harddisk_device. The cylinder-aware seek-timing model added to the Xebec S1410 and proposed for the DTC-510 was identical between the two controllers. Hoist it into their common base, nscsi_harddisk_device, so it is written once and is available to any hard-disk controller built on it without subclassing. set_seek_timing(), the model state, the fitted-exponent math (seek_time()) and a generic scsi_data_command_delay() now live in the base, which applies the model to the SCSI READ/WRITE/SEEK opcodes in both their 6-byte and 10-byte forms. The base default remains attotime::zero unless a driver calls set_seek_timing(), so every existing nscsi_harddisk user is unchanged. The legacy flat 85 ms per-command delay deliberately stays in s1410 and dtc510 -- it is a per-controller quirk, not a property of all hard disks -- so those two controllers are byte-for-byte unchanged with no model set, and delegate to the base only on the model branch (nscsi\hd.cpp, nscsi\dtc510.cpp and nscsi\s1410.cpp).
. SCSI HLE
. Deassert REQ between phases; hold BSY in COMMAND. scsi_change_phase() now deasserts REQ on entry, so the initiator sees a clean REQ low->high edge with the new phase's C/D-I/O lines settled. Previously the per-byte REQ-deassert timer was cancelled by the next phase's re-assert, leaving REQ continuously high across e.g. COMMAND->DATA-IN, so an initiator that samples the control lines on the REQ edge read the stale previous-phase C/D/I/O. A selected target also asserts BSY on entry to COMMAND, so a fast SEL deassert racing the sel_timer cannot leave BSY low during the connection (scsi\scsihle.cpp).
. Allow targets to defer phase transitions. An nscsi_full_device target previously had to queue its entire phase sequence (data, status, message) before returning from scsi_command(), so a command involving slow media work had to complete synchronously. Make TARGET_NEXT_CONTROL hold the connection in the current state when the control queue is empty instead of popping an invalid entry, and resume stepping when scsi_data_in()/scsi_data_out()/scsi_status_complete() push new entries. A target can now return from scsi_command() with nothing queued, run the medium operation off a timer, and queue the data/status phases when it finishes. Targets that queue everything up front never reach the new path; no behavior change for existing devices (machine\nscsi_hle.cpp).
. Slot device: Removed default zero clock for some slots that provide an input clock to cards where it's common to use the input clock to drive devices on the card. It should be possible to use DERIVED_CLOCK in these cards. A default zero clock will just encourage people to be lazy and not set the bus clock. Set the bus clocks for a few systems and added FIXME comments for others.
. Z80 SIO: Fixed Rx interrupt logic (machine\z80sio.cpp)
- 1942.cpp and vulgus.cpp: Added 2nd soundlatch
- adp.cpp: Changed ROM extensions for all games to match their PCB footprint position names.
- chihiro.cpp: Removed outdated workaround for missing library function (shared\xbox_nv2a.cpp)
- circus.cpp
. Update screen per scanline for more accurate collision detection. Added sprite wraparound. Small correction to border lines.
. Added border to Rip Cord and workaround for initial ram contents issues.
- Cv1k.cpp: Added support for cache invalidation and entry writeback (sh\sh7709s.cpp). Map the cache address array to handle cache line flushing as well as writes to CCR that cause a cache invalidatation. Fixes the SDRAM region check as only area 3 is mapped to SDRAM on cv1k. Added basic uncached access handling as the instructions that execute to invalidate/flush cache lines have to be from an uncached region. Uncached access enablement and code cleanup. Enable uncached accesses and fixup missing case for uncached penalty. Added notes about cv1k slowdown. Address some review comments, moved register timing functions to member functions and moved some #define's to private static constexpr instead. Added some TODO's that need to be fixed and some timings that need verification (sh\sh7709s.cpp).
- dangbar.cpp: Split dangbar to own state and hookup Z80 LED CPU in there.
- jankmg2.cpp: Added CTC and sound and output stubs
- namcos22.cpp: Revert "OR texture color with high bits of cz_adjust (namco\namcos22_v.cpp)" from MAME 0.288, fixes when the finish line track is visible from afar in Alpine Racer and clones, it initially appears as completely red polygons (ID 09466).
- nemesis.cpp: Added bs_ prefix to bubsys games. Mark bs_rf2 a not working. Group bubsys mcfg with the other mcfgs.
- pgm2.cpp: Added some notes and correct a couple of decryption keys (igs\igs036crypt.cpp)
- punchout.cpp: Merged driver into single file
- stella8085.cpp: Fixed 4040 board IO (#15382). Added 4040 board IO map. Replaced DIY IO70 with proper 8255 PPI. Replaced device tags. Removed io73.
- stv.cpp: Extend mirror ranges of registers (sega\saturn_cd_hle.cpp). Added some notes (sega\smpc.cpp).
- subsino_kr_h8.cpp: Hookup RAMDAC and placeholder SG001 devices. Flesh out I/O ports a little and hook up DS2430A.
- zaccaria.cpp: Added bruteforced PLDs to Money Money (set 3). Added placeholders for PLDs and 82s100 PROMs on every set (same PCB for both games). Load from 0x0000. Fixed note about PLD at 1a on ROM board.
- AGEMAME
. Updated reel outputs in layouts (jpm\jpmsru.cpp).
. Bulk updated remaining slot machine layouts that use yscroll for reel scroll (barcrest\mpu1.cpp).
. Removed some unnecessarily added :pos from some layouts. Only the output names changed, the element names don't need to change (aces1.cpp, bfm_sc1.cpp, bfm_sc2.cpp, jpmimpctsw.cpp, jpmmps.cpp, jpms80.cpp, jpmsys5sw.cpp, maygay1bsw.cpp, mpu3.cpp, mpu4empire.cpp, mpu4mod2sw.cpp, mpu4mod4oki.cpp, mpu4mod4yam.cpp, mpu4unsorted.cpp and mpu5sw.cpp).
. Made reel tags match layouts (aces1.cpp, bfm_sc1.cpp, bfm_sc2.cpp, bfm_sc4.h, bfmsys85.cpp, ecoinf2.cpp, ecoinf3.cpp, ecoinfr.cpp, jpmimpct.h, jpmsru.cpp, jpmsys5.h, mpu1.cpp, mpu3.cpp, mpu4.h)
. Use same default local output name as machine\steppers.cpp (machine\em_reel.cpp). Also removed many superfluous :pos from layouts.
- Captain Zodiac: Base video and inputs
- Cosmo Gang: Don't require -mouse to work in click-to-play mode, also allows playing on a touch screen (makes the game too easy).
- Da Bai Sha (H.B.): Got game to almost working. TODO: Some GFX glitches when entering test mode. IRQs could probably be improved. Hopper. DSW definitions incomplete.
- Destiny - The Fortuneteller: Minor cleanups
- Flicker (prototype): Outputs still need to be resolved manually
- Hana Ren-Chan (Japan, bootleg): Some work on the game
- International Superstar Soccer Deluxe (SNES bootleg): Added DIPs and protection simulation. Promoted game to working.
- Joker Master 2000 Special Edition: Decrypted clone The New 1997 Joker Master (V1C). Needs own portmap.
- Kart Duel: Added MACHINE_NODEVICE_LAN flag. Note: Kart Duel has unemulated link support.
- La Cucaracha: Added GFX bank. Added base inputs and DIPs. Replaced video emulation with artwork based LED matrix. Added scrollx and scrolly. Fixed SFX playback at game start (missing OKI mirror). Game engine timer IRQ is more around 100 Hz, for lip sync at game start. LED colors closer approximation (layout\cucaracha.lay).
- Multi GAME XL: Hookup basic video and hookup palette bank. Fixed gfx_layout. Added NVRAM and attribute RAM view selects. Hookup most inputs.
- PinMAME: Added override qualifiers to micropin.cpp and removed declaration of non-existent method.
- Pop'n Run - The Videogame: Removed "Yukai Tsukai" from companystring (ID 09463) and useless quantum (besides, with the scanline timer it's already more than 60hz).
- Puzznic: Added PAL rom c20-05.ic3 (Confirmed/Matches Japan Set) to Puzznic (World) and clone (US)
- Robotron: 2084: Added prototype/location test version (Release 3), seen in the Robotron promo videotape that was recovered from a Vid Kidz development system. In 2026, early prototype builds of Robotron were found in a 2004 backup made by Duncan Brown. The backup was from the Vid Kidz GIMIX 6809 development system used to create Robotron and Blaster. It was discovered that there were six "release" versions of the game and that Releases 4, 5, and 6 correspond with Yellow label, Blue label and the '87 patch by Christian Gingras respectively. Releases 1, 2, and 3 are early builds of Robotron used during field tests. Release 3 is notable as it replaces the skull and crossbones graphic with an 'X' crossing out a generic human. This censored image can be seen in a promo videotape (also preserved by Duncan): https://youtu.be/j0tqQryAmN0?t=209. At the 2016 CAX show, Larry DeMar talked about Release 3 and revealed that Williams wanted to replace the art asset because they thought the violent imagery would negatively affect sales. Right before Robotron entered production, Eugene Jarvis convinced Williams president Mike Stroll to revert back to the original skull graphic.
- Ruleta Magica: Make it execute some code. Hook up UART. Basic video hookup. Map I2C EEPROM and Timekeeper.
- Trivial Pursuit (Volumen IV, Spanish, Maibesa hardware): Added bruteforced PLDs
- Description changes of 1942 (bootleg on Vulgus hardware), Ace Driver (World, AD2), Action (F2), Bao Qing Tian (TIC), Da Bai Sha Huobao Ban / Redaiyu Huobao Ban (ver 0.1), Destiny: The Fortuneteller (USA), Final Lap 2 (World, Rev B), Final Lap 3 (World), Futari Mahjong Ron II (set 1), Granada (F1), Hana Awase 6 (Japan), Hana Ren-Chan (Japan, bootleg), Komet (F1), Konami RF2: Red Fighter, Konami RF2: Red Fighter (Bubble System), Mahjong Angel Kiss (ver 1.0, 92047-01 version), Mahjong Diplomat (Japan, V2), Money (F1), The New 1997 Joker Master (V1C), Pop'n Run: The Video Game (set 1), Multi GAME XL (V.11.35 A), Play Girls 2 (Japan), Pop'n Run: The Video Game (set 2), San Francisco Rush 2049 (Version 1.04, EPROM 1.02 Jul 9 1999, GUTS 1.03 Sep 3 1999, GAME Sep 8 1999), San Francisco Rush 2049: Special Edition (Version 1.00, GUTS 1.61 Sep 16 2003, GAME Sep 16 2003), San Francisco Rush 2049: Tournament Edition (VERS 0.34 Sep 26 2000, EPROM 0.56 Apr 17 2000), San Francisco Rush 2049: Tournament Edition Unlocked (VERS 0.31 Sep 26 2000, EPROM 0.56 Apr 17 2000) and Turbo Sunny (F1)
- Fixed rom names in adp.cpp, namcos2.cpp and stellafr.cpp and zaccaria.cpp
- Renamed (action) to (actionf2), (gradiusb) to (bs_gradius), (grnada) to (grnadaf1), (gwarriorb) to (bs_gwarrior), (hanaren2) to (hanaren), (jackie) to (jackiea), (plgirls2) to (plgirls2j), (rf2b) to (bs_rf2), (turbosun) to (trbsunf1), (twinbeeb) to (bs_twinbee) and (unkalba) to (hana6)
- Dipswitch fixes in cpzodiac.cpp, cucaracha.cpp, extrema_m27sv.cpp and snesb.cpp
- MAME
. VIDEO RENDERING SYSTEM: Fixed drawing at the wrong resolution in the first window after resizing a window other than the first one. Also improved behaviour if the first window is resized while recording to AVI and got rid of some unnecessary file statics (render\drawbgfx.cpp).
. MEMORY SYSTEM: Gets rid of a layer of templating in emu\emumem_hedp.cpp and makes a few other things easier to read.
. DEVICES
. Added first-class concepts for a couple of things (emu\device.h)
. Made object finders and similar things explicitly non-copyable. Copying them never behaved intuitively (emu\devfind.h).
. There are a lot of clock information in device instanciation that gets a 0 because the information is not available or it just doesn't make sense. Allow them to be removed and push that to the constructors.
. There are a number of cases where a weird interaction between DEFINE_DEVICE_TYPE_PRIVATE and pure methods make it impossible, see DL1416T for instance.
. Removed default zero clock for devices that actually need the clock frequency. If you're disabling a device by setting the clock to zero, or setting it to zero with the intention of changing it later, you should be explicit about that.
. Disable lost value logging by default, don't call it a warning (machine\gen_latch.cpp)
. INPUT/OUTPUT
. Allow initialising output finders with arrays of matching dimensions. Also got rid of all but one of thee uses of get_value/set_value in emulation code and marked them deprecated. Fixed dangling reference (emu\output.h).
. Updated API: Added a lightweight output proxy class for interacting with outputs from outside a device context. If an output doesn't exist, it stores a local value. Note that this means layouts cannot create outputs, e.g. to communicate between views. Outputs are only created by output finders when resolving objects. Made output finders participate in object resolution in the device lifecycle. They no longer need to be manually resolved. Conversely, you can't avoid creating outputs by not explicitly resolving them. Added some validation rules for output names. Got rid of the deprecated get_value/set_value. The Lua versions will stick around a bit longer to give people time to migrate. Some other internal API changes in preparation for per-device outputs. Shuffled the code for the output proxy move assignment operator to handle self-assignment properly (emu\output.cpp). Hopefully fix building with GNU libstdc++. Apparently GNU libstdc++ wants the opposite parameter order (emu\output.h).
. Made outputs name scope local to devices. This allows multiple devices in the system to have outputs with the same names, paving the way for stuff like floppy drives exposing head position and motor state as outputs without needing to worry about coming up with unique names. For now, SVG items still use unqualified names, and layouts instantiated by the root device can use unqualified names (interface\output.h).
. Reduced coupling and improved encapsulation. Removed input.h from emu.h - emulation code shouldn't be using it for anything besides debugging features, and even then it's not great as it's opaque and it's quite disconcerting, especially when the debugging keys conflict with default input assignments. Removed debug keys for a few systems/devices where it's a leftover for something that's fairly well understood (emu\input.cpp, emu\inputdev.cpp and emu\uiinput.cpp).
. Updated output finder documentation (techspecs\object_finders.rst)
. Network: Re-wrote to fix the worst of the implementation bugs. * Note that this doesn't change the protocol, it's still fundamentally unsuitable for things with large numbers of frequently updated outputs. It should work OK for a system with cabinet lamps now, but e.g. something with a bitmapped display won't work so well. * Allow clients to remain connected across multiple sessions if the user hard resets, launches another system from the system selection menu, etc. * Allow connections over IPv6. * Don't unsafely access the running_machine from worker threads. * Ensure buffers remain valid until asynchronous writes complete. * Only keep a single write per socket outstanding, batch up messages that arrive in quick succession into single writes. * Fixed obviously broken parsing of incoming commands, use of unsafe strtok, and assumption that one read completion will correspond to one command (commands must be terminated with CR or LF). * Shut down in an orderly fashion and wait for I/O to complete. * Made object lifecycles clearer, avoid accessing mutable state from multiple threads as much as possible, protect remaining shared mutable state with mutexes. * Added some error logging [Vas Crabb].
. LUA engine: Added Lua bindings for new public output API and added deprecation warnings to the wrappers that emulate the old API. Also updated the two affected internal layouts to use the new API. Removed some leftover crud (mame\luaengine.cpp).
. Split midway project into bally and williams according to brand owner. Videa/Sente stuff from the brief period before it was acquired by Bally is still in the bally project.
. Fixed regression with opening sockets (emu\image.cpp)
. Merged NeoGeo project with SNK project
. Fixed test for empty output test. Fixes "output" cheat code draws text on the screen. But this function doesn't work in 0.288. This happens in built-in cheat with 0.288, no problem 0.287 or plug-in cheat (mame\cheat.cpp) (ID 09467).
- SDLMAME
. Disable command line string escaping - fixes incorrect paarsing SDL_INI_PATH directive and build faild (GitHub #13150) (genie\src\actions\make\_make.lua, genie\src\host\scripts.c, osd\sdl3_cfg.lua and osd\sdl_cfg.lua)
. Generally better handling of resizing windows and generating text input events for special keys (osd\sdl and osd\sdl3)
- Compiling
. Marked several device_t overrides as final. There's too much opportunity for confusion if these are overridden further down the tree (emu\driver.h; dooyong.cpp, trackfld.cpp...).
. Retired operations that are in C++20 <bit> (osd\eminline.h)
. Updated the rarely-used ci.flt
. Converted several things from std::enable_if to requires clauses. Replaced most uses of enable_if with requires clauses. This uses requires clauses to replace enable_if in almost all cases where it was just used to exclude functions from overload resolution. This makes the code more readable. enable_if is still used for partial specialisation. Replaced remaining uses of std::enable_if and void_t with C++20 constraints and concepts. This makes some lines considerably shorter, to the point that some of them may even fit on your screen (emu, util). Brought back an enable_if as GCC doesn't seem to be able to deal with the alternative (util\dynamicclass.h).
. Un-templated a number of functions. Several of these could have been un-templated when we adopted C++17 (due to if constexpr) but it wasn't done at the time. Also completely dropped C++17 support since requires clauses are a C++20 feature. Fixed formatting bool values with numeric conversions (util\strformat.h).
. Use C++20 mathematical constants rather than M_PI and similar macros
. Core header streamlining: Retired the util::endianness enum class in favor of the std::endian type introduced in C++20. Stripped save privileges from endianness_t (now an alias for std::endian), since its specific values may be nonstandard. This type is mostly used for configuration parameters anyway. Removed the endianness and floating point utilities from emucore.h. C++20 versions of the latter now reside in their own utility header (corefloat.h).
. Added #include <cstdio> for future-proofing (src\emu\*). Removed some empty device/machine_start (misc).
. Put requires clauses on template parameter lists (util\delegate.h)
. Removed default argument values from protected constructors. It's error-prone and leads to bugs. It also wasn't thought through very well. For example if a device actually tried to construct the base class in pc\pc_t1t.cpp with the default values that were added, it wouldn't do anything useful, it would just crash.
. Improved compiling environment documentation. Link back to tutorial for Windows set up on main web site, better MSYS2 debugger recommendations, updated macOS/Xcode requirement for out-of-the-box building (docs\source\initialsetup\compilingmame.rst).
- Debugger
. Added another example of how to use the 'ep' command (debugger\exceptionpoint.rst)
. A couple of quality-of-life improvements: Memory and disassembler views inherit source/expression when opened from the same kind of view. Device windows show more information about address spaces and allow double-clicking to open a memory view. Properly treat names as UTF-8 in a couple of places (debugger\qt\*).