FXPak Super Game Boy Support Updated Once Again

Another extensive update was just added to the new SD2SNES/FXPak beta firmware that includes Super Game Boy 2 support:

The full list of changes are as follows:

  • Fixed stack overflows due to delayed interrupts by masking OAM STAT interrupt when sprites are disabled.
  • Updated STAT interrupt code to make match/oam coincident.
  • Added MBC1M support. The detection is a hack. It’s possible a MBC1 cart is incorrectly detected as MBC1M.
  • Fixed popping noises and some other APU bugs by rewriting output and handling unsigned->signed conversion better. Hopefully this is better than before.
  • Updated wave sample buffer to only update on timer expiration.
  • Updated audio output volume scaling to a closer but still crude approximation of the original SGB2.
  • Added square channel register write side effects involving duty position. Sometimes used to creating ringing in output.
  • Changed square channel duty cycle relative phase and inversion but may not matter.
  • Added some of the APU envelope register write volume corner cases.
  • Fixed RETI setting of IME by adding bypass. Exposes bugs in some games.
  • Changed PPU pipeline to remove DRN wait.
  • Changed interrupts to clean up code a bit.
  • Added serial link transfer interrupt.
  • Changed MCU bus availability to add more clocks. Speeds up save states a little bit.
  • Fixed save state audio glitches by forcing APU writes to disable channels during HLT. There is a tradeoff between forcing all silent channels vs enabling channels with incorrect state.

You can download a pre-configured sd2snes directory here, that just needs to be merged with the existing directory (overwrite all files);  Just make sure to back up your existing directory, just to be safe!!!  As a note, browsers often warn people of harmful files coming from tinyupload, but the file was created by a trusted source that wishes to remain anonymous:

Also, it looks like qwertymodo’s MSU-1 audio patch for the game is coming along nicely!  I recorded a quick sample, via an FXPak Pro on a real SNES through an OSSC with optimal timings at 2x, then integer-scaled to 4K for this video:

Liked it? Take a second to support Bob on Patreon!