- New games: Bare Knuckle (Chinese bootleg of Megadrive version), Bare Knuckle II (Chinese bootleg of Megadrive version), Casino 21 UCMC/IWC (ver 30.08), Poker UCMC/IWC (ver 162.03) and Warp-1
- New Working games: Beatmania III Append 6th Mix, Beatmania III Append Core Remix, Cal Omega - Game 15.7 (Double-Draw Poker), Cal Omega - Game 15.9 (Wild Double-Up), Cal Omega - Game 17.2 (Double Double Poker), CEI 51.08 (CEI 906-III Poker), Give Us A Break Club (JPM), Impulse (JPM), Kung Fu (Ace), Money Talks (JPM) and Monopoly 60th Anniversary Edition (JPM)
- New Non-Working games: Aminosan (satellite) and Percussion Freaks (GQ881 VER. EAB)
- New clones: Daioh (prototype, earlier), DrumMania (GQ881 VER. JAD ALT CD), Funky Jet (Korea, prototype?), Handle Champ (GQ710 97/12/18 VER. SAA), Heavyweight Champ (set 2), Invinco / Head On 2 (set 2), JoJo's Venture (Asia 981202), JoJo's Venture (Asia 990108), JoJo's Venture (Asia 990128), Mars Matrix: Hyper Solid Shooting (Asia 000412), Narc (rev 6.00), NBA Hangtime (ver L1.2 8/29/96), NBA Hangtime (ver L1.3 10/10/96), NBA Hangtime (ver M1.1 4/16/96), NBA Hangtime (ver M1.2 8/29/96), NBA Hangtime (ver M1.3 10/10/96), NBA Jam TE (rev 2.1 2/06/94), NBA Jam TE (rev 3.0 2/26/94), NBA Jam TE (rev 4.0 3/03/94), NBA Maximum Hangtime (ver L0.9 10/30/96), NBA Maximum Hangtime (ver M1.0 11/08/96), Out Run (deluxe sitdown) (Enhanced Edition v2.0.3), Out Run (sitdown/upright, Rev B) (Enhanced Edition v2.0.3), Percussion Freaks (GQ881 VER. AAB), Percussion Freaks (GQ881 VER. KAB), Percussion Freaks (GQ881 VER. UAB), Point Blank 2 (unknown region), Poker UCMC/IWC (ver 162.03 20-6-91), Sega Golf Club Network Pro Tour 2005 (Rev B) (GDX-0010B), Sonic Blast Man 2 Special Turbo (SNES bootleg, set 2), Tekken 3 (World, TET2/VER.D), Trog (prototype, rev PA5-PAC 8/28/90), Trog (rev LA3 2/10/91) and Warp-1 (Japan, bootleg)
- Removed games: Libero Grande (Japan, LG1/VER.A)
- New drivers: mechatt.cpp
- New devices: cdu415, cdu561_25, cdu75s, centronics_smartboard, cxd1185, h83030, h83031, h83032, ioc, konami_007452, m37732s4, memc, sensorboard, snk_bbusters_spr, tasc_sb30, ym2423 and ymf281
. Hitachi H8: Fixed disassembly of abs16 (h8\h8d.cpp)
. MIPS-III: Ensure there is at least 1 cycle to be counted after reading Count. Without this, some timing loops won't exit to the scheduler until they complete (mips\mips3drc.cpp).
. MIPS R4000: Timing improvements: External clock is doubled internally. Consume additional cycles for integer multiply/divide. Streamline memory access. Physical address space is 36 bits. Simplified branch state.
. Motorola MC68HC11xx: Fixed bug causing DES to decrement IX rather than the stack pointer (mc68hc11\hc11ops.hxx).
. Biquad Filter: Emulated the lowpass audio filter for (MESS) Mac 128/512/Plus/SE and fixed the volume control so it correctly gets louder when the slider is raised in control panel instead of quieter (sound\flt_biquad.cpp).
. Filtered 1-bit DAC: Fixed regression with filtering (sound\spkrdev.cpp)
. New BSD-licensed OPL/OPLL (YM3526, YM3812, YM2413, Y8950, YMF262, etc) core
. OPL preparation: Define FAMILY constant in register classes, and use that instead of template specialization for family-specific behaviors. Expand channel masks to 32 bits. Added is_keyon() helper. * Made FM channel and operator mapping more flexible. Operators are now owned by the engine and can be dynamically assigned to channels. Register classes now provide a mapping between a linear set of operators and channels. The register data array is now a regular array instead of a vector. * Introduce OPL registers and create a ymopl_engine. Added support for sustain-less notes and the OPL envelope clocks (which does not divide by 3). * Moved keycode calculations into register class. Removed unnecessary recalc in phase generator. Lined up OPL frequency, feedback, algorithm, and total level. * Implemented key scale level and OPL-specific LFO and phase handling. * Created new YM3526 device based on new OPL. Fixed keyon and sustain behaviors. * Fixed weird OPL multiple values. Clean up and further document OPL LFO. * No busy flag on OPL, so no need to do the work. Added a right shift of 1 to the output stage to line up volume with old implementation. * More compact way of representing key scale level values. * Moved the KSL bitswap into the registers since it's apparently fixed in OPLL and perhaps others. * Added support for ryhthm generation in OPL. Changed compute_volume to take a phase value directly, and expose operator phase. * Fixec OPL timers. * Start LFSR with a non-zero value to ensure it actually starts generating for OPL. * Fixed silly bug in sustain logic for OPL. Fixes a lot of previously missing sounds. * Create OPL2 engine. Added waveform support for OPL2/3 waveforms. * Wire up YM3812 to the new OPL2 engine. * Reset OPL timers when the mask is written as well. * Managed rhythm key ons separately. Fixes Wardner awfulness. * Explicitly make channel logic handle 0, 2 or 4 operators rather than checking each one for null. Also simplify the combining logic for the 2 operator case. * Reverse bit order of LFSRs to make things a little simpler. Fixed OPL LFSR so that it has its full 23-bit period. * Changed outputs along the path to arrays rather than stereo items. This allows for four channel output. Also added a constant for the number of outputs to the register class. * Moved status register bit definitions to the registers class. Generically support the IRQ bit. * Create shared helpers for FP encode/decode/roundtrip and use them throughout. Also update TMNT to use the FP decoder. * No need to clamp when using the roundtrip. * Clear the EOS flag when execute is turned off on ADPCM-B. Fixed combine_status in YM2608 to ignore previously set flags. * Added missing note_select in base class. Don't add 1 to the OPL release rate. * Moved Y8950 over to new OPL engine. * Removed old y8950, along with FMOPL and YM DELTA-T. * Added updates prior to status reads for ADPCM systems. * Added status_mask and irq_reset logic into the core. Clean up documentation on family-specific registers. Includes some temporary gross debugging stuff. * Made debugging less gross by giving operators and channels a reference back to their owner. * Fixed status port address in OPL chips. Reduce ADPCM volume to match previous implementation. * Fixed Y8950 ADPCM start. Return masked status properly. * Initial cut at OPLL mapping. * Added YM2413 support based on YMFM. Added YM2423 amd YMF281 variants as well. Instrument data is now loaded via external ROMs. Added 'depress' envelope support to the core engine. Fixed a number of issues in the ymopll_engine. Documented hard-coded values. Moved register clear into register-specific reset. * Added missing identifier. * Y8950 is OPL not OPL2. * Some documentation cleanup. Consistency fixes in the register classes. * Consolidate large comments. Added support for delayed modulators for OPL. Broke out 2-op and 4-op cases to help simplify logic. Fixed overflow handling in fp encoding. * Changed operator assignment mechanism to be more readable. Added prepare method to be called at the start of sound update. Added ALL_CHANNELS constant to register files. Updated all consumers to call prepare and use constants where applicable. * Moved YMF262 and YMF278B to use new FM engine for OPL3/4. Fixed several issues in OPL3 logic, which now seems to work ok. * Minor fixes. More documentation. * Added caching of data to prepare methods to improved performance. Moved non-register decoding logic out of the .h file and into .cpp file. Moved phase_step calculation into register class. * More notes. Removed keycode from cache. Splitted 2/4-operator outputs into separate functions. Changed OPN/OPL to use templates for variants. Added channel/operator_offset helpers. * Fairly substantial overhaul of register interface. Register interface is now stateless and contains family-specific state. Channel and operator accessors are prefixed by ch_/op_ now and require an offset to the specific channel or operator. Moved LFO/noise generation into register class, along with keyon logging. * Added noise back to OPL/OPLL. * Added early-out for low envelope. Moved waveform logic out into family-specific code. General clean up of ordering. Reduced family base class to minimal needed. * More aggressively track active channels to help performance. * Use only summing outputs for consideration of active channels. Centralized the logic of determined 4-op vs 2-op. * More conservative channel deactivation. * Added helper to compute the sample rate and use it in all implementations. Removed unneeded chnum/opnum members. * Fixed error in YM2612 that caused crashes. * Switching parameters and locals to 32-bit values gives a noticeable performance boost. * Ensure SSG inverted flag is only tested on systems with SSG support in the innermost loops. * Make most constants 32-bit as well. Expose some constants via the engine class. * Expand waveforms ahead of time. Optimized the attenuation lookup a bit. * If volume is low, don't erase output, just leave it alone. Fixes missing sound in raimais. * Replaces a couple of magic numbers with constants. * Normalization of FM engine usage across consumers. * Removed explicit external prepare() call; this logic is now automatically done after writes and periodically. Changed OPL/OPLL to use native formats for block/fnum. Fixed waveform generation. Fixed PM and AM depth on OPL/OPLL. * Cache multiple value. Clean up output handling a bit. * Moves multiple caching ahead of phase step caching. * Fully split OPLL from OPL. Removes many hacks now that OPLL registers can have state. Created shared helpers between OPL/OPLL. Removed more aggressive channel disables since it was not rhythm friendly and didn't really buy much. * Removed bad write in OPL mode case. Fixes fsoccer intro. Only call set_reset_status() once per mode call. * Removed FM output boost in YM2608/2610. Better matches previous volume now. * Make AM/PM logging less confusing. * Let's actually set DYNAMIC_OPS properly. * Improved logging. * Comment cleanups. Added constant for dynamic phase. Pre-shift sustain level. Srcclean. * Fixed memory regions on YM2608 games. * Clean up YMADPCM to line up with recent YMFM changes. * ym2413, ym3526/ym3812 and y8950: Reshuffled read/write handlers. Rename them to less confusing names. * ymf262: Match read/write details to datasheet and previous tests. * Use a constexpr function instead of macro for packing operator numbers. Pre-compute OPM LFO waveforms. * Generated OPL4 engine to support the proper clock divider and new flags. Update YMF278B to use FM timers and status rather than replicating the logic. * Fixed 4-operator enable on new OPL4 instance. * Fixed FM downsampling and adjust balance in YM278B.
. Fixed ID register implementation, fixes several Metro games that were hanging (sound\ymf278b.cpp).
. Don't pre-mask status bits with the status mask, apply instead at time of consumption (sound\ymfm.cpp). Fixes missing music in Kick Ball.
. Initialized ADPCM-A pans and instrument volume (sound\ymadpcm.cpp). Fixes some homebrew NeoGeo sounds.
. Mark the system modified when the mode register is written as well (sound\ymfm.cpp). Fixes (MESS) Streets of Rage II punch sound on Megadrive.
. Increased soundcpu overclock hack because music broke again in Jackal (ID 07927)
. Fixed KiKi KaiKai name entry tune is broken (ID 07929)
. Fixed coverity issue, documented differences between YM2608/10 and Y8950 DAC formats (sound\ymadpcm.cpp).
. Fixed missing samples in 'Twinkle Star Sprites' by masking the ADPCM-A end address properly (sound\ymadpcm.cpp)
. Check for decay->sustain transitions even if we just transitioned from attack->decay (sound\ymfm.cpp). Affects the cymbal sounds in Shinobi and fixes the bad helicopter sound on Mission 2 (ID 07930).
. Sound Interface
. Changed audio_latency valid range from 1-5 to 0-5 (sound\direct_sound.cpp and xaudio2_sound.cpp)
. Pulseaudio support (sound\pulse_sound.cpp)
. Don't go down to the OSD on redundant mute calls (like VGMPlay's 44100 times per second) (emu\sound.cpp)
. Fixed wrapping bug when using fill/copy/bulk-add on write_stream_views (emu\sound.h)
. Yamaha YMW-258-F: Retrigger after writing to sample register if key is on (YMF278 also does this) (sound\multipcm.cpp)
. Return index 1/start of track data instead of index 0/start of pregap data in generated TOC. Added a pre-calculated field for data from current logofs to end of track. Removed pregap adjustment from (MESS) FM Towns code. Added pregap adjustment so track ends when audio data ends in PSX CD player. Fixed pce_cd load error (util\cdrom.cpp).
. Disable debug log message when parsing TOC. Also some miscellaneous cleanup/consistency (util\cdrom.cpp).
. Don't crash when trying to put a 80-track image in a 40-track drive. Do the number of tracks test only on 5.25, 8" and 3.5" is always 80, 3" is always 40 (formats\imd_dsk.cpp)
. Filter unsupported image formats (formats\upd765_dsk.cpp and wd177x_dsk.cpp). Fixed a bug that caused creation to crash for some subformats (formats\wd177x_dsk.cpp).
. Konami 007452 math chip: Added Konami 007452 multiplier/divider, fixes rolling mines trajectories in contra. Plugged k007452 in combatsc, flkatck and wecleman.
. Namco C355 (Sprites): Color 0xfe is for a palette offset instead of shadow (video\namco_c355spr.cpp)
. NB1412M2 Mahjong Custom
. Fixed BGM tempo was unstable. The frequency setting of DAC and timer clock are now linked. When changes the DAC clock, Sound driver set wait loop count ($C010) in the range of 2 to 4 in order to keep the tempo of BGM even if changed clock. This was the cause of the slow BGM in previous versions. Fixed DAC clock calculation. I changed this so that sound plays same as PCB. Implemented a protect command 0x11 to stop the DAC. This is needed to stop DAC sound when the psycho gun is stopped (machine\nb1412m2.cpp). This fixed various sound issues in Mighty Guy so that it sounds almost exactly like PCB.
. Make NB1412M2 clock input same for all drivers (drivers\galivan.cpp and terracre.cpp)
. PWM Display: Removed the need to manually call update (video\pwm.cpp)
. Ricoh RF5C68: Updated stream before writing to wave ram
- aristmk5.cpp: Converted to use IOC and MEMC devices
. System 906-III improvements
. Reworked a lot of things to get the platform playable. Switched to Rockwell R65C02 CPU. Added missing inputs, timers, clocks and connections.
. Proper inputs for the IWC poker games. Fixed/Improved the interrupts system. Preliminary button-lamps support. Simplified and partially cleaned the code. Added technical notes.
. General improvements: The PIAs set for each MACHINE_CONFIG were made independent. All the PIAs lines were adapted according to the needs of each platform. All the interrupts were set/placed as indicated in the schematics (903/905). A global hopper was added, currently assigned to platform 906-III, but it can be used by other platforms.
. Promoted Cal Omega - Game 15.7 (Double-Draw Poker), Cal Omega - Game 15.9 (Wild Double-Up), Cal Omega - Game 17.2 (Double Double Poker) and CEI 51.08 (CEI 906-III Poker) to working
- cyclemb.cpp: Improved input, sound, flip screen and dipswitches. Support for correct input of Cycle Maabou roller controller. Previous inputs did not work correctly. This made it impossible to clear stage 3 and later, which requires roller inputs. Fixed possibly incorrect handling of sound latch. Fixed issue where Cycle Maabou would not play the stage music. Previously, command to get input was being overwritten by sound latch. Support I/O input for hiding screen. Screen switching at start of a stage is now correct. Fixed position of tilemap in flip screen of Cycle Maabou. Added support for Sky Destroyer flipscreen. Fixed dipswitches. Removed definition of unused bits for non-dipswitch inputs. Added some dipswitch definitions. Implemented work RAM switching for sprites. Games on this board used to switch two sprites work RAM every frame. This implementation improved the frame rate of the sprites.
. Added missing harddisks to 'Beatmania III Append 6th Mix' and 'Beatmania III Append Core Remix' (Games now playable)
. Make the stream synchronous, added dummy-ish internal register read and more logging (sound\swp30.cpp).
- funkyjet.cpp: Tweaks to the Funky Jet addition, also apply single pixel video offset to match hardware.
- jack.cpp: Added raw screen timing parameters based on schematics
- laserbat.cpp: Quantise area effect 2/shell effect for Cat and Mouse
- megasys1.cpp: Reset the sound devices when the sound CPU is reset. This fixes the stuck note in Soldam's attract mode (ID 00355).
- midtunit.cpp, midwunit.cpp, midxunit.cpp and midyunit.cpp: Additional notes, documentation & history of Williams/Midway games based on source code notes.
- model1.cpp: Added main NVRAM used for bookkeeping
- neptunp2.cpp: Added program ROM to Corsario (Cirsa slot machine) and improved hardware documentation
. Added kov and kov114 sets redump. Confirmed actual dumps are good.
. Corrected ROMs labels for kov set and orlegend105k set. PGM documentation update according to PCBs scans. Added new tiles rom to clone dwpc101j.
- raiden2.cpp: Improved tilemap performance by not marking tiles dirty unless data changes (video\raiden2.cpp)
. Changed video attributes when video is updated (for Fantasy Zone) and bump quantum time for System 16A cases with MCU (for Quartet stage 18)
. Fixed two capacitor labels in audio\nl_segas16b.cpp
- seibuspi.cpp: Fixed document based from hardware manual (http://ikotsu.blogspot.com/2010/01/raiden-fighter-jet-seibu-spi-jet.html)
- stfight.cpp: Removed YM2203 frequency hack and set prescaler at machine_start. Fixes music pitch is too low in Empire City: 1931 and clone Street Fight (ID 03911). Use device_array for YM2203. Moved YM2203 prescaler to driver init since clone Cross Shooter (2 PCB Stack) doesn't need it.
. Continental Circus: Added electronic shutters and shifter for 3D scope (video\taito_z.cpp and layout\contcirc.lay)
. Added 3D scope view for clone Enforce (Japan, Analog Controls)
- travrusa.cpp: Hold vblank interrupt for the whole of the vblank period, allowing it to retrigger in some cases - improves Shot Rider countdown sync at start of race (ID 01086).
- twinkle.cpp: Added partial dumps of security dongle to beatmania IIDX (863 JAB), beatmania IIDX (863 JAA), beatmania IIDX with DDR 2nd Club Version (896 JAB), beatmania IIDX with DDR 2nd Club Version (896 JAA), beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM), beatmania IIDX Substream (983 JAA) and beatmania IIDX Substream (983-AA JAA).
- tx1.cpp: Fixed array out of bounds crash
- AGEMAME: Promoted Give Us A Break Club (JPM), Impulse (JPM), Kung Fu (Ace), Money Talks (JPM) and clones to working
- Battle Bakraid: Fixed music timing. Added hardware notes.
- Battle Lane!: Fixed a problem with double height sprites at last boss
- Beast Busters and Mechanized Attack: Refactoring and bug fixes. Moved sprite handling to a device. Adjusted audio balance (channel 0 was overpowering everything) and priority handing on Mechanized Attack (planes now correctly rise from underground hanger on stage 3, train carts in later level). Splitted bbusters.cpp driver into bbusters.cpp and mechatt.cpp. General refactoring etc. Removed Player 2 inputs from clone Mechanized Attack (US, Version 1, Single Player) - it doesn't respond to them at all.
- Bubble 2000: Redumped clone Hot Bubble (Korea, with adult pictures)
- Contra: Added Konami 007452 multiplier/divider, fixes rolling mines trajectories in Contra (ID 05725).
- Gauntlet II and Rolling Thunder: OPL preparation. Pre-compute OPM LFO waveforms. Fixes YM2151 music plays incorrectly during Rolling Thunder cutscenes (ID 07924) and pops and cracks heard during title music (YM2151) in Gauntlet II and clones (ID 07926).
- Gigandes: Fixed sprite offsets (regressed around december)
- Great Sluggers '94: Color 0xfe is for a palette offset instead of shadow (video\namco_c355spr.cpp). Fixes some colors aren't correct on the pre-game screens in Great Sluggers '94 and clone (ID 03161).
- Kot-Rybolov: Fixed regression with filtering (sound\spkrdev.cpp). This fixes corrupted sound in Kot-Rybolov (ID 07773).
- Magic Reels: Redumped IC24
- Mazin Wars / Mazin Saga (Mega Play): Fixed DIPSW settings
- Mighty Guy: Fixed various sound issues in Mighty Guy so that it sounds almost exactly like PCB (machine\nb1412m2.cpp).
- Mighty! Pang: Correct QSound sample loading for clone Mighty! Pang (USA 001010)
- Ninja Emaki: Removed BAD_DUMP flag from color proms yncp-2d.bin and yncp-7f.bin (ID 07934). The checksums are the same as clone Youma Ninpou Chou (Japan).
- Omega Race: Fixed cocktail spinner input (ID 07941)
- Puzz Loop 2: Mark clone 'Puzz Loop 2 (Japan 010226 Phoenix Edition) (bootleg)' as bootleg (ID 07917)
- Revolution X: Added sound software release 2 rom
- Shooting Master: Added prom 315-5139.bin. Confirmed that the missing IC7, IC13 and IC19 (315-5155) proms are not PLDs, but are custom graphics shifter.
- Silent Scope 2: Redumped comm board ROMs. Game now boots. Also corrected a couple of rom locations.
- Speed Rumbler: Correct xtal/cpu speed
- Stadium Cross: Retrigger after writing to sample register if key is on (YMF278 also does this) (sound\multipcm.cpp). Fixes no engine sound in Stadium Cross and clones (ID 07607).
- Sub Hunter (Model Racing): Start to flesh out the skeleton driver - still nowhere near close to working.
- Super Crowns Golf: Fixed gfx roms loading for clone Albatross (US Prototype?) and fill in the missing ROMs with the world version ones instead of the Japanese version ones, as the dumped ROM matches 100% the world version one and not the Japanese one.
- Twinkle Star Sprites: Fixed missing samples by masking the ADPCM-A end address properly (sound\ymadpcm.cpp) (ID 07950)
- World Beach Volley: Added preliminary sound to clone World Beach Volley (set 1, S87C751 audio CPU) by adapting the SuperSlam driver code for clone Power Balls (Super Slam conversion).
- Fixed rom names in asteroid.cpp, hornet.cpp, itech8.cpp, magreel.cpp, midxunit.cpp and pgm.cpp
- Dipswitch fixes in calomega.cpp, itech8.cpp, megaplay.cpp and rfslots8085.cpp
- Description changes of But-ten Ohara's Suit-Cha Luck-a Dog-Fight (Japan) (ID 07948), Corsarios (Cirsa slot machine), Handle Champ (GQ710 1997/12/08 VER. JAB), Heavyweight Champ (set 1), Invinco / Head On 2 (set 1), jpmimpctsw.cpp games, Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (ver. 117, Hong Kong), Maze (Trog rev LA4 3/11/91 bootleg), NBA Hangtime (ver L1.1 4/16/96), NBA Jam (rev 1.00 2/1/93), NBA Jam (rev 2.00 2/10/93), NBA Jam (rev 3.01 4/07/93), NBA Jam TE (rev 1.00 1/17/94), NBA Jam TE (rev 2.0 1/28/94), NBA Jam TE (rev 3.0 3/04/94), NBA Jam TE (rev 4.0 3/23/94), NBA Maximum Hangtime (ver L1.0 11/08/96), NBA Maximum Hangtime (ver L1.03 06/09/97), Rabbit (Asia 1/28?), Sonic Blast Man 2 Special Turbo (SNES bootleg, set 1), Steering Champ (GQ710 97/12/18 VER. UAA), Total Carnage (prototype, proto v 1.0 01/25/92), Trog (prototype, rev 4.00 7/27/90), Trog (prototype, rev PA6-PAC 9/09/90), Trog (rev LA3 2/14/91), Trog (rev LA4 3/11/91) and Trog (rev LA5 3/29/91).
- Renamed (hndlchmp) to (hndlchmpj), (nbahangt) to (nbahangtl11), (nbajamte2) to (nbajamte2a), (nbamht1) to (nbamhtl10), (outrundxeh) to (outrundxeha), (outruneh) to (outruneha) and (vrc7snd) to (ds1001)
. MEMORY SYSTEM: Invalidate the caches on bank selection change (emu\emumem_mview.cpp)
. DEVICE: Added some softwarelist warnings for Tafoid's tests (emu\diimage.cpp)
. Disable option sleep when using -bench
. Simplified the statename/snapname logic for naming after image devices (e.g. %d_cart or %d_flop1) while allowing for more general non-alphanumeric separators, so that for instance %d_cart_%i correctly produces a name with the software name, followed by an underscore and an index, rather than failing to be recognized and defaulting back to %g/%i (emu\machine.cpp and video.cpp).
. Allow breaking into main menu before the machine fully starts (i.e. just before the initial soft reset) by using the normal "Config Menu" UI input. Note that the minor code shuffling in machine.cpp is necessary to prevent emulation from getting confused if "Select New Game" happens to be selected (ui\menu.cpp and ui\ui.cpp). Added separator before 'return to previous menu'.
. Allow UI file manager to create floppy images before machine is started (ui\floppycntrl.cpp)
. Added message when trying to config unavailable machine inputs (ui\inputmap.cpp)
. Option -romident has no use for mediapath, but it does use hashpath (mame\clifront.cpp)
. Added space to prevent long strings concat when printing results (mame\media_ident.cpp)
. Fixed XML cheat loading (plugins\cheat\init.lua) when emulation is launched with an image option specified (e.g. mame nes -cart smb) or by loading directly one part of the software (e.g. mame a600 amigaocs_flop:lslarry2:flop1). Fixed getting arbitrary screen.
. Properly clear history data when loading new file (plugins\data\data_history.lua)
. Fixed XML cheats which use multiple spaces (plugins\cheat\cheat_xml.lua)
. MULTI-LANGUAGE: Updated Dutch translation. Added all missing strings for the Dutch language. Also made spelling and meanings more consistent after testing the menu's with previous translations.
. Layout: Use for shifter in Buggy Boy/Speed Buggy and segaorun.cpp (layout\buggyboy.lay and layout\outrun.lay)
. Used anonymous namespace in pockchal.cpp
. Added param to override AR (Archiver) (mame\makefile)
. Use llvm-ar for GitHub Actions Windows CI build (.github\workflows\ci-windows.yml)
. Fixed vs2019_clang build (scripts\genie.lua)
. Fixed compilation with Emscripten versions greater than 2.0.8 (scripts\toolchain.lua)
. Updated compiling document to reflect that MSVC 2019 is working and recommended (initialsetup\compilingmame.rst)
. Added %o format support to debugger printf command (debug\debugcmd.cpp)
"Theory is when you know everthing but nothing works. Practice is when everything works but no one knows why.
In our lab, theory and practice are combined: Nothing works and no one knows why."