New tool rebuilds SNES Street Fighter Alpha 2 without the S-DD1 chip

Developer gufranco's open-source toolchain converts Street Fighter Alpha 2 into a plain 96 Mbit SNES ROM and slashes its infamous pre-fight freeze.

New tool rebuilds SNES Street Fighter Alpha 2 without the S-DD1 chip
gufranco

Developer gufranco has released an open-source software toolchain on GitHub that rebuilds the Super Nintendo versions of Street Fighter Alpha 2 and Street Fighter Zero 2 into standard 96 Mbit (12 MB) ROMs, designing out the cartridge's custom S-DD1 decompression chip and mapper entirely. The toolkit follows earlier community patching efforts to bypass the coprocessor, such as Gizaha's MSU-1 conversion and subsequent Romhacking.net forks from mid-2026, by delivering a clean-room Python builder verified byte-for-byte against the Snes9x emulator's decompressor.

When Capcom ported its 224 Mbit CPS II arcade fighter down to a 32 Mbit (4 MB) SNES cartridge in late 1996, it had to squeeze massive 2D sprite data into a fraction of the space. Alongside Square's 1996 RPG Star Ocean, Street Fighter Alpha 2 was one of only two retail games to use Nintendo's S-DD1 enhancement chip, which decompressed graphics on the fly mid-DMA directly to the console's picture processing unit. That hardware compression made the 16-bit port possible, though it also locked the game to specialized cartridge boards, flashcarts with FPGA support, or emulators specifically coded for the chip.

Fitting 96 Mbit into a 24-bit address space

Featured image
Unknown

Decompressing every graphical stream ahead of time expands the sprite data to 5,013,058 bytes for the North American release (2,817 streams) and 5,047,300 bytes for the Japanese version (2,855 streams). That blows right past the original 4 MB cartridge limit, requiring a 12 MB image across 192 banks of 64 KB. Because 192 banks won't fit linearly inside the Super Nintendo's 24-bit address space once work RAM and memory mirrors take their cut, gufranco used a "windowed LoROM" layout inspired by neviksti's older chip-free conversion of Star Ocean.

The builder splits every bank in two and stores the halves across two separate planes in the ROM file. Banks $C0 and above hold no storage of their own, acting instead as a window onto the low-half plane so the original 4 MB code remains accessible while decompressed graphics pack into banks $40 through $7D. Whenever the game tries to arm the S-DD1 at one of seven hardware sites, a custom translation routine intercepts the call, checks four 64 KB lookup tables in banks $60 to $63, and turns the transfer into an ordinary incrementing read. Support for this windowed memory map has already been merged into Snes9x via pull request 1082.

The toolchain also outputs a 4 MB patched variant that keeps the S-DD1 requirement intact for players using hardware or flashcarts that already emulate the coprocessor.

Fixing that awkward silence before every fight

People often blamed the S-DD1 chip for the pause right after the announcer shouted "Fight!" in the retail release, but the actual culprit sits in the Sony SPC700 audio unit's RAM. Before a match starts, the game uploads 47,915 bytes of audio samples using a custom sound driver that transfers a single byte per handshake at 55 cycles per byte. By rewriting the receiving loop to push three bytes per handshake across the data ports (and skipping redundant base sample reloads, which saves 840,766 bytes across a full roster tour on the USA cart), the patch speeds up audio transfers by 3.37 times. The longest pre-fight stall drops from 2.90 seconds on the USA cart (2.60 seconds in Japan) down to 0.78 seconds and 0.72 seconds, respectively.

Wait times drop even further on the 96 Mbit image because the toolchain pre-computes a static 24,704-byte pre-fight table and stores it at $5F0000, moving it with a single DMA transfer instead of making the CPU spend 27 frames calculating the exact same numbers before every round. It's almost unsettling to watch the SNES version transition from the versus screen into a match without giving you enough time to set the controller down and check your phone.

Shin Akuma and 11 code corrections

Beyond the speed and mapper changes, the build pipeline applies a two-byte patch to unlock Shin Akuma, who sat hidden in the retail cartridge behind a cheat code that wasn't even documented until 2021. A separate module patches 11 bugs across 218 bytes in the USA release and 60 bytes in the Japanese ROM.

Pick up Street Fighter Alpha 2 (GOG) on Humble Bundle.

Some links in this article are affiliate links. Purchases made through them help support Pants Pants Revolution at no extra cost to you.