The void left by the parallel port
Props to innovating a solution. But since this is SNES related ...<p>I&#x27;ve been working with people over the years on an SNES&lt;&gt;PC interface. Idea being, you could dump SNES games from the cartridge port to the PC. Or you could upload hardware diagnostic&#x2F;test programs (for emulator development) from the PC to the SNES, and then read back the results to the PC for analysis. Or just do crazy stuff like linking multiple SNES units together, support netplay on real hardware, download an unlimited amount of game level content, mix in audio from the PC via SNES commands, etc.<p>Here&#x27;s the history: <a href="http:&#x2F;&#x2F;i.imgur.com&#x2F;ucxVbJa.jpg" rel="nofollow">http:&#x2F;&#x2F;i.imgur.com&#x2F;ucxVbJa.jpg</a><p>We started with the SNES controller port and used bit-banging code to a MAX232N, and connected the other serial end to a PC serial&lt;&gt;USB adapter. This worked out to around ~4KiB&#x2F;s that we could transfer.<p>After that, I moved to a TTL-232R-5V cable, and spliced it directly to an SNES controller. Same speed, but a lot less bulky.<p>The speed killer was having to bit-bang everything. The SNES has DRAM refresh cycles that stall out the CPU for a short duration on every scanline, so that greatly impedes the maximum baud rate you can bit-bang at.<p>Then I found out about the Teensy, which has a synchronous UART mode. Just connect another line that you strobe when new data is available on your pin. They have software drivers that simulate USB serial UART, so you just compile that in and flash it onto the chip. This got us up to around ~30KiB&#x2F;s, but that was still rather slow.<p>Finally, we moved on to targeting the expansion port on the bottom of the SNES. It exposes the entire 8-bit data bus. And so we connected that to an FT232H board, which has built-in 1024-byte smoothing buffers in each direction. From the SNES&#x27; perspective, it&#x27;s just like a parallel port. From the PC&#x27;s side, it&#x27;s just like a virtual COM port. This lets us hit ~160KiB&#x2F;s in both directions, and that&#x27;s with code to verify data is available&#x2F;can be sent from both ends of the connection on every single byte transferred either way.<p>The device itself is actually USB high-speed, so we could max out the SNES&#x27; 2.68MiB&#x2F;s transfer rate, but we would lose the ability to ensure data or buffer space was available during DMA transfers, so it wasn&#x27;t as reliable to do that.<p>...<p>Moving on to the Super Wild Card ... that thing is just a relic. It&#x27;s unable to dump games that use the SA-1 coprocessor (Mario RPG, Kirby Super Star, etc), or memory map controllers (Star Ocean, Tengai Makyou Zero, etc), making it quite limited.<p>The device we&#x27;ve built can dump games over a USB interface. Takes about ~20 seconds a game, and can dump absolutely every game in the library. And the dumper is written in pure C&#x2F;C++. About 200 lines of code to support every possible cartridge type.<p>When it comes to <i>playing</i> games, the SWC can&#x27;t play anything with <i>any</i> coprocessors (all the aforementioned games; plus DSP games like Super Mario Kart, Pilotwings, Top Gear 3000, etc) [well, some of these copiers supported DSP-1 pass-through, not sure if the original SWC supported that or not]. On this front, the sd2snes is a vastly superior solution. You can put the entire SNES game collection onto a micro SD card, and run anything the SWC can, plus the DSP games as well.<p>All the same, even if it&#x27;s not the optimal solution, I still give props to the author of this hack. It&#x27;s definitely cool to restore these old copiers, if just for the novelty factor. I&#x27;m reminded of a guy who built his own SWC DX2 CD-ROM drive interface for loading games, because the CD drives are much less common.