Exploitations avancées du Copper et de Denise sur Amiga 500 : couleurs, sprites, et puissance cachée

Par Gallica

Un voyage technique au cœur du hardware Amiga 500, pour comprendre comment la puce Denise et le Copper permettent d’afficher bien plus que 32 couleurs ou 8 sprites, et repoussent toutes les limites graphiques de la machine.

I. Le cœur graphique de l’Amiga : Denise & le Copper

  • Denise est la puce vidéo principale : elle gère les bitplanes (jusqu’à 6 sur A500), le multiplexage des sprites hardware (8 simultanés par ligne), la priorisation, les scrollings, et la composition finale de l’image.
  • Copper (co-processeur “coprocesseur vidéo” intégré à Agnus) : il s’exécute en parallèle du CPU. Son but : écrire, à des instants précis de la génération de l’image (par “raster”), dans les registres du chipset, pour modifier à la volée les couleurs, les modes vidéo, les adresses de bitplane, etc.

Clé de la puissance Amiga : à chaque scanline, ou même pixel, le Copper peut modifier la palette, changer de mode, déclencher des interruptions… offrant ainsi une expressivité quasi illimitée avec un CPU lent.

Shadow of the beast - 128 couleurs à l'écran
Shadow of the beast – 128 couleurs à l’écran grâce à l’exploitation du Copper

II. Multiplier les couleurs à l’écran : Copper tricks & split palette

1. Fonctionnement de la palette sur Denise

En mode standard 5 bitplanes (32 couleurs simultanées parmi 4096), Denise affiche l’image en RAM selon un index dans une table de 32 couleurs (“Color00” à “Color31”).
Limite normale : chaque pixel peut référencer 1 couleur parmi 32.
Mais…

Lire aussi  L’Amiga 500 : la console killer qui n’a jamais eu sa chance

2. Exploitation du Copper pour le “raster color changing”

  • Le Copper peut exécuter une liste d’instructions (“Copperlist”) synchronisées sur le balayage de l’écran (le raster beam).
  • À chaque scanline (voire chaque portion de ligne), il peut réécrire les registres couleurs ($DFF180 à $DFF1BE).
  • Conséquence : la même “Color 01” affichera une teinte différente en haut, au milieu, en bas…
  • Si l’on change la totalité ou une partie de la palette chaque ligne, chaque bande horizontale de l’écran peut avoir ses propres couleurs.

Exemple : en changeant 16 couleurs toutes les 4 lignes sur un écran de 256 lignes, on peut afficher des centaines de couleurs réelles (“rainbow effect”, dégradés, “sky gradients” dans Shadow of the Beast ou Lionheart).

Jim Power sur Amiga 500 avec plus de 100 couleurs à l'écran
Jim Power sur Amiga 500 avec plus de 100 couleurs à l’écran

3. “Copperbars” et effets raster

  • Changer la palette toutes les x lignes = barres de couleur (“copperbars” classiques des démos)
  • Changer dynamiquement la palette en fonction d’une table précalculée = effets “feu”, plasma, dégradés arc-en-ciel (State of the Art, Arte…)
  • On peut combiner le copper avec le blitter pour des effets de distorsion ou de split screen animés (exemple : sky gradients dans Agony, Enigma)

4. Mode HAM (Hold-And-Modify) et Copper

  • Le mode HAM permet 4096 couleurs simultanées (limité par les artefacts).
  • On peut y combiner du copper pour changer l’ordre des bits ou les palettes “base” à la volée (astuces avancées de demomaker).

5. Exemple de 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)
    

Ce code change la couleur n°1 à trois endroits verticaux différents pour afficher des bandes rouges, vertes et bleues.

Lire aussi  Code erreur 43 : Guide complet pour un périphérique USB non reconnu

III. Dépasser la limite des 8 sprites hardware : multiplexage et astuces

1. Limite officielle

Denise gère 8 sprites hardware par ligne, chacun jusqu’à 16×256 px (mode 4 couleurs, jumelage possible pour 16 couleurs mais moins de sprites).

2. Techniques de multiplexage

  • Changement d’adresse de sprite “en vol” (via Copper ou interruption) : quand le raster a fini d’afficher un sprite sur une ligne, le Copper réécrit son adresse pour afficher une autre image plus bas, sur une autre ligne (“sprite multiplexing” façon C64, mais en hardware sur Amiga !).
  • Blitter objects : en plus des 8 sprites, le blitter peut copier à la volée des graphismes dans les bitplanes, simulant des sprites logiciels à très faible coût CPU (utilisé dans Ruff’n’Tumble, Uridium 2, Agony…)
  • Bitplanes animés : certains jeux utilisent des bitplanes entiers pour simuler de “gros” sprites ou des effets (clouds dans Shadow of the Beast, boss dans Lionheart…)

Exemple concret : dans Agony, le Copper sert à multiplexer les sprites pour afficher 16 oiseaux différents, le blitter copie les tirs, et la palette split dynamise l’arrière-plan.

Turrican 3 Amiga 500
Pour Turrican 3, les gros sprites n’étaient pas un problème

3. Priorité et astuces pour éviter les conflits

  • Bonne planification du “sprite slot” pour que les ennemis et tirs n’apparaissent jamais sur la même ligne verticale (ou utilisation de sprites “découpés”/multiplexés via Copperlist).
  • Sprites utilisés aussi pour le HUD, effets, overlay, pas seulement le gameplay.
  • En mode EHB (Extra Half-Brite), certains jeux simulent encore plus de couleurs pour les sprites via duplication et atténuation automatique.

IV. Démos et jeux emblématiques : ce que Copper et Denise rendent possible

  • Shadow of the Beast : dégradés de ciel en copper, sprites multiplexés pour les ennemis, parallaxe sur 12 plans grâce au copperlist
  • Lionheart : copper pour split palettes (ciel, décor, sprites séparés), bitplanes dynamiques, boss géants simulés en bitplane/objets blitter
  • State of the Art : copperbars animées, vidéo temps réel avec changement palette chaque scanline (plus de 600 couleurs affichées à l’écran)
  • Demo “Enigma” (Phenomena) : plasma, raster bars, sky gradients, copper utilisé pour “flicker” des effets de lumière, dépassement des 256 couleurs
  • Kid Chaos : background dynamique, sprites multiplexés, HUD en overlay via sprite

Fait technique marquant : sur Amiga 500, des démos récentes dépassent 1000 couleurs visibles via copper + changements de palette à la volée, avec 8 sprites multiplexés pour créer des effets jamais vus sur consoles 16 bits.

Lionheart, des couleurs à la pelle
Lionheart sur Amiga 500, un des premiers jeux à afficher plus de 128 couleur à l’écran

V. Codes, astuces et ressources pour aller plus loin

Lire aussi  Code erreur 43 : Guide complet pour un périphérique USB non reconnu

Conclusion

L’Amiga 500, via Denise et le Copper, est capable d’afficher bien plus que ses spécifications officielles. Grâce à la programmation cycle-accurate, copperlists avancées et multiplexage, il rivalise avec la Megadrive/SNES sur bien des plans – et parfois les dépasse.
Le véritable plafond, ce n’est pas le hardware : c’est la créativité du codeur. La scène démo l’a prouvé, et les outils modernes permettent à tous d’en tirer parti.

Laisser un commentaire