Summary
The PPU renders all 64 sprites on every scanline. Real hardware only evaluates 8 sprites per scanline — additional sprites are hidden (with the overflow flag set in $2002 bit 5).
Impact
Missing sprite limit
Games that rely on sprite flickering look wrong. Many action games deliberately rotate sprite priority each frame so that flickering makes all sprites visible. Without the limit, there's no flicker and all sprites render simultaneously, which can look correct but also produces visual differences.
Missing overflow flag
The sprite overflow flag ($2002 bit 5) is never set. Games or demos that poll this flag will hang or behave incorrectly.
Implementation notes
Sprite evaluation should:
- Walk OAM to find sprites on the current scanline (secondary OAM evaluation)
- Stop after finding 8 sprites
- Set the overflow flag if more than 8 are found
- Only render the first 8 found sprites
The sprite overflow bug (incorrect evaluation after finding 8 sprites) should also be considered for accuracy.
References
Summary
The PPU renders all 64 sprites on every scanline. Real hardware only evaluates 8 sprites per scanline — additional sprites are hidden (with the overflow flag set in $2002 bit 5).
Impact
Missing sprite limit
Games that rely on sprite flickering look wrong. Many action games deliberately rotate sprite priority each frame so that flickering makes all sprites visible. Without the limit, there's no flicker and all sprites render simultaneously, which can look correct but also produces visual differences.
Missing overflow flag
The sprite overflow flag ($2002 bit 5) is never set. Games or demos that poll this flag will hang or behave incorrectly.
Implementation notes
Sprite evaluation should:
The sprite overflow bug (incorrect evaluation after finding 8 sprites) should also be considered for accuracy.
References