Firmware v1.10.0 released

Firmware v1.10.0 released

Firmware 1.10.0 is out. Download here!

What’s new:

  • S-DD1 support by Magno! Big thanks to Magno who implemented it and RedGuy who helped integrate the core with the main firmware ๐Ÿ™‚
  • Support for sd2snes Mk.III (a.k.a. SD2SNES Pro). This works by adding a new set of support files for the new hardware so the firmware package actually contains two firmwares. This also makes it possible to swap the same card between old and new sd2sneses freely.
  • Fixes:
    • Fix memory corruption on BS-X loading. (Hopefully – I could not identify a cause and suspect bitstream file corruption. Please let me know if it works again – it does for me)
    • S-RTC register state is REALLY reset when the console is reset, and also when loading a game.
  • Known issues:
    • Firmware seems to ignore Cx4 speed setting (at least since v1.9.0)
    • sd2snes Pro menu still has the old design
    • Mk.III specific source code changes currently aren’t contained in the GitHub repository. Please bear with me while I figure out a way to integrate them. ๐Ÿ˜‰

Firmware v1.9.0 released

Firmware v1.9.0 released

Firmware 1.9.0 is out. Download here!

What’s new:

  • SA-1 support by RedGuy! Big thanks to RedGuy again ๐Ÿ™‚ This was a really tight fit for the FPGA so there’s a little catch – MSU1 is not available for SA-1 games.
  • Also from RedGuy comes partial SRAM detection for some known games (SuperFX & SA-1). This calculates a ROM CRC and chooses to monitor only specific regions in cartridge RAM for changes. This enables automatic saving without having to resort to periodic saving, reducing wear on the SD card.
  • SNES CPU <-> PPU clock phase alignment. This is a long standing issue on a sub-CPU-cycle base inside the SNES. HDMA to certain registers can cause flickering sprite slabs to appear when CPU and PPU are out of phase after a cart-side reset (which does not reset the PPUs). This fixes the notorious flickering of characters with the giant frog attack in Chrono Trigger, sprites in Kirby Super Star, characters behind the text box in Star Ocean, and probably more. See https://github.com/RedGuyyyy/sd2snes/issues/6 for technical details.
  • Added an option to always go back to menu on reset, regardless of whether it’s a short or long reset.
  • LED brightness setting (16 levels)
  • Added an option to choose whether you want to start a game with or without cheats enabled (of those that are marked as enabled in the YAML file). You can enable / disable them later using the L+R+Start+A / L+R+Start+B button combinations if you have in-game buttons enabled.
  • Disable Satellaview emulation when a real Satellaview base unit is detected to avoid bus fighting and facilitate Satellaview development
  • System Information now shows the currently effective video mode (50 or 60 Hz).
  • Fixes:
    • Control signal edges are detected a bit earlier, improving stability on some consoles (Github Issues)
    • Fix timing of auto region patching. This should solve cross-issues with Super Scope games because they rely on the same register that is also used to read the console region.
    • Fix brightness patching / limiting for games that use HDMA to alter the brightness register. (e.g. Star Fox)
    • Fix an occasional imaginary access cycle carried out by the FPGA after reconfiguration. This fixes lockups when loading games with dedicated FPGA files, i.e. SuperFX, SA-1, OBC-1.
    • Fix SuperCIC pair mode entry for consoles with โ‰ค 3.072MHz CIC clock (notably GPM revisions). (Github Issue)
    • S-RTC register state is reset when the console is reset.

Firmware v1.8.0 released

Firmware v1.8.0 released

Firmware 1.8.0 is out. Download here!

Whatโ€™s new:

  • SuperFX support by RedGuy! This is the duck’s guts. What an accomplishment. Big thanks to RedGuy!
  • EXPERIMENTAL brightness patching for S-CPUN based consoles (1CHIP/Jr). The patching is comprised of two parts:
    1. 1CHIP transient fix – tries to alleviate some graphical issues with 1CHIP consoles where it reacts unfavorably to sudden changes to the brightness register. This fixes the shadow in Air Strike Patrol, warped scanlines in Rudra’s Treasure, and faded scanlines at the top of the screen on certain Capcom games when the console is equipped with a de-ghosting fix involving the replacement of the C11 capacitor.
    2. Brightness limit – can be used to limit brightness on consoles where the stock RGB levels are too high.

    NOTE: There are known problems with games that use DMA to set the brightness register. Notably Star Fox and some MSU1 video players. You should disable it if you intend to play those. For now I’m releasing it as is because I still think it can be useful (and I’ll be gone for two weeks and didn’t want to delay this release any further :-D)

  • Added ExLoROM support (LoROM > 32Mbits)
  • The In-game hook is now disabled by default.
  • Touched up the menu a bit – dependent settings are printed in grey if the higher-level setting is disabled
  • Changed the version numbering by eliminating the eternal leading zero. The last digit can now be used for small revisions or fixes.

Some minor fixes are still outstanding which I will address in a couple of weeks after I have returned from vacation.

RedGuy’s SuperFX support coming up!

RedGuy’s SuperFX support coming up!

RedGuy’s SuperFX implementation has been around for a while now as an “unofficial” build.
I merged it into the official firmware just now. Some testing has to be done and probably adjustments have to be made. Expect a release before long. ๐Ÿ˜‰

Firmware v0.1.7e released

Firmware v0.1.7e released

Firmware 0.1.7e is out. Download here! This is mainly a long overdue maintenance release.

