Hey all.
Looking at the OAM outline here:
http://wiki.nesdev.com/w/index.php/PPU_ ... evaluation
I don't see anything that would suggest the OAM addr is explicitly reset to 0 at the end of the frame (although this has been observed in some games -- notably Akira, which does not reset $2003 before doing a DMA).
What I do see is the OAM addr being reset to zero if all 64 sprites have been evaluated, because then it falls through to step 4:
(note: here, n=0 always, which effectively means $2003=0)
However, if not all 64 sprites have been evaluated... the OAM address seems to be left garbled at the end of the frame. This might happen if there are 8+ sprites found on scanline 239. Although this seems very unlikely that a game would put lots of sprites on that line.
Does anyone know if this behavior has been tested?
Looking at the OAM outline here:
http://wiki.nesdev.com/w/index.php/PPU_ ... evaluation
I don't see anything that would suggest the OAM addr is explicitly reset to 0 at the end of the frame (although this has been observed in some games -- notably Akira, which does not reset $2003 before doing a DMA).
What I do see is the OAM addr being reset to zero if all 64 sprites have been evaluated, because then it falls through to step 4:
Quote:
4. Attempt (and fail) to copy OAM[n][0] into the next free slot in secondary OAM, and increment n (repeat until HBLANK is reached)
(note: here, n=0 always, which effectively means $2003=0)
However, if not all 64 sprites have been evaluated... the OAM address seems to be left garbled at the end of the frame. This might happen if there are 8+ sprites found on scanline 239. Although this seems very unlikely that a game would put lots of sprites on that line.
Does anyone know if this behavior has been tested?