Cycle accurate PPU
Description
The current PPU implementation represents a simplification of the "real deal".
One of the most important aspects of implementing a timed PPU is to change the time on OAM execution depending on the number of objects being processed.
This Reddit post gives some insights on what can be done to ensure accuracy in PPU execution - https://www.reddit.com/r/EmuDev/comments/pnruwk/gbgbc_passing_all_cputiming_tests.
This Rust emulator feo-boy implements cycle-accurate PPU, I can take some inspiration from it. An example of the required changes is in the read_byte() method.
Inspiration
https://gbdev.io/pandocs/STAT.html#lcd-status-register
References
Edited by João Magalhães
