KevinGisi.com Whatever is here is here

Driving an Emulator with Physical Cartridges

I have real nostalgia for audio cassettes, physical game cartridges, and the like. I see my son flip back and forth between assorted apps on his iPad, and I think the additional friction of having to switch out a physical piece of media added to my experience as a child. In other ways, slogging through menus and settings to get to what my son wants to do is frustrating. When we’ve tried playing the Nintendo Switch, he struggles to make the association between wireless controller inputs and an effect on the screen.

My wife got me an original SNES for my birthday, and my son and I have been really enjoying it. But there are some caveats. First, the lag is pretty brutal. I’m sure it’s rose-colored glasses just blurring this out, but just within the first few levels of Super Mario World, it’s evident that the machine is struggling to keep up. Old hardware, but it wasn’t the fastest device to begin with. On top of that, my son does have a habit of messing with the cartridge a little bit, which can cause things to freeze up. Lastly, and not insignificantly, these old games are rare and expensive! Emulation would be a lot easier on the pocketbook.

I’ve messed around with RetroPie and such in the past. But again, I don’t want my son to be toggling through a menu of assorted options. The experience that I want is one where we get the performance and consistency of an emulator, but maintain the console experience.

Could we hack this?

Let’s overengineer a solution. Could we house a Raspberry Pi inside a SNES console, and use GPIO pins connected to the cartridge reader, power switch, etc, such that they appropriately drive emulator behavior? Perhaps with the cartridges not actually having any data - merely emitting a unique identifier, either through an integrated circuit or even just soldering direct lines to an array of pins that could be read at one’s leisure? Probably!

Here are some areas of ignorance I’ll need to work through, since this isn’t really my area, and I’ve not messed with hardware in a decade…

  • Can I get a cartridge reader of the appropriate side? (presumably so, this project found some hardware)
  • Can I 3d print an SNES cartridge casing? (almost certainly)
  • Can I manufacture PCBs with gold fingers that would fit in the casing (this guy did something along these lines, but there’d definitely be a learning curve)
  • Can I drive an emulator appropriately from whatever script I’m using to interact with the GPIO pins?
  • What exactly does the GPIO communication look like (I’m gonna need to play around with some breadboard prototypes, I suspect)
  • How is the game identifier actually stored?

Who knows? But I’m gonna start by proving out the concept of driving an emulator on a Raspberry Pi, and slowly work my way back from there. Stay tuned as I start to figure this out.