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-spectrum graphicslimitationspectrum 1982–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

ComponentSize
Pixel data6,144 bytes (256×192 monochrome)
Attributes768 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

GameStrategy
Knight LoreMonochrome graphics
CobraColoured but careful
Rainbow IslandsAccepted clash
RenegadeMasked backgrounds

The "Spectrum look"

Colour clash became:

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

Comparison with competitors

SystemColour system
SpectrumAttribute blocks (one INK + one PAPER per 8×8 cell, applies to playfield AND sprites overlapping it)
C64Per-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 CPCPer-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