Every SNES coprocessor is now supported except for ST018, which I do not plan to implement because it would be a ton of work (it's a 32-bit ARMv3 CPU) and it was only used by an obscure Japan-only shogi game (Hayazashi Nidan Morita Shougi 2)
Features
- (SNES) Added support for the Super Scope peripheral
- Super Scope position is controlled using the mouse cursor, and Super Scope buttons can be mapped to either keys or mouse buttons
- (SNES) Added support for the OBC1 "coprocessor", an OBJ controller chip used by Metal Combat: Falcon's Revenge
- (SNES) Added support for the SPC7110 coprocessor, a data decompression chip used by Tengai Makyou Zero, Momotarou Dentetsu Happy, and Super Power League 4
- This implementation does support the extended memory map required by Tengai Makyou Zero's fan translation, which expects the last 1MB of its 7MB ROM image to be mapped directly to banks $40-$4F
- (SNES) Added support for the S-RTC coprocessor, a real-time clock chip used by Daikaijuu Monogatari II / Super Shell Monsters Story II
- (SNES) Added support for older ROM images that have an unnecessary 512-byte copier header (typically files with the .smc extension)
- (All) Added an option for whether to hide or show the mouse cursor when it is over the emulator window (it was previously always hidden, which was problematic in SNES Super Scope games)
Fixes/Improvements
- (SNES) Fixed the PPU mosaic effect working pretty much completely incorrectly in Mode 7; this fixes mosaic effects in Yoshi's Safari which combines mosaic and Mode 7 for fade-in/fade-out effects
- (SNES) Adjusted PPU rendering code to account for mid-scanline scroll register writes
- This fixes glitchy scanlines in Battle Clash, which somehow managed to perfectly time a Mode 7 V scroll write such that the first byte is written before rendering starts and the second byte is written 5-10 pixels into the scanline
- The implementation is not completely accurate because it doesn't account for some PPU registers being latched at the start of the line (and also because the timing of when the scroll write takes effect is almost certainly not 100% accurate), but very few games seem to do mid-scanline PPU register writes anyway
- (All) Fixed a bug where changing the joystick axis deadzone setting in the GUI would not take effect until a new game was started
- (SNES) Fixed a benign bug where the PPU's OAM address was always getting reloaded when forced blanking was disabled; instead, disabling forced blanking should only reload OAM address if it occurs on the first scanline of VBlank