Worklog Egg Boy Color

Joined
Apr 6, 2025
Messages
4
Likes
39
Hey all! I'm back for a second year, and intend to finish this time -- as a matter of fact, I've already made it farther than last year by posting a thread.

Setting the Stage
You may know me from my prior projects where I made custom form factor Game Boy Colors using original hardware:
  1. Frog Boy Color: full size, mostly fully featured, wide Game Boy Color -- serious business
  2. Tad Boy Color: small, while still using OG cartridges, most features preserved
  3. Time Frog Color: stupid side quest -- Game Boy Color in a watch, including tiny custom cartridges -- completely impractical
The Idea
As my GBC mods continue to get smaller, and I approach the minimum possible size with the TFC, I think it's time to round out my ever shrinking amphibian themed family with the smallest practically usable GBC I can imagine. And so, I'm Introducing the Egg Boy Color: the answer to the question, "what if Benjamin Button, but Game Boy?"

Key Features
  • Built using original Game Boy Color CPU and RAM for compatibility with original software
  • Compatibility with the same tiny cartridges I designed for the TFC
  • Audio output via speaker
  • Custom tiny buttons
  • Small enough to reasonably fit on a keychain
Stretch Goals
  • Magnetic charging dock using pogo connections
  • Link port support over aforementioned pogo connections
Worklog
For ease of reading, I will post a summary of worklog entries in this main post in addition to more fleshed out ones as separate posts.

5/23/2026
Project kickoff! Started working on the main shell design, both front and back. Front shell is designed around a 1.54" 320x320 IPS screen so I can get a clean 2x upscale on the GBC video.

Fusion360_lzAqSHxj6e.webp
Fusion360_m1LD2tgZB8.webp
 
I love your work! I plan on getting a Tad Boy Color very soon. I’d like to make one but I’m gona have to get it commissioned. Could you recommend anyone?
 
Got started on the Egg Boy Color electronics this past weekend by designing an RP2040 development board for the main LCD candidate that I'm considering for this project.

LCD Info

Model: ET015SQ05
Size: 1.54"
Resolution: 320x320x16bpp
Interface: SPI, ST7796U driver

I've also attached the datasheet for this LCD so you don't have to email them like I did.

The units I have appear to have been manufactured in late 2019, which I'm hoping isn't a bad sign for future availability. At the very least, I've found multiple Chinese sellers using what looks like the same panel with slightly different flex bridges. I'll be sampling some of those to determine compatibility. Fingers crossed, since this resolution at this size doesn't seem to be widely available, outside of some MIPI panels.

LCD Dev Board

kicad_xgSINwyKir.webp
kicad_wdW3PZrpPF.webp


The LCD dev board is an RP2040 carrier board -- based off of the minimal circuit implementation from the RP2040 datasheet -- that is purpose built to test both the screen driver circuitry, as well as the firmware for translating the GBC video signal to SPI for the new LCD.

On the back of the board is a 50-pin FFC socket that connects to a standard Game Boy Color. The video signals from the GBC -- pixel data, pixel clock, H-sync, and V-sync -- are routed to GPIO on the RP2040 through this connector. 3.3V is also carried over the connector to allow the dev board to be powered by the GBC.

The other connector on the back is the 24-pin mezzanine connector that the LCD will plug into. This was actually one of the trickiest parts of the design, as the LCD appears to use an obsolete connector, the OK-22M024-04. It's a 0.4mm pitch 24-pin male connector with a stack height of 0.7-0.9mm. I was unable to find stock of the equivalent female part anywhere, so I had to take measurements and dig through datasheets for similar parts.

After some trial and error, I'm now fairly certain it's a clone of a KYOCERA AVX part. Test fits show it mates well with the 245804024000829+ female connector, so unless I discover later that the pins actually don't connect quite right -- not going to know that until I have the dev board and start powering things up -- that mystery appears to be solved.

The only other interesting parts on the board are LDOs for 2.8V and 1.8V rails. These are required by the LCD, at least according to the datasheet which is somewhat vague on exactly what this thing wants. The SPI lines appear to be 3.3V tolerant according to the datasheet, so I assume there's some level shifting happening internal.

What's Next?

I've ordered the dev boards, so I expect those to arrive in the next couple weeks, and then I can assemble and start testing things out.

In the meantime, I think next I'll start refining the EBC shell, specifically focusing on the buttons since they're still in a bit of a rough shape.
 

Attachments

Last edited:
After seeing your other projects, im suitably hyped for this one! Good luck and God speed!
 
Despite my lack of worklog entries over the last 3 months, things have been rolling right along. However, because of the large amount of information there is to go over, I'll be splitting up the updates by workstream over the next few days. Today, I'll be going over the electronics.

EBC-LCD-DEV1

Picking up where I left off in the previous update, I'll briefly discuss the EBC-LCD-DEV1 board. In short: it worked. There was very little drama with the actual hardware, beyond an error in the LCD datasheet -- pin 15 was marked as D/C for the SPI interface, but it's actually pin 16. A quick bodge had things up and running pretty quick.

chrome_9yJxV5pFCQ.webp


The software side of the LCD driver ended up being an absolute shit show. TL;DR: this LCD does not support the SPI clocks necessary to hit the bandwidth requirements for a 2x scaled GBC image, and in some cases you can't always trust the SPI clock you think you're at. However, I'll save most of that story for the next update.

EBC-CPU-X1: Schematic

With the hardware side of the LCD driver proven out, I moved on to the schematic and layout for the integrated EBC motherboard, designated EBC-CPU-X1 -- in keeping with Nintendo naming conventions.

