Modding Raspberry Pi

The Gameboy Pi Project, Part 1

Coming across old electronics is always a nice surprise, until you find out that they may no longer work quite right. Such was the case a few weeks ago when I yet again came across my old original Gameboy DMG-01 and plugged in Super Mario Land with some fresh batteries for my youngest to play. Unfortunately, no dice. After a few minutes of trying I was able to get it to turn on once for a short while before it turned itself and refused to come to life again.

​​I had performed a mod on an original NES console several years ago using a mini-ATX form factor motherboard that went fairly well, so it wasn't too much of a stretch to think about modding the Gameboy as well. Although I have never done any work with a Raspberry Pi before there seems to be plenty of guides online involving modding them into original Gameboys, a Gameboy Pocket, and even a custom 3D printed PiGRRL Raspberry Pi Gameboy guide on Adafruit. So here we go...


I like to keep things as true to their original form as possible, so I wanted to outline a few goals for myself before I began. Hopefully I can stick to all of these once the project is complete:

  1. No adding any new buttons. I know this limits the emulators I can run since I'll only have use of a directional pad and 2 buttons (not including the Start and Select).
  2. Use as many existing ports as possible. If not used, keep as much of the old internals in place so it looks the same. Hopefully I can put the power switch, speaker, and headphone jack to use. If I'm lucky, I'll be able to put the contrast and volume knobs to use as well.
  3. Usable battery life. I've seen guides that were able to use a battery to power everything, but haven't come across anything that says how good the battery life was. Hopefully I can keep power usage to a minimum to allow for long enough gameplay.
  4. Easily removable battery. Ideally I'll find a proper size battery (and a way to include it in the case) that will allow me to easily remove it for recharging, or at least hide the charging port from plain sight.

Components So Far

  1. Obviously the original Gameboy case, non-working. I also happen to have a second copy of Tetris I'll be using to conceal where the game cartridges are inserted into the back.
  2. Raspberry Pi 1 Model A+. I went with this version which loses a USB port and ethernet port which will save space, but also gives me 40 GPIO pins and uses less power.
  3. RetroPie. Awesome project that gives me an SD-ready image with Raspbian OS and EmulationStation for the front-end. I won't go into details on the setup since everything I needed was already on their site, but at this point everything is set up and I'm able to load into Emulation Station and play some roms with a retro USB Super Nintendo controller.
  4. Adafruit 2.8" TFT Display with Resistive Touchscreen. There are other versions of this display already connected to a PCB that would make it easier to install, but this pushes the total width over that of the 69mm that is the display itself. 69mm is pretty much the maximum I can use inside the Gameboy and still be able to use the original points to screw the front and back of the enclosure together, which is sort of a necessity since I don't want to glue it in case I needed to open it back up for any reason. Unfortunately, this required purchasing the next two parts separately.
  5. 50 pin 0.5mm pitch FPC Adapter
  6. 50 pin 0.5mm pitch top-contact FPC SMT Connector. I still needed to be able to connect the display to the Raspberry Pi, but this gives me more breathing room with regards to placement of everything inside the Gameboy.
  7. Miniature Wifi Module. Setup was a little tricky with only a single USB port and having to swap between a keyboard, game controller for testing, and USB thumb drive to syncing roms. But now that the Raspberry Pi itself is setup, I can use this low profile wifi module to connect wirelessly to perform any updates and sync any roms.

To Be Continued...

Everything is either ready and waiting or on its way. I'll continue to update when I get the display working and integrated into the Gameboy.

You May Also Like

Setting a Variable to the Contents of a File in Gitlab CI CD
GitLab CI/CD

Setting a variable to the contents of a file in GitLab CI/CD

I have recently been spending some time overhauling my projects' deployment processes, and wanted to simplify how images are determined without having to set versions in multiple locations. Keep it DRY, right!

Learn More
Configuring a Cloudflare R2 Bucket and Worker For Public Access
Cloudflare R2 Workers

Configuring a Cloudflare R2 Bucket and Worker for Public Access

I recently published a plugin to integrate Cloudflare R2 with Craft CMS. After having a chance to utilize this on a few more projects after its release, I wanted to put together a guide to streamline this process for future use cases. Hopefully this will help out any others out there looking to setup R2 on their Cloudflare accounts, as most of this won't be specific to Craft CMS.

Learn More