ZeroBoy rev C – An improved poor mans retropie portable


At the heart of this project is a raspberry pi running retorpie now add a 3.2″ screen that’s tried together with a custom PCB with enough buttons for a gamepad. You end up with what time calling the ZeroBoy.


  • Raspberry pi zero
  • 3.2″ Screen
  • 2×20 female header
  • 8x Soft touch buttons
  • 2x small buttons
  • 2x right angle buttons

So  you may notice that this is rev C so that must make the first one rev A so where is rev B. Well over the Christmas break I decided to go ahead and do a rev B, I decided to use a clone of the 3.5″ waveshare screen. This was my first mistake, I didn’t even test it before doing the board layout. I just used the pinout’s on the website and sent it off. While I was waiting for the boards to come back from oshpark the screen arrived. It was too slow to be used with retropie. Also I messed up the layout and didn’t flip the screen around so it was a double fail.

The reason I did the rev C was because I dropped the rev A and the touch screen layer broke. I also wanted to use the soft touch buttons and flip the screen 180 degrees so that the buttons went over the raspberry pi zero and the screen hung over the edge. The opposite of rev A. With the 180 degree flip it made it much more ergonomic while playing.


The screen I’ve wanted to use with this project was a clone of the waveshare 3.2″ screen, This can be found on eBay for about £8-£9. The first port of call with this screen was to see if any of the pins needed for clashed with the pigrrl 2 button layout. Luckily for me there wasn’t any pin clashes other than one of the buttons on the side of the screen so this wasn’t problem.

To get the screen working with retropie I followed this forum post. Once the screen was working I installed the pigrrl controller drivers, This is where it all fell apart and I spiraled into a pit of despair.

Because the screen had to same footprint as a raspberry pi 1/2/3 it had to use those extra long female headers. I wanted to replace them with just normal male headers so I could attach it to the PCB. First thing I did was put the existing female header in a vice and pull the plastic off the button exposing the female pins. Next I needed to remove the screen from the PCB. With these screen the screen is only stuck to the PCB with double-sided tape, All you need to do is carefully pull it off. The screen ribbon cable is soldered to the PCB but its got enough slack to let it fold open like a book. To completely remove the female headers I secured the screens PCB and screen in the vice again. This would allow me to hold each pin individually then with a pair of pliers pull each pin out. You will need to use a solder sucker to get the remaining solder out of the holes you pulled the pins out of.

One problem I had with the screen this time around was that the “key 3” was pulled to ground and I had to cut a trace on my PCB and lose the use of that button. I suppose this is what you get with clones of screens.


As I said I’m using soft touch buttons with this version but the configuration is exactly the same as I did with the last version. I’m using gpioneer, After the rather lengthy install I was asked if I would like to configure the button layout. All I had to do was push the buttons I wanted mapped to the buttons shown on-screen twice. With this you don’t have to make sure the buttons are mapped to the right rpi buttons just that all the buttons you want to use are mapped. After a reboot retropie recognised the buttons and let me configure them at start-up.

The shoulder buttons I’m still using the 90 degree buttons from my last design since you can’t get soft touch ones


You may notice like I did there wasn’t a hotkey for saving with the buttons, normally on a controller you press the hotkey (select) then L shoulder button to load and R shoulder button to save. You will need to edit a file to enable this.

The file you need to edit is


open this file with your favour text editor.

To set the save buttons. First search for


make a note of what key has been set, Next you need to search for


uncomment this line by deleting the # at the start of the line then add the key that was set at


To set the load buttons. First search for


make a note of what key has been set, Next you need to search for


uncomment this line by deleting the # at the start of the line then add the key that was set at



So I still haven’t sorted out the battery add-on board but its in the works. I’m currently just using a power bank.

No sound

Another downside to this portable retropie is the lack of sound. This is a bit more complicated to do on the raspberry pi zero since it doesn’t have a headphone jack to tap off. Again if I had more time I could have researched a solution to this but I was up against the clock. It’s not all that bad playing without sound anyway.


So because you can only really use this with a raspberry pi zero this does limit you to what emulators you can run. I have found that N64 and PS1 are out of the question but it will easily play upto A SNES/Genesis/Master system also Gameboy Advance.

Raspberry pi 3

Because I’ve flipped this around 180 degrees It can be used on a raspberry pi 3 and this means you can play N64 and playstation emulators on the screen. The controls aren’t really setup to use on N64/playstation games so you would need to use a controller.

Board files

If you like what you see here you can order your own from your favourite PCB board house

Oshpark order link –

github board files –


2 responses to “ZeroBoy rev C – An improved poor mans retropie portable

  1. Pingback: Zero control | Facelesstech·

  2. Pingback: RetroZero (retropie handheld) | Facelesstech·

Leave a Reply

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

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

Google photo

You are commenting using your Google 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