Search My Blog

Thursday, June 24, 2010

USB reader for SNES game carts - Hack a Day

USB reader for SNES game carts

posted Jun 19th 2009 4:00pm by Gerrit Coetzee
filed under: home entertainment hacks, news, nintendo hacks

Reader, [Matthias_H], sent in a video about his USB adapter for SNES game carts. All you have to do is plug in the SNES game cartridge and USB cable, then a ROM file of the game shows up as an external storage device on your computer. After that, you can play the ROM with your choice of emulator. We emailed [Matthias] asking for more information, and he quickly replied with a very nice writeup about the hack that is pasted below.

Update: [Matthias] launched a site for the “snega2usb” with updates on the development of the board and a FAQ.

[Matthias] writes:

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:
(SNES cart pinout and ROM memory map)
(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.

-Matthiastagged: , , , , , , , , , , , ,

Go there...


No comments: