Von Gallica
Eine technische Reise ins Herz der Amiga 500-Hardware, um zu verstehen, wie der Denise-Chip und der Copper weit mehr als 32 Farben oder 8 Sprites anzeigen können und alle grafischen Grenzen der Maschine verschieben.
Somaire
I. Das grafische Herz des Amiga: Denise & der Copper
- Denise ist der Hauptvideoprozessor: Er verwaltet die Bitplanes (bis zu 6 beim A500), das Multiplexen der Hardware-Sprites (8 gleichzeitig pro Zeile), die Priorisierung, das Scrollen und die finale Bildkomposition.
- Copper (Co-Prozessor „Video-Co-Prozessor“ integriert in Agnus): Er läuft parallel zur CPU. Sein Zweck: Zu bestimmten Zeitpunkten der Bildgenerierung (pro „Raster“) in die Register des Chipsets zu schreiben, um Farben, Videomodi, Bitplane-Adressen usw. dynamisch zu ändern.
Schlüssel zur Amiga-Leistung: Bei jeder Scanline oder sogar jedem Pixel kann der Copper die Palette ändern, den Modus wechseln, Interrupts auslösen… und bietet so eine nahezu unbegrenzte Ausdruckskraft mit einer langsamen CPU.

II. Mehr Farben auf dem Bildschirm: Copper-Tricks & geteilte Palette
1. Funktionsweise der Palette bei Denise
Im Standardmodus mit 5 Bitplanes (32 gleichzeitig angezeigte Farben aus 4096) zeigt Denise das Bild im RAM anhand eines Index in einer Tabelle mit 32 Farben („Color00“ bis „Color31“) an.
Normale Grenze: Jeder Pixel kann 1 Farbe aus 32 referenzieren.
Aber…
2. Nutzung des Copper für das „Raster Color Changing“
- Der Copper kann eine Liste von Befehlen („Copperlist“) ausführen, die mit dem Bildschirm-Scan (dem Rasterstrahl) synchronisiert sind.
- Bei jeder Scanline (oder sogar jedem Linienabschnitt) kann er die Farbregister (
$DFF180bis$DFF1BE) neu schreiben. - Folge: Dieselbe „Color 01“ zeigt oben, in der Mitte oder unten unterschiedliche Farbtöne an.
- Wenn man die gesamte oder einen Teil der Palette bei jeder Linie ändert, kann jeder horizontale Streifen des Bildschirms eigene Farben haben.
Beispiel: Wenn man alle 4 Linien 16 Farben ändert auf einem Bildschirm mit 256 Linien, kann man hunderte echte Farben anzeigen („Regenbogeneffekt“, Farbverläufe, „Himmelverläufe“ in Shadow of the Beast oder Lionheart).

3. „Copperbars“ und Rastereffekte
- Die Palette alle x Linien zu ändern = Farbige Balken („Copperbars“, klassische Demo-Effekte)
- Dynamisches Ändern der Palette basierend auf einer vorab berechneten Tabelle = „Feuer“-Effekte, Plasma, Regenbogenverläufe (State of the Art, Arte…)
- Man kann Copper mit dem Blitter kombinieren für Verzerrungs- oder animierte Split-Screen-Effekte (Beispiel: Himmelverläufe in Agony, Enigma)
4. HAM-Modus (Hold-And-Modify) und Copper
- Der HAM-Modus erlaubt 4096 Farben gleichzeitig (begrenzt durch Artefakte).
- Man kann Copper kombinieren, um die Bit-Reihenfolge oder die „Basis“-Paletten on-the-fly zu ändern (fortgeschrittene Tricks von Demomachern).
5. Beispiel einer Copperlist
CWAIT $2C, $20 ; Attend la ligne 44, colonne 32
CMOVE COLOR01, $F00 ; Change la couleur 1 (rouge)
CWAIT $34, $20
CMOVE COLOR01, $0F0 ; Change la couleur 1 (vert)
CWAIT $3C, $20
CMOVE COLOR01, $00F ; Change la couleur 1 (bleu)
Dieser Code ändert die Farbe Nr. 1 an drei verschiedenen vertikalen Stellen, um rote, grüne und blaue Streifen anzuzeigen.
III. Die Grenze von 8 Hardware-Sprites überschreiten: Multiplexing und Tricks
1. Offizielle Grenze
Denise verwaltet 8 Hardware-Sprites pro Zeile, jeweils bis zu 16×256 px (4-Farben-Modus, Kopplung möglich für 16 Farben, aber weniger Sprites).
2. Multiplexing-Techniken
- Sprite-Adressänderung „im Flug“ (via Copper oder Interrupt): Wenn der Raster fertig ist, einen Sprite in einer Zeile anzuzeigen, schreibt der Copper seine Adresse neu, um ein anderes Bild weiter unten in einer anderen Zeile anzuzeigen („Sprite-Multiplexing“ à la C64, aber hardwareseitig auf Amiga!).
- Blitter-Objekte: Zusätzlich zu den 8 Sprites kann der Blitter Grafiken on-the-fly in die Bitplanes kopieren und so Soft-Sprites mit sehr geringem CPU-Aufwand simulieren (verwendet in Ruff’n’Tumble, Uridium 2, Agony…)
- Animierte Bitplanes: Einige Spiele nutzen ganze Bitplanes, um „große“ Sprites oder Effekte zu simulieren (Wolken in Shadow of the Beast, Bosse in Lionheart…)
Konkretes Beispiel: In Agony dient der Copper zum Multiplexen der Sprites, um 16 verschiedene Vögel anzuzeigen, der Blitter kopiert die Schüsse, und die Split-Palette belebt den Hintergrund.

