Going back to the days of ITX computer case mods, I’ve had the desire to place a computer inside of a stock Super Nintendo case. Instead of the project being a simple case mod, I’ve wanted to configure the computer in such a way as to maintain a console playing experience, with the additional benefit of having a full-fledged computer under the hood. I’ve done my research here and there, and everywhere I possibly could, to see how this combination could work. With the Raspberry Pi, I finally found a platform suited to the project’s needs.
When I came up with the concept in 2004, I had the desire to make an ITX case mod with some of the following features to make the SNES computer “feel” like a console, in no particular order:
- Have both of the case’s controller ports functional to all standard SNES peripherals, and have them work as they would on a stock console.
- Design the console to have a fully functioning cartridge port to read Game ROMS, and game saves, and to have the ability to write new game saves back to the cartridges.
- Minimize the cosmetic changes to the case, so that viewing the modified SNES next to a stock console would not throw off an untrained eye. Namely, I did not want to have PC ports cut poorly out the sides.
- Keep the hardware as simple, and solid state as possible. (Use the K.I.S.S method)
- Utilize the Power and Reset buttons as one would intend. Namely, don’t require the user to shut down the computer using the display. Have the Power button set up to safely shut down the computer. Also, have the Reset button reset emulation, and re-read the cartridge port.
- Set up an intuitive gaming interface. What is great about classic gaming consoles is you plug in a game, turn it on and play. One should not need to turn on the computer, wait until you boot into Windows, or a command line, and need to use a mouse, or console commands to find an emulator. The machine should turn on, and play a game from Easy Slots, or load a front end. The SNES gaming portion should be front and center.
- Attempt to fully emulate the speed, and functionality of the original hardware. Where possible, allow for the improving of the original experience by offering image filtering, the use of save states, and other modern emulation goodies. With the base system being the base gaming experience of the original hardware.
What inspired me to take up the project after so many years with a Raspberry Pi was a Hack-A-Day post I saw where Florian wrote a C-Based Daemon to interface SNES controllers directly to the Pi’s GPIO bus. A spark went off in my head. When I wanted to make an SNES computer prior, all the the ITX boards I wanted to use were PC based, and the best I could use for GPIO was a standard PC parallel port, and it leaves much to be desired…
A couple of other advantages of using a Raspberry Pi is it’s absolutely small size, and minimal power requirements. Not only could I fit it inside of an SNES case, I could theoretically also power it using a stock SNES wall wart. Not to mention it also had analog video and stereo audio. Both are AV sources I could simply wire to a stock SNES AV port.. Also, with the Pi’s HDMI port, the thought was with not too much modification, I could add it to the back, fulfilling my desire to expand the features of the console.
View the video below for a brief demonstration of the completed project.
My code may be found through my repository on GitHub.
For a detailed explanation on EVERYTHING, read the following pages:
Oh my god. I LOVE that! How awesome to play anything emulated on the original hardware. Plus carts!
Congrats for that neat project!
Might be a silly question (as questions usually are) but assuming someone who can write / edit / hack, would it be possible to address the speed issues by throwing two Pi’s in the box, one to handle the graphics, the other to handle sound and other I/O rather than waiting for a faster PI?
Very nice project, congratulations!
I still have two SNES in perfect working condition :) They are bullet proof console!
Can you post the wiring you did for this? Rather than just showing off? :P JK man, very cool
Andy, I have actually considered something along those lines. I hadn’t considered offloading audio and I/O to a second Pi, I had just imagined spitting the threads, but your suggestion sounds better. Thanks for the tip! :D
I’m not exactly sure how I would pull it off though. I could link both Pis via GPIO, or Ethernet. I’m guessing GPIO communications would be the best, but I lack the skills needed for re-coding major portions of the emulator.
Shake, there are no schematics. I wired the level shifters by the datasheets, and actually screwed up a few times due to the fact I was wiring on a whim.
As for the other components, the Arduino sketch has the pin numbers for power management, and the cart_reader.py script could clue you in to what cart pins go where. Also because you asked, I appended a spreadsheet I used for the cart to my GIT. :)
Why is not in fullscreen?
This is very interesting, but I must find a broken SNES console and buy another Pi (my only one is in use).
Very awesome project, congratulations.
You win 1 Internet Sir. Well done!!!!!!
Would it be possible to release a fast snes emulator which we can use with the RasPi? Every snes emulator I tried was very slow.
The cart reader aspect is pretty awesome!
>> offloading audio
Maybe a USB soundcard with its own processor might be able to help.
I’m just about to start doing the same thing as you yet to buy the raspberry Pi but got the broken snes lol :) now who still got me soldering Iron lol
You are a god amongst men Ted. Awesome project. Well done.
Hey! I could have sworn I’ve been to this site before but
after checking through some of the post I realized it’s new to me.
Anyhow, I’m definitely delighted I found it and I’ll be book-marking and checking
Hey I’m working on a similar project but my work is nothing compared to yours nice work.
Hey! Nice job! Is it possible that you publish the material list and the solder layout. I realy love to reproduce this ’cause my old SNES start to bug :/.
Excellent site you have here but I was wanting to know if you knew of any forums
that cover the same topics discussed in this article?
I’d really like to be a part of community where I can get feedback from
other knowledgeable people that share the same interest.
If you have any suggestions, please let me know. Thanks a
Feel free to visit my web blog http://www.huishige.com
Hey just wanted to give you a quick heads up and let you know a few of the images
aren’t loading properly. I’m not sure why but I
think its a linking issue. I’ve tried it in two different
browsers and both show the same results.
Another interesting project would be to put an raspberry pi in a snes cartridge which emulates an snes game on the cartridge pins. That would make it possible to play any rom with the original untouched snes :) that would also make it possible to play custom roms, to build a simple web browser or an mdp client and much more, everything with the original untouched snes hardware :) And who knows what you could do with the snes when you extend the snes with the 16 Bus B Expansion Chip Pins (or the ext port) and the help of the raspberry pi..
Hello. I really admire your work. Congratulations.
I wanted to run Gameboy & Gameboy color cartridges with the Raspberry Pi 3B.
Do you believe to be possible? Basing their work believed to be viable?
Can you clarify some doubts if I need it?
Thank you very much.
I see on your GitHub page you have an SPI version using MCP23S17 instead of the I2C variant, what chip did you end up using to change from 3V3 to 5V?