The Emulation Realm


What's New:

- New games: Tetris + Cherry Master (Aidonis Games bootleg) and Tetris + Cherry Master (Corsica, v8.01, encrypted)
- New Working games: Polygonet Commanders (ver UAA) and Poly-Net Warriors (ver JAA)
- New Non-Working games: Animal Wonders (ver A900), Inter Stellar Zangus (Laser Fantasy vol. 2), New Canasta, Puzz Ball (Japan, PZB1 Ver.A) and 'unknown Namco System 10 medal game (unknown code)'

- New clones: Acrobat Mission (bootleg with Raiden sounds), Avengers (US), Avengers (US, revision C), Birdie Try (Japan revision S), Crazy Climber (ManilaMatic bootleg), Croupier (Playmark Roulette v.03.09), Derby Owners Club World Edition (Rev T), Football Power (Version 1.1), The Grid (version 1.01), Lucky Line III, Manx TT Superbike - DX/Twin (Revision C, set 2), Super Marukin-Ban (Japan 911128), Thunder & Lightning (set 2), Total Carnage (prototype, proto v 2.0 02/10/92), 'unknown Sidam poker (horizontal)' and Varth: Operation Thunderstorm (bootleg, set 3)
- Removed games: Gun Smoke (Barcrest) (Dutch) (MPU4) (DGU 1.6) (alt sound roms), Old Timer (Barcrest) (Dutch, alt 'Black and White' sound roms) (DOT 1.1), Old Timer (Barcrest) (Dutch, alt 'JPM Classic' sound roms) (DOT 1.1) and Triple Dice (Barcrest) (Dutch) (MPU4) (DAT 1.4)
- New drivers: kiwame.cpp and newcanasta.cpp
- New devices: atacf, dac_2bit_oc, ns32008, ns32016, ns32032, ns32081, ns32082, ns32332 and opus108pm
- New Cheat.dat:
. IBM PowerPC 4xx/6xx: Added debugging flags to disassembly for simplified forms of branch instructions (powerpc\ppc_dasm.cpp)
. Motorola MC6809: Simplify disassembly of pushes and pulls of both A and B (m6809\6x09dasm.cpp)
. Motorola MC68HC11: Added M68HC11 internal EEPROM for relevant models (hitpoker.cpp and nscsi\cdd2000.cpp)
. DAC: Removed dac_4bit_binary_weighted_sign_magnitude_longcat_device (sound\dac.cpp). Removed "are these real" section, move 2bit 1s complement DAC to the others (it's not r2r or binary weighted, but simply connects one output to (+) speaker lead, one output to (-) speaker lead).
. FM core
. Updated YMFM library to latest version (
. Fixed incorrect operator volumes in some cases for OPL. Fixes music sounds different from Truxton PCB (ID 08108). Fixed PCM playback to cut off previous notes when new waveforms are selected (see dragnblz). Fixed reversed OPM noise frequency. Fixed bug preventing CSM key ons from being noticed. Fixed bug where SSG EG envelope could be left in inverted state. Fixed SSG envelope handling when tone and noise are off.
. Increased strength of DAC discontinuity in YM2612 (ID 08231). Improved latching logic for fnums in OPN. Increased envelope suppression threshold so some effects don't get prematurely muted.
. Improved ADPCM-B behavior at stop/limit addresses (more thorough rewrite here coming later).
. K053260 KDSC: Updated sound NMI implementation for Asterix, Parodius DA!, Rollergames, The Simpsons and Vendetta.
. K054539 ADPCM: Revert K054539 cubic interpolation in MAME 0.245 (causes regression with reverb and hardware realtime cubic interpolation did not exist yet).
. ATA CompactFlash Card: Added ATA CompactFlash device (bus\ata\idehd.cpp)
. Discrete Netlist
. Added RS mode to netlist 9314 (devices\nld_dm9314.cpp)
. Fixed regression: Code was parsing lib\netlist\macros instead of using compiled version.
. Fixed TTL_74157_GATE (netlist\macro\nlm_ttl74xx_lib.cpp)
. Include file work. Moved code to more appropriate locations. Apply Clang-format to modified files. Fixed some cspell errors. Applied emu.h rule.
. Fixed-Frequency Monochrome Monitor: Make the code look more like the other MAME code: Indent initialiser lists by one level. Indent parameters by two levels when they need to be wrapped. Don't use const on parameters passed by value (not part of signature). Changed C-style casts to function-syntax casts (reduces parentheses) (video\fixfreq.cpp).
. Floppy: New API and blk_t is probably going to change too (formats\fsmgr.cpp)
. MC6840 PTM: Fixed a number of bugs in the emulation. Fixed one-shot behavior and timer enabling when switching to internal clock. Fixed counter duration and fixed output behavior in single-shot and dual-8-bit modes.
. PCI: Fixed PCI device initialization (machine\pci.cpp)
. Seta X1-001 Sprites: Seta X1-001 sprite device cleanup. Use 16-bit pointer for sprite RAM storage (despite some systems only having 8-bit CPUs). Renamed device and move to src/devices. Clean up variable naming in associated drivers.
. Z80 SCC Channel: Added support for using /W//REQ as the RX DMA pin, as well as the /DTR//REQ pin as the TX DMA pin, allowing software that uses both directions simultaneously to function (machine\z80scc.cpp).
- exidy440.cpp: Fixed invalid array access. Fixes certain sounds won't play in Cheyenne and Crossbow (ID 08128).
- fgoal.cpp, supduck.cpp, supertnk.cpp and suprslam.cpp: Use finders for I/O ports, memory banks and other small cleanup.
- goldstar.cpp: Dumped a couple missing roms for New Fruit Machine (Ming-Yang Electronic, vFB02-07A) and clone (Ming-Yang Electronic, vFB02-01A).
- ksys573.cpp: Untangled some stuff from the base state. Save additional DDR stage state members. Fixes save state bug preventing stage input (GitHub #8890).
- mainsnk.cpp, munchmo.cpp and rbisland.cpp: Consolidated driver in one file and minor cleanups
- plygonet.cpp: Still got a lockup at quantum 600
- segae.cpp: Minor cleanup
- seta.cpp
. Redumped Block Carnival sound rom. Note: The rom for the Seta X1-010 chip was dumped at half size (4 MBit silkscreen on PCB but it's actually double that).
. Added DIP locations to SD Gundam Neo Battling. Reduced clocks in Krazy Bowl to match known XTAL value.
. Eliminate timer hack in Crazy Fight since YM3812 IRQ works well enough now
- taito_z.cpp: Use generic output tag for cpua_ctrl_w. Fixes missing lamp output in Battle Shark (ID 06232).
- vectrex.cpp: Pass the new value with the timer param, so it ends up in the y integrator. Param now holds a value and a destination, so that we write the value that existed at send time, rather than whatever's in PORTA when receipt occurs. Fixes 45 degree vectors in Thrust and Moon Lander (and presumably others).
. MPU4
. Set more likely extender boards for a number of mpu4 sets, based on how they're used. Allows more games to light all their lamps. Fixed (?) large extender hookup so that all lamps light, eg. m4andybt. Gave m4andybt better inputs (is mostly playable now, but some 7segs in the display still aren't hooked up). Moved some sets to mpu4mod2 and mpu4mod4yam based on sound chip use.
. Refactoring and functionality additions. Added the ability to override the lamp current checks (will fix Lamp Drive errors) - Connect4 no longer requires a lamping hack. Replaced data logger with serial loopback for systems that expect this.
. Current MPU4 work + sorting (including progress to make m4andybt display correctly with existing layout). Do the invert in the layout instead for 7segs. Fixes led extender strobes, allows output to be inverted.
. Set YM XTAL to match PCB. Fixed some Dutch reel / input setups so that sets boot. Moved a couple of sets. Disable coinlock logic for now, the code is clearly not suitable for all cases, probably needs to be per machine. Fixed a few more reel setups. Allow m4madhse to boot based on AJR's research. m4matdr appears to be a 6 reel setup, this pushes it past the reel check to another error.
. m4bjsm and m4bjsma: Added M48T02 RTC and system boots now.
. bfm_sc4.cpp: Reduced some redundancy in a few more slot layouts
. jpmsru.cpp: Added DAC sound to Lucky Casino (JPM) and clone
- Air Duel: Decapped and dumped MCU for clone Air Duel (World, M72 hardware) and replaced simulation. Fixes the missing the startup with graphics garble and blinking colours, etc. (ID 00184). Dumped also PAL rom.
- Asterix, Parodius DA!, Rollergames, The Simpsons and Vendetta: Updated sound NMI implementation. Fixed missing sound effects in Asterix (ID 08379). Removed dead code in konami\asterix.cpp.
- Avengers: Added Avengers protection chip info. Note: The protection chip underneath the sound module. Needs dumping. The protection is extensive: Palette data, calculates player movement and even a hand in the sound. The angle/movement stuff isn't 100% accurate either.
- Bagman: Change fake 'Cabinet' dipswitch to configuration. Note: The Cabinet type set run through the edge connector, not dipswitch (verified on real PCB).
- Belly Bomber: Fixed ROM loading
- Cherry Chance: Derive clocks from known XTAL
- The Dealer (Visco): Replaced i8742 simulation with 8742 I/O MCU emulation. Added timer hack to allow LED outputs to stabilize.
- Dragon's Heaven (development board): Stop error.log filling up with gigabytes of junk
- F-1 Grand Prix: Redumped clone F-1 Grand Prix (Playmark bootleg)
- Gran Trak 10/Trak 10/Formula K [TTL]
. Working racetrack and car graphics. Added test controls, coin/start switches and 555 countdown timer. Added RS mode to netlist 9314 (devices\nld_dm9314.cpp).
. Fixed video and visible area. Fixed display of finish line, disable hack.
. Performance and other improvements and fixes: Added support parameter FORCE_TRISTATE_LOGIC on mk28000. Added system device SYS_PULSE to generate pulse based on input changes parameters are delay, pulse width, input polarity and output polarity. Added USE_SPEED_HACKS define to gtrak10 to enable the use of the above. Brings gtrak10 from 18% to 120%. Improved interlaced video support in fixfreq.cpp. Added two interlace modes: progressive and interlaced which can be selected in machine configuration. More clang format work. Renamed link to connection. Introduced typed aliases. This information may be used later to rewrite netlists. Added a three terminal base device. This will allow the analog code to be more easily comparable to literature about MNA (Modal node analysis). BJT code is now a lot better readable. Fixed doxygen consistency. Added an example for a cmos inverter based on NMOS/PMOS fets. TRUTHTABLE_START was renamed to TRUTH_TABLE. Truth tables are now enclosed in braces. Netlists are now enclosed in braces. TRUTHTABLE_END() and NETLIST_END() removed from files. Fixed static solver script. Added file path to includes in nltool.
- Lucky Ball 96: Fixed random crash at start (ID 08371)
- Manx TT Superbike: Updated documentation
- Mogura Desse: Added hardware info. Minor cleanups. Made PROM-to-palette mapping more obvious using bitswap.
- Power Drift
. Replaced World sound roms in clone Power Drift (Japan) and Power Drift - Link Version (Japan, Rev A) with versions from a complete Japan-version PCB. The EPR number on the Z80 program fits the sequence for pdriftj but the sound itself seems to be the same as the World version.
. Dumped drive board ROM
- Pro Mahjong Kiwame: Moved game to separate driver and updated notes. Removed unneeded banking callback.
- Queen Bee: Identified several inputs (ID 08365)
- The Simpsons: Fixed sound problems after soft reset (F3 key) (ID 08333)
- Space Wars: Updated controls for clone Space Ship
- SportStation: NBA Showtime NBA on NBC: Dumped revision 2.6 of the boot ROM
- Stunt Cycle [TTL]: Fixed up rom addressing so that cycle displays properly. Added debugging defines to document still existing issues in Stunt Cycle netlist (atari\nl_stuntcyc.cpp).
- Xain'd Sleena: Revert audio CPU clock change (MAME 0.245) that broke sound (ID 08366)
- Fixed rom names in lwings.cpp, segae.cpp, seta.cpp, vegas.cpp and wallc.cpp
- Dipswitch fixes in bagman.cpp, mpu4mod2sw.cpp, mpu4mod4oki.cpp, mpu4mod4yam.cpp and subsino2.cpp
- Description changes of Avengers (US, revision A), Avengers (US, unknown revision), Bishi Bashi Champ Mini Game Senshuken (ver JAA, 3 Players) (ID 08362), Caribbean Boule (M1 Satellite board), Hissatsu Buraiken (Japan, revision A), Inter Stellar (Laser Fantasy), Manx TT Superbike - DX/Twin (Revision C, set 1), Manx TT Superbike - DX/Twin (Revision D), Super Bishi Bashi Champ (ver JAA, 2 Players), Super Bishi Bashi Champ (ver KAA, 3 Players), Super Bishi Bashi Champ (ver KAB, 3 Players), Tetris + Cherry Master (Corsica, v8.01, unencrypted, set 1), Tetris + Cherry Master (Corsica, v8.01, unencrypted, set 2) (ID 08362), Touch and Go (earlier revision), Touch and Go (Korea, unprotected), Touch and Go (Non North America), Touch and Go (World), Thunder & Lightning (set 1) and 'unknown Sidam poker (vertical)'
- Renamed (avengers) to (avengersc), (avengers2) to (avengersa), (m4jokmil) to (m4jok300), (m4jok300) to (m4jok300a), (m4remag) to (m4tbplayd), (m4rmg) to (m4tbplayc), (marukin) to (marukina), (totcarnp) to (totcarnp1) and (unkm1) to (carboule).
. Fixed -aviwrite/-mngwrite with -snapview native more than two screens. Previously it would attempt to use the same file name for all screens but the first (emu\video.cpp).
. Improved naming of snapshots, especially when using -snapview native with -aviwrite/-mngwrite (see GitHub #10005). The automatically included screen number should come before the extension if supplied. Also, assume that users actually know what they're doing if they include a dot in a snapshot filename pattern (emu\video.cpp).
. BGFX: Increased number of taps for halation and increased maximum width (crt-geom-deluxe). Moved repeated crt-geom/crt-geom-deluxe functions into their own file (crt-geom*). Added support for sRGB output gamma ramp and made it the default (crt-geom and crt-geom-deluxe). Re-built shaders for crt-geom update.
. MEMORY SYSTEM: Fixed issues with memory views and snapshot naming. Include device tag in memory view save item registration names. Without this, instantiating two of the same device (or two devices with identically named memory views) causes a fatal error on start (emu\emumem_mview.cpp).
. UI: Clear up std::vector asserts triggered when menu items is empty (ui\selgame.cpp and selsoft.cpp)
. LAYOUT: More quality of life features for new source layout: Added support for wildcards in .flt filter files. You'll need to quote them to avoid /* being parsed as a comment initiator, like "seta/*.cpp" on a line including the quotes. Added an XSLT filter for listing system driver sources, like mame -lx | xsltproc scripts/xslt/list-system-sources.xslt. Converted the ci subtarget (which isn't really used much) into a .flt rather than .lua and .lst files.
. PLUGINS: Fixed story.dat errors (data\data_story.lua)
. 3RDPARTY: Fixes communication with WebSocket servers that send data immediately after the handshake (util\client_ws.hpp)
. Removed a now-unnecessary cast to std::string (util\zippath.cpp)
. Multi-Language: Updated Chinese UI and Brazilian Portuguese translations. Made parent/clone terminology consistent in Chinese translations.
- SDLMAME/LINUX: Removed keyboard/mouse/joystick device mapping options. The keyboard and mouse device mapping options did nothing at all, mostly because of lack of support for separating inputs from multiple devices. The joystick options were useless when you have two of the same kind ofcontroller, and you can achieve the same thing with controller configuration files (osd\modules\input\input_sdl.cpp, sdl\osdsdl.h and sdl\sdlmain.cpp).
- VGM player: Added 40 new entries and 5 updated entries (hash\vgmplay.xml)
- Compiling
. Reduced project cross-dependencies and slightly improved renaming script. Rearrange source to match project structure (done using the script in src/tools).
. Eliminated cross dependencies between driver projects. Driver projects now use globs to search for files. There's less effort editing the Lua files when things are moved around. Remember it won't automatically pick up a change, so if you add/remove/change files, you should touch makefile to get it to find the change. Driver projects no longer get the top-level MAME directory as an include path. This means you need to think about how you structure things and not introduce nasty circular dependencies. Subtarget projects can now be generated entirely from .flt files without the need for separate Lua scripts and .lst files. This has been done for the arcade, mess and virtual targets. It effectively works like a SOURCES= build on a large scale. This means you need to organise things so the dependency genrators can find them.
. Converted nl subtarget to use a filter rather than a script and driver list
. Added make opions for filter file, adjusted source path display. Added SOURCEFILTER option to specify a driver filter file in your make options, e.g. like make SUBTARGET=custom SOURCEFILTER=mydrivers.flt (or put it in your useroptions.mak if you'll be using it a lot). It functions more-or-less like SOURCES on steroids. Changed the way system/device source file paths are displayed to suit the new source layout better. INI file loading hasn't changed, that still just uses the base file name (ID 08378). Added overlooked trigger to src\bus.lua to include NES controller bus if the NES zapper sensor is needed.
. Prevent src\devices from inadvertently including headers from src\mame. Start moving devices out of src\mame\shared to more appropriate places.
. Set minimum required permissions on GitHub Actions workflows
. Added support for directory names in SOURCES=. Added GitHub actions workflow to build bgfx shaders and upload as an artefact (workflows\bgfxshaders.yml).
. Added notes about issues building MAME with Visual Studio (docs\source\initialsetup\compilingmame.rst)
. Added CI job to check for likely mame.lst errors (workflows\ci-linux.yml and build\
. Explicitly set LinkSupportCircularDependencies for NetBSD (scripts\genie.lua). Fixes GitHub #10011. Added support for building with Clang on OpenBSD
. Clean up #includes in src\osd. Removed not used template function (osd\modules\lib\osdobj_common.h).
. Fail earlier in the build process if SOURCES= specifies no files containing system definitions (scripts\build\ and scripts\genie.lua)
. Don't put full path to target resources in generated version resource file (scripts\src\main.lua)
. Removed leftover timer enums in some drivers and devices
. Updated documentation on compiling MAME (docs\source\initialsetup\compilingmame.rst)