SNES (Super Nintendo Emulated System)
With the Raspberry Pi, I was able to achieve all of the goals I originally set out for, except Full speed emulation. Sadly, I doubt that the Rapberry Pi will ever be capable of running something along the lines of BSNES; cycle-accurate, exact emulation. In my testing, Retroarch using the PocketSNES core emulates the SNES on the Raspberry Pi the best, but only is playable when sound is disabled. A viable alternative to PocketSNES is an older build of SNES9x, v1.39 that was ported by palerider of the Raspberrypi.org forums.
The older SNES9x build was deigned for much slower computers than we’re accustomed to today, and thus makes use of different hacks and shortcuts to produce emulation, and the result isn’t nearly as accurate as newer emulators. The plus though is the SNES9x build allows for sound emulation at acceptable game play speeds. Unfortunately, the sound emulation follows quality of the rest of the emulation; it is not implemented well. Nor is expansion chipped games, such as Star Fox supported.
I managed to fit all the components neatly inside the case, and gave up for now on trying to extend HDMI to the back panel. I also went with a WiFi dongle over Ethernet to keep things tidy.
USB was routed through pins 2&3 of the stock SNES controller ports as they aren’t mapped to any standard 1st or 3rd party controller. I made custom SNES Controller Port <> USB dongles to connect keyboards from outside the case.
Early in the build process I had considered making the SNES Audio Processing Unit a permanent fixture of the project, but decided against it to save time, and to not cram the space inside of the console. I did make an enclosure for one of the removable Audio Processing Units, and placed the design on Thingiverse, so I imagine I could revisit this idea later.
In fact, Eben and Liz Upton of the Raspberry Pi Foundation stopped by our hackerspace while on their hackerspace tour, and I picked Eben’s brain a little on how I could mix the APU’s audio back into the Pi. Eben seemed to think that the I2S bus could be a viable interface to mix audio into the Pi as a sort of Line-Input. I even got Eben to sign the APU! He felt guilty though, as he commented that it was like signing a piece of computer history. After a bit of nudging, he agreed though. 😀
All being said though, I believe the Raspberry Pi is a capable closed platform, and with enough community support, full speed SNES emulation should be possible. I’d like to even make kits out of this project, and kickstart it. Maybe along the lines of the RetroDuo, only Raspberry Pi enabled. Maybe with GPIO connected external processors to aid the Pi.
Oh my god. I LOVE that! How awesome to play anything emulated on the original hardware. Plus carts!
Pingback: Turning a Raspberry Pi into an SNES | Daily IT News on it news..it news..
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? 😛 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! 😀
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
back frequently!
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
lot!
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..
Pingback: 5 Old School Gadgets You Can Create With a Raspberry Pi | Retro Gamer
Pingback: 5 Old School Gadgets You Can Create With a Raspberry Pi | Retro Bunny
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.