Custom Built USB Reader for SNES Game Carts

June 24, 2009 by srfto  

gam_snesusbadapter_580

Ah, the magic of reverse engineering. A user has modded a USB adapter to read SNES came cartridges and play them directly on your PC. Once connected, a rom file will appear as an external storage device and you can play using the emulator of your choice. It’s kind of an ironic invention, seeing as how most people hunted down ROMs because they simply didn’t have access to the original game cartridges or consoles.

On the plus side, you don’t have to surf through endless pop-up ads and porn site banners to play one of these ROMs. You just have to have a complicated piece of technology and an actual game cartridge.

The device works via USB – you plug the cartridge into the same basic interface that you might find inside an SNES, and then plug the USB connector to your computer. Just like if you had plugged in a USB portable drive or something, it shows up as an external storage device with a single ROM file inside. Then, you can fire up your emulator of choice and play to your hearts content. As of now, the system hasn’t been thoroughly tested, so we can’t say for sure how it would react with specific games. I wonder what happens when you try to save a game on it?

Details via hackaday:

Part list:
atmel at90usbkey evaluation board (digikey – $30)
fci 10046971-003lf 70-pos. 2-row connector (digikey – $4.76)
a little piece of prototyping board to solder the connector onto
thousands of little wires

i used the following reference documents:
http://www.emulatronia.com/doctec/consolas/snes/sneskart.html
(snes cart pinout and rom memory map)
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
(fat16/32 specs)

the somewhat ugly cable solution is due to the usbkey’s weird choice for .05? pitch port connectors, for which i was not able to find suitable pin headers and ribbon cable connectors. the exact pinout is a bit weird and not worth publishing yet, since many of the i/o pins are in fact shared by the onboard peripherals, so i have to spread the address and data bits among the available pins. a cleaner version with all parts on a custom pcb is on its way, as well as support for the sega genesis (working hard towards the all-in-one solution :-) )

code is based on the atmel usb mass storage example app, to which i added a module for rom access and a read-only fat16 (the latter was hard-coded in a hex editor – fun!). again, development is still at a very early stage (i tested this on exactly one game cart), and as of now, redistribution of the source is in fact prohibited by atmel’s proprietary license.

i’m not quite satisfied with the data rate yet. as of now, newer-generation console carts (n64 etc), while absolutely possible to read out, would take forever to load. the device is running at usb 2.0 full-speed (12 mbps), and i am not aware of any cheap solution that offers high-speed usb (480 mbps).

open issues:
- testing with as many different games as possible (feel free to donate your least favorite game carts! :-) )
- issuing a refresh when the cartridge is removed/replaced! the usb mass storage protocol uses the scsi command set, so the device cannot send requests (”refresh directory, file may have changed”) to the host.
- optimization for speed
- add compatibility for hirom games

by the way, i’ve never done anything like this before. the fact that it was so easy kind of scares the hell out of me ;-)

i think this is as exhaustive a description as i can give for now.
hope you’re fine with it.

-matthias

  • Share
  • StumbleUpon.com

Related posts:

  1. The SNES PC Case Mod
  2. SNES Case Mod Now For Sale on eBay
  3. Sony’s PSP Digital Reader & PSP Mini Store Video at GamesCom ‘09
  4. Custom Star Wars Nintendo Wii Mod
  5. Unreal Tournament 3 Mods Custom Sound Support for Playstation 3

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!