I’ve grown tired and impatient waiting for the Pi Zero to become available again and since there isn’t any indication on when the Zero will be available the soonest, I decided to go with my “plan B+”. And yes, I chose not to pay the premium to get overpriced Pi Zeroes over at eBay.
Now, since I’ll be using a Pi 2 B+ rather than a Pi Zero, technically, my version isn’t going to be a GBZ. However, my objective is to be as close as possible to Wermy’s design/implementation.
Hacking the RPi 2
While other Game Boy implementations that one would see on the internet involves putting the RPi 2 on its entirety inside the case, I decided to hack the Pi and remove all the ports and other connectors to achieve the layout I want.
Also, for my implementation to work, I need to shrink the Pi 2 further so I plan of shaving off some of the PCB by removing one row of the GPIO pins.
In your implementation, did you need to tap into any of the odd-numbered GPIO pins? These are the pins closest to the edge of the board.
Here’s the hacked Pi 2 with the GPIO pins, USB, ethernet and display ports removed. The red line is the excess PCB that will be cut.
WARNING: For those doing the same, please note that desoldering or removing anything from the Pi board will void your warranty.
Checking if my Pi still works… Yes, it’s still alive!
Planning the Placement of the Pi
Since I wanted to be as close as possible to Wermy’s implementation, I thought of orienting the Pi in such a way that the micro SD card slot is accessible at the top where the cartridge goes.
Most of the implementations on the net involved orienting the Pi either horizontally which makes the SD loaded on the side of the case or vertically where the SD card slot is at the bottom accessible through the battery compartment door.
Taking from Wermy’s cue, instead however of using the cartridge to store the micro SD, I’ll just use the cartridge as cover to protect the Pi while making the micro SD card still easily accessible.
Here’s the picture of the Pi 2 as it sits inside the DMG-01 case:
Here’s how my implementation would look like:
Tip for cutting the case
For those who has not started cutting their case yet, you may want to check my alternative way of cutting the case.
Instead of using a Dremel, which is faster but difficult to control especially for first timers, I used a jeweler’s saw. It’s very easy to use and gives more control. I want to ensure I don’t accidentally scratch or cut the case so I opted to use a saw rather than a rotary tool.
See the results of the cutting below. See how I was able to cut the case rather than shave it.
Final Thoughts (from day 1)
While my implementation may not be 100% true to the spirit of Wermy’s GBZ, I think this is a good alternative for those can’t wait for the RPi Zero to get in stock. There’s pros and cons of course and I’ve listed them below:
1. Can start with the project using the more widely available RPi 2 and 3.
2. Additional processing boost over the RPi Zero
3. Depending on one's choice of implementation, a usb hub may not be needed anymore since the Pi2 already has USB leads
4. Doesn’t require additional soldering in the cartridge
1. Might not be doable for newbies to hack the Pi 2/3 to remove the ports
2. Might require more battery power than the Zero.
Yes, while the Orange Pi and the Odroid seem a good replacement for the RPi, the RetroPie distribution does not fully support these boards.
Some updates on my progress… Really didn’t progress much as I can only work on the project more during weekends. Nonetheless, I want to show the progress on the RPi 2 hacking as well as demonstrate that use of the USB DAC/audio doesn’t need a separate amplifier to make the sound audible.
Here’s the RPi 2 cut and shows the placement in the GB shell. One of the reasons I had to cut is to provide clearance for the battery cover tab. With the RPi cut, I can now fit the battery cover.
Here’s the picture of the USB DAC. Bottom pic shows how alsamixer has detected the USB DAC.
Here’s my test setup at the moment:
– USB hub (connector soldered to the RPi) with keyboard (not shown) and USB DAC attached.
– speaker (rectangular black thingy on top of the GB shell) attached to the USB DAC
– mobile phone shows a sound meter with 28 dB ambient sound.
Next set of pics show a sound meter registering the sound level produced by the small speaker using USB DAC. Again no amplifier is used. See the progression in the graph as Mario Kart is being loaded.
Yes, I just desoldered the ports (USB, ethernet, etc.) then I cut the board using jeweler’s saw.
At the moment, my display is getting power from a separate 5v USB charger.
Alternative Method of Cutting the Bezel
For cutting the bezel, I used a pin vise and drilled several closely adjacent holes around the bezel where I want the plastic to be cut. Afterwards, I used a jeweler’s saw to cut the remaining plastics. Basically, I somehow “perforated” the plastic so it’s easier to cut all around the bezel. I just need to sad the edge to make it smooth. While it may look tedious, it really is very easy to do plus it’s got the advantage of:
1. you have more control
2. not noisy compared to a rotary tool
3. not much saw (plastic) dust is produced
Method for Removing the LCD from the Housing
Judging from how the screen protector is attached and based what the other folks reported, the screen protector is attached using double sided adhesive. The easiest way to remove the adhesive without forcing and potentially breaking the plastic is by heating the adhesive using a heat gun. Be careful though not to overheat the plastic as it might melt or get damaged. you will know the heat is enough once you can lift the screen protector without much force. Once the screen protector is removed, you just have to slide out the LCD screen from the frame.
Free screen protector anyone?
The reason I want to not damage the LCD screen protector is because I want to use it as the screen protector for my GB2. I was pleasantly surprised to see that the original GB screen protector is same thickness as the LCD screen protector! See comparison below and how the LCD screen protector will look like in the GB shell. I just need to trim the plastic to fit it into the bezel.
Alternative Controller Board with Free Shoulder Buttons!
I can confirm this this USB SNES knock off controller works with the RPi and RetroPie. This is actually the controller I’m using today with my test setup.
The advantage of using this controller is it doesn’t require a Teensy or using the GPIO. Plus it also has shoulder buttons!
Here’s the insides of the controller:
Now before I can fit this controller to the GB shell, I’m gonna have to cut the board once again, then reconnect the traces by using jumper wires. The red lines shows where I will be cutting the board.
Another “plus” of using this controller is that the buttons and rubber pads fit the GB shell with some minor mods. See the buttons below and the rubber pads compared to the GB rubber pads.
Yay for Shoulder Buttons!
Lastly, I intend to reuse the shoulder buttons as the actual shoulder button of my GB2. I just need to bore a hole at the back of the GB shell and should be able to fit in the shoulder buttons. See below the placement and look how the shoulder buttons profile even matches that of the GB shell’s profile! (bottom of the pic)
Sorry for the slow progress… I want to take baby steps and not rush things coz I want to make this right the first time as much as I could.
Hope you learned a thing or two.
@retrohead95 is correct with the jumper wires being the wires that I will use to connect the cut traces making the circuit complete again.
I really wanted to use a RPi 3 but unfortunately I don’t have one yet. I only have a RPi 2 around so I started with it. I plan to have “GB3” completed in the future. That’s why in this build I’m thinking how I’m future-proofing this so that I can upgrade the “motherboard” in the future.
As for the reason why I’m using USB DAC… The audio coming from the 3.5 combination jack is produced using PWM, which is not hi-fi quality. Also, using a USB DAC comes with an amplifier already.
Yes, that’s one of the advantages of going the USB controller routeI think I might also run with the snes controller idea. While using the usb snes controller I wouldn’t have to worry about getting copper and electrical tape to make x and y pads, wiring them using a teensy board, avoid buying l and r tactile switches and wiring them. Plus I’d get a more stock look with these buttons and it’ll save like 40 bucks. Was just about to order the teensy then came across this. Thanks @chiz you’re the man. Guess I’ll have an extra controller board since I already wired the ones on the Gameboys controller board to prep for the teensy.
Now for some updates…
This is the back of the shell being prepared for drilling the hole for the shoulder buttons.
I thought of salvaging the button wells and the shoulder button holders from the knock-off controller for use later in placing the buttons inside the GB shell.
Here’s how the button hole looks like without the button as well as how the button will be placed inside the GB shell.
Finally, here’s a how the back button will look like as well as a close-up of the button.
Due to the profile of the shoulder buttons, what you see in the pics seems to be the orientation that makes the most sense. However, it does make the button label upside down. I settled for it since I thought that the back isn’t the most visible side anyway.
Thanks! Glad you liked it
It would probably take a while before I desolder a Pi 3. In the meantime, take a look at this video on how to desolder.
Thanks! I’m not sure if the Cherry MX mechanical buttons will fit in the GB shell as judging from the measurements, the Cherry buttons are tall and would take a huge amount of space in the button pad area.
Theoretically the volume buttons on that USB DAC should work as long as you have it working in your RPi. Most likely the button is a momentary switch that you can desolder and extend to expose the buttons somewhere in the case and it should work.
As for the X and Y buttons, yes it still fits. Since I’m using a RPi 2, I will not be using the cartridge area like Wermy’s bec. that’s where I will have the RPi sit.
And now for some updates…
I cut the controller board today and did some test placement. Here’s how I cut the board:
Here’s a test fit of the board — back and front views:
An Alternative USB Hub
Also, I want to share an alternative USB hub that I just received today in the mail. It’s being marketed as “octopus hub”. I figured that with the USB ports not mounted in the board, the board must be really compact. I was right! As you can see the board is slightly wider than a SD card but the same height.
Plus, it was very easy to remove the cable/wire insulation after I cut the USB ports. See pic below:
I tested that this hub works with the RPi and Raspbian. Here are the advantages of using this hub compared to hubs that have the USB ports soldered:
1. very compact board
2. no need to desolder the USB ports
3. very easy to remove the wire insulation
4. the wires come soldered already to the board and you just connect the other end to your USB peripheral, e.g., Teensy, USB DAC, etc.
I’m leaving some of the screw posts intact so I can secure the pads with screws.
Finally was able to work outside and was able to finish up the GB shell…
Here’s the front of the shell with the bezel edges smoothened and the X & Y buttons finished. I chamfered the edge of the button holes using a hobby knife to make it look like stock button holes.
And here’s the back of the shell now with both L and R “shoulder” button holes completed. I also chamfered the edges to make it look like stock.
Hopefully I can work on soldering the controller board as well as the hub. I’m still waiting for some components so it would still be some time before I complete the project.
Thanks! I left about 1mm clearance so I can put the backup LCD’s screen protector. This also ensure’s I don’t damage the bezel. Even if I messed up, that 1mm clearance will be covered by the screen protector anyway
Thanks! Go ahead, you’re free to do the same on the shoulder buttons. I showed it for everyone as proof of concept that it’s possible to put the shoulder buttons at the back of the GB shell.
Btw, I just flipped the shoulder buttons to see how it would look like. However, the labels are switched in this orientation: L is at the right hand side and vice versa. In my final implementation, I might leave it flipped.
Thanks! My tools are a combination of jeweler’s saw, pin vise, hobby knife and a set of needle files.
As you know, I put pilot holes around the outline of the hole, then cut it using a jeweler’s saw and finally, I smoothen the edges using the needle files and hobby knife.
Some minor updates…
Below is a picture showing the button wells that I salvaged from the knock-off controller:
Here’s how it looks like sandwiched among the buttons, rubber pads and circuit board, as well as how the buttons look like in the front. Notice how the X & Y buttons are almost the same protrusion as A & B. Without the button wells, the X & Y buttons will be protruding more.
I think it’s possible but would squeeze the LCD ribbon cable so much that it might make in the long run. I can show you a picture later.
As for the USB connections, I’ll be using one going to a USB hub. My reason is for upgradeability. If I choose to upgrade to RPi 3 (or the 4 in the future), I only have to solder one (1) usb connector rather that 3-4 USB connections. The USB hub including all peripherals can remain in the shell and I only have to replace the “motherboard” — the RPi itself.
As for the button PCB, as you can see from the pics, I have not totally removed the plastic from the battery compartment as Wermy did because it actually provides support to the button PCB.
Failure #1: Fried USB controller board
I encountered my first failure yesterday. I may have fried my USB controller after soldering back the sections. It was working after I solder a few traces, i.e., connecting the main ground trace so the circuit is closed, and Windows can still detect the controller. However, after soldering the button pad traces, Windows will no longer detect the controller. I’m not sure if it was due to the temperature of my soldering iron and the controller chip may have been overheated or I shorted a component or two. I gave up repairing after I exhausted a good 1 hour trying to troubleshoot.
Oh well, back to the Teensy solution!
I haven’t used copper tape before so I’m not the expert on it. However, I did find that there are two types: one with conductive adhesive and another without. Personally I will buy the one with conductive adhesive.
Yeah, could be my soldering iron since it’s not adjustable. I hope yours is the one with adjustable temperature setting. Hoping you get better mileage with that and you’ll be able to make the controller work. I’m eager to know as I still want that over the Teensy so I save the programming step.
Here are some updates…
I have not accomplished much in the soldering department today since I’m still waiting for some parts, and I focused on the shell primarily de-yellowing using Salon Care 40 Volume Creme Developer. That stuff is the da bomb! Check my GB shell after applying the solution and letting the shell sit in the sun for 4hrs. It really returned the shell to the original off-white color.
I did finish cutting the RPi 2 along the GPIO pins. Man, this RPi2 can take a beating. It still works even after I desoldered most of the ports and cut the sides:
I’ve also completed today the screen protector, pics below.
Here’s how I used the original GB protector as template. Notice how clean and white my GB shell now? (This is after using Salon Care 40 Cream)
Here’s how it looks during test fitting. Just needs some chamfering of the edges and it should be done.
Lastly, here’s a side by side comparison of the LCD, with and without the screen protector:
As promised, I took a picture of the hacked RPi2 and stacked it at the back of the LCD controller board and I think it would fit even if you used the cartridge. See pic below. Be careful though not to squeeze the LCD ribbon cable and put insulation between the two to prevent circuits shorting.
Forgot to mention that the LCD screen protector that came with the backup screen is really the same thickness as the original GB screen protector. You can see below that the LCD screen protector sits fully flushed in the GB shell. Exactly the same height as the depth of that bezel.
I personally don’t have experience working with cutting glass, even thin glass screen protectors for mobile phones so I won’t recommend you cutting it. It could be brittle and sharp and might injure you.
The screen protector that came with my backup LCD screen (from Niceshopping) is made from PET — same material used in bottled water — not acrylic, glass, or clear styrene which are all brittle.
I confirmed that it is PET because when I tried scoring the material and then folding it to break, it did not. It just flexed, much like bottled water containers.
Due to this, I went with my usual tools to cut and shape the screen protector using pin vise, jeweler’s saw, needle files and medium and fine sand paper. The pilot holes made by the pin vise acted as my boundary, i.e., I should keep sanding the edges until I don’t feel any more of the holes. If there are still bumps/holes, then I continued to sand the edge. See illustration below:
Btw, I didn’t remove the thin scratch protector that came with the screen until I’m done sanding.
Yes, there’s a method to my madness. This is pretty much the same method I used to cut the holes for the X & Y buttons, the back buttons, and the frame. It’s proven to be very effective for me.
Thanks! Glad you liked it
You’re welcome! Good job on desoldering that RPi!
I the screen from Amazon from a seller called Niceshopping. Wermy has extensively covered this one in his blog post at the front page of the site.
Shoulder buttons (at the back) and cartridge
A note to those who plan to drill a hole at the back of the GB shell and adding the shoulder buttons from an SNES controller, heads up that you won’t be able to use the cartridge for the SD card. Reason is the full size cart will hit the shoulder buttons. See pic below.
Since I’m only going to use the cartridge as removable cover for the SD card, I will be shortening the cartridge to ensure it won’t hit the back buttons.
Those slow boats from China finally arrived and I received some very critical components today so I can begin soldering some of the components to it’s final state.
Components that I received today are:
1. battery protection circuitry
2. Powerboost 1000C
3. set of 2-pin JST connectors (I’m still waiting for the 4-pin connectors to arrive )
Adding the battery protection circuitry
I don’t want to risk using raw battery for my setup so I ordered some battery protection circuitry from eBay and added them to the battery I got from that credit card sized power bank. See pics below showing how I added the protection circuitry and then sealing the connection with Kapton tape.
Circuit diagram of my planned set-up
People are asking why I still needed to use a hub when the RPi2 already has 4 USB leads (after desoldering the ports) that I can use. My reason is for ugradeability.
Also, in order to achieve this, I want the RPi easily removable from the components that are fixed to the shell. My solution is through the use of JST connectors. As you can see from the circuit diagram below, you will notice the white thingies. These are the JST connectors. All other components in blue will be fixed in the shell. Only the RPi2 (colored green) will be removable from the the shell and detachable from the components.
As you can see from the diagram, by using only one of the RPi2’s USB connection, I lessened the need to solder to the RPi. Only the USB hub has to be connected.
With the arrival of the 2-pin JST connectors in the mail today, I’m now able to solder them to the battery, lipo charger, RPi and display. See pic below.
And finally, here’s a test of my set-up. The configuration I have in mind is finally taking shape thanks to that very important component — the JST connectors!
1. My setup is now truly running with a single power source. Power is being supplied to the RPi2 and the display by the Powerboost 1000C and I don’t experience any flicker or slow screen refresh.
2. The screen protector is temporarily secured by tape.
Here’s a pic of where I soldered the composite video connections