Since I am done with this project after spending way too much time and money on it, I wanted to share some thoughts and my experience regarding modding and building your own devices.
Let this be a write up to beginners who are looking for some answers, or for anyone who will google something regarding a Gameboy Pocket and a Raspberry Pi.
When I went into this project, I had poor experience using microcontrollers, soldering, 3d-printing and plastic knowledge, using Linux, what parts to use and what configurations exists. In retrospect, I should have done more research before staring on this journey, but then, where is the adventure in that?
I have, during the span of this journey, acquired a lot of things: a soldering iron, a 3d printer, number of tools, a power supply unit, a handheld oscilloscope, and tons of components and wires to use in future projects.
The goal I set for myself was quite difficult: to put something inside of a Gameboy Pocket which is not that small compared to a smartphone, but still quite small if you are going to build it by hand.
Since I’m studying Electrical engineering, I started off with knowledge of electronics, making circuits and how to test them for problems. I thus knew that I would figure the circuitry out and would eventually get it working.
However, I was lacking several skills, such as, I don't know, any 3d-cad software whatsoever. That means that I could not model where to make the cuts, but, instead, I would have to do it all by hand.
How did it go? Well, I will try to explain every step, the problems I had, and how I solved them. I will also try to link as many parts and general links I used as possible. If I have some pictures or videos, I will add them to this post.
Modifying the Case:
This part was quite time consuming since I decided to insert big components and parts in the Gameboy Pocket case.
There is a workshop at my school that has power tools and drills, however, to use that workshop, I had to get permission from the school and to pass a test. The process was so slow that I got myself a Dremel copy before I could even pass the test. If you’re using one for the first time, it’s going to be loud and scary.
My advice would be to practice as much as possible on some ABS plastic before you start cutting into your own case.
I was insanely careful - maybe more than what was needed –: I snipped some of the insides out and sanded, snipped and sanded, snipped and sanded. Then, I used the dremel to clean some parts up, while being extremely careful not to let the dremel wander off into the plastic and create an unwanted hole.
To make a dremel as precise as possible, you should, if you can, strap the part down that you want to modify. If you hold the part in one hand and the dremel in the other hand, slipping can happen and *poof* there is a hole.
Now, modifying the inside was not that hard, but modifying the inside without affecting the outside was another story. Also, when I got my Dremel, I was like what the f*** are these tools. So I tried them all and watched some YouTube videos of people using them.
To fit that 2.8-inch display, I had to rip the entire guts out of the machine.
This was by far the hardest thing with the whole build. I had to do a lot of sanding and cutting and sanding and cutting and sanding and cutting and sanding and cutting for days and days and days to get this done without ruining the outside of the case.
One thing I am going to learn this year is how to use a CNC so I can automate this process. But I do not recommend using a 2.8 inch vertical screen to anyone: go with a 2.6 inch display with a horizontal connection if you are going to do a game boy pocket build.
Also, I ended up making the hole for the screen too large, so I had to do some 3d-printing and gluing to get the display to stay in place.
FYI, the custom screen lens I ordered from Bluishsquirrel took about 2 weeks with production and shipping, but ended up fitting perfectly so props to them!
It was insanely difficult to get the screen to perfectly fit in center: if you glue it from the back, you still need to turn the case and look at the front to make sure the screen is in the correct place. While doing this, the screen can move just a millimeter, and that will mess up the looks when turned on. That part took me a few hours and reattempts to do.
A good tip to know is that Isopropanol alcohol will make removing hot glue a breeze. Just dab it a little bit and it will come right off.
I knew that I needed some custom parts for this build, because I couldn’t find anybody who had perfectly centered a 2.8-inch screen into a Gameboy pocket.
To achieve this, I had to remove all of the screw holes and 3D print custom buttons and brackets.
I had no experience doing any of this, and worked with the online software “Tinkercad”.
I started with using the 3D-printer at school, but it printed so horribly and stringy, that I decided to get myself a cheap 3D-printer and started a new journey with that.
I learned a ton of why my prints were not working and how to do it properly. Actually, I even took a break from this project to learn more about 3D-printing, which lasted about 6 months.
That’s one of the reasons why it took so long for me to finish.
Anyhow I made 100s of prototypes that I printed for the button wells, for the joystick, for the speaker, for the raspberry pi, for the back buttons, for the screen and so forth. No joke, I have a box full of PLA parts that I saved in case I need them for something in the future. This would have gone much faster if I took proper measurements and learned a real 3D-cad software, which I am now in the process of doing.
Soldering and installing the components:
Now, before I even started modding the case, I soldered the parts together to make sure it would work. This was quite a big mistake, because I had no experience in de-soldering.
Instead, I should have used a breadboard and be patient with it. To be fair, I should also have bought more than one part of everything, just for testing purposes.
The fact that I was not good with de-soldering made my solder joints quite messy, when I later soldered the parts in the case.
Another thing to point out regarding soldering is to use flux: it is quite amazing, and the solder will flow much better into the pads.
A critical error I made during soldering was that I moved my parts between the school and my home: a lot of wires snapped and had to be redone from scratch. However, I have yet to break a single solder from overheating with the soldering iron.
I learned how resilient boards are and how fragile components are. To minimize the number of wire breakage, I got myself my own soldering Iron, which was one of the best purchases ever.
Something that was awfully difficult was soldering directly inside of the case, because you need to hold the solder, the wire, the soldering iron. Unless you have 3 arms, this is impossible: you either have to pre-solder, or to align the cable inside of the hole.
Regarding wires: I used single core wires, which are the worst unless they are small. These pieces of sh**s snap all the time, and I had to redo the wires so many times. I used AWG 26, 28, 30, they all work fine. There were no problems with sound or power using thinner wires from my end.
Regarding the soldering iron I bought, there are a few things to consider. First, if you are using a new solder, it has a much higher melting point than old solders do ( which were used pre RoHS): it is somewhere between 280-310 degrees C. Then, the flow is also much worse and it releases toxic fumes. I built my own fume purifier, but you can also purchase one. If you only solder once every month, it’s probably not that bad.
If you use an old solder, it has a melting point of 180-200 ish degrees C, and you don’t have to worry as much about the fumes, but you need to wash your hands a lot.
I custom painted my Shell to matte black. I also had no experience doing this, so I watched some videos and it turned out great.
For the sanding, I used 600-2000 grit: the low grits are risky because they can make quite sharp grooves on the plastic that you won’t be able to fix. Also, as far as I can tell, the wet sanding is much better than dry sanding on a plastic case.
Then, I applied the paint 3-5 times with thin layers, and, after a few hours, another 2-5 layers of varnish to seal it. It works amazingly well. It’s now been 6 months and the paint is still on my shell. Keep in mind though that any alcohol in contact with the dried paint will remove it: keep the isopropanol away!
I wanted some text on the Gameboy, so I used waterslide stickers, which was really difficult to find online in the correct font and size. I had a hard time with that part, as I had no idea how to do it and I couldn’t find any proper videos to help.
What I ended up doing: simply cut the sticker out and wet it with water, slide it on the plastic and it will fall off from the paper it’s attached to. You can then move it around and let it dry.
After it dries, you need to apply varnish to the sticker.
Now here is a problem if you use matte varnish: the sticker will look a bit frosty because of the way matter varnish lets in light. This happened to me: it’s not terrible but it’s a good thing to know. If you want a perfect sticker, use glossy varnish finish, as it affects the look of the whole shell.
Parts and ordering:
I ordered a 2.8 inch ili9341 that had a back PCB applied on it, I desoldered the screen from it and used a PCB made by VeteranGamer that I ordered from OSHpark to make the connection to the PI.
It was a nightmare because I broke the ribbon cable a little bit near one of the sides, and the ribbon cable was too thin to fit inside properly and make the connections. I had to re-flow the ribbon cable and use some masking tape to increase the thickness. It worked, but I had to shave off the top of the screen a little bit to make the led indicators fit above it inside the case.
As a tip, the aluminum can be removed without any problems. You can also snip off the edge of the white plastic easily. However, keep in mind that the LEDs inside reflect on the backside of the white plastic: don't remove all of it, or the screen won’t have any light to reflect on. Think of it as a projector without a white wall.
I sanded a little bit of the glass in the corner, and it worked fine by hand. I recommend not using a dremel, as it would make glass fly everywhere: not only is it really bad to breathe in, it also will fly under the screen and that's nearly impossible to fix.
You should also keep isopropanol alcohol away, as it will soak the weird plastic foam thingy inside and leave a mark inside – just like a coffee stain - which will be visible while the screen is on.
Anyhow, I bought a new screen that had no back-pcb and I soldered the ribbon cable directly to Veterangamers Pcb and it worked flawlessly.
Regarding ordering PCBS: it’s a nightmare to find Gerber files for something that someone never builds. You can either learn how to make PCBs or spend a really long time googling.
Definitely google similar builds for inspiration.
Note that importing anything in Sweden from outside EU is expensive AF, so be careful with that. Also the PCBs I ordered were too big and I had to trim them by hand using a dremel. Don’t breathe this dust in!!! Do it outside or use a mask.
The programming was a mess as well. Getting everything to work was quite difficult, and, if you don't know Linux or python, it will be quite the challenge. I would definitely recommend learning these two.
Getting all the scripts to work and debugging them was not easy, especially not from SSH. Test-Reboot-Test-Reboot-Test-Reboot-Resolder-Test-Reboot-Resolder (Reebotoldering). It was a lot of soldering and rebooting.
I had the strangest problems with the teensy that I used in the end (because you could solder the d+ and d- connection) instead of an Arduino clone: it showed up as two gamepads instead of one in emulationstation and it would not recognize my key presses. I would have a Js0 that was a dud and a Js1 that would work when using jstest. This took me 2-3 weeks to solve.
This is the solution is that worked for me:
Revert to Arduino 1.6.4 and use teensy 1.23 (https://www.pjrc.com/teensy/td_123/
). When compiling using these versions it would show up as one gamepad in emulationstation. Also I had to edit /opt/retropie/configs/all/autostart.sh and put in export __joy2key_dev="/dev/input/js1" for it to work in retroarch. Also had to go into the sudo raspi-config and select the gamepad as the user1 gamepad for retroarch.
Finishing thoughts and the future:
The hardest part of the project was getting back to it after it went on ice because I got a 3d-printer and had work. But I'm glad I did, and now I am done.
It might seem like this project was just a pain, which I would blame on my writing style.
I had tons of fun solving the problems and making it work. It was like assembling a puzzle where you make all the parts yourself. Now there are several more things that I could talk about, but this is already too long.
I want to thank all the people that upload code and the people on the forums. I would not be able to do it without you, and this project did change my life in many ways: I found a new passion of creating and building stuff, and I became way more skillful at tons of stuff.
- Work part time with python in Linux
- Work in a workshop part time where I build stuff
- Am learning Altium to create some cool PCbs for future builds
- Am learning 3D-cad so I can CNC some cases in the future
- Have a better direction in what I want with life.
It was a blast making this, even though the process was tedious sometimes and mind boggling, thank you all! I will update with pictures within a week hopefully! Also to the people who want to do something similar: you can, if you want to put the time down!
If I missed something I will try to update the post.
Here is also a video of it almost done.