Overview
Hardware had limits. Games exceeded them. When the NES could only display 8 sprites per scanline, developers flickered between sprites each frame—showing some objects on even frames, others on odd frames. The result: visible flicker, but more enemies and bullets than the hardware officially supported.
Fast facts
- Purpose: Display more sprites than hardware limit.
- Method: Alternate sprites between frames.
- Trade-off: Visible flickering.
- Necessity: Game design demanded more objects.
NES sprite limits
| Limit | Specification |
|---|
| Total sprites | 64 maximum |
| Per scanline | 8 maximum |
| Overflow | Extra sprites invisible |
| Solution | Flicker rotation |
How it works
| Frame | Displayed sprites |
|---|
| 1 | Sprites A, B, C, D |
| 2 | Sprites E, F, G, H |
| 3 | Sprites A, B, C, D |
| 4 | Sprites E, F, G, H |
Result: All sprites visible, each at 30fps instead of 60fps.
Implementation approaches
| Method | Effect |
|---|
| Priority rotation | Cycle which sprites get priority |
| Random selection | Vary which sprites shown |
| Importance weighting | Player sprite never flickers |
| Scanline distribution | Spread sprites vertically |
Games with notable flicker
| Game | Situation |
|---|
| Contra | Many enemies/bullets |
| Mega Man | Boss fights |
| Gradius | Bullet hell moments |
| Zelda II | Combat scenes |
Alternative solutions
| Approach | Trade-off |
|---|
| Fewer objects | Reduced gameplay |
| Larger sprites | Fewer total |
| Different design | Avoid crowded scenes |
| Accept limits | Some sprites disappear |
Player perception
| Effect | Reception |
|---|
| Mild flicker | Acceptable |
| Heavy flicker | Distracting |
| Consistent | Becomes invisible |
| Erratic | Very noticeable |
| System | Sprite limit |
|---|
| NES | 8 per scanline |
| Master System | 8 per scanline |
| C64 | 8 total (hardware) |
| SNES | 32 per scanline |
See also