Pico Gameboy banner

Pico Gameboy

18 devlogs
31h 33m 36s

The fact that RP2040 has dual-core ARM Cortex-M0+ processor makes it capable of running some light emulators. So I’ll build a little handheld game console using RP2040 that can run gameboy!

Demo Repository

Loading README...

Hung-Chi Wang

Shipped this project!

Hours: 31.56
Cookies: 🍪 914
Multiplier: 28.95 cookies/hr

I built a completely custom Gameboy from scratch using an RP2040!!!
The hardest part was definitely routing the power island (had to redo it like 6 times ngl) and reflowing the board cuz I accidentally shorted 5V and 0V……And I also soldered the screen completely upside down without realizing lol. But I figured it out by fixing the shorts with my hot air gun and literally just tweaking the emulator code to update the screen from bottom to top instead.
Really happy with how it turned out, the moment I finally booted up Kirby on a PCB I designed myself was soooo PEAK :)!!!

Hung-Chi Wang

Final Stage (Hopefully the last devlog)

Alr after reflowing the board and roughly validated the GPIOs, it’s time to test if the SD card and the screen can acc communicate with my RP2040!!!

  • Well i already tested writing in and reading data from the SD card, so im not quite worried about it (acc i was lol cuz idk why it sometimes just didnt detect my SD card……..damn it
  • The next was the screen, this time i tested out all the screen module pins using a while loop to turn them on and off and measured them one by one using my multimeter. And i was acc thinking if i should use a pin socket to simply plug in the screen or solder the screen directly on the board lol
  • I then decided to solder the screen directly on the board cuz how i confident i was…….like the GPIOs were all working flawlessly + the SD card was reading…….i didn’t think there was really any chance to fail ngl
  • And here’s the funny part, after I soldered the board and loaded the game emulator, i then realized how the screen was upside down, like i didn’t even notice it when I prototyped……
  • But ofc this wasnt gonna stop me from progressing cuz i believe this could def be fixed using software, like this was obviously like a software issue ngl. So then I started to inspect the code and fnially found a place where it showed where to start updating the screen. Orginally it started from the top, then ofc i changed it so that it started from the bottom and ended at the top!!
    AND GUESS WHATTT THE GAME RAN FLAWLESSLY!!!! Like dude the moment when I could select the game and play every game i wanted? THAT WAS SOOO PEAK!!! Just check out how I run Kirby
0
Hung-Chi Wang

Reflow Attempt 2

NOOO I forgot that I routed all my ICs on the back plate, so my stencil didn’t even work cuz i forgot to order it to match the back plate. ANYWAY I still reflowed the board using my choppy pasting technique and guess what? It worksss!!!
Actually before powering up for the first time I didn’t even notice that the 5V and 0V are shorted, and I was so glad that I found out using my multimeter lol. So then I hot aired the RT6150B and boomed it fixed the short circuit which was a huge W
Before powering up, i tested the 5V, 3V3 and 0V again, and as i expected the both power indicator lights turned on and the board could now communicate with my computer! I then immediately tested it by uploading a random uF2 file and it works very well
But just in case I then loaded micropython and tested all the GPIO pins and more importantly the SD card slot. Initially it just somehow didn’t work and i almost thought i was about to fail but NO it WORKED! It could communicate with my SD card and write and read data which was very huge
At last i soldered the screen module and all the buttons after confirming all the GPIOs could turn on as expected
Anyways I still have to figure out the software to match this game console, but we’ll see how this goes!!

Attachment
0
Hung-Chi Wang

WHAAAAAAT THREE HOURS?? Literally just looked at the clock and realized how much time accidentally passed. I swear PCB routing is a literal time machine. Anyway, here’s the rundown of what I actually got done while zoning out:

  • Fixing the Power Island… AGAIN: I am genuinely losing my mind over this power section. This is officially the 5th or 6th time I’ve had to rip up and redo the power island (see the image below). After all the drama with the 5V and 3V3 lines shorting out and frying my regulators in the last reflow attempt, I’m taking zero chances. Redid the traces, made sure the copper pours for GND and VCC aren’t doing anything sketchy, and optimized the placement so the power delivery to the RP2040 and the flash is actually stable this time. I see these traces in my sleep now lol.

  • Audio Implementation (MAX98357A): Finally got around to the audio side of things! Hooked up the MAX98357A Class-D amp on a breadboard/prototype setup. Since it takes I2S, I had to make sure the data, bit clock, and word select lines from the MCU were playing nice. It’s pretty sick seeing (and hearing) it actually process the digital audio without too much static.

  • Battery & Charging Circuit: Slapped the battery and charging IC onto the schematic so this thing can actually be a proper portable device. Had to double-check the load sharing so the board doesn’t try to pull power straight from the battery while it’s plugged in via USB-C (really trying to avoid blowing up another USB port or regulator).

Attachment
0
Hung-Chi Wang

Sooooo spent some time today just ripping up the board again…
Finally decided to completely ditch the RT6154A and replaced it with the RT6150B cuz honestly I’m just so done with it lol. Rerouted so many things especially the power supply (yes again….)
Also decided to replace the TF card slot with a way cheaper one cuz apparently the old one I picked was just insanely overpriced and literally just not worth that much money bruh
Oh and I also went ahead and added a fat 3.3V copper plane right under the tf card socket, supposedly for better and more stable power supply cuz we really dont want the sd card to randomly drop connection when loading stuff

Attachment
0
Hung-Chi Wang

Finally got the board!!
Spent some time reflowing it (it’s acc my second time doing SMD reflowing) and it acc went pretty well till I realized the board wouldnt allow me to transfer data, which I doubt was bc of the following
Design issue -> I used 330K + 680K for RT6154AGQW feedback loop instead of using 1.02M properly
Reflowing issue -> I accidentally pealed off an output cap for RT6154AGQW and it might cause more voltage spikes for the 3.3V

Attachment
0
Hung-Chi Wang

Rendered this beautiful demo!!!
Cuz the PCB itself is actually kinda chopped so I gotta rendered this demo myself lol
On top of that I also published the files to github hope you guys like it

Attachment
0
Hung-Chi Wang

Alright it’s finally time to order the PCB!!!

This time I literally decided to just print the board double sided, while trying to make the stencils as small as physically possible so it doesnt take up so much space on my desk
Something crazy i noticed tho was that getting both top&bottom stencils didnt acc cost any more than just doing the single top side??? like bruh what so why nott might as well just get both lol

On top of all that headache I finally added all the components to my cart and they’re literally sitting there ready to order rn! Just hoping I didn’t forget any stupid little resistors or smth

Lets goooo just praying everything actually works when they arrive and I don’t have to do another 4 hour reflow debugging session lmao

0
Hung-Chi Wang

Alr finally routing everything!!! Time to do some massive clean up and ready to export and order the gerber!!

  • RP2040 cluster: routed all the crazy traces for the MCU cluster… making sure all the decoupling caps are actually close enough this time so the chip doesnt just randomly die on me lol
  • SD card: finished the lines for the sd card slot with that new 3.3V plane we talked abt, should be super solid now to load up the games without dropping connection
  • Screen pin holes: placed all the through holes for the display so it actually sits right and flush on the board
  • Including all buttons from the original gameboy: YESSS included literally all the buttons from the og gameboy layout!! D-pad, A, B, start, select… routing the traces for the pads wasn’t too bad but getting the placement perfectly right so it actually feels like a proper handheld console took forever bruh

Just gonna run DRC in KiCad one last time to make sure there are no sketchy shorts and send it to fab… literally pray for me that I didn’t mess up any stupid footprints again lol

0
Hung-Chi Wang

Almost done routing the entire PCB!! literally just stared at my screen for hours but now I only have like 10 traces left to route and I’m basically finished bruh

*** Oh yea I also just completely removed the RUN pin/button cuz honestly I don really mind just unplugging the game console to reset it lol. Like it saves so much space and routing headache on the board so why nott

Just gonna knock out these last few lines in KiCad and we are finally good to gooooo

0
Hung-Chi Wang

YOOO making some serious progress tonight!!! Basically just locked in and finished routing a bunch of the main sections and my eyes are literally bleeding rn lol

  • Flash Storage: routed all the lines connecting the RP2040 to the flash chip….. honestly just trying to keep the traces as short and clean as possible so the BOOTSEL actually works this time and it doesnt just drop connection when reading memory
  • Power Supply: FINALLY got the power section fully routed with the new RT6150B setup!!! double checked the copper pours and the 3V3/5V lines so hopefully we dont get any more crazy short circuits and blown regulators like last time bruh
  • Buttons (except the start and select): Got the D-pad and the A/B buttons all wired up and placed perfectly!!! Kinda just skipped over the start and select buttons for now cuz I honestly cant figure out where to squeeze them in yet without messing up my other traces lol I’ll just deal with them later
  • SD cards: finished routing the new cheaper TF card slot along with that fat 3.3V plane we added underneath it…… it better be super stable now for loading games

Getting so close to being done with this board I can actually taste it……. just gotta figure out those last two buttons and we are chilling

Attachment
0
Hung-Chi Wang

HUGE progress!! literally just sat down and grinded for the past two hours and got so much done bruh here’s what i did

  • Positioned most parts: finally got around to placing almost everything on the board… well except for some of the tiny annoying resistors and capacitors cuz my brain is honestly too fried to squeeze them in rn lol i’ll just deal with them later
  • Removed Bootsel and reset buttons with a connector: so I just completely ripped out the physical Bootsel and reset buttons and swapped them out for a connector instead!!! honestly taking them off the main board saves so much precious space and routing headache so why nott
  • Added pull-up resistors and caps: also went in and added all the necessary pull-up resistors and decoupling caps…. just making sure the signals are actually stable so the RP2040 doesnt randomly freak out on me and drop connection like last time lmao

Literally getting so close to finishing the layout I can actually see the light at the end of the tunnel… just gotta place those last few tiny components and we are golden

Attachment
0
Hung-Chi Wang

Well well well guys this is getting frustrating, how in the world does my SD card module doens’t match those on github………HOWWWWWWW

Attachment
0
Hung-Chi Wang

Assigned footprints and began routing the PCB!!!
Since this is the very first prototype, I’ll use the screen module and very simple buttons
Btw I also decided to use the 16MB flash storage! Why? Just in case lol

Attachment
0
Hung-Chi Wang

Finally finished the schematic!!! Here’s some changes I made

  • Upgraded flash storage from 2MB to 16MB
  • Pull-up every pin for SD card
  • Removed external power-supply cluster
    *** Note that I’ll add battery in V2 but for now let’s just focus on the core functionality
Attachment
0
Hung-Chi Wang

Working on SD schematic and learning SD to SPI translation so that my RP2040 could read games from SD card
*** I didn’t even know there was translation between SD and SPI, so I spent so much time figuring out

Attachment
0
Hung-Chi Wang

Roughly finished the schematic for the game boy console!!!

  • RP2040
  • USB-C + RT6154AGQW
  • LCD Screen
Attachment
0
Hung-Chi Wang

After 2 hours of struggle, finally FINISHED THE PROTOTYPE

  • SDcard breakout module is now connected and running (I stored Pokemon red version)
  • Screen can now display what is inside the sd card
  • Users can now press button A (GPIO 7) to enter the game
2

Comments

18208
18208 3 months ago

nice! Pokemon :)

jaxonparnell78
jaxonparnell78 3 months ago

this is a really nice project, keep it up

Hung-Chi Wang

Spent some time roughly wiring up the screen tho it doesn’t work somehow (probly cuz i haven’t soldered my pins

Attachment
0