Skip to content
Hardware

Denise: The Amiga's Display Engine

Playfields, sprites, and HAM mode magic

Denise transformed raw bitplane data into stunning visuals with dual playfields, eight hardware sprites, and the famous Hold-And-Modify mode.

Amiga custom-chipsgraphicsvideocommodore 1985–1992

Overview

Denise handled the final stage of Amiga graphics: converting bitplane data into colour values and mixing in sprites. While Agnus fetched the data, Denise determined what appeared on screen. Its flexibility allowed programmers to create effects impossible on contemporary hardware.

Fast facts

  • Function: display generation, sprite output, collision detection.
  • Versions: 8362 (OCS), 8373 (ECS), Lisa (AGA).
  • Palette: 32 colours from 4096 (OCS/ECS), 256 from 16.7M (AGA).
  • Resolutions: 320×200 to 1280×200 (interlaced doubles vertical).

Display modes

ModeColoursResolutionBitplanes
Lowres32320×2005
Hires16640×2004
HAM4096320×2006
EHB64320×2006
SuperHires41280×2002

Bitplane architecture

The Amiga uses planar graphics:

  • Each bit of a pixel comes from a different bitplane.
  • 5 bitplanes = 32 colours (2^5).
  • Bitplanes can be toggled independently.
  • Different depths suit different needs.

Colour calculation

Pixel colour = (BPL5 × 16) + (BPL4 × 8) + (BPL3 × 4) + (BPL2 × 2) + BPL1

Dual playfield mode

Two independent scrolling layers:

PlayfieldBitplanesColours
Odd1, 3, 58 (including transparent)
Even2, 4, 68 (including transparent)

Each playfield scrolls independently—perfect for parallax effects.

Hardware sprites

Denise provides 8 hardware sprites:

FeatureSpecification
Width16 pixels (lowres)
Heightunlimited (beam-following)
Colours3 + transparent each
Attachmentpairs combine for 15 colours

Sprite registers

SpritePositionData
0SPR0POSSPR0DATA
1SPR1POSSPR1DATA
7SPR7POSSPR7DATA

Sprite multiplexing

The Copper can reposition sprites mid-frame:

  1. Wait for sprite’s last scanline.
  2. Update position registers.
  3. Load new data.
  4. Sprite appears at new location.

This technique multiplies effective sprite count.

HAM mode

Hold-And-Modify displays 4096 colours:

Bits 5-4Action
00Set pixel from palette (16 base colours)
01Hold R & G, modify B
10Hold R & B, modify G
11Hold G & B, modify R

HAM limitations

  • Colour changes ripple horizontally.
  • Fast horizontal colour transitions cause fringing.
  • Best for photographs and gradients.

Collision detection

Denise detects sprite and playfield collisions in hardware:

RegisterDetects
CLXDATSprite-sprite, sprite-playfield collisions

Bit flags indicate which objects overlap—no CPU calculation needed.

Key registers

RegisterAddressPurpose
BPLCON0$DFF100Bitplane control (depth, modes)
BPLCON1$DFF102Scroll delays
BPLCON2$DFF104Sprite priority
BPL1DAT$DFF110Bitplane 1 data
COLOR00$DFF180Background colour
COLOR01-31$DFF182+Palette entries
SPR0POS$DFF140Sprite 0 position

See also