Cycle-accurate FPGA Gameboy emulator
For my undergraduate capstone (18500), I worked alongside Katherine Parry and Bharathi Sridhar to develop a cycle-accurate, custom FPGA Gameboy hardware emulator. We handwrote, verified, and tested this design over the course of 3 months. My personal contribution was creating the Memory Mapping Unit (MMU), the memory hierarchy, the I/O aspects (VGA, gamepad), and much of the FPGA tooling infrastructure. In addition, I also did research on the Altera FPGA's USB integration and wrote the Audio Processing Unit (APU), though we did not have time to integrate this into our final design. This was a challenging project, as it involved reverse-engineering a number of individually complicated subsystems without official documentation. After all, Nintendo never released architectural details about the Gameboy. Instead, we relied on fan collected information such as in Pandocs, Sameboy, and etc. We found The Ultimate Gameboy Talk by Michael Steil to be extremely helpful in our design, particularly in regard to our clock frequency design choices. Our implementation is available here.