Hlavní navigace

Grafický systém počítačů Amiga – dokončení

8. 10. 2009
Doba čtení: 13 minut

Sdílet

V dnešní části seriálu o architekturách počítačů dokončíme popis grafického systému slavných osobních počítačů Amiga. Řekneme si, jakým způsobem byly vykreslovány sprity a následně si popíšeme další (v mnoha ohledech vylepšené) varianty čipsetů – ECS a především AGA.

Obsah

1. Práce se sprity

2. ECS – Enhanced Chip Set

3. Nová rozlišení podporovaná Enhanced Chip Setem

4. Čipset AGA – Advanced Graphics Architecture

5. Nová rozlišení podporovaná čipsetem AGA

6. Grafický režim HAM8

7. Grafické karty dalších výrobců

8. Odkazy na Internetu

1. Práce se sprity

V předchozí části tohoto seriálu jsme si popsali grafické režimy čipu Denise použitého v originálním Amigáckém čipsetu, včetně režimů EHB (Extra Half-Brite) a HAM (Hold and Modify). Také jsme si řekli, jakou úlohu měly koprocesory Copper a Blitter (nejenom) při zobrazování grafiky. Prozatím jsme se však nevěnovali další důležité vlastnosti Amigáckého čipsetu – možnostem zobrazování spritů, tj. grafických objektů umístěných v samostatné oblasti paměti, mimo vlastní framebuffer, s nimiž je možné pohybovat a získávat informace o jejich vzájemných kolizích, popř. kolizích spritu s pozadím (obrázkem uloženým ve framebufferu). Podpora pro práci se sprity se začala ve větší míře objevovat u některých osmibitových domácích počítačů, například osmibitových Atari i legendárního Commodore C64. Sprity se používaly především ve hrách, například pro vykreslení hráče či protihráčů, ale i v dalších aplikacích zaměřených na počítačovou grafiku.

pc82

Obrázek 1: Prakticky všechny pohyblivé objekty v této osmibitové hře (hráč, papoušek…) jsou tvořeny pomocí spritů. Mimochodem, jedná se o hru BC's Quest for Tires známé firmy Sierra On-line.

Velká část grafických subsystémů podporujících práci se sprity (čip GTIA u osmibitových Atari, čip VIC u Commodore C64 apod.) taktéž obsahovala takzvané kolizní registry, do kterých se automaticky ukládaly příznaky překryvu pozadí se sprity nebo mezi několika sprity navzájem. Díky tomu se při práci s pohyblivými obrazy předmětů nemusely provádět zdlouhavé testy mezi všemi zobrazovanými pixely. Originální Amigácký čipset práci se sprity, podobně jako výše zmíněné osmibitové domácí počítače, taktéž podporoval. Pracovat bylo možné s osmi sprity (pro každý sprite byl vyhrazen samostatný DMA kanál), jejichž horizontální velikost byla rovna šestnácti pixelům a vertikální velikost byla ve své podstatě libovolná. Skutečná velikost pixelů byla nezávislá na nastaveném grafickém režimu a z něj odvozených velikostí pixelů, protože horizontální velikost pixelů u spritů odpovídala 1/320 šířky obrazovky a vertikální velikost buď 1/200 (NTSC) nebo 1/256 (PAL) její výšky. Pixely ve spritech, z nichž každý byl reprezentován dvojicí bitů, mohly být obarveny jednou ze tří barev, „čtvrtou“ barvou byla průhlednost (díky tomu mohly mít pixely při zobrazení libovolný tvar). Spojením dvojice spritů se dosáhlo zvýšení počtu barev na patnáct, šestnáctá hodnota byla opět rezervována pro průhlednost, tj. pro tu část spritu, přes který prosvítá pozadí.

pc82

Obrázek 2: V této osmibitové hře (Ghost Chaser) jsou pohyblivé předměty taktéž tvořeny pomocí spritů, takže mikroprocesor nemusí při jejich animaci provádět zdlouhavé blokové přenosy dat.

Díky jednoduchému triku známému již z počítačů Commodore C64 či osmibitových Atari, se mohl počet současně zobrazených spritů zvýšit – postačilo měnit horizontální pozici spritů na zvoleném obrazovém řádku spolu s počáteční adresou spritu v paměti, například během přerušení při zpětném běhu elektronového paprsku. Pro tento účel bylo možné využít minule popsaný koprocesor Copper, takže mikroprocesor nemusel být těmito operacemi vůbec zatížený. Prakticky jediným omezením při práci se sprity na počítačích Amiga je tak zobrazení osmi spritů na jednom obrazovém řádku (i to však lze obejít), poněkud složitější práce s kolizními registry při zvýšení počtu spritů a taktéž to, že rastrová data představující všechny sprity musela být umístěna v prvním megabajtu paměti (toto omezení platí především pro originální čipset, protože například dále popsané čipsety ECS či AGA již dokáží adresovat větší rozsah paměti).

pc82

Obrázek 3: Obrazovka osmibitového počítače Commodore C64 s velkým množstvím spritů, při jejichž zobrazování se využil trik popsaný v předchozím odstavci.

2. ECS – Enhanced Chip Set

Originální Amigácký čipset OCS, kterým jsme se prozatím zabývali, byl použit, jak jsme si již řekli v předchozích dvou částech tohoto seriálu, především v modelech Amiga 1000 (první prodávaný model), Amiga 500 („low-end“) a Amiga 2000 („hi-end“). V roce 1990 byl na trh uveden nový model Amiga 3000, který nahrazoval stávající „hi-end“ řadu, tj. částečně Amigu 1000 a především Amigu 2000. Další počítač firmy Commodore – Amiga CDTV – byl, podobně jako Amiga 3000 uveden na trh v roce 1990. Mělo se jednat zejména o herní systém, čemuž odpovídá jak název výrobku, tak i jeho design (především černá varianta). Původně byl tento počítač dokonce dodáván bez klávesnice, myši a disketové jednotky, zato ovšem s mechanikou CD-ROM, což bylo na počátku devadesátých let ještě poměrně neobvyklé. V obou zmíněných modelech se poprvé objevila vylepšená verze čipsetu nazvaná ECS neboli Enhanced Chip Set.

pc82

Obrázek 4: Osobní mikropočítač Amiga 3000.

ECS jsou použity vylepšené verze původních čipů. Například čip Agnus byl nahrazen obvodem Fat Agnus, jenž podporuje adresaci 2MB RAM. V čipu Fat Agnus je zabudovaný i vylepšený koprocesor Blitter, který dokáže přenášet bloky paměti větší než 1024×1024 pixelů. Čip Super Denise nahradil původní Denise. I zde došlo k rozšíření adresovatelné paměti, ale především se objevila podpora pro mnoho nových grafických režimů, především režimu Productivity s rozlišením 640×480 pixelů (bez použití prokládání) a SuperHires, jehož rozlišení bylo rovno 1280×200 pixelům (NTSC) resp. 1280×256 pixelům (PAL) a počet současně zobrazitelných barev dosahoval čtyř. Tyto režimy byly určeny především pro práci s desktopovými programy, například textovými procesory, u nichž nehrál nižší počet zobrazitelných barev tak velkou roli. Kromě toho se změnil i subsystém pro práci se sprity, které je možné v ECS posunout i mimo zobrazovanou oblast do okraje obrazovky (border).

pc82

Obrázek 5: Herní systém Amiga CDTV se samozřejmě mohl použít i jako plnohodnotný osobní počítač.

3. Nová rozlišení podporovaná Enhanced Chip Setem

Čipset ECS umožňuje, podobně jako tomu bylo i u originálního čipsetu OCS, měnit velké množství parametrů zobrazení. Například je možné volit mezi neprokládaným a prokládaným režimem (v prokládaném režimu se používá dvojnásobný počet obrazových řádků), nastavovat počet prázdných řádků na horním i spodním okraji obrazovky (blank lines), měnit počet skutečně zobrazených pixelů na každém obrazovém řádku (tj. zvětšovat či zmenšovat okraj) atd. V následující tabulce jsou vypsány některé typické grafické režimy určené pro různé video systémy – televizory pracující v normách PAL či NTSC, multifrekvenční monitory atd. Původní režimy podporované již čipsetem OCS jsou pro odlišení označeny hvězdičkou a režimy prokládané mají za svým názvem uvedenu zkratku „int.“:

Video systém Jméno Rozlišení Počet barev Výška:šířka pixelu
* NTSC LowRes 320×200 2 – 32, EHB, HAM 1:1
* NTSC LowRes interlaced 320×400 2 – 32, EHB, HAM 2:1
* NTSC HiRes 640×200 2 – 16 1:2
* NTSC HiRes interlaced 640×400 2 – 16 1:1
* PAL LowRes 320×256 2 – 32, EHB, HAM 1:1
* PAL LowRes interlaced 320×512 2 – 32, EHB, HAM 2:1
* PAL HiRes 640×256 2 – 16 1:2
* PAL HiRes interlaced 640×512 2 – 16 1:1
NTSC (60Hz) Super-HiRes 1280×200 2 – 4 1:4
NTSC (60Hz) Super-HiRes int. 1280×400 2 – 4 1:2
PAL (50Hz) Super-HiRes 1280×256 2 – 4 1:4
PAL (50Hz) Super-HiRes int. 1280×512 2 – 4 1:2
Multiscan Productivity 640×480 2 – 4 1:1
Multiscan Productivity int. 640×960 2 – 4 1:2
A2024 NTSC 10Hz 1024×800 2 – 4 1:1
A2024 NTSC 15Hz 1024×800 2 – 4 1:1
A2024 PAL 10Hz 1024×1008 2 – 4 1:1
A2024 PAL 15Hz 1024×1008 2 – 4 1:1
Euro36 (36Hz) LowRes 320×200 2 – 32, EHB, HAM 1:1
Euro36 (36Hz) LowRes int. 320×400 2 – 32, EHB, HAM 2:1
Euro36 (36Hz) HiRes 640×200 2 – 16 1:2
Euro36 (36Hz) HiRes int. 640×400 2 – 16 1:1
Euro36 (36Hz) Super-HiRes 1280×200 2 – 4 1:4
Euro36 (36Hz) Super-HiRes int. 1280×400 2 – 4 1:2
Euro72 (72Hz) Productivity 640×480 2 – 4 1:1
Euro72 (72Hz) Productivity int. 640×960 2 – 4 1:1
Super72 (72Hz) HiRes 400×300 2 – 16 1:1
Super72 (72Hz) HiRes int. 400×600 2 – 16 1:2
Super72 (72Hz) Super-HiRes 800×300 2 – 4 2:1
Super72 (72Hz) Super-HiRes int. 800×600 2 – 4 1:1
pc82

Obrázek 6: Screenshot ze hry Shadow of the Beast, v níž bylo využito velkého množství grafických triků podporovaných Amigáckým čipsetem.

4. Čipset AGA – Advanced Graphics Architecture

Amiga 1200 (následovník slavné Amigy 500), která byla na trh uvedena v roce 1992, obsahovala zbrusu nový čipset označovaný zkratkou AGA neboli Advanced Graphics Architecture. V některých zemích se též můžeme setkat s označením AA, což je zkratka od Advanced Amiga. Mimochodem, právě u Amigy 1200 došlo k celé řadě dalších vylepšení. Byl použit procesor Motorola 68020 taktovaný již na 14,28MHz (dvojnásobná frekvence oproti předešlým modelům), základní kapacita operační paměti se zvýšila na 2MB a dokonce byl dodáván slot PCMCIA, přes nějž se daly připojovat paměťové karty, modemy, síťové karty apod. Taktéž Amiga 4000 obsahovala, podobně jako výše popisovaný model Amiga 1200, čipset AGA. Tento model počítače měl sloužit jako nástupce Amigy 2000 a Amigy 3000. Svým celkovým pojetím se firma Commodore snažila s tímto modelem přiblížit ke klasickým počítačům PC (popř. grafickým stanicím), čemuž odpovídá i zabudování IDE řadiče a existence „tower“ verze (viz fotografie).

pc82

Obrázek 7: Počítač Amiga 1200.

Čipset Advanced Graphics Architecture nově podporuje grafické režimy s 256 barvami (8 bitplanů – bitových rovin), čtyřiadvacetibitové barvy v režimu HAM8 (teoreticky lze v tomto režimu zobrazit několik set tisíc barevných odstínů, což ale v reálných režimech samozřejmě není možné, protože neobsahují tak velké množství pixelů) a barvovou paletu obsahující 224 barev, což je poměrně významná změna oproti předchozím dvěma čipsetům, v nichž bylo možné pracovat s 212 barvovými odstíny (čtyři bity pro každou barvovou složku RGB). Navíc obvody z této čipové sady využívaly při adresaci plný třicetidvoubitový režim, což se projevilo zejména na šířce datové sběrnice. Tento čipset přes svoje skvělé vlastnosti (rozšířená paleta atd.) znamenal i určité zklamání, protože se obecně očekávalo, že přinese i podporu pro grafické režimy typu packed-pixel (vzhledem k plně 32bitové architektuře dokonce bez nutnosti používat stránky), u nichž se nepoužívají bitplany, ale postupné ukládání barev jednotlivých pixelů po jednotlivých řádcích na obrazovce. Absence packed-pixel grafických módů komplikovala například tvorbu interaktivní 3D grafiky, zejména her, které byly zaměřeny spíše na manipulaci s jednotlivými pixely a nikoli s většími plochami s malým počtem barev.

pc82

Obrázek 8: Počítač Amiga 4000 v provedení „tower“.

5. Nová rozlišení podporovaná čipsetem AGA

V následující tabulce jsou vypsána nová rozlišení (grafické režimy) podporovaná čipsetem AGA. Tento čipset je samozřejmě zpětně kompatibilní s předchozí dvojicí čipsetů, takže podporuje i všechny grafické režimy vypsané ve třetí kapitole. Povšimněte si, že všech dvanáct nových režimů čipsetu AGA se navzájem odlišuje především svým rozlišením a obnovovací frekvencí obrazu, nikoli počtem současně zobrazitelných barev. V případě AGA totiž platí, že ve všech režimech lze použít jednu až osm bitových rovin (na rozdíl od původních šesti rovin u čipsetů OCS a ECS), nově je taktéž podporován režim nazvaný HAM8, který je popsán v navazující kapitole.

Video systém Jméno Rozlišení Počet barev Výška:šířka pixelu
DblNTSC LowRes 320×200 2 – 256, EHB, HAM, HAM8 1:1
DblNTSC LowRes No Flicker 320×400 2 – 256, EHB, HAM, HAM8 2:1
DblNTSC LowRes Laced 320×800 2 – 256, EHB, HAM, HAM8 4:1
DblNTSC HiRes 640×200 2 – 256, EHB, HAM, HAM8 1:2
DblNTSC HiRes No Flicker 640×400 2 – 256, EHB, HAM, HAM8 1:1
DblNTSC HiRes Laced 640×800 2 – 256, EHB, HAM, HAM8 2:1
DblPAL LowRes 320×256 2 – 256, EHB, HAM, HAM8 1:1
DblPAL LowRes No Flicker 320×512 2 – 256, EHB, HAM, HAM8 2:1
DblPAL LowRes Laced 320×1024 2 – 256, EHB, HAM, HAM8 4:1
DblPAL HiRes 640×256 2 – 256, EHB, HAM, HAM8 1:2
DblPAL HiRes No Flicker 640×512 2 – 256, EHB, HAM, HAM8 1:1
DblPAL HiRes Laced 640×1024 2 – 256, EHB, HAM, HAM8 2:1
pc82

Obrázek 9: Screenshot ze hry Chaos Engine.

6. Grafický režim HAM8

Ve výše uvedené tabulce si pozorný čtenář mohl povšimnout nové zkratky HAM8. Jedná se o rozšíření grafického módu HAM, který jsme si popsali v předchozí části tohoto seriálu. Zatímco původní režim HAM pracoval se šesticí bitových rovin (proto se kvůli odlišení od HAM8 taktéž označuje zkratkou HAM6) a dokázal tak na jedné obrazovce zobrazit, i když s několika omezeními, až 4096 barev (4 bity pro každou barvovou složku), dokáže HAM8 teoreticky pracovat s celým barvovým prostorem čipsetu AGA, tj. s 224 barvami (cca 16 milionů odstínů). Každý pixel je v tomto režimu uložen v osmi bitových rovinách, přičemž šest bitových rovin je určeno pro uložení indexu do palety 64 barev, popř. šesti vyšších bitů barvové složky a dvě zbývající roviny jsou rezervovány pro výběr operace, která se má při výpočtu barvy pixelu provést. Význam bitů v šesté a sedmé bitové rovině (jsou číslovány od nuly) je uveden v následující tabulce:

Bit b7 Bit b6 Význam
výběr barvy z palety stejným způsobem, jako ve standardním grafickém režimu, přičemž paleta má 64 položek (lze tedy vybrat libovolnou barvu z 224 kombinací).
1 změna modré složky (šesti vyšších bitů) podle hodnot načtených z rovin 1–6
1 změna červené složky (šesti vyšších bitů) podle hodnot načtených z rovin 1–6
1 1 změna zelené složky (šesti vyšších bitů) podle hodnot načtených z rovin 1–6
pc82

Obrázek 10: Známá hra Worms ve verzi pro Amigy.

Vzhledem k tomu, že pro změnu jedné z barvových složek slouží šest bitových rovin, lze pomocí této operace modifikovat pouze šest nejvyšších bitů vždy jedné složky – dva nejnižší bity zůstávají zachovány, tj. zkopírují se z barvy přiřazené předchozímu pixelu. To mj. znamená, že pomocí bitových kombinací 01×xxxxx, 10×xxxxx a 11×xxxxx lze zobrazit 218=262144 barev. Ovšem v barvové paletě mohou být uloženy libovolné barvy, takže je kdykoli možné bitovou kombinací 00×xxxxx změnit i spodní dva bity každé barvové složky, přičemž lze navíc barvovou paletu na každém obrazovém řádku měnit, typicky pomocí Copperu. Teoreticky je tedy možné, aby každý pixel na obrazovce byl obarven jinou barvou (tj. pro rozlišení 640×512 pixelů se jedná o 327680 barev), ale reálný počet barev bude u běžných obrázků nižší, podobně jako je tomu u minule popsaného módu HAM (HAM6).

pc82

Obrázek 11: Další screenshot ze hry Shadow of the Beast.

7. Grafické karty dalších výrobců

Kromě obvodů určených pro generování grafiky, které byly přímo součástí čipsetů OCS, ECS a AGA bylo možné v některých modelech počítače Amiga používat i grafické karty vyráběné dalšími výrobci. Mezi známé grafické karty patří například Picasso. Konkrétně kartu Picasso 2 bylo možné použít například v modelech Amiga 2000, Amiga 3000 a Amiga 4000 – jedná se o modely vybavené Zorro II slotem. Tato grafická karta mohla obsahovat framebuffer o kapacitě 1 MB (levnější varianta) nebo 2 MB (dražší verze). V případě použití jednomegabajtové varianty byly podporovány například grafické režimy s rozlišením 640×480 pixelů a 24bitovou barevnou hloubkou či naopak režim o rozlišení 1600×1200 pixelů v šestnácti barvách. Přidání dalšího megabajtu paměti pro framebuffer umožnilo, aby se zvýšilo rozlišení plnobarevného grafického režimu na 800×600 pixelů a režim 1600×1200 používal místo šestnácti barev barev 256. Navíc tato grafická karta obsahovala i blitter a dokonce i možnost kombinovat video signál s výstupem z původního čipsetu, ovšem pouze v případě použití nižších (kompatibilních) řádkových frekvencí.

