Zaawansowane wykorzystanie Copper i Denise na Amiga 500: kolory, sprite’y i ukryta moc

Evaluez cet article !
[Total: 0 Moyenne : 0]

Autor: Gallica

Techniczna podróż w głąb sprzętu Amiga 500, aby zrozumieć, jak układ Denise i Copper pozwalają wyświetlać znacznie więcej niż 32 kolory lub 8 sprite’ów, przekraczając wszystkie graficzne ograniczenia maszyny.

I. Graficzne serce Amigi: Denise & Copper

  • Denise to główny układ wideo: zarządza bitplanami (do 6 na A500), multipleksacją sprzętowych sprite’ów (8 jednocześnie na linię), priorytetami, przewijaniem oraz końcową kompozycją obrazu.
  • Copper (współprocesor „współprocesor wideo” zintegrowany z Agnusem): działa równolegle z CPU. Jego zadaniem jest zapisywanie, w określonych momentach generowania obrazu (przez „raster”), do rejestrów chipsetu, aby na bieżąco zmieniać kolory, tryby wideo, adresy bitplanów itd.

Klucz do mocy Amigi: przy każdej linii skanowania, a nawet pikselu, Copper może zmieniać paletę, tryb, wywoływać przerwania… oferując niemal nieograniczoną ekspresję przy wolnym CPU.

Shadow of the beast - 128 couleurs à l'écran
Shadow of the beast – 128 kolorów na ekranie dzięki wykorzystaniu Copper

II. Mnożenie kolorów na ekranie: triki Copper & podzielona paleta

1. Działanie palety na Denise

W standardowym trybie 5 bitplanów (32 kolory jednocześnie spośród 4096), Denise wyświetla obraz z RAM według indeksu w tabeli 32 kolorów („Color00” do „Color31”).
Normalne ograniczenie: każdy piksel może odnosić się do 1 koloru spośród 32.
Ale…

2. Wykorzystanie Copper do „raster color changing”

  • Copper może wykonywać listę instrukcji („Copperlist”) zsynchronizowaną z przebiegiem skanowania ekranu (wiązka rastra).
  • Przy każdej linii skanowania (a nawet jej części) może nadpisać rejestry kolorów ($DFF180 do $DFF1BE).
  • Konsekwencja: ten sam „Color 01” wyświetli różny odcień na górze, w środku i na dole ekranu…
  • Jeśli zmienimy całą lub część palety co linię, każda pozioma strefa ekranu może mieć własne kolory.

Przykład: zmieniając 16 kolorów co 4 linie na ekranie o 256 liniach, można wyświetlić setki rzeczywistych kolorów („efekt tęczy”, gradienty, „gradienty nieba” w Shadow of the Beast lub Lionheart).

Jim Power sur Amiga 500 avec plus de 100 couleurs à l'écran
Jim Power na Amidze 500 z ponad 100 kolorami na ekranie

3. „Copperbars” i efekty rastrowe

  • Zmiana palety co x linii = kolorowe paski („copperbars” klasyczne dla dem)
  • Dynamiczna zmiana palety na podstawie wstępnie obliczonej tabeli = efekty „ogień”, plazma, gradienty tęczowe (State of the Art, Arte…)
  • Można łączyć copper z blitterem dla efektów zniekształcenia lub animowanego podziału ekranu (przykład: gradienty nieba w Agony, Enigma)

4. Tryb HAM (Hold-And-Modify) i Copper

  • Tryb HAM pozwala na jednoczesne wyświetlanie 4096 kolorów (ograniczone przez artefakty).
  • Można w nim łączyć copper do zmiany kolejności bitów lub bazowych palet w locie (zaawansowane triki demomakerów).
Lire aussi  Amiga 500: konsola zabójca, która nigdy nie miała swojej szansy

5. Przykład copperlisty


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)
    

Ten kod zmienia kolor nr 1 w trzech różnych pionowych miejscach, aby wyświetlić czerwone, zielone i niebieskie pasy.

III. Przekraczanie limitu 8 sprzętowych sprite’ów: multipleksowanie i triki

1. Oficjalny limit

Denise obsługuje 8 sprzętowych sprite’ów na linię, każdy do 16×256 px (tryb 4 kolorów, możliwe łączenie dla 16 kolorów, ale mniej sprite’ów).

