Upping the game: battery powered SNES – all in the controller

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.

Sorry about the awful routing to/from the microcontroller. It’s hard to make it look nice it Fritzing.

Let’s look at all the components one by one:

  1. 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.
  2. 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.
  3. The Pi Zero. This is the computer running the emulators and interfacing with the SNES controller.
  4. 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.
  5. Main power switch. I used the smallest sliding switch I could find.
  6. 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.
  7. 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.
  8. Switch for the cooling fan.
  9. 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.
  10. 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:

Bleaching the controllers in sunlight. The roof is right next to my neighbour’s back door. I didn’t even bother explaining what I was doing.

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:

Here is the controller with the internal PCB removed. I had to get everything into the back (ie lower) part of the controller.

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:

Note how it is more efficient to position the pi at a ‘jaunty angle’ it doesn’t fit if you put it in straight.

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

Here the batteries are connected to the charge controller. But the 5v step up board is not connected yet.

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:

Note the HDMI mini to HDMI adaptor. I trimmed this down to fit through a hole cut in the top of the controller.

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

The little fan with the original SNES PCB on top.

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

Note the new 5v step up – the previous one couldn’t provide a steady voltage so I bought a better one. Also note the plastic spacer at the bottom to keep the Pi in place. The blue LED on the 5v boost circuit was desoldered after I took this photo.

And with the SNES pcb back in place:

Note the handy power switch at the bottom of the controller.

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.

Powered on. Note the port for a second controller.
The port on the bottom is for the micro-usb charger. I even drilled a little hole so you can see the status LED on the charge controller board.
Here it is in action!

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!

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s