CS24_early

pc82

V následující tabulce jsou vypsány řádkové a obrazové frekvence několika základních grafických režimů podporovaných grafickou kartou Picasso 2. Obnovovací obrazová frekvence 15 kHz je použita v režimu zpětné kompatibility (televizory, monitory A2024 apod.), naopak vysoké obnovovací obrazové frekvence 48 – 64 kHz vyžadují multifrekvenční monitory:

Řádková frekvence 640×480 800×600 1024×768 1280×1024
15 kHz 50 Hz n/a n/a n/a
31 kHz 59 Hz 50 Hz 74 Hz (i) 55 Hz (i)
35 kHz 68 Hz 56 Hz 87 Hz (i) 63 Hz (i)
38 kHz 71 Hz 59 Hz 87 Hz (i) 67 Hz (i)
48 kHz 71 Hz 75 Hz 60 Hz 87 Hz (i)
57 kHz 71 Hz 82 Hz 70 Hz 87 Hz (i)
64 kHz 71 Hz 82 Hz 79 Hz 90 Hz (i)
pc82

8. Odkazy na Internetu

  1. Picasso 2
    http://www.iol.ie/…icasso2.html
  2. Hold-And-Modify
    http://en.wikipedia.org/…d-And-Modify
  3. Amiga Halfbrite mode
    http://en.wikipedia.org/…d-And-Modify
  4. HAM8 Explained
    http://www.amigans.net/…/article.php?…
  5. Amiga FAQ (Frequently asked questions) (Part 1 of 4)
     http://www.faqs.org/…ction/part1/
  6. Amiga FAQ (Frequently asked questions) (Part 2 of 4)
     http://www.faqs.org/…ction/part2/
  7. Amiga FAQ (Frequently asked questions) (Part 3 of 4)
     http://www.faqs.org/…ction/part3/
  8. Amiga FAQ (Frequently asked questions) (Part 4 of 4)
     http://www.faqs.org/…ction/part4/
  9. Amiga Coding Wiki
    http://www.amigacoding.com/…hp/Main_Page
  10. Amiga screen
    http://amigadev.elowar.com/…ode0061.html
  11. Amiga HAM mode
    http://amigadev.elowar.com/…ode008F.html
  12. Copper WAIT instruction
    http://amigadev.elowar.com/…ode004B.html
  13. Copper MOVE instruction
    http://amigadev.elowar.com/…ode004A.html
  14. Amiga
    http://en.wikipedia.org/wiki/Amiga
  15. GalaxSIM: Solutions for Digital Living
    http://www.amiga.com/
  16. Denise Pin Assignment
    http://www.ntrautanen.fi/…c/denise.htm
  17. Motorola 68000
    http://en.wikipedia.org/wiki/68000
  18. Motorola 68008
    http://en.wikipedia.org/…torola_68008
  19. Motorola 68020
    http://en.wikipedia.org/…torola_68020
  20. Motorola 68030
    http://en.wikipedia.org/…torola_68030
  21. Great Microprocessors Past and Present
    http://www.microprocessor.sscc.ru/great
  22. Custom Chips: Paula
    http://www.amiga-hardware.com/…hardware.cgi?…
  23. Big Book of Amiga Hardware
    http://www.amiga-resistance.info/bboahfaq/
  24. Amiga Hardware Database
    http://amiga.resource.cx/
  25. ExoticA
    http://www.exotica.org.uk/wiki/Main_Page
  26. The absolute basics of Amiga audio
    http://www.sufo.estates.co.uk/…/amimus.html
pc82

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.