PicoDMG aims to recreate the original Nintendo Game Boy (DMG) experience as faithfully as possible, using modern hardware while preserving the original look and feel.
The goal is not just emulation, but reconstruction:
* Original DMG shell
* Original DMG-LCD-06 board (buttons and input)
* Real AA batteries for power
* Despite running on RP2040 / RP2350 microcontrollers, the device behaves and feels like an authentic Game Boy.
As a twist, the project also introduces an NFC-based system to "load" games: original cartridges can be scanned, and the emulator loads the corresponding ROM from microSD — blending physical interaction with modern storage.
This episode follows the first serious hand-crafted modifications — both hardware-wise and in terms of the challenge of fitting everything inside the original shell.
At this stage I thought it would be great to have an externally accessible USB-A female connector to reprogram the Pico.
But the connectors were too bulky, and the cable itself was not flexible enough to fit inside.
So I remove almost all the external shell from a USB-otg cable (USB-A female to USB-C male):
It was also time to begin fitting the 2.8-inch screen into the shell. First I took some screenshots of the cabling (completely useless in later stages :rofl:)
I also removed the pin headers, since the screen would not fit inside with them attached…
Visual check
DMG-LCD-06 sitting where it belongs.
More fitting and placement tests:
Cabling the screen:
Removed the original ribbon cable from the DMG-LCD-06:
And soldered the new ribbon with only the needed pins attached:
Looks good, right?
Here we go, fixing the USB-A to the DIY board. You’ll notice I removed a piece of the board to fit the USB-A :rofl:
MicroSD reader soldered in place:
Test-fitting the internals:
My original dream layout… a true “World of Illusion”, because there was absolutely no way this arrangement would fit in the end :rofl:
That’s all for now — lots of hand-crafted work, not much technical documentation, but plenty of photos.
I was really enjoying the process during these stages :-)
As I wanted to fit a lot of tiny components inside the shell, I decided to purchase a perfboard.
I bought the biggest one available because my initial intention was to roughly replicate the original DMG-01 CPU board shape.
I began with the design phase: a piece of paper 🤣
Folded and cut to match the inner dimensions of the shell:
Marking the screw locations:
And checking how it fit onto the perfboard:
Using my reMarkable tablet, I sketched a few possible layouts:
Later on, those designs were proven to be almost completely useless… but at this stage they helped me imagine the final component placement.
Using my Dremel, I cut the perfboard and checked if it actually fit inside the shell:
Then I added the screw locations using a permanent marker:
And finally, one more fitting test with some screws in place:
To be honest, the final shape of the baseboard ended up being completely different from the original idea.
Version 2 of this board is radically different and — hopefully — far more efficient and cheaper, mainly because it allowed me to use a much smaller perfboard.
I started by trimming the new 2.8-inch TFT screen so it could fit inside the original DMG shell.
I only had to cut the corners. Everything else fit surprisingly well and stayed firmly in place inside the shell.
Then I replaced the ribbon cable from the old 1.8-inch display with the new screen:
I placed the screen underneath the DMG-LCD-06 board, exactly as planned for the final build — although still using Dupont wires at this stage.
Next step was checking if the configured resolution properly matched the original Game Boy screen frame:
Even if it isn’t pixel-perfect due to the TFT resolution, my goal was to fully fill the original screen window — just like the real DMG.
And this is where the brutal fight with the color palette began :rofl:
I had to build a custom firmware for the RP2040 in order to select the EXACT color palette I had in mind: the classic DMG green palette that we all love :inlove:
After many tests, I found that palette 074 was the closest match.
So we went from this:
To the palette that became the default for the rest of the project development:
I’ve always been a fan of Arduino, ESP32 and the Raspberry Pi Pico ecosystem. Coming from the FOSS world, these boards felt revolutionary compared to the traditionally closed ecosystem of embedded and automation hardware.
After discovering several Game Boy emulator projects for ESP32 and RP2040/RP2350 boards, I couldn’t resist trying one myself using a spare RP2040 board and a small 1.8” TFT display I already had available:
Then I realized I had an original DMG-LCD-06 board available from a previous Game Boy restoration project using an IPS display replacement.
So I started experimenting to see whether I could reuse the DMG-LCD-06 board together with the RP2040 and keep the original PCB and buttons.
I removed the original screen (it was already broken):
Then I temporarily soldered the required wires to connect it to the RP2040:
And… it worked!!!!
At that point, the goal stopped being a simple POC and became:
“Let’s build a Game Boy.”
I realized I could probably fit everything required inside an original Game Boy shell while preserving the original button board and controls, keeping the look and f
A real cartridge connector would definitely be the coolest solution.
The two main reasons I went with RFID are:
* Space. Once you start fitting a 2.8" display, RP2350, audio hardware, SD card and everything else inside an original DMG shell, things get crowded very quickly.
* Software. Reading original Game Boy cartridges isn't currently implemented in the firmware, so adding a cartridge slot would also require designing and implementing a complete cartridge interface.
Have a look at the project's photos — there's one showing everything before it was fitted into the shell 😄
P.S. Don't worry, future episodes will make the space constraints painfully obvious 😄
A real cartridge connector would definitely be the coolest solution.
The two main reasons I went with RFID are:
* Space. Once you start fitting a 2.8" display, RP2350, audio hardware, SD card and everything else inside an original DMG shell, things get crowded very quickly.
* Software. Reading original Game Boy cartridges isn't currently implemented in the firmware, so adding a cartridge slot would also require designing and implementing a complete cartridge interface.
Have a look at the project's photos — there's one showing everything before it was fitted into the shell 😄
P.S. Don't worry, future episodes will make the space constraints painfully obvious 😄