- New games: Runaway (Sun Electronics, Japan)
- New Working games: Pac-Carnival and VS Mahjong Triangle
- New Non-Working games: Olimpic Hockey (EM Bubble Hockey, set 1), Same Same Panic, Super Mario World - Mario Undoukai and Terebi Denwa Doraemon
- New clones: Armored Warriors (Brazil 941024), Gunbarl (Japan, GNB1/VER.A), Magical Twin Bee (ver EAA), Nandemo Seal Iinkai (alternate ver 1.0), Nandemo Seal Iinkai (Astro Boy ver. 1.1), Olimpic Hockey (EM Bubble Hockey, set 2), Silent Scope (ver UAD, Ver 1.33, GQ871 video board), Silent Scope 2 : Fatal Judgement (ver UAB, Ver 1.01, GN715 video board), Silent Scope 2 : Fatal Judgement (ver UAC, Ver 1.02, GN715 video board), Sky Shark (bootleg) and Space Mission (SegaSA / Sonic, Spanish bootleg of Scramble)
- New AGEMAME games: Phantom Pays Classic (0101003V, NSW/ACT) and Rainbow Warriors (0101132V, NSW/ACT)
- New drivers: banprestoms.cpp
- New devices: i8744 and te7751
. AM9517A: Setting mask bits also sets status
. Biquad Filter: Added a differentiator bandpass filter primitive (sound\flt_biquad.cpp)
. FM core
. Save busy end time (sound\ymfm_mame.h). Fixes music stucks in all games/systems using OPM/N FM (ID 08018).
. Removed dead code in MAME interface. Removed ay8910.h include from sound\ymfm_mame.h and added it to places that still need it.
. Sync with upstream (3rdparty\ymfm\*). Fixed LFO disable on YM2151. Fixed swapped lower nibbles for 12-bit PCM on OPL4.
. Return masked status from set/reset function (ymfm\src\ymfm_fm.h). Fixes missing voice samples in Fighting Soccer (ID 08034).
. Allow PCM writes if new2flag is set, even if newflag is not (YMF278B; ymfm\src\ymfm_opl.cpp). Fixes no background music in Alien Challenge during gameplay (ID 08033).
. RC Filter: Renamed the filter types to be more consistent with regards to behavior: old LOWPASS_2C is now LOWPASS (to match the behavior of HIGHPASS); old LOWPASS is now LOWPASS_3R.
. Yamaha SWP30 sound chip: Start implementing something remotely looking like envelopes (sound\swp30.cpp)
. 3dfx Voodoo Graphics: Major Voodoo rewrite: Changed to use modern poly.h instead of polylgcy.h. Moved helper classes into separate voodoo namespace. Derived device classes from video_device_interface. Split classes so that later versions derive from earlier versions. Created device maps to be directly included. Redesigned register mapping to use helper classes and delegates. Rewrote rasterizers to use C++ templates instead of macros. Added logic to compute equations for color/texture combine units. Added special generic identity-texel rasterizer cases. Removed pipeline stalls on texture and palette changes. Removed pipeline stalls on most all parameter changes. Generally re-thought and cleaned up logic throughout. Parameterized cycle stealing on status reads; updated all existing voodoo consumers to configure it as it was before. Restore some cycle stealing on vretrace to allow San Francisco Rush to boot. Increased vretrace cycles to 2 so mace will boot again. Added missing rasterizers for later gtfore games. Removed outdated comments. Improved LOD calculation accuracy. Removed stw_helper as any benefit it provides is within the noise. Improved pixel pipeline throughput for LFB writes. Helps gtfore and related games. Improved fidelity of synchronization points. Added synchronization back to NOP to fix flicker in gtfore06. Fixed dither subtraction. Fixes squares around balls in Virtual Pool. Return 0 on invalid reads (video\voodoo.cpp), seems to fix Funky Ball. Improved logging of unexpected accesses to include register name.
. Cassette tape image: Don't construct string from nullptr. Note that std::string() was tried but somehow caused another bug (tape preset as play was instead stopped) (formats\cassimg.cpp).
. K001604 2D tilemaps + 2x ROZ: Added callback for vblank irq (video\k001604.cpp)
. Namco C355 (Sprites)
. Fixed handling of sprite attribute table index and sprite position (video\namco_c355spr.cpp), fixes missing sprites in Final Lap R.
. Adjusted sprite attribute table index mask to accommodate 'J-League Soccer V-Shoot'
. Use namco_c355spr_device built in sprite buffering to pevent flickering gfx in Suzuka 8 Hours 2
. Treat 'dy' as signed, seems a more logical solution to Final Lap R 'missing objects' and also fixes the flags on course select screen.
. PCI: Added support for adding subdevice maps directly (machine\pci.h)
. Polygon rendering: Various improvements: Exposed poly_array class for broader use. Changed poly_array to intelligently determine maximum size. Added logic to track multiple "last" instances in poly_array. Extended logic to support up to 16m work items. Removed MaxPolys parameter from poly_manager template. Added Flags parameter to poly_manager template. Added POLY_FLAG_NO_CLIPPING flag to remove clipping code when not needed. poly_manager now supports a MaxParams value of 0. Made paramcount a template parameter for render_* functions. Added reset_after_wait() method to be overridden by derived classes. Switched to using std:: helpers instead of internal methods. Removed useless dependency on screen_device. TRACK_POLY_WAITS now produces more complete statistics. Removed legacy implementation of polygon renderer (video\polylgcy.cpp). 'Early out of waits' if no outstanding work (video\poly.h).
. K001005 Polygon Renderer: Major rewrite and documentation update (video\k001005.cpp): Implemented missing texture+gouraud polygon type. Implemented fog using correct parameters. Fixed lighting calculations. Implemented bilinear filtering in games that use it (Solar Assault and Operation Thunder Hurricane). Use templates for rasterizer code paths. Refactored polygon parser. Disable fog when using constant Z.
. K056230 LANC: Clear network interrupt properly (machine\k056230.cpp), fixes screen flashing in ZR107 driver.
. SMC91C9x Ethernet Controller: Reset should disable promiscuous mode. RCR - handle promiscuous changes, adjust soft reset handling. EPH_STATUS should be LINK_OK by default (previous code wouldn't set LINK_OK unless RX_EN is set but LANceGS won't set RX_EN unless LINK_OK is set). B0_BANK bits 4-8 are unspecified in the documentation but LANceGS expects a 3 (used in Card detection logic). MIR values depend on device type and resets when the mmu resets. Reading/writing the data register needs to be aware of 8-bit I/O. Calculate FCS. Removed WMS OUI filtering hack [ksherlock].
- aristmk5.cpp: Updated comments and added some ROM labels
- cedar_magnet.cpp, play_3.cpp and zpinball.cpp: Added working ADPCM sound to EFO ZSU (audio\efo_zsu.cpp) and Magnet System sound boards
- cobra.cpp: Restore driver to somewhat working state. Adjust visible area to match the K001604. Added RAM for RF5C400 sound. Fixes Fighting Bujutsu doesn't get to the title screen anymore (ID 07174).
- dangbar.cpp and namcos2.cpp: Removed YM2151 sound in Dangerous Bar. C121 custom isn't a rebadged YM2151 (custom logic for 6809 CPU).
- dgpix.cpp: Added list of undumped games
- expro02.cpp: Verified a BTANB: Fantasia and New Fantasia have a service mode but it doesn't work well (text is missing or replaced by garbage). This has been verified to happen with New Fantasia (1994 copyright) on a Comad 940630 PCB.
- gaelco.cpp and wrally.cpp: Eliminated space.device() accesses in machine\gaelcrpt.cpp
- gticlub.cpp and zr107.cpp
. Clear network interrupt properly (machine\k056230.cpp), fixes screen flashing in zr107.cpp (ID 05617). Also fixes player vehicle in GTI Club and Jet Wave skips/jitters during the end sequence (ID 07432).
. Fixed tilemaps and lockup issues (attotime => 15000) in zr107.cpp. Fixes Winding Heat hangs during race (sticky 3D graphics) (ID 07490) and the AI cars are always Toyota Truenos in standard mode (ID 06381).
. Major K001005 Polygon Renderer rewrite: Implemented bilinear filtering in games that use it (Solar Assault and Operation Thunder Hurricane).
. New EEPROM dumps for GTI Club and Operation Thunder Hurricane + clones.
- ichiban.cpp: Very minor comment updates
- m62.cpp: Use raw parameters for screen
- magic10.cpp: Split in subclasses, used arrays. Added ticket and hopper devices.
- megasys1.cpp: Adjusted ROM area size for type A main CPU and added RAM mirror for audio CPU (verified on hardware)
- model1/2.cpp: Fixed MB86233/4 TGP flags behaviour on -0, seems to fix Virtua Fighter and Motor Raid collision detection (ID 07801). Refined the patch to only do FP-type flag setting on FP operations (mb86233\mb86233.cpp).
. Adjusted sprite attribute table index mask to accommodate 'J-League Soccer V-Shoot' (video\namco_c355spr.cpp)
. Added Namco posirq kludge for Nebulas Ray to prevent a bad line on the right of the screen and some stars don't scroll correctly (ID 06666).
. Use extra bit on x coordinate (video\namcos2_sprite.cpp), prevents large oversized bad sprites in Final Lap 2/3 and Suzuka 8 Hours.
. Added Namco posirq kludges for Burning Force to prevent a bad line on horizon (ID 05261) (ID 06944) and for Suzuka 8 Hours 2 tunnels (see 2nd attract demo).
- nss.cpp, sfcbox.cpp and snesb.cpp: Use int8_t instead of old MAKE_INT_8 macro (MAKE_INT_8 fails on GCC/ARM) (cpu\spc700\spc700.cpp)
- royalmah.cpp: Preliminary banking for chalgirl, mjsenka, mjyarou and clone mjyarou2. Girls now appear. These games don't appear to set the palette bank, so they all have bad colors.
- seattle.cpp: Prevent lockups by disallowing 0-duration timers (machine\gt64xxx.cpp)
- turbo.cpp: Added subclasses, input/output finders and save state preparation.
- viper.cpp: Dumped DS2430 and M48T58 for Mocap Golf and Silent Scope Fortune Hunter
- Alien Challenge: Allow PCM writes if new2flag is set, even if newflag is not (YMF278B; ymfm\src\ymfm_opl.cpp). Fixes no background music during gameplay. Fixed also way overdriven volume.
- Batman: Offset layers to align with real PCB videos. Fixes glitch on some of the Batman ending screens (ID 02356).
- Bowling Try!: Extensive QA notes, make it to populate display list for the science.
- Chanbara: Render low priority sprites
- Crush Roller: Redumped clone Painter (hack of Crush Roller)
- The Destroyer From Jail (Korea): Support the DAC samples. Better balance, don't mute DAC when NMI disabled, speed up Z80 so it doesn't bog down. Verified DIPs against manual and removed MACHINE_IMPERFECT_SOUND flag.
- Disco Boy: Fixed tile banking (boss stages) in clone Disco Boy (Promat license?).
- Final Lap R
. Fixed handling of sprite attribute table index and sprite position (video\namco_c355spr.cpp), fixes missing sprites in Final Lap R (Objects in the side of the track are not shown (ID 05358), AI cars are never reflected in the rear mirrors (ID 05978) and corrupt graphics (ID 06904)).
. Treat 'dy' as signed (video\namco_c355spr.cpp), seems a more logical solution to finalapr 'missing objects' and also fixes the flags on course select screen.
- Funky Ball
. Implemented timer. Found a reference to 32539 in the code that looks to be a reasonable guess at the timer frequency. Return 0 on invalid reads (video\voodoo.cpp), seems to fix Funky Ball. Improved logging of unexpected accesses to include register name.
. Added KS0164 sound cpu
- Gyruss: Fixed comment image hashes to match latest offering (Gyruss diagnostic rom)
- Heroine's Memory: Some basic work to make it display something. Fixed error in GFX ROM loading. Map TE7751 I/O expander.
- The Irritating Maze: Added newer Universe BIOS versions, this allows the Japanese version to be seen by switching the region and joystick play using a cheat although 2.3 and later also support trackball play. A joystick is still required for setup and to use the in-game menu.
- Joker Master: Dumped PROMs and PLDs for clones Poker Master (ED-1993 set 1) and (ED-1993 set 2)
- Mahjong Shiyou: Got game to a somewhat playable state. Colors are bad and it's missing the audio CPU + MSM5205 hook up.
- Metal Slug 4: Added 'Noise Factory' as additional manufacturer (ID 08027)
- Midnight Run: Fixed ROM loading for clone Midnight Run: Road Fighter 2 (AAA, Asia v1.10, newer sound program), game now boots.
- Pac-Carnival: Fixed address map and added Bet 12 button (Game now playable)
- Runaway (Atari, prototype): Merged video code into main driver file, split state classes, reduced a bit of redundancy, eliminated runtime input tag lookups and generally tidied up code.
- Sengoku no Jieitai: Changed game title of 'No Man's Land' to 'Sengoku no Jieitai' (ID 08023). Note: This set appears to be the original Japan set. In Japan the game was called 'Sengoku no Jieitai'. "No Man's Land" was the overseas title. Videos from the Japan PCB match the set in MAME.
- Shooting Zone: Made the timer side show something. Added SMS side. Somewhat playable but needs more work.
- Sky Soldiers: Demoted game with MACHINE_UNEMULATED_PROTECTION flag since MCU actually controls bosses time out behaviour
- Sonic Blast Man: Named a couple of inputs
- Sonic Blast Man's Janken Battle: Map TE7751 I/O expander and some RAM. Tentatively hooked up most devices. Attract mode runs fine but need hopper emulation before it can be playable.
- Space Harrier: Dumped 315-5163A I8751 MCU
- Super Slam: Try to fix graphics
- Suzuka 8 Hours 2: Use namco_c355spr_device built in sprite buffering to pevent gfx flickering
- Unknown Cointek game: Minor update to the preliminary decryption
- VS Mahjong Triangle: Allow comms to actually work so that game can be coined up properly from either side. Added NMI acknowledge and NVRAM clear using SW2. Fixed coin input polarity, gal B display and flip screen behaviour.
- Xyonix: Removed tagmap lookups and used logmacro.
- Fixed rom names in expro02.cpp, hornet.cpp, msisaac.cpp and pacman.cpp
- Dipswitch fixes in funkball.cpp, magic10.cpp, royalmah.cpp, sbmjb.cpp, segas16b.cpp, shtzone.cpp, taito_b.cpp and turbo.cpp
- Description changes of Nandemo Seal Iinkai (Astro Boy ver. 1.0?), Runaway (Atari, prototype), Sengoku no Jieitai, Sonic Blast Man's Janken Battle (main ver. 1.1, video ver. 1.0), Spider (Buena Vision) and Tapper (Budweiser, 1/12/84)
- Renamed (rainwrce) to (rainwarrce) and (roboarma) to (roboarmya)
. VIDEO RENDERING SYSTEM
. Correctly apply -keepaspect with -unevenstretchx/y. Correctly apply -keepaspect with -unevenstretchx/y. Initialize window at the correct size when -intscalex/y is used. Get correct window size upon maximizing/minimizing with integer scaling (emu\render.cpp).
. Improved min/max for SSE4.1+ and scale+clamp operations for all (video\rgbsse.cpp).
. Made palette expansion constexpr and added argbexpand function (video\rgbutil.h).
. MEMORY SYSTEM
. Removed endianness template parameter from handler_entry_read, handler_entry_write and closely related classes (emu\emumem.*). This appears to substantially reduce compilation time and binary size without too much impact on critical paths. The only critical-path parts really touched by this are probably handler_entry_read_units::read and handler_entry_write_units::write, which no longer need a branch on descriptor endianness for the downcast. The other instances of where the endianness now needs to be fetched from the address space are practically all in constructors, which probably don't get called too often except in drivers where the memory map is regularly rewritten (e.g. segas16b.cpp); even then the performance impact probably isn't huge.
. API cleanups (emu\input.cpp and util\unicode.cpp)
. Allow controller files to override input sequences for inputs that don't use defaults, and to override the toggle setting for digital inputs (emu\ioport.cpp)
. Expose configuration level (mostly matters for controller files), improved verbose diagnostic messages, and moved a few things out of the global and preprocessor namespaces (emu\config.cpp).
. Added documentation for some controller configuration file features (docs\source\advanced\ctrlr_config.rst). The device mapping feature documentation will be merged in at some point.
. List shortnames of subdevices that have ROMs as part of -listroms header (mame\clifront.cpp)
. Changed osd_ticks to use QueryPerformanceCounter on Windows since the mingw std::chrono::high_resolution_clock is anything but (osd\osdcore.cpp).
. Multi-Language: Updated Brazilian Portuguese translation
. Filling out missing hashes for commented ROM_LOADs when known
. Fixed verbose printf (emu\softlist_dev.cpp)
. hiscore.dat update (plugins\hiscore\hiscore.dat)
- VGM player: Added 22 new entries (hash\vgmplay.xml)
. Removed some tag lookups (bfm_ad5.cpp, bfm_sc5.cpp, gamtor.cpp, jpmsys7.cpp, seta2.cpp, machine\mcf5206e.cpp and machine\lpci.cpp)
. Disable another MSVC warning (C4611) that is known to be noisy (and which showed up with the recent setjmp workaround).
. Fixed Visual Studio case with displaced object base (internal representation seems to have drifted since it was originally written) (util\delegate.h).
. Fixed mount and create image dialogs (debugger\debugimgui.cpp)
. Fixed building mametest (tests\lib\util\options.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."