Open Source SNES To USB Converter Lets You Emulate Legally

[Andrew Milkovich] was inspired build his own Super Nintendo cartridge reader based on a device we covered an eternity (in internet years) ago. The device mounts a real cartridge as a USB mass storage device, allowing you to play your games using an emulator directly from the cart.

This uses a Teensy++ 2.0  at its core. [Andrew] had to desolder the EEPROM pins from the SNES cartridge and reverse engineer the pinouts himself, but the end result was a device that could successfully read the cartridge without erasing it, no small accomplishment. The finished cartridge reader is build on some protoboard and we’d like to complement [Andrew] on his jumper routing on the underside of that board.

Of course, the experience of any console is just not the same without the original controller. So [Andrew] went a step further and made his own SNES controller to USB converter. This had the venerable Atmel ATmega328 at its core, and can be used separate from the cartridge reader if desired.

59 thoughts on “Open Source SNES To USB Converter Lets You Emulate Legally

    1. “EEPROM (also written E²PROM and pronounced “e-e-prom”, “double-e-prom” or “e-squared-prom”) stands for Electrically Erasable Programmable Read-Only Memory and is a type of non-volatile memory used in computers and other electronic devices to store relatively small amounts of data but allowing individual bytes to be erased and reprogrammed.” – Wikipedia https://en.wikipedia.org/wiki/EEPROM

          1. Of course, as there are some unburnt jumpers (those which are set to “zero” AFAIK), so nothing stops you from burning them.
            In (S)NES cartridges they use mask ROM though, with no means of external programming. It is pprogrammed at the time of chip manufacture.

    2. It didn’t say “erase the ROM”, it said “erase the cartridge”. The same cartridge that has battery backed RAM in it.

      That RAM is powered by the system itself until the voltage drops below a threshold after which the RAM is powered by a battery (usually a coin cell)

      If you ride that voltage threshold, or allow the voltage from the system to bounce a lot, there will be a period of time where neither the system or the battery will be fully powering the RAM, thus corrupting it enough to not pass checksum and the system interpreting it as empty – aka erasing the RAM contents in the cartridge.

      1. This is basically how my little sister accidentally erased my save games on the original Legend of Zelda on NES. She kept hitting the power and reset buttons just because she could …

        1. If you wrote your own code, absolutely. But unless you own the rights or a license, copying and distributing someone else’s IP without authorization is a violation of their copyright.

          1. Does that mean someone could legally make and sell a game that used a licensed game as the source code? For example, making an rpg using code on say, final fantasy 3 and the new game is completely different (no chocobos, characters different, etc)

        2. The ROMs contain machine code from the company who wrote the game. Nobody is writing new ROMs here. They’re game cartridges. For a console. He wants to read them into a computer.

          It’s not an issue of free speech anyway, it’s an issue of copyright. Free speech doesn’t let you publish other people’s work without permission. You seem a bit confused over what this project is.

          1. “Nobody is writing new ROMs here.”
            suppose they wanted to, are there homebrew blank cartridges? Could this converter port, do the reverse?

            I imagine the CIC chip would be a pain. C’mon nintendo, why not make a new standalone SNES with sd-cards, free IDE, and wifi – that’s not virtually inside a Wii.

    1. worrying about legality of roms is something that kind of dissapears when you email nintendo to ask for information about replacing a save game coin cell battery in sim city for snes and all they come back with is its available on the wii store.

          1. Since Disney got “Snow white” trademarked I consider US copyright, trademark and patent laws as broken (or say the straw that broke the M.U.L.Es back), it is a travesty.
            Especially since Disney is largely built on movies and characters from classics that are in the Public Domain.
            They should at least have the decency to put a plaque containing information about the author and work that they have “borrowed” from in every location on Disneyworld and Disneyland and as a part of the credits on the movies.

      1. Except when it’s 75 years after Disney’s cold, dead head went to the great refrigerator in the sky, Disney will have lobbied the US Government to extend it even further. Basically everything copyrighted after Steamboat Willy is going to be copyrighted forever.

  1. I hope it was a broken SNES that the socket was salvaged from.
    Those units are sure getting pretty costly, hehe
    Anywho.. im curious as to how this would operate under a SuperGameboy
    Or Game gene.
    Heck, or even the histerical DOOM counterfeit lookalike, super Noah’s arc 3D

    Anywho.. ingenious concept!

  2. “Andrew had to desolder the EEPROM pins from the SNES cartridge and reverse engineer the pinouts himself”
    ?? pinouts all over the place for 25 years ! and where is this “reverse engineering” report to be found…?

    “a device that could successfully read the cartridge without erasing it, no small accomplishment”
    ??? does something that could not occur (erasing a non-erasabale ROM, aka READ ONLY Memory) == no small accomplishment ?!!

    I’m really glad that Hackaday reports that kind of stuff (and that Andrew provides source code to easily reproduce his devices, and that’s really cool) but PLEASE STOP with this lurid and inaccurate “cheering teenage advertisement” style once for all !! (or is it your new policy to attract a larger and smug audience?)

    Too bad, since HaD introduction was great at mentioning previous project as an inspiration for this, but only with a “previously reported by us” link… although it wouldn’t have hurt to mention its name as well : Retrode, now a commercial usb cartridge reader.
    And it’s interesting to notice that the old article was way more clever than today’s HaD, as it had the good taste to directly quote the auhor mentionning himself some links to available online documentation that served him as a starting point for his card reader.

    The value here is not the pinout or cartrige disassembly, but the implementation of a (documented) ROM reading mechanism via bitbang, with signals and timings requirements that can be harsh to adjust. So next time please,at least try to level up and do with *almost accurate* sensationalism, harder but possible, ie :
    “Andrew learned the esoteric language of this ancient piece of chip to make him reveal its content”

  3. Um…

    Ignoring all the bizarre inaccuracies in this story (“erasing” mask ROMs? Couldn’t google the pinout for a very widely known and well understood edge connector?)…

    How does this handle the various SNES cartridges out there with dedicated coprocessors on the PCB? Not every game out there was just a collection of ROMs. Some had additional silicon for handling NPCs, 3D graphics, data compression and decompression, etc.

    Furthermore, a lot of those chips had their own firmware that was inaccessible through the edge connector. So you had games like Mario Kart where the mask ROM contents were the same throughout the period it was sold in stores, but with different PCB revisions containing different DSP-1 chips. How does this setup differentiate between those different Mario Kart versions if the DSP-1 (and DSP-1B) chips are unused?

    Looking through the source, I’m not even sure if this thing handles the battery backed SRAM on a cartridge. Is all that saved to the host computer instead? Or is the emulator actually capable of saving data back out to the SNES cartridge?

    Honestly, this kinda looks like “just another SNES cartridge dumper” to me… and I’m not entirely sure what that has to do with emulation. If it was actually emulating an SNES on the other end of the cartridge connector, and driving the coprocessors inside games like Starfox/Mario Kart/SM:RPG, and capable of utilizing the battery backed SRAM, then I might be impressed… but there’s no evidence any of that is happening. It’s literally just a simple ROM dumper.

    1. It’s basically just another cart dumper, far as I can tell.

      The co-processors are emulated in modern emulators. Obviously this is necessary since they work from ROM image files, not actual carts.

      For games like Mario Kart, the Super-FX used the cartridge’s main ROM for it’s instructions, as well as being connected to the console’s RAM. So there’s no hidden ROM, it’s all accessible from the cart’s edge connector. The Super-FX had a 512-byte cache, but avoiding contention of ROM access between the Super-FX and the console itself took a bit of thought on behalf of the programmers.

      1. Not to be nitpicky, but Mario Kart used DSP-1 (as the person you replied to accurately said). DSP-1 is not SuperFX. DSP-1 is different from the majority of other add-on chips in that you can use another cartridge’s DSP-1 to play the game if you have the hardware to access it (it’s directly wired to the cartridge bus, rather than through other glue logic).
        DSP-1 vs. DSP-1B is a non-issue though — DSP-1B can be used anywhere DSP-1 was used without issue, so if the ROM says “I need DSP-1” and you emulate DSP-1B, it’s going to work.

  4. So it’s a homemade cartridge dumper. Very cool but it would be nice if the article elaborated to more detail.
    Can it write saves back to the cartridge?
    Are there any compatibility issues?
    Does it dump the entire contents on power up, or does it dump on read requests?

    1. I think the point is, with this, you could dump the cart “live” each time you want to play it. But yes that would still involve creating a copy of the cart in the host PC’s RAM. And Nintendo get pissy about their games being run on anything but Nintendo hardware, and try create regulations that make that illegal. Either through terms and conditions, or bothering governments to influence the law.

      Doesn’t matter, really, nobody’s gonna bother actually doing that. We’re all gonna carry on playing images from the hard drive.

      1. Yes, it is still a rom dumper/extractor, only one that conveniently serve the whole cartridge’s rom content as a file, but if it can serve the file to an emulator, it could also serve it to the Internet…

        A really ambitious hack that could somewhat work around this “full copy mechanism” problem would be a low level emulation of console’s realtime interaction with the cartridge’s rom.
        And even more ambitious, the implementation of all cartridge possible interactions with special cartridges that contain some DSP, RTC, CPU, FPU and other “sprites decompression” chips :
        https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips

        And no need for reverse engineering ! It’s all officially documented in this little booklet….. :) :
        http://folk.uio.no/sigurdkn/snes/snes_manual2.pdf

    2. Actually, thinking further… The SNES’s crappy 65816 CPU (which I’m sure was chosen for it’s 6502-compatible mode), only runs at 3.58MHz. That’s in it’s fast mode, it also has 2.68MHz and 1.79MHz speeds for accessing some of it’s slower hardware.

      The SNES’s graphics chip also has NES-compatible modes. Sound, I dunno about. But I think the early plan was back-compatibility with NES carts. Third-party companies later made adaptors for just that. But Nintendo abandoned the idea, I don’t think they wanted people thinking that the SNES just being a souped-up old NES, even though it effectively was. Although pretty well souped up compared to the NES, and even for 1983 the NES was pretty cheap and crappy hardware.

      So this limited CPU choice to the awful 65816, where Sega went with the 68000 at 8MHz, with 32 / 16-bit hardware rather than the 16 / 8-bit of the 65816. This is one reason why so many SNES games needed extra processors on-board. The graphics and sound hardware helped make up for it, which were very powerful, a good way ahead of the Megadrive’s, but still hampered with that CPU.

      Anyway, in the fourth paragraph here, I’ll tell you my point… USB should be fast enough, easily so, to bring each byte in from the cart live, as it’s requested by the emulator. So you wouldn’t need to store a copy in RAM or hard disk. I don’t think that’d be enough to make any legal difference. Which is irrelevant anyway cos Nintendo would steamroller you whether you’re right or wrong. But would certainly be interesting to try. Modern PCs could emulate dozens of SNESs, there’s tons of processing power spare. Wonder if it’d work at full SNES speed? Latency would be the issue. To be strict, the emulator wouldn’t be allowed to cache any ROM data locally, all must be pulled from the cart on demand.

      Kind of mad, really, that you could probably store the whole SNES library on an SD card the size of your fingernail. And emulate it on (certain models of) a wristwatch.

      Mind, you can fit the whole Atari 2600 library on a 3.5″ floppy. Probably.

  5. Not to rain on his parade, but…
    http://www.infiniteneslives.com/kazzo.php or http://famulator.blogspot.com/2015/01/tengu-cartridge-dumper-sfc-and-md.html
    and
    http://www.raphnet.net/electronique/4nes4snes/index_en.php
    … I’m also not sure why he needed to reverse engineer the SNES cartridge pinout. Googling “SNES cartridge pinout” provides a TON of information.
    I mean, it’s cool that it all works, don’t get me wrong, but this is hardly the first time these things have been done. I’ve probably seen the same projects half a dozen times on both the cartridge dumper and the SNES to USB adapter.

    1. No “pinout reverse engineering” here, just one of the many innacurate and gratuitous assumptions made by Gerrit Coetzee in the blog entry.
      He was asked about this claim in the comment, no answer… and no erratum either, He seems quite happy with his clickbait that generates so many comments of readers compelled to debunk all the mistakes of his infomercial logorrhea, thus polluting what could have been a more enlightened and interesting discussion.

      1. I have no real obligation to come over here and make the day of a bunch of people more interested in expanding the girth of their e-weiners than contributing in any meaningful way. If y’all wanted an “enlightened’ conversation so badly then you should have had it.

        I didn’t mention the name of Retrode because I didn’t want to detract from this project. I mentioned reverse engineering the pinouts because he reverse engineered the pinouts just to be sure. That action literally has no bearing at all as to whether or not there are, pre-existing extensive thesis on the subject of SNES cartridge engineering. Also, I know what a ROM is. I also know how you easily you can brick anything electric by putting the magic pixies in the wrong end because you trusted a pinout made by some guy on the internet.

        Also It’s literally in my job description to write interesting titles. Damn, I ain’t a scientific paper review board.

        This project is great. He did a great job. It was worth sharing.

        Where’s Benchoff when ya need him?

        1. Ok, if this is your answer, don’t feel obligated to reply, we have enough autosatisfied rubbish with your articles content. If it’s your job to write scam-clickbait titles, i feel sorry for you, but please do something else or do it elsewhere, for the good of this blog and its community.

          1. Hey now. You bring harsh words like logorrhea into a conversation you can’t get all affronted and _vaguely_ civil when an upset person shows up on the other side. Let’s also be clear that so far your contribution to the comments have been calling me names. The closest you got to mentioning that the entire subject of the article (and not the article itself) was , “Nice Retrode’s open remake.” to quote exactly. Yes. It is nice. I agree. I am enlightened.

            As for me, I will put my irritation aside and take my criticism. I will work harder on my titles to be more universally pleasing, and I can admit to and see ways my language could have been clearer about the completely optional nature of the reverse engineering.

          2. Yes, I used harsh words since I was really disapointed, essentially because the doubts or construtive criticism about different problematic aspects of your article, and exposed by many readers here, were left unanswered, and you finally call us “e-whiners”…

            As for me, I never gave you names (except your real name, so you finally reacted), I only severely depicted some of your work here, and I admit i’ve been too vindicative, my sincere apologies to you and everybody. But I did it because I care about the intelligence and accuracy that generally reign here, and I hope you’ll get the essence of it to improve your contributions. Now keep on reporting cool projects and sharing your joy, sometimes I’ll share it with you. Have a nice (hacka)day !

  6. Andrew unfortunately took his life recently. He was a brother to me and will be greatly missed.
    He wanted to share with the world his talent of coding, and reverse engineering with the world.
    More importantly he didn’t want to receive any money for any of his work.

    He preferred to always keep things open source.

    I am not a coder, therefore I don’t understand all the lingo, but my friend was a genius and I
    just wish he realized how much he was loved.

    Andrew Milkovich
    09/19/1983 – 03/12/2017
    Rest in Peace Brother.

Leave a Reply to AliceCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.