Skip to content
Techniques & Technology

Sprite Scaling

Pseudo-3D depth

Sprite scaling created the illusion of 3D depth by drawing sprites at different sizes based on distance, enabling racing games, shooters, and flight simulators on 2D hardware.

sega-mega-drivecommodore-amigasuper-nintendographics3Dtechnique1982–present

Overview

Make distant things small, close things large. Sprite scaling created convincing depth without true 3D hardware. Racing games showed cars growing as they approached. Shooters had enemies rushing toward the player. The technique powered the “Super Scaler” arcade era and brought pseudo-3D to home systems for nearly a decade before polygonal hardware took over.

Fast facts

  • Purpose: Simulate 3D depth on 2D sprite hardware.
  • Method: Draw sprites at different sizes based on simulated distance.
  • Peak: Mid-1980s to early 1990s.
  • Hardware: Often required custom scaling chips (Sega arcade boards) or significant CPU time (home ports).
  • Successor: Texture-mapped polygons (1992+).

How it works

The basic approach:

Step Process
1 Calculate object distance in world space
2 Determine scale factor (typically 1 / distance)
3 Compute screen position via perspective projection
4 Draw sprite at scaled size at the projected position

Three implementation strategies, with very different cost profiles:

  • Hardware scaling (Sega Super Scaler arcade): the chip does it; sprites can be scaled to any factor in real time, dozens or hundreds simultaneously.
  • Pre-scaled sprites: store multiple pre-rendered sizes in ROM, pick the closest match at runtime. No CPU cost, big ROM cost.
  • Software scaling: scale at runtime by skipping/duplicating pixels. CPU-intensive; quality varies.

Sega Super Scaler (the arcade peak)

Sega’s Super Scaler hardware family — System 16, X Board, Y Board — had dedicated sprite scalers that could output up to 1,000+ sprites per frame, each scaled independently from 1× down to ~1/16×. The chips embedded line buffers and bilinear-style sprite scalers in silicon, making smooth scaling feel effortless on screen.

Game Year Hardware Innovation
Hang-On 1985 System 16 Motorcycle racing — the genre-defining title
Space Harrier 1985 System 16 “Into-the-screen” rail shooter
Out Run 1986 X Board (System 16 successor) Open-road driving with parallax scenery and roadside objects
After Burner 1987 X Board Air combat with pitch/roll horizon
Power Drift 1988 Y Board Multi-character racing with full-3D-feel cars
Galaxy Force 1988 Y Board Space combat with planet-scale scaling
G-LOC 1990 Y Board Final-generation; dual-display cabinets common

The Y Board cabinets in particular — Galaxy Force II with its hydraulic moving cockpit — were the high-water mark of Sega’s sprite-scaling era.

Implementation approaches

Method Requirement Pros Cons
Hardware scaling Custom arcade chips Fluid, fast, many sprites Expensive silicon
Pre-scaled sprites Multiple sprite versions in ROM Zero CPU cost High ROM cost; visible “snapping” between scale steps
Real-time software CPU cycles to spare Smooth, flexible Slow on 16-bit CPUs; limits sprite count
Mode 7 (SNES BG) SNES-specific Hardware rotation/scaling for one BG layer Sprites not scaled by Mode 7; combine carefully

Pre-scaled sprite tables

A typical home-port approach:

Distance bucket Sprite size Frames per ROM cost
Far horizon 8×8 px 1 frame
Distant 16×16 px
Medium 32×32 px 16×
Close 48×48 px 36×
Very close 64×64 px 64×

A character with 10 animation frames × 5 distance buckets = 50 sprites in ROM. Sega home ports of Out Run sometimes spent 80% of ROM on pre-scaled sprite tables.

Mode 7 (SNES)

Mode 7 is a single rotated/scaled background layer with hardware affine transformation. Important caveat: Mode 7 scales the background, not sprites. To get scaled sprites against a Mode 7 background, you either:

  • Pre-scale sprites in software and overlay them on the Mode 7 BG (most racing games on SNES do this).
  • Use HDMA to scale per-scanline and trick the eye.

Famous Mode 7 games: F-Zero (1990), Super Mario Kart (1992), Pilotwings (1990).

Software scaling on home systems

Platform Approach Performance
Amiga Blitter-assisted line copy with skip/duplicate Decent for 1-2 large sprites; struggles with many
Mega Drive CPU scaling with self-modifying code unrolled per scale factor Cycle-tight; Outrunners (1992) is a showcase
SNES Software scaling layered on Mode 7 (see above) Variable
PC (VGA) Software scaling, one of Doom’s techniques for visible sprites Per-column scaling; very fast on 286/386

Limitations

Constraint Effect
Memory Pre-scaled sprites multiply ROM cost by 5-10×
CPU Real-time scaling on 16-bit hardware can drop frame rate sharply
Quality Pixelation at large sizes; visible scale-step “popping”
Animation Each animation frame needs all scaled versions
Sprite count Even on hardware, scaling reduces total sprite budget

Decline

Sprite scaling was supplanted by texture-mapped 3D polygons starting around 1992-93:

  • Virtua Racing (1992, arcade) and Virtua Fighter (1993) — Sega’s own move to polygons on Model 1.
  • Star Fox (1993, SNES Super FX) — polygons on home consoles.
  • PlayStation / Saturn / N64 launches (1994-1996) — polygons standard.

Pseudo-3D scaling stuck around in handhelds (F-Zero: Maximum Velocity on GBA) and indie retro-style games to this day, but as an aesthetic choice rather than a technical necessity.

See also