Skip to content
Techniques & Technology

Scrolling

Moving through game worlds

Scrolling techniques expanded game worlds beyond single screens, from smooth hardware-assisted movement to creative software solutions that defined platformers and shooters.

commodore-64sinclair-zx-spectrumcommodore-amiganintendo-entertainment-systemsega-mega-drivegraphicsprogrammingfundamentals1980–present

Overview

Single screens limited game worlds. Scrolling broke that barrier, letting players explore environments larger than the display. Different platforms handled scrolling differently — some with dedicated hardware (NES, MD, SNES, Amiga), others requiring clever programming on every frame (Spectrum, early Apple II). The technique became fundamental to platformers, shooters, RPGs, and almost every genre that wants to imply a world.

This entry is the umbrella overview. See Hardware Scroll for register-level detail per platform, Software Scroll for CPU-driven techniques, and Parallax Scrolling for multi-layer depth.

Fast facts

  • Purpose: Display worlds larger than the screen.
  • Methods: Hardware (cheap, instant) or software (expensive, flexible).
  • Directions: Horizontal, vertical, multi-directional, parallax.
  • Challenge: Memory bandwidth and CPU usage; the trick is updating only the newly-revealed edge.

Scrolling types

Type Direction Example genres
Horizontal Left/right Platformers (Mario, Sonic), beat-em-ups (Final Fight)
Vertical Up/down Vertical shooters (1942, Xevious)
Multi-directional Any Adventure (Zelda), action-RPG (Diablo)
Parallax Multiple layers at different speeds Depth illusion (Shadow of the Beast)
Free-scrolling 8-way Any Top-down shooters, RTS games

Hardware approaches

Platform Method Smoothness
C64 (VIC-II) $D016 bits 0-2 = X scroll (0-7 px), $D011 bits 0-2 = Y scroll Per-pixel smooth
NES (PPU) $2005 for X/Y scroll, $2000 for nametable select Per-pixel; nametable mirroring extends viewport
Amiga BPLCON1 fine scroll + bitplane pointer coarse scroll, often via Copper Per-pixel, scriptable per scanline
Mega Drive (VDP) Two scroll planes (A, B), per-line / per-cell scroll values Per-pixel, per-line, per-cell — extremely flexible
SNES (PPU) Up to 4 BG layers (modes 0-1) with independent scroll registers Per-pixel per layer; combine with HDMA for crazy effects
Master System (VDP) Single nametable + scroll register Per-pixel
Game Boy (PPU) SCX, SCY scroll registers Per-pixel

Software approaches

When the hardware doesn’t help, the CPU does the work:

Technique Use case
Character-level scroll 8-pixel increments — coarse but fast
Pixel scroll (full redraw) Smooth but blits the entire screen each frame
Pre-shifted sprite tables Pre-compute 8 horizontally-shifted sprite versions; pick by scroll position
Attribute-only scroll Change colours rather than pixels (Spectrum)
Memory shifting LDIR-style brute-force shift of screen RAM (Spectrum)

The Spectrum is the canonical software-scroll platform — no hardware scroll register exists. Famous Spectrum software scrollers: R-Type, Cobra, Star Wars Trilogy, Cybernoid. Each developer’s pre-shifted-sprite scheme is slightly different.

C64 techniques

The standard recipe: hardware fine scroll ($D016) for the smooth 0-7 pixel range, plus character-level coarse shift of screen memory when the fine scroll wraps:

Method Result
$D016 only Limited to 0-7 px range, then snaps
Screen-memory shift 8-pixel coarse steps; visible “jump”
Combined fine + coarse Full smooth scroll, like Turrican
VSP (Variable Screen Position) $D016 mid-line writes give N+1 effective scroll modes; Mayhem in Monsterland trick

NES capabilities

Feature Implementation
Nametables Two in PPU VRAM, configurable as 4 logical via cartridge mirror mode
Scroll registers $2005 (X then Y), $2000 bits 0-1 select base nametable
Mirroring Horizontal / vertical / four-screen — decides how the 2 PPU nametables tile to fill 4 logical
Split scrolling Sprite-zero hit + mid-frame $2005 rewrite gives status bar above scrolled gameplay
MMC3 IRQ Per-scanline scroll changes for parallax-style effects (Battletoads, Mega Man 3+)

Mega Drive approaches

The MD’s two scroll planes (A and B) plus a Window plane give multi-layer flexibility:

  • Plane A typically scrolls with the player, plane B scrolls slowly for parallax background.
  • Per-line H-scroll table in VRAM lets each scanline have its own scroll value — gives arbitrary number of “layers” by varying scroll per row.
  • Window plane is fixed (used for status bars, score displays).

Performance considerations

Factor Impact
Memory bandwidth Software scroll moves a screen’s worth of bytes per frame; check the budget
CPU cycles Pre-shifted tables save runtime cost at memory cost
VBlank window Edge updates fit in the brief vblank gap
Tile updates Just-in-time tile streaming for newly-revealed area

See also