Katherine’s Status Report for 4/26/25

Accomplished:

  • Found and fixed the bad controller input issue.
  • Verified lines will disappear in Tetris.
  • Found timer initialization and incrementation issues in the simulation.
  • Determined bank switching is required to play any part of Link’s Awakening/Pokémon
Next Step:
  • Continue debugging Tetris and Dr. Mario on hardware
  • Attempt other games to see if we can find more working games for the demo
  • Make aesthetic updates for the demo
Other Notes or Concerns:
  • All games are stuck in hard mode (runs at about 4* speed)

Katherine’s Status Report for 4/19/25

Accomplished:

  • Debugged FPGA implementation with teammates
    • Tetris is playable, but glitchy
      • Runs at double speed.
      • Sometimes joypad inputs aren’t processed.
    • Dr. Mario doesn’t toss the pill.
Next Step:
  • Continue debugging Tetris and Dr. Mario on hardware
Other Notes or Concerns:
  • We found that recompiling will sometimes give us different results.
  • Debugging is really difficult, even with signal tap, often coming down to guessing and seeing if it works.

Tools/knowledge:

The major thing I had to learn was the Gameboy specification. Although there are some online resources, such as YouTube videos, fan-made documentation, Discord chats, Reddit posts, and software emulators, they are often incomplete or give false information. I had to cross-reference many of these sources to get the full picture. Discord was particularly helpful when learning how to get Verilog to read a .gb file.

Tool-wise, I had to learned how to set up very user-friendly scripts to simulate using free software called Modelsim, which is much more convenient and has more debugging tools than VCS.

Katherine’s Status Report for 4/12/25

Accomplished:

  • Debbuged Tetris and Dr. Mario in simulation with teammates
    • Tetris reaches the first frame
    • Dr. Mario reaches the third frame
Dr.Mario — Frame 1
Dr. Mario — Frame 2
Dr. Mario — Frame 3
  • Debugged controller input in simulation with teammates
    • Was able to do multiple controller presses to access new screens in Dr. Mario
  • Debugged FPGA implementation with teammates
Next Step:
  • Work on debugging Tetris and Dr. Mario on hardware
Other Notes or Concerns:
  • FPGA tests do not match the simulation.
    • Proving to be very difficult to debug.
    • Signal taps and lights on FPGA are being used for visibility.
  • Verification and Validation discussion is in the team status report

Katherine’s Status Report for 3/29/25

Accomplished:

  • Verified MMU and CPU are integrated
  • Integrated all units
  • Made a testbench to test full integration
  • Started debugging all units with Tetris and dmg-acid-test
  • 2 new controllers created
Next Step:
  • Work on debugging Tetris
Other Notes or Concerns:
  • We are on schedule.
  • The blargg interrupt tests can’t be fully run due to timing optimizations done to the PPU. However, what was able to be run shows that interrupts will probably work.
  • Tetris is difficult to debug. To make debugging slightly easier, I am using the software emulator SameBoy to verify our implementation’s functionality.

Katherine’s Status Report for 3/22/25

Accomplished:

  • Integrated the CPU and MMU
  • Made a testbench to test the CPU and MMU integration
  • Made another controller.
Next Step:
  • Debugging CPU MMU integration.
  • Integrate PPU.
Other Notes or Concerns:
  • Integration is happening later than expected, but it seems to be going smoothly so far.

Katherine’s Status Report for 3/15/25

Accomplished:

  • Figured out how to read ROMs in System Verilog.
  • Made a testbench to run Blargg tests on the CPU.
  • Did the ethics assignment.
  • Debugged the CPU using Gameboy Doctor.
    • Passing all CPU Blargg tests except test 2.
Next Step:
  • Update controllers to use the new, thinner wires.
  • Integration.
Other Notes or Concerns:
  • Progress is on schedule.
  • Blargg test 2 (interrupts) requires integration with MMU and PPU.

Katherine’s Status Report for 3/8/25

Accomplished:

  • All CPU instructions implemented and pass simple tests
  • Interrupts implemented.
  • Modified NES controller to use GPIO
  • Simple input test for NES controller

 

Next Step:
  • Setting up a testbench to run Gameboy Doctor and the Blargg test ROMs
  • Debugging any bugs in CPU.
Other Notes or Concerns:
  • Progress is on schedule.
  • The wires I had on hand were too thick and made the left and down buttons hard to press on the NES controller. Thinner wires are required.

Katherine’s Status Report for 2/22/25

Accomplished:

  • All memory Instructions implemented.
  • Started writing test benches for arithmetic and control flow instructions.
  • Wrote the first draft of CPU parts of the design report.
  • Looked into some other options for the NES USB controller.
  • Learned what the DAA instruction does (binary coded decimal addition)
Next Step:
  • By the end of spring break, I hope to have a fully implemented CPU that passes all hand-made tests.
Other Notes or Concerns:
  • Progress is ahead of schedule.
  • The Altari controller can be connected directly to GPIO pins. With some modifications it might be a possible substitute for the USB NES controller.

Katherine’s Status Report for 2/15/25

Accomplished:

  • New CPU multicycle framework completed.
  • Half of the memory instructions pass tests
  • All memory instruction tests were created.
  • Adjusted schedule to account for CPU reworking.
Next Step:
  • Continue implementing memory instructions
  • Start creating control flow instruction tests
Other Notes or Concerns:
  • Progress is well ahead of schedule according to the new schedule.
    • More work has been allocated to spring break to account for CPU reworking.
  • The CPU had to be reworked to be cycle-accurate.
    • Gameboy programmers use the cycles/instruction to create wait loops.
  • The original Gameboy seems to have assumed combinational memory, but our memory is synchronous.
    • Modifications must be done to many of the multicycle instructions that involve memory.
  • Many instructions (20+) are listed as TODO in “Gameboy: Complete Technical Reference”
    • Software emulators and Intel 8080 instructions will be used to figure out what these instructions do.

Katherine’s Status Report for 2/8/25

Accomplished:

  • Proposal presentation thouroghly practiced and given.
  • CPU testbench framework made for ModelSim.
    • Tests can be easily added to the testbench.
    • Can pick which test to run from the terminal.
  • CPU basic framework completed.
    • ld r,n (load immediate) passes handmade tests.
    • ld r,r’ (move) passes handmade tests.
  • Instruction buffer implemented and passes handmade tests.
Next Step:
  • Implement all memory instructions.
  • Make handmade tests for all memory instructions.
Other Notes or Concerns:
  • Progress is slightly ahead of schedule.
  • Memory and control flow operations are being prioritized so the other units can be tested using ROMs