Egghead.page Logo

Why Did the Sega Genesis Flicker With Too Many Sprites?

The Sega Genesis often exhibited screen flickering during intense action sequences due to a specific hardware constraint within its Video Display Processor. This article explains the technical limitation regarding sprite rendering per scanline, how the system prioritized graphics when that limit was exceeded, and the software techniques developers used to mitigate the visual disturbance. Understanding this hardware bottleneck provides insight into the challenges faced by programmers during the 16-bit era of console gaming.

The root cause of the flickering lies in the Yamaha VDP (Video Display Processor) chip used in the console. This chip was responsible for generating the video signal and managing graphical elements known as sprites, which are movable objects like characters, enemies, and projectiles. While the Genesis could handle a large total number of sprites in memory, it had a strict limitation on how many could be drawn on a single horizontal scanline at once. Specifically, the hardware could only render ten sprites per scanline.

When a game scene became crowded, such as during a boss fight with numerous enemies and bullets, the number of sprites on a single horizontal line often exceeded this limit of ten. The VDP did not have the processing power to draw every object simultaneously within the brief timeframe of the electron beam drawing that line. Consequently, the hardware would drop the excess sprites that did not fit within the priority queue. This resulted in objects disappearing momentarily from the screen.

To manage this limitation, game developers implemented flickering routines in their code. Instead of having sprites vanish permanently when the limit was reached, the software would alternate which sprites were drawn on each frame. One frame might display the player and certain enemies, while the next frame would display the player and different enemies. This rapid alternation happened so quickly that it created the illusion of all objects being present, though it manifested visually as a noticeable flicker. This trade-off allowed for more complex scenes than the hardware could natively support without crashing or slowing down the game speed.