21fx

Help Wanted - I am looking for an electrical engineer who can help with a hardware implementation of 21fx, and am willing to compensate heavily for the trouble. If you or anyone you know could assist, please read this page.

Software Projects
Programming Guide
Expected Criticisms

Overview - What is 21fx?

They say a picture is worth a thousand words ...


This is the Lunar FMV demo, written by smkdan. It is the perfect representation of what 21fx is all about: full-screen, full-motion video with CD-quality audio, all on SNES hardware. I'll bet you weren't aware the SNES was capable of such quality. That's because the developers of the time were limited by the high costs of ROM: no SNES game ever exceeded 6MB in size. This demo shows what is capable by removing that one single restriction.

See it for yourself, you can download the above video demo here. Note that the file is 64MB in size, and currently only runs in bsnes. Also, many thanks to tukuyomi for offering to host such a large file.

In more detail, 21fx is a new SNES hardware device. It gives the SNES the ability to stream up to 4GB of data, and to play back CD-quality 44.1KHz 16-bit stereo sound. These two combined allow the SNES to stream high-quality full-motion video. The above image is real, and it really does run 240x160 video at 20fps with 32KHz stereo audio. To be fair, this particular demo uses the S-DD1 memory mapper, but it shows the potential of 21fx: it will be even better via more storage space and higher quality audio.

Now I should be more specific. The hardware doesn't currently exist. You see, it's a chicken and egg problem. Without the hardware, no software will be made; and without the software, no hardware will be made. So what I am doing is using my emulator, bsnes, to create a software implementation of 21fx before the hardware exists. Please keep in mind that it is my ultimate goal to see this hardware exist in real life. The entire device has been designed with real-life hardware constraints in mind. It does nothing a real SNES could not do.

You can think of the device as what the SNES-CD would have been, sans the cartridge portion. Just the base unit: mass storage and high-quality audio. Nothing more, nothing less.

What the SNES was truly capable of

If you look at the S-DD1 (Star Ocean) and the SPC7110 (Far East of Eden Zero), you will see two games that use memory-mapped controllers to page in more ROM space than their address ranges permitted. What 21fx does is simply extend the possible range from 4MB to 4GB. It even makes the design simpler by waiting for a ready state, and it only allows linear streaming instead of random access. This means that the 4GB of memory can be stored on literally any device that is capable of transferring up to 2.68MB/s of data (eg pretty much anything but a 3.5" floppy disk), regardless of latency.

Now look at the Super Game Boy. It connects to the SNES cartridge connector's audio output pins to stream the Game Boy audio at 2.147MHz, which is then mixed with the SNES' S-DSP output. Another example is the Broadcast Satellaview, which connects to the SNES' base connector, and streams CD-quality audio transmitted over satellite. 21fx works on the exact same principle, but also waits for a ready state, once again allowing virtually any storage medium, regardless of its latency, to work.

21fx is an extension, not a special chip

The protocol was designed to be as flexible as possible, so that virtually any configuration is possible. 21fx can be created as a base unit connector (ala the Broadcast Satellaview), as a cartridge passthru (ala the Game Genie), or as a flash cartridge (ala the SNES PowerPak.) Quite simply, it doesn't matter. It can also work with virtually any storage medium: CD-ROM, DVD-ROM, SD Micro, Compact Flash, pure ROM, a metallic hard drive even. It doesn't really matter. The device is not writable so that read-only mediums can be used.

And even if the SNES audio pins are too complex to use, they can be bypassed via simple audio Y-splitter to merge the SNES and 21fx audio output. The device itself really just needs a connector, an SD card slot, and an FPGA or MCU capable of implementing the equivalent of ~2kb of C source code across three registers.

Because it is designed as an extension, this means it is meant to be used not only with homebrew, but even to extend existing games. Imagine if you will, Chrono Trigger for the SNES, with CD-quality audio of your choice. Perhaps one of the various remixed CDs released. And with all of the full-motion video from the PSX version. All with zero seek times. And on real hardware or on emulators. Or imagine an entirely new game, no longer bound to an arbitrary 4MB ROM size. All the levels you want, all the graphics you want, all the music you want.

One goal is to attract the attention of ROM hackers to create UPS patches that make extremely minor changes to games, which will enable 21fx support, while still providing full backwards-compatibility for non-21fx hardware and emulators.