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-drive graphicsprogrammingfundamentals 1980–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

TypeDirectionExample genres
HorizontalLeft/rightPlatformers (Mario, Sonic), beat-em-ups (Final Fight)
VerticalUp/downVertical shooters (1942, Xevious)
Multi-directionalAnyAdventure (Zelda), action-RPG (Diablo)
ParallaxMultiple layers at different speedsDepth illusion (Shadow of the Beast)
Free-scrolling 8-wayAnyTop-down shooters, RTS games

Hardware approaches

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

Software approaches

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

TechniqueUse case
Character-level scroll8-pixel increments — coarse but fast
Pixel scroll (full redraw)Smooth but blits the entire screen each frame
Pre-shifted sprite tablesPre-compute 8 horizontally-shifted sprite versions; pick by scroll position
Attribute-only scrollChange colours rather than pixels (Spectrum)
Memory shiftingLDIR-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:

MethodResult
$D016 onlyLimited to 0-7 px range, then snaps
Screen-memory shift8-pixel coarse steps; visible "jump"
Combined fine + coarseFull smooth scroll, like Turrican
VSP (Variable Screen Position)$D016 mid-line writes give N+1 effective scroll modes; Mayhem in Monsterland trick

NES capabilities

FeatureImplementation
NametablesTwo in PPU VRAM, configurable as 4 logical via cartridge mirror mode
Scroll registers$2005 (X then Y), $2000 bits 0-1 select base nametable
MirroringHorizontal / vertical / four-screen — decides how the 2 PPU nametables tile to fill 4 logical
Split scrollingSprite-zero hit + mid-frame $2005 rewrite gives status bar above scrolled gameplay
MMC3 IRQPer-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

FactorImpact
Memory bandwidthSoftware scroll moves a screen's worth of bytes per frame; check the budget
CPU cyclesPre-shifted tables save runtime cost at memory cost
VBlank windowEdge updates fit in the brief vblank gap
Tile updatesJust-in-time tile streaming for newly-revealed area

See also