Hi all! After being a long-time browser of this site I decided it was time to publish my first Instructable. I'm very much into all things retro-gaming. I've built a full-size virtual pinball running Hyperspin which may well be my next Instructable. I'm also in the process of upgrading an early 90's Final Lap driving cabinet to be a multi-game machine.
Here I will show how I gutted an old non-working Nintendo Gameboy original, and fitted these parts instead:
– 3.5″ 320×240 LCD with driver PCB
– Raspberry Pi (Model A)
– custom built button PCB
– 1x 18650 Li-Ion cell
– USB Li-Ion charger board
– 3.7V to 5V DC-DC converter board
– stereo audio amp board
– stereo speakers
I've seen other Instructables doing a similar thing, but I set myself a few challenges and desired features of my build which include:
– Fitting the Pi with little or (ideally) no modification
– Have the Pi's USB port and HDMI port remain accessible
– Have the SD card hidden away but also easily accessible
– Retain analogue control of volume
– Retain normal functions of all front buttons, also make it easy to add buttons if the need arises
– Upgrade sound with internal stereo speakers
– Have major components unpluggable (ie. not have all things hard-wired to each other)
– Retain some kind of visible power LED and charge status LEDs
– Have the Gameboy case fit back together cleanly but very securely
– Achieve a good run-time per charge, around 2hrs+
In the end I think I achieved all these goals. Initially I wanted to fit 2x Li-Ion cells but there just wasn't enough room for that 2nd cell.
I had enough experience with Raspian/Raspbmc to know how to get the Pi up and running with RetroPie. I was new to EmulationStation though. I also had not previously dealt with the GPIO pins on a Pi. But I soon discovered how useful these pins are and that it would be possible to control not only the games but also navigate EmulationStation menus as well. Each button grounds a certain GPIO pin, then software makes that action produce a keystroke, as defined in a config file.
Anyway, on with the mod!
Step 1: Figuring out how everything will fit!
After checking other Gameboy mods on the internet, I decided none were done in a way that would allow me to achieve the results I was after. I spent a LOT of time juggling the Pi's position in the Gameboy case. I had to be sure it was going to fit in a way that would allow room for the LCD and it's driver board. Of course I only had one shot at modding the case and if I made a major error in my judgement of how things would fit, then the case would be toast.
So I finally decided to cut the rear case as seen in the photo where the cut lines are drawn. The single USB port would be at the top with solder side of the Pi facing the front, and the HDMI port would be along the left side where a new hole would have to be cut for it. I ended up removing the battery compartment completely, as it was just not needed anymore, but I cut it out in a way that allowed the battery cover to go back on and clip in as normal. This orientation of the Pi has the SD card at the bottom, conveniently positioned in the old battery compartment area.
I could have removed the audio and composite video ports from the Pi but as it turned out the video port did not need to be removed. As can be seen in one photo, I did cut away some case plastic to make room for the audio port so that the Pi would sit flush. At that stage I planned on plugging a cable into the port to get the audio but I ended up just soldering a 3pin header on the back of the Pi to get audio out. In hindsight I should have removed the audio port and not cut the case around it as that would have looked better.
The front opening for the LCD obviously had to be made bigger so that all of the 3.5″ LCD could be seen. This was done with a Dremel-style cutting tool and needed a steady hand. Everything in the upper front part of the case had to go to make room. The LCD would eventually by stuck in place with very stick double-sided tape salvaged from a broken all-in-one printer/scanner (it held the scanner glass in place). By cutting thin strips of this tape and lining the metal surround of the LCD with it, it stuck in place very firmly.
Step 2: Trimming the LCD driver board
The type of LCD (from one of the many sellers on that popular auction site) was chosen based on the fact I had seen another Instructable use it for this purpose. The one I used was called: 3.5″ TFT 320 * 240 Color Screen Car Rearview Monitor For Reversing Camera DVD. I've included a picture of one. There were two problems using this LCD. I'll list them here along with the solutions.
1. It's designed to run off 12V and I needed it to run off 5V. This was pretty easily solved by just attaching 5V to the point on the circuit where it is generated on-board. I found a point on the board that had 5V while running normally off 12V and then removed parts not needed up until that point. I made the mistake of removing the ‘large' inductor near the 12V input. With external 5V attached, the LCD would not fire up along with the Pi. But when the inductor was replaced it worked fine.
2. The main board driving the LCD is about 10mm wider than the internal width of the Gameboy. So I looked into how this could be trimmed off the board to make it fit yet not destroy it in the process. Call it sheer luck but as can be seen in the photo I was able to remove exactly enough off each side as well as a few components and the 3 pushbuttons. One photo shows exactly where the sides were trimmed down to, another shows it sitting in place behind the LCD.
Another thing to note about this particular LCD is that it's almost like the manufacturer was supplied with the wrong driver board: the white flat cable visible is actually an extension to the cable from the LCD itself. This white cable is about 8cm long and gave me the ability to position the driver board exactly where I needed it to be.
The video signal was connected using a short length of thin coax cable. This was soldered at GND and AV1 on the driver board. I fitted a 2-way header connector to the other end and soldered a matching 90° header on the back of the PI at the video socket. I fitted it at an angle so that the connector would not interfere with the volume control.
For more detail: Gameboy LCD+Raspi Upgrade