RasterCore

The Magic of Copper: Amiga's Secret Weapon

:: SysOp

The Coprocessor That Defined an Era

The Amiga 1000, released in 1985, was a machine ahead of its time. Its multitasking OS and 4096-color palette were revolutionary. But the real secret to its graphical prowess wasn’t the CPU—it was the Copper.

The Copper (short for Co-Processor) is a dedicated state machine residing inside the Agnus chip. Its job is simple but powerful: to synchronize graphics changes with the electron beam of the monitor.

Racing the Beam

On a standard computer, if you want to change the background color halfway down the screen, the CPU has to:

  1. Calculate exactly how many microseconds it takes for the beam to reach that line.
  2. Wait in a loop (wasting cycles).
  3. Write to the color register.

If an interrupt occurs (mouse move, disk access), the CPU gets distracted, the timing slips, and the graphics “glitch” or flicker.

The Copper solves this. It runs its own program, independent of the CPU. It watches the video beam position (X and Y coordinates) and executes instructions exactly when the beam reaches a specific target. It never gets distracted. It never misses a microsecond.

The Instruction Set

The Copper is a RISC processor with only three instructions. That’s all it needs.

1. WAIT (Wait for Beam Position)

WAIT tells the Copper to pause until the video beam reaches a specific vertical (Y) and horizontal (X) position.

  • Format: WAIT Y, X
  • Example: Wait until Line 100.

2. MOVE (Move Data to Register)

MOVE writes a 16-bit value into any of the Amiga’s custom hardware registers.

  • Format: MOVE Register, Data
  • Example: Set Background Color (COLOR00) to Red.

3. SKIP (Skip next instruction)

SKIP is a conditional jump. It checks the beam position, and if it has already passed the target, it skips the next instruction. This allows for simple loops and logic within the Copper list.

The “Copper Bar” Effect

The most iconic Amiga visual effect is the Copper Bar (or Raster Bar)—a smooth gradient of colors moving up and down the screen. This effect is virtually free on the Amiga, consuming 0% CPU time.

Here is what a “Copper List” for a gradient looks like in Assembly:

CopperList:
    DC.W    $4007, $FFFE  ; WAIT for Line 64 (0x40)
    DC.W    $0180, $0002  ; MOVE $0002 (Dark Blue) to COLOR00 ($0180)
    
    DC.W    $4107, $FFFE  ; WAIT for Line 65
    DC.W    $0180, $0004  ; MOVE $0004 (Medium Blue) to COLOR00
    
    DC.W    $4207, $FFFE  ; WAIT for Line 66
    DC.W    $0180, $0008  ; MOVE $0008 (Blue) to COLOR00
    
    DC.W    $4307, $FFFE  ; WAIT for Line 67
    DC.W    $0180, $000F  ; MOVE $000F (Bright Blue) to COLOR00
    
    DC.W    $FFFF, $FFFE  ; END of List

The CPU just sets up this list in RAM once, points the Copper to it, and walks away. The Copper executes it 60 times a second, forever.

Impossible Tricks

The Copper could do far more than just change colors.

  • Sprite Multiplexing: The Amiga has 8 hardware sprites. The Copper can wait until Sprite 0 is drawn at the top of the screen, then immediately move new data into the Sprite 0 register to draw it again at the bottom. This allowed games to display dozens of enemies.
  • Parallax Scrolling: The Copper can change the “Bitplane Pointers” (scroll offsets) on every scanline. This allowed for the “wavy” underwater effects and multi-layered scrolling backgrounds seen in games like Shadow of the Beast.
  • Mode Changes: The Copper can even change the screen resolution mid-frame, mixing High-Res text at the top with Low-Res games graphics at the bottom.

Legacy

The Copper was a unique solution to the problem of “Beam Synchronization.” As graphics cards evolved into 3D accelerators (GPUs), they moved away from scanline-based rendering to polygon-based framebuffers. The concept of “racing the beam” became obsolete.

However, the idea of a “Command Buffer”—a list of instructions prepared by the CPU for a specialized processor to execute asynchronously—is exactly how modern APIs like Vulkan and DirectX 12 work. The Copper was arguably the grandfather of the modern GPU command queue.


Technical Modules

Source & Further Reading

  • The Amiga Hardware Reference Manual (Addison-Wesley): The definitive guide to the Copper’s instruction set.
  • “The Amiga’s Amazing Coprocessor” by Jimmy Maher (The Digital Antiquarian): A detailed cultural and technical history.
  • “Racing the Beam”: While primarily about the Atari 2600, the concept applies perfectly to the Copper’s philosophy.