2. Techniki multipleksowania

  • Zmienianie adresu sprite’a „w locie” (przez Copper lub przerwanie): gdy raster zakończy wyświetlanie sprite’a na linii, Copper przepisuje jego adres, aby wyświetlić inny obraz niżej, na innej linii („sprite multiplexing” w stylu C64, ale sprzętowo na Amidze!).
  • Obiekty blittera: oprócz 8 sprite’ów, blitter może kopiować grafiki w bitplanach w locie, symulując sprite’y programowe przy bardzo niskim obciążeniu CPU (używane w Ruff’n’Tumble, Uridium 2, Agony…)
  • Animowane bitplany: niektóre gry używają całych bitplanów do symulacji „dużych” sprite’ów lub efektów (chmury w Shadow of the Beast, bossowie w Lionheart…)

Konkretny przykład: w Agony Copper służy do multipleksowania sprite’ów, aby wyświetlić 16 różnych ptaków, blitter kopiuje strzały, a podzielona paleta ożywia tło.

Turrican 3 Amiga 500
Dla Turrican 3 duże sprite’y nie stanowiły problemu

3. Priorytety i triki, aby unikać konfliktów

  • Dobre planowanie „slotów sprite’ów”, aby wrogowie i strzały nigdy nie pojawiały się na tej samej pionowej linii (lub użycie „ciętych”/multipleksowanych sprite’ów przez Copperlistę).
  • Sprite’y używane także do HUD, efektów, nakładek, nie tylko do rozgrywki.
  • W trybie EHB (Extra Half-Brite) niektóre gry symulują jeszcze więcej kolorów dla sprite’ów przez duplikację i automatyczne przyciemnianie.

IV. Ikoniczne dema i gry: co umożliwiają Copper i Denise

  • Shadow of the Beast: gradienty nieba w copperze, multipleksowane sprite’y dla wrogów, paralaksa na 12 planach dzięki copperliście
  • Lionheart: miedź do dzielenia palet (niebo, dekoracje, oddzielne sprite’y), dynamiczne bitplany, gigantyczni bossowie symulowani w bitplanach/obiektach blitter
  • State of the Art: animowane paski miedzi, wideo w czasie rzeczywistym ze zmianą palety na każdej linii skanowania (ponad 600 kolorów wyświetlanych na ekranie)
  • Demo „Enigma” (Phenomena): plazma, paski rasterowe, gradienty nieba, miedź używana do „migotania” efektów świetlnych, przekroczenie 256 kolorów
  • Kid Chaos: dynamiczne tło, multipleksowane sprite’y, HUD jako nakładka przez sprite

Ważny fakt techniczny: na Amiga 500 najnowsze demosy przekraczają 1000 widocznych kolorów dzięki miedzi + zmianom palety w locie, z 8 multipleksowanymi sprite’ami tworzącymi efekty nigdy wcześniej nie widziane na konsolach 16-bitowych.

Lionheart, des couleurs à la pelle
Lionheart na Amiga 500, jedna z pierwszych gier wyświetlających ponad 128 kolorów na ekranie

V. Kody, wskazówki i zasoby, aby iść dalej

Lire aussi  Porównanie najlepszych kart FPGA do emulacji: wydajność, cena i kompatybilność

Podsumowanie

Amiga 500, dzięki Denise i Copperowi, jest w stanie wyświetlić znacznie więcej niż jej oficjalne specyfikacje. Dzięki programowaniu cyklicznie dokładnemu, zaawansowanym copperlistom i multipleksowaniu, rywalizuje z Megadrive/SNES pod wieloma względami – a czasem je przewyższa.
Prawdziwym ograniczeniem nie jest sprzęt: to kreatywność programisty. Scena demo to udowodniła, a nowoczesne narzędzia pozwalają każdemu z tego skorzystać.

Evaluez cet article !
[Total: 0 Moyenne : 0]
Julie - auteure Com-Strategie.fr

Julie – Auteure & Fondatrice

Étudiante en journalisme et passionnée de technologie, Julie partage ses découvertes autour de l’IA, du SEO et du marketing digital. Sa mission : rendre la veille technologique accessible et proposer des tutoriels pratiques pour le quotidien numérique.

Dodaj komentarz