Skip to content
Implementation Nintendo's GameBoy console on an FPGA
Verilog Coq
Find file
Latest commit 2d03401 @trun Update README.md
Failed to load latest commit information.
data move cpu clock to the top level module to facilitate debug stepping
doc rename docs -> doc
tv80 reenable interrupts after RETI command
LICENSE update README and LICENSE
README.md Update README.md
async_mem2.v start filling in the ppu logic and RAMs
cls_spi.v add joypad button presses to debug output
cls_spi_tb.v "working" hex display driver connected to CPU registers
divider.v cleanup whitespace
gameboy.v move cpu clock to the top level module to facilitate debug stepping
interrupt_controller.v some changes to make it compile
joypad_controller.v "working" hex display driver connected to CPU registers
joypad_snes_adapter.v working cpu and basic debugging functionality (no video)
joypad_snes_adapter_tb.v working snes joypad adapter implementation
memory_controller.v fix ambiguous naming of pins connecting the PPU <-> MMU and PPU <-> VRAM
oled_spi.v dont shutdown if already perforing the shutdown sequence
oled_spi_tb.v add testbench for oled module
s6atlys.ucf add net entries for PMOD connectors on the VmodMIB expansion board in…
s6atlys.v add joypad button presses to debug output
timer_controller.v some changes to make it compile
vga_controller.v add original vga controller and framebuffer modules
video_controller.v fix typo in video controller
video_converter.v add original vga controller and framebuffer modules

README.md

About

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

Development

Hardware

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.

Software

Development is being done using Xilinx ISE WebPACK 13.4.

Peripherals

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)

Documentation

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

Additional Resources

Something went wrong with that request. Please try again.