Source code dumped here: https://gitlab.com/DavidDiPaola/fz-emu
#TIL the #NES PPU has some weird bugs.
The OAM (sprite) register interface has some strange behavior that makes the most reliable way to alter even a single value be to re-write the whole 256 byte state. The NES CPU conveniently has a purpose-built DMA for this but even that eats up about a quarter of v-blank time.
Another annoyance is there is no scanline counter interrupt.
I didn't realize how spoiled I was when I was doing #GameBoy development. 🤣 Pretty much all these annoyances are fixed on that platform.
@revenant that makes sense.
I wonder why they implemented a control register as DRAM. Were they concerned about silicon area or something?
@ddipaola no idea but at least the DMA makes it less annoying
the real pain is not being able to DMA to any other part of PPU memory, there at least could have been a CPU halt pin on the cart connector or something to let mappers do it