Whatโ€™s new:

  • Fixed a long standing critical DAC timing quirk causing audio distortion with MSU1 on any revision except Rev.G
  • Fixed a clock glitch on SD card access from FPGA that could lead to audio/video distortion with MSU1
  • Properly map SRAM to Banks f0-ff instead of f0-fb in Mode 20 (“LoROM”) memory map
  • Added support for headered bsxbios.bin too
  • Slight SD card read performance optimization for MSU1 (avoid unaligned reads)
  • Change initial SRAM fill value (courtesy of devinacker) – fixes Ken Griffey Jr., Ou-Chan, and possibly other games that don’t perform a proper SRAM content sanity check
  • Always start game on PPU2 field 0. This doesn’t fix any known issue but is put in for compatibility’s sake.
Firmware v0.1.7d released

Firmware v0.1.7d released

Firmware 0.1.7d is out. Get it here! Lots of critical fixes and a little surprise in this one.

Whatโ€™s new:

  • reworked the in-game hook code again, squeezing out a couple more CPU cycles – compatibility improved further. The in-game hook compatibility list has been updated accordingly!
  • BS-X: new bsx page file by LuigiBlood!
    • contains a proper channel map, notably fixes Fuurai no Shiren: Surara o sukue and most likely more games
    • revives the town ๐Ÿ™‚
  • BS-X: better detection for script-type ROMs (e.g. various magazines)
  • Cx4 SKIP instruction timing sped up a bit. Core felt a bit too slow. (this is a makeshift “fix” until I implement the proper Cx4 instruction timing I recently figured out)
  • fixes:
    • fixed occasional black screen after soft reset (L+R+Select+Start)
    • in-game hook memory area visibility quirks fixed in various situations, notably fixes BS Kirby no Omochabako: Pinball
    • BS-X: fix PSRAM corruption on SNES WRAM writes, fixes a number of games, notably BS Kirby no Omochabako: Pinball (tough one)
    • PPU2 H/V count odd/even read flag is reset on ROM load, this fixes games that depend on it when run after games that leave it in a dirty state – notably audio glitches and freezes in Super Punch-Out when run after Fuurai no Shiren.
    • SPC Player: Fixed a long-standing transfer corruption bug that occurred because the original bulk transfer routine didn’t account for CPU stalls by HDMA (which is abundant in the sd2snes menu). This fixes occasionally missing instruments, corrupted samples etc.
    • fixed an occasional deadlock on bootup where the menu would hang at the “Loading…” screen.
    • fixed hard freeze when selecting a file immediately after disabling the “Hide file extensions” option
    • fixed persistent hard freeze in recent games list handling when running games with long path names (> ~120 characters)
    • revert DAC I2S timing to pre-v0.1.7c behaviour, hopefully reducing audio glitches for sd2snes Rev.G units
    • fixed corrupted file list display after playing an SPC file with a scrolled file name
  • cosmetic changes:
    • “Loading” window is replaced by status bar notification to be less disruptive with very short load times
    • configuration settings no longer have the wrong color when changed
Firmware v0.1.7c released

Firmware v0.1.7c released

Firmware 0.1.7c is out. Get it here!

What’s new:

  • major overhaul of the in-game hook code, with more help from the FPGA, to significantly reduce CPU footprint. This improves hook compatibility with a variety of games.
  • in-game hook: avoid disruption of manual controller reads (fixes controls in Super Star Wars games)
  • new option: “Hide file extensions” (effective after next directory change)
  • do not silently fail to load saved games when the sd2snes/saves folder does not exist (create the folder instead)
  • do not silently fail to load/save cheat files when the sd2snes/cheats folder does not exist (create the folder instead)
  • Cx4 core now runs at exactly 20MHz
  • fixes:
    • MSU1: avoid missed control register status changes on rapid rewrites (fixes FF3 Dancing Mad, Zelda FMV missing audio)
    • fix auto region patch timing (hopefully)
    • fix DSP1 header detection (fixes Ballz 3D JPN)
    • add reset hook to boot games on start of frame only (fixes Boogerman PAL)
    • clear entire SPC700 RAM (do not spare IPL area) – fixes echo artifacts in many games
  • minor cosmetic changes:
    • resize SPC player loading window
    • prevent flickering letters on System Information screen

The in-game hook compatibility chart will be updated shortly.

New page: In-game hook compatibility

New page: In-game hook compatibility

I’ve started a new page to list games that have issues with the in-game hooks: In-game hook compatibility
Columns will be added to the right with upcoming firmware releases to reflect changes (hopefully improvements!) in compatibility.
So far the list is fairly short and I probably forgot to add some of them based on reports I got. Contributions are welcome. ๐Ÿ˜‰

Firmware v0.1.7b released

Firmware v0.1.7b released

Firmware 0.1.7b is out with a number of fixes. Get it here!

  • BS-X boots correctly again after a soft reset.
  • OBC1 works again (accidentally was permanently disabled)
  • Fixed garbled time on initial clock setting (new unit or battery replacement)
  • fixed a firmware crash when saving after using the serial command line
  • sd2snes folder is always hidden again
Firmware v0.1.7a released – important bugfix

Firmware v0.1.7a released – important bugfix

Another maintenance release, yay! Get it here.
This fixes a critical bug and two minor bugs reported yesterday:

  • Firmware locked up when loading Zelda 3 after soft-reset. I am surprised that it actually worked so well with all other games.
  • Auto Region Patch setting wasn’t saved properly.
  • Satellaview custom time had a garbled default value (year 1035). The default has now been fixed. If you’d like to apply it you can delete your config.yml or just the “BSXTime” entry from it to load the new default.