3. Priorität und Tricks zur Vermeidung von Konflikten
- Gute Planung des „Sprite-Slots“, damit Gegner und Schüsse nie auf derselben vertikalen Linie erscheinen (oder Verwendung von „geschnittenen“/multiplexen Sprites via Copperlist).
- Sprites werden auch für HUD, Effekte, Overlay verwendet, nicht nur für das Gameplay.
- Im EHB-Modus (Extra Half-Brite) simulieren einige Spiele noch mehr Farben für Sprites durch Duplizierung und automatische Abdunkelung.
IV. Demos und ikonische Spiele: Was Copper und Denise möglich machen
- Shadow of the Beast: Himmelverläufe mit Copper, multiplexte Sprites für Gegner, Parallax auf 12 Ebenen dank Copperlist
- Lionheart: Copper für Split-Paletten (Himmel, Dekor, getrennte Sprites), dynamische Bitplanes, riesige Bosse simuliert in Bitplane/Blitter-Objekten
- State of the Art: animierte Copperbars, Echtzeit-Video mit Palettewechsel pro Scanline (über 600 Farben auf dem Bildschirm angezeigt)
- Demo „Enigma“ (Phenomena): Plasma, Rasterbalken, Himmelverläufe, Copper verwendet zum „Flackern“ von Lichteffekten, Überschreitung der 256 Farben
- Kid Chaos: dynamischer Hintergrund, multiplexte Sprites, HUD als Overlay über Sprite
Bemerkenswerte technische Leistung: Auf dem Amiga 500 überschreiten aktuelle Demos 1000 sichtbare Farben durch Copper + Palettewechsel in Echtzeit, mit 8 multiplexten Sprites, um Effekte zu erzeugen, die auf 16-Bit-Konsolen nie zuvor gesehen wurden.

V. Codes, Tipps und Ressourcen für Fortgeschrittene
- Code-Ressourcen:
- Praktischer Tipp: Um mehr als 32 Farben oder 8 Sprites zu erreichen, immer an „Rasterzeit“ denken und seine Copperlists planen. Der Trick ist die Automatisierung der Änderungen über vorab berechnete Tabellen und die kombinierte Nutzung von Blitter + Sprites.
Fazit
Der Amiga 500 ist dank Denise und Copper in der Lage, weit mehr als seine offiziellen Spezifikationen anzuzeigen. Durch cycle-accurate Programmierung, fortgeschrittene Copperlists und Multiplexing kann er in vielerlei Hinsicht mit der Megadrive/SNES konkurrieren – und sie manchmal sogar übertreffen.
Die wahre Grenze ist nicht die Hardware: Es ist die Kreativität des Programmierers. Die Demoszene hat dies bewiesen, und moderne Werkzeuge ermöglichen es jedem, davon zu profitieren.