Skip to content
Techniques & Technology

Sprite Flicker

Exceeding hardware limits

Sprite flicker rapidly alternated which sprites displayed each frame, allowing games to show more objects than hardware supported at the cost of visible flickering.

nintendo-entertainment-systemsega-master-systemcommodore-64graphicsspritestechnique1983–present

Overview

Hardware had limits. Games exceeded them. When the NES could only display 8 sprites per scanline, developers used priority rotation to spread the unavoidable hardware drop-out across all objects each frame. The visible result is flicker — but flicker is the symptom; the technique is rotation.

Strictly: the PPU drops the 9th-and-later sprites on any over-budget scanline. Without rotation, the same sprites would always be dropped (whichever come last in OAM). With rotation, every sprite spends roughly equal time at low priority, so the flicker is distributed rather than concentrated.

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

Platform variations

System Per-scanline limit Total sprites
NES 8 64
Master System 8 64
C64 8 (also the total) 8
SNES 32 128

Sprite zero and the priority trick

On the NES, sprite 0 is never flickered. It’s always evaluated first in OAM and is also used for the sprite-zero-hit flag ($2002 bit 6) — the standard mid-frame timing hook for status-bar splits. Games place a small-but-always-on-screen graphic (e.g. the score’s leading character) at OAM index 0 so its position is reliable.

See also