A personal project to learn Rust and basic emulator development.
The PPU is implemented on a scanline basis. There was an attempt at a more accurate FIFO implementation, but as the documentation of this diverges quite a bit and gives very little benefit compared to a scanline-based approach I decided to not continue down that path for now. This also has the benefit of being a lot faster.
Because of this a few demos and one game ("Prehistoric Man") will not work as intended. If the knowledge and documentation about the inner workings of the Gameboy improves in the future, I might take another stab at the FIFO based approach.
| cgb_sound | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 |
| cpu_instrs | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | |
| dmg_sound | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 |
| instr_timing | 💚 | |||||||||||
| interrupt_time | 🙅 | |||||||||||
| mem_timing | 💚 | 💚 | 💚 | |||||||||
| mem_timing-2 | 💚 | 💚 | 💚 | |||||||||
| oam_bug | 🔴 | 🔴 | 💚 | 🔴 | 🔴 | 💚 | 🔴 | 🔴 |
| acceptance | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 💚 | 🔴 | 🔴 |
| 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 💚 | 🔴 | 🔴 | 💚 | 🔴 | 💚 | |
| 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | 🙅 | 🔴 | 💚 | 🔴 | 🔴 | |
| 🔴 | 🔴 | 🔴 | 🔴 | 🔴 | ||||||||
| acceptance/bits | 💚 | 💚 | 🔴 | |||||||||
| acceptance/instr | 💚 | |||||||||||
| acceptance/interrupts | 🔴 | |||||||||||
| acceptance/oam_dma | 💚 | 💚 | 💚 | |||||||||
| acceptance/ppu | 🙅 | 🙅 | 🙅 | 🙅 | 🙅 | 🙅 | 🙅 | 🔴 | 🔴 | 🔴 | 🔴 | 🙅 |
| acceptance/serial | 🔴 | |||||||||||
| acceptance/timer | 💚 | 🔴 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 🔴 | 🔴 |
| 🔴 | ||||||||||||
| emulator-only/mbc1 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 |
| 💚 | ||||||||||||
| emulator-only/mbc2 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | |||||
| emulator-only/mbc5 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 |
Pass $:green_heart:
Pandocs ("Everything You Always Wanted To Know About GAMEBOY") http://bgb.bircd.org/pandocs.htm
Z80 instruction set: http://clrhome.org/table/
Disassembly of boot ROM: https://gist.github.com/drhelius/6063288
Blog: Why did I spend 1.5 months creating a Gameboy emulator? https://blog.rekawek.eu/2017/02/09/coffee-gb/
The Ultimate Gameboy Talk https://www.youtube.com/watch?v=HyzD8pNlpwI&t=29m12s
Emulating the Gameboy: http://www.codeslinger.co.uk/pages/projects/gameboy.html
The Cycle-Accurate Game Boy Docs: https://github.com/AntonioND/giibiiadvance/blob/master/docs/TCAGBD.pdf