PiBoy 64

A Raspberry Pi Compute module based emulator inside of a GameBoy advanced

Similar projects worth following
The problem with a raspberry pi (which powers most gamepie's) is that it is too underpowered to run N64, which is what I grew up with. A raspberry pi compute module 3 has the same quad core as the raspberry pi 3, so it should be able to handle the load easily.

I've seen my fair share of "pi-boys" as they're called and most of them have been based around an original gameboy. I never had an original gameboy but I did have a gameboy color and a gameboy advance. The gameboy advanced is a little bit of a tighter fit and hence more of a challenge. Some key goals of this project:

- Open source hardware so anyone can build their own

- Explicit setup steps to help others configure the device

- Support for N64 games (both hardware processor power and controller support)

- Rechargeable battery with moderate amount of play time

- Co-processor with control of screen or speaker?

This is largely based on [Ryzee119]'s work, which is just absolutely fantastic. Big shout out from me for getting the custom PCB dimensions. The original project is here:

  • 1 × Raspberry Pi Compute Module 3
  • 1 × GBA shell off ebay
  • 1 × ATMega32U2 (or 16U2) Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × 3.2" TFT SPI Screen

  • Update

    Matthew Carlson12/05/2017 at 20:40 0 comments

    So after evaluating the time I had left before Christmas, I realized that I wasn't going to get this shipped by Christmas. That said, I took my improvements I had made on the larger board and back-ported them to the raspberry pi zero version. There's some considerable challenges for the CM3 version: battery, heat, routing, etc. I was looking at a four or more layer board and I just wasn't excited about that. So it's disappointing but really close to being done.

  • Unable to Program

    Matthew Carlson06/17/2017 at 17:07 0 comments

    Looks like I made some mistakes on the SPI lines when I laid out the board and there were some misnaming of some nets. So it's not responding to AVRdude's initialization requests. I soldered a few lines deadbug style in hopes of bringing it up but it looks like it is still a work in progress as it had no effect. I'm going to call it a learning experience to try and make it less discouraging.

  • Block Diagram

    Matthew Carlson05/26/2017 at 22:53 0 comments

    I think I'm going back to the drawing board a bit to add some more features. I decided wifi is a must have feature or at least in the future. I also need to figure out battery power issues since I don't know if my chosen battery will be able to do 1.3-1.5A peak much less the .9amps under load. Here's the overall block diagram:

  • Soldered but with mistakes

    Matthew Carlson05/17/2017 at 00:58 0 comments

    Well, I guess this is my second ever PCB so I really shouldn't have been so optimistic about it being perfect on the first iteration. The board itself baked beautifully (though in the future I'll be using a stencil).

    The problem is that I seem to have neglected to connect the MOSI line, which means no data out of the programmer. It asks for the header on the chip and gets no response, so it refuses to program. A problem to say the least.

  • Coprocessor Ordered

    Matthew Carlson04/07/2017 at 21:17 0 comments

    I sent the coprocessor off to the fab at OSH park and I'm very excited. The coprocessor has almost all the bits that would go onto the Gameboy itself in a smaller 2" by 1.25" form factor so it's cheaper to iterate. For those curious, the Mattico logo is accompany I made up when I was 12 and it has stuck around ever since. There's still some big challenges to face such as heating/cooling, battery life, and frame rates. It is still very exciting.

  • CM3 flashed and coprocessor laid out

    Matthew Carlson03/28/2017 at 04:39 0 comments

    I installed retropie onto the CM3 and I'm running it through some performance tests. I have an old xbox controller I'm using. Bootup timees have been less than 30 seconds, which has been awesome (most zero based builds have a boot up time of about a minute. I think the eMMC module really helps disk speed). My next steps there are to get some emulators installed.

    The coprocessor module is completely laid out and routed. I made some 1:1 print outs and have the parts coming from digikey. I might have to adjust the crystal and inductor footprint. I've been looking into OSH Stencils and might order a stencil from them. I have a discount code but I might wait for the whole board to get a stencil. It's only $6.

    For reference, the idea behind the coprocessor board is to bring everything that would be on the GBA board normally. I can develop the code and debug any circuits on a breadboard. I'm excited to check the layout and send them off to OSH Park.

    As a side note, in the future, I'd recommend ordering a CM3 dev kit from Adafruit. Their prices were much better.

  • CM3 Ordered

    Matthew Carlson02/28/2017 at 00:34 0 comments

    I've been travelling and on vacation and I'm finally moved into the new apartment. Anyway- so I found that the US element14 doesn't have any CM3 dev kits in stock. So I ordered one from the UK and it should be here in a week or so!

  • CM3 Release

    Matthew Carlson01/17/2017 at 03:15 2 comments

    The module 3 has finally been released! I've been waiting a while. Unfortunately. I've been on holiday at the in-laws so only a bit of work has been done. I've revised a few things though and added a few features. I'm beginning to wonder maybe I should eliminate feature creep for good.

  • Progress chugs on

    Matthew Carlson01/03/2017 at 01:36 0 comments

    I've got the coprocessor test board almost done. The main goal is to be able to program it over SPI, have it charge a battery, control an TFT LCD, emulate a joystick (or more than one?) over USB, and output sound over a DAC.

  • Coprocessor

    Matthew Carlson12/22/2016 at 17:12 0 comments

    It's become obvious that a coprocessor is needed. Some of the functions needed:

    • Handle booting up and safe shutdown of the RPi (read battery via ADC)
    • Handle button polling and updating RPi
    • Display splash screen while Pi is booting (a linux boot screen breaks the illusion)
    • Play startup sound via DAC to speaker

    The ATMEGA32U2 or 16U2 is an obvious choice as it has a build in HID module that can communicate over USB.

View all 13 project logs

Enjoy this project?



wouter_zwiers wrote 05/02/2017 at 08:03 point

DPI would be nice for the display! 

  Are you sure? yes | no

Ryzee119 wrote 12/08/2016 at 06:55 point

Great build and thanks for the shoutout! Good luck. Sounds like you've come up with a few cool additions. I look forward to seeing the final product.

  Are you sure? yes | no

Matthew Carlson wrote 01/03/2017 at 01:38 point

Thanks! I think I have a few ideas and hopefully it turns out the way I think it will. I'll definitely let you know once I've got a version 1 out the door. Your instructions on creating the PCB really helped me get started and the board outline is fantastic!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates