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