Implementation Nintendo's GameBoy console on an FPGA
Verilog Python
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1f50adf Sep 11, 2016
Failed to load latest commit information.
bin add script to translate roms into a consumable format Apr 21, 2015
data don't use readmemb Sep 10, 2016
doc rename docs -> doc Apr 28, 2012
src don't use readmemb Sep 10, 2016
LICENSE update README and LICENSE Apr 28, 2012 Update Mar 23, 2015


FPGABoy is an implementation of Nintendo's classic handheld Game Boy system. It was originally created in 2009 by Trevor Rundell and Oleg Kozhushnyan as our final project for MIT's 6.111 course (Introductory Digital Systems Laboratory). The project has been been modified substantially since then, mostly to work with the smaller FPGA's I have available to me now.

FPGABoy IS CURRENTLY NON FUNCTIONAL! I play around with it occasionally in my spare time, but I'm not actively doing development. I welcome contributions from anyone and everyone. This was a really fun project and I would love to see it working again on a wider range of hardware.

Tetris running on FPGABoy



FPGABoy was originally designed to run on a 6.111 Labkit which contains a fairly powerful Virtex-2 FPGA. I no longer have access to that hardware, so the project has been modified to run on a Digilent Atlys board which contains a smaller Spartan-6 FPGA.


Development is being done using Xilinx ISE WebPACK 13.4.


FPGABoy requires a number of external components for input and output. Support for the following exists, in various states of compatibility.

Input (Joypad)

  • On board buttons (in development)
  • NES controller (supported in original, currently untested)
  • SNES controller (working!)

Output (Video)

  • VGA (supported in original, currently untested)
  • HDMI (in development)


  • fpgaboy.pdf - Our original paper on the design and implementation of FPGABoy.

Additional Resources