Skip to content
Techniques & Technology

Colour Clash

The Spectrum's curse

Colour clash occurred when ZX Spectrum's attribute system forced entire 8×8 pixel blocks to share foreground and background colours, creating visual artifacts when sprites crossed block boundaries.

sinclair-zx-spectrumgraphicslimitationspectrum1982–present

Overview

The ZX Spectrum could display vibrant colours, but with a catch: each 8×8 pixel block shared one foreground (INK) and one background (PAPER) colour. When a sprite moved across block boundaries, it inherited the colours of whatever it overlapped. This “colour clash” defined the Spectrum’s visual character.

The attribute system

Component Size
Pixel data 6,144 bytes (256×192 monochrome)
Attributes 768 bytes (32×24 colour blocks)

Each attribute byte controls an 8×8 block:

  • Bits 0-2: INK colour (foreground, 0-7)
  • Bits 3-5: PAPER colour (background, 0-7)
  • Bit 6: BRIGHT — applies to both INK and PAPER, doubling the effective palette (15 distinct colours, since BRIGHT BLACK = NORMAL BLACK)
  • Bit 7: FLASH — alternates ink and paper every ~16 frames (~3 Hz), commonly used for cursors, alarms, and “press a key” prompts

Why it happens

When a sprite crosses attribute boundaries:

  1. Sprite pixels set in block A
  2. Sprite also overlaps block B
  3. Block B has different INK/PAPER
  4. Sprite inherits block B colours
  5. Visual discontinuity appears

Mitigation strategies

Monochrome sprites

Many games used single-colour sprites:

  • No clash visible
  • Consistent appearance
  • Knight Lore, Head Over Heels

Careful level design

Design backgrounds to minimise contrast:

  • Similar colours in adjacent blocks
  • Black backgrounds common
  • Strategic colour placement

Small sprites

Sprites smaller than 8×8:

  • Stay within single attribute
  • Limited visual impact
  • Restricts game design

Attribute-aligned movement

Move sprites in 8-pixel increments:

  • Always aligned to blocks
  • Jerky movement
  • Not suitable for action games

Notable approaches

Game Strategy
Knight Lore Monochrome graphics
Cobra Coloured but careful
Rainbow Islands Accepted clash
Renegade Masked backgrounds

The “Spectrum look”

Colour clash became:

  • Defining characteristic
  • Nostalgic aesthetic
  • Recognised style
  • Design challenge

Comparison with competitors

System Colour system
Spectrum Attribute blocks (one INK + one PAPER per 8×8 cell, applies to playfield AND sprites overlapping it)
C64 Per-cell colour RAM in text/character mode (one INK colour per cell, shared background) — and crucially, hardware sprites have their own palettes with no clash from playfield overlap
Amstrad CPC Per-pixel colour (Mode 0: 16 colours from 27, no attributes — but only 160×200 resolution)
MSX (TMS9918) Attribute strips (one INK + one PAPER per 8×1 row of pixels — finer than Spectrum, coarser than CPC)

The C64 looks “similar” on paper but its hardware sprites are the load-bearing difference: a player sprite never inherits the background’s colours, so games that would have suffered terrible clash on the Spectrum just look fine on the C64.

Modern perspective

Colour clash is now:

  • Deliberately recreated in retro games
  • Nostalgic visual style
  • Design constraint appreciated
  • Historical interest

Modern emulators visualise the clash mechanism in different ways — some highlight attribute boundaries, others overlay the 32×24 attribute grid. New Spectrum games (released for the original or Spectrum Next) often use clash expressively: monochrome sprites picking up environmental colour as they move, treating the bleed as a feature.

See also