CopperList

Why "CopperList"?

The Amiga has a small coprocessor called the copper. Every frame it runs a short program, the copper list, that waits for the video beam to reach a scanline and then rewrites a hardware register. Change a color on every line and you get the rainbow bars that filled the screens of so many demos.

CopperList is a one-person restoration shop in Washington State, run by the seller behind wildcopper on eBay. The machines are old; the parts and techniques are not.

Raster bars, a wobbling logo and a mirror, all copper tricks.

Copper list stylings on this site

  • Sky gradient. Background color changed line by line, the way game skies were drawn in titles like Shadow of the Beast and Agony.
  • Night sky. Twinkling pixel stars, a moon that goes through its phases, and the occasional shooting star or passing satellite, all sprites over the gradient.
  • Parallax Cascades. Snowy peaks, forested foothills and a stand of Douglas firs scrolling at three speeds, in the tradition of games like Shadow of the Beast.
  • Raster bars. Shaded copper bars swinging up and down the screen above.
  • Logo wobble. A different horizontal scroll value for each slice of the logo.
  • Mirror. The logo replayed upside down underneath, as a negative modulo does.
  • Sine scroller. The demo-style message ticker, each letter riding a wave.
  • Kefrens bars. A vertical bar redrawn one line lower each scanline and never cleared.
  • Rainbow text. Headings colored one pixel row at a time.
  • Color cycling. Hover a gallery card and its color strip cycles.
  • Split screen. The sign-up panel is a second screen with its own palette, pulled down over the first.
; the home page sky, as a copper list
dc.w $2c01,$fffe  ; WAIT line $2c
dc.w $0180,$0002  ; COLOR00 = navy
dc.w $6001,$fffe  ; WAIT line $60
dc.w $0180,$0315  ; COLOR00 = violet
dc.w $a001,$fffe  ; WAIT line $a0
dc.w $0180,$0b43  ; COLOR00 = copper
dc.w $b001,$fffe  ; WAIT line $b0
dc.w $0180,$0fc6  ; COLOR00 = gold
dc.w $0102,$0033  ; BPLCON1: shift 3
dc.w $ffff,$fffe  ; end of list
WAIT for a scanline, MOVE a value into a register, repeat.

How it started

My first computer was a Commodore 64. My sister and I got it for Christmas 1984, with Robotron and Centipede cartridges, hooked up to the TV with just a tape drive. It was glorious.

By high school my best friend and I were full-blown Amiga fans. We were in the AV club, making titles and graphics on an Amiga 500 for a student news show that aired locally. At home we pulled games and demos off BBSs at modem speed: start the downloads, go watch TV, and hope nobody picked up the phone.

In April 1990 a local user group chartered a bus to the World of Amiga show in New York, and we tagged along (my mom came to keep us out of trouble). Commodore had announced the Amiga 3000 that same week, so we were some of the first people to see one in person. We walked the same booths over and over, and I came home with every brochure I could carry.

Later that year I bought my own A3000, after months of saving from a grocery store job. It was a big purchase, and it was worth it.

Thirty years on, in the fall of 2020, I brought home its twin: a 25MHz A3000 with the ROM tower, booting 2.0 or 1.3. That's the one in the photo.

The full story of the show, with scans of the guide and brochures, is on AmigaLove.

Amiga 3000 with keyboard and mouse under a Commodore 1084S monitor showing a demo with a copper sky
The A3000, reunited. October 2020.