Adolfo’s Status Report for 4/12

This week Tess and I worked on the CPU side to get it up to the standards needed to run most games. I worked on making automated testing for our tests, afterward, we started running the Mooneye’s tests and blargg’s instruction tests. They are the gold standard for emulators and are commonly used to compare the accuracy of emulators against each other. Tess and I debugged the CPU this whole week, in the end, we managed to pass all of Blargg’s tests. A significant milestone, given that it was our main accuracy requirement for the CPU. We are currently working on passing Mooneye’s tests. We passed the CPU tests, but we are still working through the tests that stress the Gameboy’s peripherals.

Apart from the PPU work, I worked on getting DMA and the PPU working with the CPU. I managed to get our setup to pass Mooneye’s DMA tests and am currently working on getting the PPU to pass the tests, although our reference or “goal” for performance, VerilogBoy, fails all the PPU tests. We’ll see if we can improve upon them!

PPU saw a lot of progress. I first worked on getting it to display an image in simulation. Shoutout to Ford, which let me use the script that he used for his project to output what the emulator displayed in sim. With this, I was able to get the PPU to display a pattern. The more challenging part was to get the PPU to display its outputs on the FPGA. It proved to be non-trivial due to the VGA running at a 25MHz clock and the PPU running at 4.19MHz. I remedied this by adding a framebuffer to the VGA and putting an async-fifo between the two, a solution that took a long time to get right. After that, everything worked perfectly! Finally, I was able to get the PPU to display images rendered by the CPU in simulation, Tess is working on getting the tests to run on the FPGA and see if it also works there.

This was a very exciting week in terms of progress, we are now able to match some of the well-known emulators in CPU, Timer, and DMA performance and accuracy. This upcoming week our goal is to get our setup running Tetris and Doctor Mario. Two of the first games most emulators run. To be able to run the rest of the tests we’ll need to add memory banking.

Leave a Reply

Your email address will not be published. Required fields are marked *