The actual schematic design was a pretty simple affair. This is, after all, my 4th custom GBC motherboard design, so I have a solid understanding of that side of things. And because I had already designed a separate dev board for the LCD driver that interfaced with a GBC, it was just a matter of smushing the two schematics together, and directly routing all of the display signal lines from the GBC CPU to the RP2040 instead of through connectors.

The net-new pieces of the design are power, charging, and audio.

For power, I needed to generate 5 different voltages:

5V -> GBC IO
3.3V -> GBC core and RP2040 IO
1.1V -> RP2040 core voltage
1.8V and 2.8V -> Required by the LCD for reasons I'm not privy to.

kicad_bTm6uLXCn0.webp


You might notice that I've chosen to implement an external 1.1V source for the RP2040 using a boost converter, in contrast to most RP2040 designs I've seen, which simply rely on the MCU's integrated 1.1V LDO. For a larger device, or one that's intended to remain plugged in, I wouldn't have bothered. But because the EBC can only fit a small battery with a capacity of ~200mAh -- and because the RP2040 cores will be constantly working -- I wanted to ensure that it was as efficient as possible.

Charging is handled via my beloved BQ24072, which is a linear charge IC from TI. The nice part is that it integrates power path management, so system power is automatically switched between battery and USB VBUS when a charging cable is plugged in.

kicad_MskNjYcj0R.webp


Audio is a very simple affair. All Game Boys support stereo audio, but because there's only room for one speaker, and none for a headphone jack, the two channels are simply ran through their own DC block cap and resistor before getting merged at the audio input of the amp. No room for my beloved and totally non-controversial volume wheel, so volume control is handled via PWM from the MCU.

kicad_uA30rTmUe6.webp


Not shown, but I also added PWM brightness control for the backlight -- also from the MCU -- as well as a voltage divider that halves VCC(battery voltage) and connects it to a GPIO on the RP2040 for a software battery indicator(TBD).

EBC-CPU-X1: Layout and Routing

I'm the wrong person to discuss PCB layout in any detailed or meaningful sense, but this was where most of the effort went with this board. It's a 4-layer 0.8mm board, and holy shit, layout and routing was a nightmare.

kicad_i08yNhTVlF.webpkicad_CJWqtH2zSz.webpkicad_zpqUIsbJL9.webpkicad_InDhPdROXd.webpkicad_S5M7VQbSDT.webpkicad_tFGd6AP6Cz.webp

In hindsight, I would have had a much easier time if I had gone with a 6-layer board and just sucked up the added cost. While I tried to keep by internal power and ground layers as clean as I could, some of the signals ultimately ended up getting routed on them because of just how close together everything is. I'm also inept and a bit of a dummy, so that certainly contributes.

EBC-CPU-X1: Testing

In comparison to layout and routing, assembly and testing was actually a breeze(with one caveat, which I'll get to). I used a past stencil and a hot plate for most of the assembly, which made even the tiny QFNs easy peasy lemon squeezy. I was quite chuffed to see it booting to a familiar screen.

eggboybooted.webp


The frustrating part of all of this was that the pictured unit is in fact the second one that I assembled, because I couldn't for the life of me get the first one to actually boot into a game. Even worse, I initially couldn't get the second one to do so either, which really had me worried that I had messed up the schematic somewhere -- it seemed exceedingly unlikely that two separate boards would have an assembly error resulting in the exact same problem.

However, you might notice that there are no tac switches installed in the picture, and this is related to the cause of my woes. While verifying some ground connections on the CPU, my multimeter probe slipped onto one of the pins for the buttons, and I got a beep. Checking each of the buttons, I noticed that they were in fact all shorted to ground.

Turns out I had installed every single button rotated 90 degrees out of the correct orientation, which resulted in all of them registering as pressed all of the time, and it turns out that certain games -- including the two games that I tested, Tetris and Mario Land II -- absolutely hate that. Everything booted right up as soon as the buttons were removed, and things just worked after putting them back in the correct orientation.

So we're in business! The core thing works.

EBC-CPU-X1: Misc. Learnings and Future Plans

The eagle eyed among you might notice that the board renders actually say EBC-CPU-X2, and that's because I'm writing this in hindsight, after having pulled together a second revision, though not yet ordered. Changes are discussed below.

MCU controlled GBC reset

The reset line of the GBC CPU will now be controlled by the RP2040. This is largely to give me control over the entire system boot sequence so I can put a nice level of polish on things -- currently, the Game Boy boot screen initially appears mid-way because it takes some time for the RP2040 to boot and initialize the LCD.

Fixed GBC boot bug

I fixed an interesting issue -- also related to GBC reset -- that would cause the GBC portion to not boot the first time you try to power it on, but only when the battery level was above a certain point. This turned out to be a power sequencing issue.

In short, the 5V regulator has a soft start feature that makes startup time dependent on the regulator input voltage -- the higher the voltage, the faster 5V comes up. Because the reset IC is monitoring the level of 5V, and pulling CPU reset LOW below ~3.1V, higher battery voltages cause reset to go HIGH relatively early. This happens faster than the 3.3V rail can come up, and the CPU ends up in a bad state, being out of reset but with too low of a core voltage.


The MCU controlled reset is incidentally one fix for this, since it will allow me to implement a delay in software before pulling the CPU out of reset, beyond what the 3.3V rail should take to start. The second was simply tying the CE pin on the 5V regulator to the output of the 3.3V regulator so that 3.3V always comes up before 5V.

What's next?

In the next update, I'll go over the final design and fabbing of the shell.
 
Back
Top