A few months back I wrote about my experiences of jamming a raspberry pi into a NES controller to make a portable retro game console. The most common response was ‘that’s cool, but can you make it battery powered?’
Turns out yes…yes I can. To make things more difficult, I used a SNES controller this time. The controller itself is a bit bigger than the NES one but it’s more ‘crowded’ inside and is a pretty awkward shape for fitting a Pi zero into.
I even managed to cram a couple of useless extra parts in there too.
Schematic
Here’s what I ended up with in the end. Anything left of the Pi Zero is unnecessary and is just there for aesthetic or ‘because it’s cool’ reasons. The wiring isn’t actually particularly complicated – it was physically fitting everything in that was the challenge here.

Let’s look at all the components one by one:
- An RGB LED. This fades through a pink-blue color scheme. It is mainly there to look cool, but if the battery voltage drops below 3.2V, it turns red so I know it’s time to plug the controller in.
- An ATtiny 85 which drives the LED. Programming this is easy using an arduino – instructions here. Note, using a dedicated microcontroller to drive an LED is complete overkill. I just included it because I had one spare.
- The Pi Zero. This is the computer running the emulators and interfacing with the SNES controller.
- 5V step up converter. The Pi needs a steady voltage supply. The voltage supplied by the batteries falls steadily as they are depleted. This module provides a steady 5V supply. Note, I de-soldered the built in LED, since this would drain the batteries even when the power switch is off.
- Main power switch. I used the smallest sliding switch I could find.
- Dual Lipo batteries. I had to search around to find batteries small enough to fit in the controller. The thickness was the limiting factor. These ones are just 3mm thick and provide 200mAh each, which is enough for about 90 minutes of gameplay.
- Lipo charge controller. This module allows us to plug in a USB micro to charge the batteries. It contains all the necessary circuitry to safely charge the batteries and smooth out any voltage fluctuations.
- Switch for the cooling fan.
- Cooling fan. This is COMPLETELY UNNECESSARY. I just had some spare space and thought it would be cool to cram a teeny tiny fan in there just so I could say it’s ‘actively cooled’…even though it barely makes a difference.
- Outputs from the pi Zero to the SNES controller. The excellent guide here provides wiring instructions for these connections:
The controller – making it look pretty
For the physical controller, I got the cheapest second hand SNES controller I could find on ebay – it cost about £5. As a top tip, ‘Super Famicom’ controllers go for cheaper. These are identical, but the SNES was called the ‘Super Famicom’ in Japan, so only the name is different.
Like everything from the ’80s/’90s, the controller was now that horrible yellow color:

Luckily, a few years ago, someone figured out how to reverse the horrible yellowing, and it’s really simple. You just cover the component in hydrogen peroxide paste – the stuff that’s used for bleaching hair that you can buy in the supermarket. Then leave it outside under cling film in direct sunlight. I was skeptical but here is the disassembled controller on my shed roof:

It worked more effectively than I thought. The controller looked good as new (I presume – I’m not old enough to remember what a new SNES looks like):

Cramming everything into the controller
As I said before this was the difficult bit. Let’s look at what we have to work with:

The first thing was to get the Pi Zero in. This required a fair bit of messing around with a scalpel. I had to be extra careful because those two circular ‘pillars’ act as ‘backstops’ for the D-pad and the buttons. If I took those out, the controller wouldn’t function. Nintendo controllers are really well designed to be cheap yet functional – that means it is easy to cut out a tiny bit of plastic and stop the whole thing from working.
My solution was to cut out a slot under one pillar to tuck the Pi into:

Ok, so the battery and charging components were next. This image illustrates why I chose the batteries I did:

The pi zero then sits on top of the batteries. Here it is connected up so far. Note, there was so little free room I had to desolder (read: scalpel off) the pi’s camera connector:

At this point, you could wire up the SNES controller (follwoing the guide above) and cut holes in the controller for an HDMI micro, and a micro USB charger. You’d have a working console.
However, I wanted to push myself a bit more. So, I added the microcontroller and RGB LED. The code for the microcontroller is here
It wasn’t really possible to get a good photo of the Pi wired up to the controller since I trimmed the leads so I can’t separate the two boards. Here is the best I could do:

Finally I crammed in the tiny cooling fan ‘because I could’. I can’t stress how pointless this fan is:

So with everything in place, here’s what the internals looked like:

And with the SNES pcb back in place:

Finishing it off
Three screw holes were left after all my cutting around the controller. Getting it all together was pretty tricky but I managed to cram everything inside and screw it together. I never intend to take it apart again (unless the SD card corrupts which I really hope it doesn’t).
The software side was practically identical to the NES controller I made here. I won’t go through the full instructions here because Anthony Caccese covers this excellently in the video I linked above, along with some links in the description. Instructions for interfacing with your pi via the wifi are given in my previous NES controller guide.



Final thoughts
I’m really happy with the end product. I tend to carry it around in my bag with an HDMI cable since I tend to travel a lot so I can just plug it into any TV and go. The battery lasts for 90 minutes which is actually a little longer than I expected.
It is worth noting that this was a difficult build. It looks easy in the photos but this project involved a lot of faffing around with scalpels and jamming parts in tiny spaces. It was certainly a level up from the NES controller.
The disadvantage to a SNES emulator on a Pi zero is that it doesn’t run a small number of the games at a sufficient framerate. The vast majority are fine, but those that used a super fx chip tend to lag. The only game that really matters in this category is Starfox. It’s a shame I can’t play it on this emulator, but I hope the next iteration of the Pi Zero will have sufficient capabilities to run this game (since it’s my favourite SNES game). I do have a seperate Pi3 with a USB controller that runs Starfox just fine though.
Before anyone asks, I won’t be selling any of these. It was so much faff to make, I don’t really intend on repeating it anytime soon!