Hlavní navigace

Historie vývoje počítačových her (15.část - herní konzole Atari 5200)

23. 2. 2012
Doba čtení: 29 minut

Sdílet

Dnes si nejprve společně shrneme situaci na trhu s herními konzolemi v roce 1982 a posléze se budeme zabývat popisem konzole pojmenované Atari 5200. Tato herní konzole sice nebyla komerčně tak úspěšná, jak by si majitelé společnosti Atari přáli, ale přesto přinesla několik zajímavých vlastností.

Obsah

1. Trh s herními konzolemi v roce 1982

2. Herní konzole Atari 5200 aneb pokus o navázání na úspěch legendy Atari 2600

3. Projekty „Candy“ a „Colleen“

4. Čipy CTIA a GTIA – pokračování tradice zahájené čipem TIA

5. Práce se sprity podporovaná čipy CTIA a GTIA

6. Čip ANTIC (Alpha-Numeric Television Interface Circuit)

7. Display-listy a další vlastnosti čipu ANTIC

8. Grafické režimy čipu ANTIC

9. Odkazy na Internetu

1. Trh s herními konzolemi v roce 1982

V seriálu o historii vývoje výpočetní techniky jsme se při popisu první a druhé generace herních konzolí pomalu přesunuli z druhé poloviny sedmdesátých let minulého století až do začátku let osmdesátých. Zatímco v předchozím období dominovala trhu s domácími herními konzolemi především konzole Atari 2600, které více či méně úspěšně sekundovaly výrobky Fairchild Channel F a Magnavox Odyssey2, začala se situace poměrně zásadním způsobem měnit v roce 1982 (tedy zhruba rok před částečným krachem trhu s herními konzolemi, o němž se ještě v tomto seriálu zmíníme). V roce 1982 totiž začaly být nabízeny další typy herních konzolí, které byly vybaveny osmibitovými mikroprocesory a většinou taktéž i specializovanými čipy určenými pro generování grafiky a zvuků. Mezi tyto nové typy konzolí patří především Atari 5200, Vectrex, ColecoVision a částečně taktéž Emerson Arcadia, která se však svými vlastnosti a relativně nízkým výkonem řadí spíše k Magnavox Odyssey2 nebo Atari 2600.

Obrázek 1: Hra Preliminary Monty ve variantě pro herní konzoli Atari 5200.

V následující tabulce jsou vypsány základní údaje o všech čtyřech herních konzolích, které se na trhu objevily v průběhu roku 1982 (ve skutečnosti se přesná doba uvedení na trh lišila podle oblasti, nejdříve bývali osloveni zákazníci v USA a teprve poté v západní Evropě a v Japonsku, což se později změnilo):

Konzole Procesor Frekvence RAM Grafika Zvuky
Atari 5200 MOS 6502 1,79 MHz 16 kB až 320×192, 8 spritů 4 kanály mono
Vectrex Motorola 6809 1,50 MHz 1 kB vektorová monochromatická 1 kanál mono
ColecoVision Zilog Z80 3,58 MHz 8 kB 256×192, 32 spritů 3 tónové generátory + 1 generátor šumu
Emerson Arcadia Signetics 2650 3,58 MHz 512 B 128×208, 128×104 1 kanák + 1 generátor šumu

Obrázek 2: Hra Moon Patrol ve variantě pro herní konzoli Atari 5200.

Možná ani nemusí být na škodu si připomenout, že rozdíly mezi osmibitovými mikroprocesory MOS 6502, Motorola 6809 a Zilog Z80 byly značné, a to jak po stránce počtu registrů a instrukční sady (což zajímalo především programátory používající assembler), tak i z hlediska technologického. Zatímco mikroprocesor MOS 6502 patřil mezi první generaci osmibitových čipů, byly další dva mikroprocesory Motorola 6809 a Zilog Z80 již v několika ohledech vylepšeny. Jednalo se vlastně o druhou (Motorola 6800Motorola 6809) resp. o třetí generaci zpětně kompatibilních čipů (Intel 8008Intel 8080Zilog Z80). Ve druhé tabulce jsou vypsány základní údaje o všech třech zmíněných mikroprocesorech:

Mikroprocesor Výroba Tranzistorů
MOS 6502 1975 3500
Zilog Z80 1976 8500
Motorola 6809 1978 9000
pc6908

Obrázek 3: Pomocí změny barvové palety v přesně načasovaných okamžicích je možné s využitím čipů ANTIC a GTIA simulovat grafický efekt známý pod jménem „plasma“ bez nutnosti přesunů dat ve framebufferu.

2. Herní konzole Atari 5200 aneb pokus o navázání na úspěch legendy Atari 2600

První herní konzolí z roku 1982, s níž se v tomto seriálu seznámíme, je herní konzole nesoucí název Atari 5200. Již číselné označení této konzole napovídá, že se jedná o pokračovatele legendární konzole Atari 2600, ovšem vybavené plnohodnotným mikroprocesorem MOS 6502 schopným adresovat celých 64 kB paměti (RAM+ROM+hardwarové registry). Navíc byl tento mikroprocesor taktován hodinovou frekvencí 1,79 MHz, což je více, než u Atari 2600 a jejího mikroprocesoru MOS 6507 se zmenšenou šířkou adresové sběrnice. Ovšem zatímco se Atari 2600 stala zdaleka nejúspěšnější herní konzolí druhé generace s počtem prodaných kusů překračujících podle některých odhadů až 50 milionů, nelze totéž říci o Atari 5200, i když se z technologického hlediska jednalo o velmi zajímavé zařízení založené na vzájemně kooperujících čipech používaných jak v některých herních automatech, tak i (a to především) v sérii osmibitových domácích mikropočítačů Atari.

Obrázek 4: Jednou z úspěšných her určených pro herní konzoli Atari 5200 je i hra The Last Starfighter.

Jedním důvodem relativního komerčního neúspěchu herní konzole Atari 5200 byla nekompatibilita s původním zařízením Atari 2600, která se navíc nešťastně spojila s nevalnou kvalitou prvních her, které na Atari 5200 vznikly; většinou se totiž jednalo o pouhé upravené verze starších her, které ale nedokázaly potenciálním zákazníkům ukázat všechny možnosti nové herní konzole (popravdě řečeno se na některé triky přišlo až relativně nedávno). Navíc na trhu vznikla poněkud kuriózní situace, kdy firma Atari konkurovala sama sobě, protože současně prodávala tři typy zařízení určených především pro hraní – původní herní konzoli Atari 2600, novou herní konzoli Atari 5200 a taktéž ještě osmibitový domácí počítač Atari 400 („Candy“), který byl v reklamách prezentován jako zařízení vhodné především pro hry, na rozdíl od ve stejné době nabízeného počítače Atari 800 („Colleen“), jenž byl i přes prakticky stejnou konfiguraci prezentován jako plnohodnotný počítač (největším rozdílem mezi Atari 400 a Atari 800 byla jiná klávesnice a různě vyřešené možnosti připojování paměťových modulů).

Obrázek 5: Snímek ze hry The Last Starfighter.

K tomuto problému se navíc přidaly i problémy s vysokou cenou a navíc i se špatně vyřešenými joysticky, které sice byly ve své době převratnou novinkou (byly totiž analogové, navíc s vlastní klávesnicí a dvojicí nezávislých střílecích tlačítek), ale s jejich konstrukčním řešením to už bylo mnohem horší (špatné, resp. žádné centrování atd.). Po grafické a zvukové stránce se jednalo o jednu z nejlépe vybavených herních konzolí druhé generace, protože se o tvorbu grafiky starala dvojice čipů GTIA společně s ANTIC a o generování zvuků pak čip POKEY. Ani na operační paměti se tentokrát nešetřilo, protože RAM měla kapacitu celých šestnácti kilobajtů a kapacita paměťových modulů s hrami mohla dosahovat třiceti dvou kilobajtů, a to bez nutnosti používání přepínání paměťových banků. Ve zbylých šestnácti kilobajtech volného paměťového prostoru byl umístěn firmware o velikosti dvou kilobajtů, z nichž celý jeden kilobajt zabrala znaková sada, a byly zde taktéž mapovány hardwarové registry (mikroprocesor MOS 6502 měl jediný paměťový prostor, takže nepotřeboval těžkopádné instrukce typu IN/OUT, jako tomu bylo/je u mikroprocesorů firmy Intel).

Obrázek 6: Další snímek ze hry The Last Starfighter.

3. Projekty „Candy“ a „Colleen“

„Make the hardware a flexible platform for clever developers.“

Již v předchozí kapitole jsme se zmínili o osmibitových domácích počítačích Atari 400 a Atari 800. Tyto počítače vznikly jako reakce na to, že se na světě objevil nový důležitý fenomén – osmibitové domácí počítače – původně charakterizované stroji Commodore PET a především Apple II. Ovšem historie domácích počítačů Atari začala vlastně již v roce 1977, tj. v době vydání herní konzole Atari 2600, protože právě v tomto roce společnost Atari začala plánovat, že zhruba za tři roky (~1980) bude nutné tuto herní konzoli nahradit konzolí nové generace. Z tohoto důvodu začala práce na vylepšeném grafickém čipu CTIA (Color Television Interface Adaptor), jenž měl nahradit původní a v mnohých ohledech již nevyhovující čip TIA. Z čipu CTIA se později relativně malou úpravou vyvinul čip GTIA, o němž se zmíníme v dalších kapitolách. Čipy CTIA/GTIA jsou specializovány na práci se sprity, tj. s pohyblivými objekty o relativně malé velikost, které nachází své uplatnění především ve hrách.

Obrázek 7: Základní technické parametry první generace osmibitových mikroprocesorů firem Intel, Motorola a Zilog. V tomto grafu není uveden poslední „velký hráč“ na poli osmibitových CPU – MOS 6502, jehož parametry se podobají právě čipu MC6800.

Ovšem nároky kladené na grafické schopnosti domácích počítačů jsou odlišné (resp. větší), než je tomu u herních konzolí, a to především kvůli požadavku na zobrazení textů. Tento požadavek nemohly sprity zajistit (muselo by jich být použito několik desítek, což tehdejší HW neumožňoval), proto museli inženýři z firmy Atari navrhnout nový čip určený v první řadě pro práci v textovém režimu a v řadě druhé pak podporující bitmapové grafické režimy. Tento čip dostal název ANTIC a byl – což je velmi zajímavé – navržen tak, aby spolupracoval s čipem CTIA/GTIA, tj. osmibitové počítače Atari měly ve skutečnosti dva specializované čipy určené pro práci s grafikou. Právě na těchto čipech byly postaveny oba zmíněné počítače Atari 400 a Atari 800, z nichž se relativně malou úpravou hardware a velkou úpravou firmware stala herní konzole Atari 5200, která však nebyla kvůli některým (pravděpodobně úmyslným) změnám v mapě paměti zcela kompatibilní s oběma zmíněnými počítači – lze najít i názory, že tomu tak bylo z toho důvodu, aby nebylo snadné převádět hry z konzole na domácí počítače, čímž si (alespoň teoreticky) měla herní konzole Atari 5200 zachovat určitou exkluzivitu.

Obrázek 8: Další známá hra pro Atari 5200: Miner 2049er.

V následující tabulce je vypsána mapa paměti herní konzole Atari 5200. Oproti „plnohodnotným“ domácím osmibitovým počítačům Atari je tato mapa v mnoha ohledech odlišná – paměť ROM v OS má rozsah jen dva kilobajty namísto deseti kilobajtů, zcela chybí BASIC ROM, framebuffer byl přesunut do první čtvrtiny adresového rozsahu atd. Všechny adresy jsou vypsány v hexadecimální soustavě a používají proto prefix $ (jak je tomu zvykem v assemblerech pro MOS 6502) namísto dnes možná obvyklejšího „céčkového“ prefixu 0×:

Od (hex) Do (hex) Význam Poznámka
$0000 $3FFF RAM 16kB Stejné, jako na 16kB verzích osmibitových Atari
$4000 $BFFF ROM paměťového modulu  
$C000 $C0ff Registry čipu GTIA Na počítačích Atari se jedná o stránku $D0, ne $CO
$D400 $D5FF Registry čipu ANTIC Stejná stránka $D4, jako na osmibitových Atari
$E800 $E8FF Registry čipu POKEY Na počítačích Atari se jedná o stránku $D2
$F800 $FBFF Znaková sada (ROM) Stejná sada, jako na osmibitových Atari
$FC00 $FFFF OS (ROM) velké odlišnosti od 10kB OS

Obrázek 9: První úroveň hry Miner 2049er.

Úkolem operačního systému byla inicializace všech čipů, zobrazení známého loga společnosti Atari a následně inicializace paměťového modulu. Navíc se v OS ROM nacházely rutiny určené pro obsluhu přerušení a taktéž pro zajištění kopií hodnot hardwarových registrů čipů GTIA, ANTIC a POKEY do stínové RAM (podobná činnost probíhala i na domácích osmibitových počítačích Atari).

Užitečné odkazy:

  1. TRANSPORTING ATARI COMPUTER PROGRAMS TO THE ATARI 5200
    http://www.ata­rimuseum.com/vi­deogames/conso­les/5200/conv_to_5200­.html
  2. Atari A8 Games vs 5200 Games
    http://www.ata­riage.com/forum­s/topic/169528-atari-a8-games-vs-5200-games/
  3. ATARI 5200 SUPERSYSTEM FREQUENTLY ASKED QUESTIONS
    http://www.ata­rimuseum.com/faq­s/5200faq.html

Obrázek 10: Další hra pro Atari 5200: Gyrrus (kopie automatové hry).

4. Čipy CTIA a GTIA – pokračování tradice zahájené čipem TIA

Prvním čipem typickým pro mnoho elektronických zařízení firmy Atari byl čip nazvaný GTIA, neboli Graphics Television Interface Adaptor, popř. též George's Tele­vision Interface Adaptor podle jména svého tvůrce George McLeoda. Tento čip, jenž vznikl rozšířením možností původního čipu TIAAtari 2600, zajišťoval několik funkcí: generování signálů nesoucích informaci o barvách a světlosti (luminanci) pixelů, řízení a zobrazování spritů, řízení priority spritů a pozadí a taktéž detekce kolizí mezi sprity navzájem, popř. kolizí mezi sprity a pozadím. Navíc tento čip dokázal na pozadí zobrazovat bitmapu generovanou spolupracujícím čipem ANTIC, popř. tuto bitmapu mohl reinterpretovat takovým způsobem, že vznikly tři nové grafické režimy s horizontálním rozlišením sníženým na 80 pixelů, protože každý pixel byl představován čtveřicí bitů (jeden řádek má při použití standardních režimů ve framebufferu velikost 20 nebo 40 bajtů, v rozšířeném hracím poli pak maximálně 48 bajtů), ovšem s možností zobrazení až šestnácti barev či šestnácti úrovní jedné barvy.

„Good hardware-software tradeoffs make the product economically viable.“

Ve skutečnosti byly všechny tři nové grafické režimy podporované čipem GTIA založené na monochromatickém režimu čipu ANTIC číslo 8, který umožňoval na jednom řádku standardně zobrazit 320 pixelů (teoreticky bylo sice možné tyto tři režimy založit například i na textovém režimu, ovšem v praxi se tento způsob práce s grafikou příliš často nepoužíval). Čip GTIA vždy čtveřici sousedních pixelů sloučil a výsledné čtyři bity mu sloužily buď pro výběr barvy z barvové palety (k dispozici bylo devět barev z možných šestnácti – jedná se o celkem zbytečné omezení dané počtem barvových registrů), určení odstínu barvy (úroveň, tj. světlost byla v tomto případě konstantní), popř. k určení úrovně barvy, zatímco odstín byl konstantní (tímto způsobem bylo možné například pracovat s černobílými fotografiemi). Čip GTIA tedy ponechával značnou část práce, především časování, provádění takzvaného display-listu atd., přístup do paměti, na obvodu ANTIC, což se vlastně ani příliš neliší od principu práce čipu TIA.

Obrázek 11: Další snímek ze hry Gyrrus.

Čip GTIA byl řízen pomocí 32 registrů, z nichž všechny byly určeny pro zápis a některé taktéž pro čtení, tj. například pro zjišťování kolizí atd. Některé z těchto registrů jsou vypsány v následující tabulce:

Registr Režim Význam
COLPM0 W barva hráče číslo 0 a střely číslo 0
COLPM1 W barva hráče číslo 1 a střely číslo 1
COLPM2 W barva hráče číslo 2 a střely číslo 2
COLPM3 W barva hráče číslo 3 a střely číslo 3
COLPF0 W barva pro herní pole číslo 0
COLPF1 W barva pro herní pole číslo 1
COLPF2 W barva pro herní pole číslo 2
COLPF3 W barva pro herní pole číslo 3
COLBK W barva pozadí
PRIOR W řízení priority objektů a taktéž výběr grafického režimu
HPOSP0 W horizontální pozice hráče číslo 0
HPOSP1 W horizontální pozice hráče číslo 1
HPOSP2 W horizontální pozice hráče číslo 2
HPOSP3 W horizontální pozice hráče číslo 3
HPOSM0 W horizontální pozice střely číslo 0
HPOSM1 W horizontální pozice střely číslo 1
HPOSM2 W horizontální pozice střely číslo 2
HPOSM3 W horizontální pozice střely číslo 3
SIZEP0 W horizontální zvětšení hráče číslo 0 (1×, 2×, 4×)
SIZEP1 W horizontální zvětšení hráče číslo 1 (1×, 2×, 4×)
SIZEP2 W horizontální zvětšení hráče číslo 2 (1×, 2×, 4×)
SIZEP3 W horizontální zvětšení hráče číslo 3 (1×, 2×, 4×)
SIZEM W horizontální zvětšení všech střel (1×, 2×, 4×)
GRAFP0 W bitová data pro hráče číslo 0
GRAFP1 W bitová data pro hráče číslo 1
GRAFP2 W bitová data pro hráče číslo 2
GRAFP3 W bitová data pro hráče číslo 3
GRAFM W bitová data pro všechny střely
M0PF R kolizní registr mezi střelou číslo 0 a herním polem
M1PF R kolizní registr mezi střelou číslo 1 a herním polem
M2PF R kolizní registr mezi střelou číslo 2 a herním polem
M3PF R kolizní registr mezi střelou číslo 3 a herním polem
P0PF R kolizní registr mezi hráčem číslo 0 a herním polem
P1PF R kolizní registr mezi hráčem číslo 1 a herním polem
P2PF R kolizní registr mezi hráčem číslo 2 a herním polem
P3PF R kolizní registr mezi hráčem číslo 3 a herním polem
M0PL R kolizní registr mezi střelou číslo 0 a hráčem
M1PL R kolizní registr mezi střelou číslo 1 a hráčem
M2PL R kolizní registr mezi střelou číslo 2 a hráčem
M3PL R kolizní registr mezi střelou číslo 3 a hráčem
P0PL R kolizní registr mezi hráčem číslo 0 a dalším hráčem
P1PL R kolizní registr mezi hráčem číslo 1 a dalším hráčem
P2PL R kolizní registr mezi hráčem číslo 2 a dalším hráčem
P3PL R kolizní registr mezi hráčem číslo 3 a dalším hráčem

Obrázek 12: Další snímek ze hry Gyrrus.

Užitečné odkazy:

  1. Atari TIA
    http://www.ata­rihq.com/danb/ti­a.shtml
  2. TIA Playfield
    http://www.ata­rihq.com/danb/TI­A/Playfield.shtml
  3. Atari Inc.:
    ANTIC C012296 (NTSC) Revision D
    Atari Incorporated, Sunnyvale CA, 1982
  4. Atari Inc.:
    GTIA C014805 (NTSC) Revision A
    Atari Incorporated, Sunnyvale CA, 1982
pc6904

Obrázek 13: Tok dat mezi operační pamětí, mikroprocesorem a čipy ANTIC i GTIA při generování video signálu.

5. Práce se sprity podporovaná čipy CTIA a GTIA

Čip GTIA kromě zavedení tří nových grafických režimů umožňoval vykreslit čtyři sprity s rozlišením maximálně 8×256 pixelů (popř. 8×128 pixelů) a další čtyři sprity s rozlišením 2×256 pixelů, které bylo možno spojit do jednoho (pátého) většího spritu s rozlišením 8×256 pixelů. Sprity široké 8 pixelů se v literatuře nazývají hráči (players), úzké dvoupixelové sprity střely (missiles). Sprity byly jednobarevné, více barev bylo možno dosáhnout logickými operacemi nad překrývajícími se sprity (počítače Commodore C64 naproti tomu nabízely i sprity v režimu multicolor). Každý sprite mohl pomocí jedné instrukce měnit svoji horizontální velikost i horizontální pozici, přičemž polohy spritů byly navzájem nezávislé (horizontální pozice se interně zjišťovala pomocí čítače a komparátoru, což bylo řešení odlišné od technologie použité v čipu TIA, kde byl namísto čítače využíván linear feedback shift register). Vertikální pozice spritů se měnila blokovým přesunem bitmapy spritu v operační paměti. Bylo také možné definovat priority vykreslování spritů vůči sobě navzájem i vůči pozadí, tj. zda se má sprite vykreslovat nad herním polem (popř. jiným spritem) či se naopak pod některými barvami skrývat.

Obrázek 14: Hra Adventure 2 pro počítače Atari 5200. Jedná se o hry z 21. století vytvořenou v domácích podmínkách, která se snaží zachovat prvky z původní hry Adventure pro Atari 2600 (viz tvar hráče – čtverečku).

Kromě toho, že se dala měnit priorita jednotlivých spritů, bylo také možné detekovat kolizi spritu s jiným spritem popř. s nějakou barvou hracího pole. To stejné samozřejmě platí i pro střely, u nichž byla možná detekce kolize s hráčem či kolize s hracím polem. Při kolizi (do úvahy se samozřejmě braly pouze viditelné pixely spritu, tj. pixely nastavené na logickou jedničku) se nastavil příslušný bit ve stavových registrech, odkud bylo možné kdykoli poté zjistit, zda ke kolizi došlo či nikoli. Díky této funkcionalitě bylo možné velmi snadno otestovat například náraz hráče do stěny, zásah hráče střelou atd. Vzhledem k tomu, že sprity byly pouze jednobarevné, museli se vícebarevní hráči sestavovat z několika spritů. Omezení počtu spritů naproti tomu nebylo kritické, neboť jeden sprite mohl být ve skutečnosti použitý pro zobrazení většího množství objektů ve scéně – jediným omezením bylo to, že tyto objekty nesměly ležet na stejném obrazovém řádku.

Obrázek 15: Screenshot ze hry Adventure 2.

Pro porovnání shodných vlastností a rozdílů mezi čipy TIA a GTIA se podívejme na následující dvojici tabulek. V první tabulce jsou vypsány grafické objekty, s nimiž dokázal pracovat čip TIA použitý v herní konzoli Atari 2600:

# Typ objektu Orig.název Objem paměti Šířka reprezentovaná jedním bitem
1 Pozadí Background 0 bitů ×
2 Hrací plocha Playground 20 bitů 4× základní šířka pixelu
3 Míč Ball 1 bit 1×, 2×, 4×, 8× šířka pixelu
4 Hráč 0 Player 0 8 bitů 1×, 2×, 4× šířka pixelu
5 Střela 0 Missile 0 1 bit 1×, 2×, 4×, 8× šířka pixelu
6 Hráč 1 Player 1 8 bitů 1×, 2×, 4× šířka pixelu
7 Střela 1 Missile 1 1 bit 1×, 2×, 4×, 8× šířka pixelu

Obrázek 16: Další screenshot ze hry Adventure 2.

Ve druhé tabulce jsou vypsány grafické objekty, s nimiž dokázal pracovat čip GTIA použitý v herní konzoli Atari 5200 i v prakticky všech osmibitových domácích počítačích Atari (pokud tedy nepočítáme prvních zhruba 100 000 počítačů Atari 400 a Atari 800 s čipy CTIA:

# Typ objektu Orig.název Objem paměti Šířka reprezentovaná jedním bitem
1 Pozadí Background 0 bitů barva v COLBK, přes celou šířku řádku
2 Hrací plocha Playground x bitů generováno v ANTIC
3 Hráč 0 Player 0 8 bitů×128/256 1×, 2×, 4× šířka pixelu
4 Střela 0 Missile 0 2 bity×128/256 1×, 2×, 4×, 8× šířka pixelu
5 Hráč 1 Player 1 8 bitů×128/256 1×, 2×, 4× šířka pixelu
6 Střela 1 Missile 1 2 bity×128/256 1×, 2×, 4×, 8× šířka pixelu
7 Hráč 2 Player 2 8 bitů×128/256 1×, 2×, 4× šířka pixelu
8 Střela 2 Missile 2 2 bity×128/256 1×, 2×, 4×, 8× šířka pixelu
9 Hráč 3 Player 3 8 bitů×128/256 1×, 2×, 4× šířka pixelu
10 Střela 3 Missile 3 2 bity×128/256 1×, 2×, 4×, 8× šířka pixelu
pc6907

Obrázek 17: Kombinace grafických režimů ve hře International Karate.

6. Čip ANTIC (Alpha-Numeric Television Interface Circuit)

Pravděpodobně nejzajímavějším integrovaným obvodem použitým jak v herní konzoli Atari 5200, tak i ve všech osmibitových domácích počítačích Atari, je čip ANTIC (Alpha-Numeric Television Interface Circuit). Tento obvod byl totiž ve skutečnosti relativně samostatně pracujícím grafickým procesorem (GPU – i když dnes dostalo toto označení poněkud odlišný význam), jelikož ho bylo možné řídit vlastní sadou instrukcí a taktéž dokázal obsluhovat přístup do operační paměti bez zásahu mikroprocesoru (ten byl mezitím zastaven externím signálem). Instrukce pro čip ANTIC byly uložené v operační paměti, stejně jako vlastní obrazová paměť (framebuffer). Umístění obou datových bloků se mohlo měnit, což znamená, že se každý programátor mohl sám rozhodnout, jak má vypadat organizace paměti počítače či herní konzole (na mnoha jiných osmibitových i šestnáctibitových počítačích byl paměťový rozsah obrazové paměti neměnný, což v některých případech znamenalo určité omezení, například při vertikálním posunu obrazu).

pc6901

Obrázek 18: Standardní textový režim osmibitových počítačů Atari, ve kterém se na jednom textovém řádku zobrazovalo 40 znaků a počet textových řádků dosahoval hodnoty 24. Technicky se jednalo o monochromatický režim, protože barva pozadí a popředí měla vždy stejný odstín (standardně bleděmodrý), lišila se pouze úroveň (intenzita) barev. Každý znak byl zobrazen v rastru 8×8 pixelů, znaky byly programově měnitelné (jejich bitové mapy mohly být umístěny do paměti RAM). Pro textový kurzor, zde zobrazený pod slovem READY, existovala přímá podpora v čipu ANTIC.

Na herní konzoli Atari 5200 a taktéž na všech osmibitových počítačích Atari se výsledný obraz posílaný na televizor či monitor skládal ze dvou částí. První část obrazu (kterou dnes známe pod pojmem framebuffer) se nazývala pozadí (background), na němž bylo umístěno hrací pole (playfield). Druhá část obrazu byla složena ze čtyř spritů o šířce osm pixelů doplněných čtyřmi střelami (ve skutečnosti šlo taktéž o sprity, ale s šířkou dvou pixelů). Hlavní úloha čipu ANTIC spočívala ve vytváření pozadí na základě „programu“ nazývaného display-list, pomocí něhož bylo možné pro každý vykreslovaný obrazový řádek (scanline) nastavit jeden ze čtrnácti textových či grafických režimů, které se navzájem lišily svým rozlišením (velikostí pixelů v horizontálním i vertikálním směru), počtem současně zobrazitelných barev (2, 4 nebo 5) a samozřejmě též velikostí alokované obrazové paměti pro celý framebuffer.

pc6902

Obrázek 19: Poměrně jednoduchým způsobem je možné standardní textový režim upravit tak, aby byl každý řádek zobrazený odlišnou barvou – postačilo na začátku každého řádku (při návratu elektronového paprsku, kdy není prováděno vykreslování) změnit hodnotu jednoho barvového registru. Tento trik se na osmibitových počítačích Atari používal v mnoha podobách, asi nejznámější je logo firmy Atari vyvedené ve všech 128 dostupných barvových odstínech.

Samozřejmě platí, že čím menší byly rozměry pixelů na obrazovém řádku a čím větší počet barev bylo možné na jednom řádku zobrazit, tím větší část operační paměti bylo nutné pro každý obrazový řádek naalokovat. Ve standardních grafických režimech se počet bajtů na jeden obrazový řádek pohyboval v rozmezí 10 až 40, v textových režimech pak v rozmezí 20 až 40 bajtů. Některé podporované režimy byly znakové (na řádku byly umístěny znaky různé velikosti, v některých případech bylo možné pracovat i s větším množstvím barev), další režimy byly čistě bitmapové, přičemž struktura grafické paměti byla v bitmapových režimech velmi jednoduchá: pro každý pixel byl alokován jeden nebo dva bity a jednotlivé obrazové řádky byly uloženy za sebou bez použití prokládání (tuto zdánlivou samozřejmost zdůrazňuji především proto, že ještě na „moderním“ IBM PC s grafickou kartou CGA se museli programátoři potýkat s prokládáním obrazových řádků).

Obrázek 20: Logo firmy Atari a základní menu herní konzole Atari 5200 (součást firmware).

7. Display-listy a další vlastnosti čipu ANTIC

V instrukčním souboru čipu ANTIC se nacházely také příznakové bity, pomocí kterých bylo pro každý řádek možné povolit přerušení DLI (Display-List Interrupt), které bylo automaticky vyvoláváno při horizontálním zpětném běhu elektronového paprsku na televizní obrazovce. Taktéž bylo možné pro každý obrazový řádek povolit jemný posuv o maximálně osm pixelů doleva či doprava, čímž bylo umožněno pouze s využitím několika instrukcí mikroprocesoru realizovat jednoduchý posun obrazovky (scrolling) nebo pouze posun její části. Typickým příkladem hry, která jemný scrolling ve velké míře používala, je Boulder Dash. Tato hra je zajímavá také tím, že se pro zobrazování herní scény používal speciální textový režim s polovičním horizontálním rozlišením a možností v jednom znaku rozlišit pět barev (tento textový režim byl mezi tvůrci her poměrně oblíbený, další hrou, která ho používala, je například Blue Max). Přednost použití textového režimu oproti režimu bitmapovému spočívá ve snadném a rychlém vykreslení celé scény – posun hráče, kamenu nebo drahokamu je proveden změnou jednoho či dvou bajtů namísto nutnosti vykreslení celé bitmapy.

pc6905

Obrázek 21: Hra Boulder Dash ve své verzi pro osmibitové počítače Atari do značné míry využívala možností poskytovaných čipem ANTIC i jeho display-listu.

ict ve školství 24

8. Grafické režimy čipu ANTIC

V následující tabulce jsou pro ilustraci některých možností čipu ANTIC uvedeny vybrané základní režimy, které je možné nastavit pro každý obrazový řádek zvlášť. V prvním sloupci je číslo (kód) instrukce pro čip ANTIC, ve sloupci druhém pak číslo, které se předává příkazu GRAPHICSBasicu při nastavování textového či grafického režimu (Basic ovšem nebyl standardní součástí konzole Atari 5200). Povšimněte si, že textový režim číslo 3 není přímo z Basicu přístupný. Jedná se o režim s vyššími znaky, který lze s výhodou využít například v textových editorech používajících font s „nabodeníčky“. Pokud je tedy požadováno, aby se zobrazil textový režim s 40 znaky na řádek a 24 textovými řádky, musí display-list řídicí čip ANTIC obsahovat mj. i 24 instrukcí s kódem 2. Ve skutečnosti je však display-list poněkud složitější, protože obsahuje i instrukci pro vykreslení horního jednobarevného okraje, instrukci pro nastavení začátku obrazové paměti (adresu prvního znaku na obrazovce) a na samotném konci display-listu taktéž instrukci pro skok na jeho začátek.

Instrukce ANTIC GRAPHICS x Režim Rozlišení Počet barev Poznámka
2 0 textový 40 znaků na řádek 2 standardní textový režim
3 × textový 40 znaků na řádek 2 textový režim s vyššími znaky
4 12 textový 40 znaků na řádek 5 výška znaku 8 pixelů, 4 barvy/znak
5 13 textový 40 znaků na řádek 5 výška znaku 16 pixelů, 4 barvy/znak
6 1 textový 20 znaků na řádek 5 výška znaku 8 pixelů
7 2 textový 20 znaků na řádek 5 výška znaku 16 pixelů
8 3 grafický 40 pixelů na řádek 4 neznám žádnou aplikaci, která by tento režim používala
9 4 grafický 80 pixelů na řádek 2
A 5 grafický 80 pixelů na řádek 4
B 6 grafický 160 pixelů na řádek 2 výška pixelu dva obrazové řádky, vertikální rozlišení cca 96 pixelů
C 14 grafický 160 pixelů na řádek 2 výška pixelu jeden obrazový řádek, vertikální rozlišení cca 192 pixelů
D 7 grafický 160 pixelů na řádek 4 výška pixelu dva obrazové řádky, vertikální rozlišení cca 96 pixelů
E 15 grafický 160 pixelů na řádek 4 výška pixelu jeden obrazový řádek, vertikální rozlišení cca 192 pixelů
F 8 grafický 320 pixelů na řádek 2 nejvyšší možné standardní rozlišení
pc6910

Obrázek 22: Hra Amaroute běžící v monochromatickém režimu s nejvyšším rozlišením 320×192 pixelů. Povšimněte si korektního skrývání vzdálených objektů; pravděpodobně se používá optimalizovaná podoba malířova algoritmu.

9. Odkazy na Internetu

  1. 3 Generations of Game Machine Architecture
    http://www.ata­riarchives.or­g/dev/CGEXPO99­.html
  2. Atari 5200
    http://www.ata­riage.com/sof­tware_search.html?Sys­temID=5200
  3. Atari 5200 Hardware and Accessories
    http://www.ata­riage.com/5200/ar­chives/hardwa­re.html
  4. Atari 5200 Screenshots
    http://www.ata­riage.com/sys­tem_items.html?Sys­temID=5200&Item­TypeID=SCREEN­SHOT
  5. History of video game consoles (second generation): Wikipedia
    http://en.wiki­pedia.org/wiki/His­tory_of_video_ga­me_consoles_(se­cond_generati­on)
  6. Atari 5200: Wikipedia
    http://en.wiki­pedia.org/wiki/A­tari_5200
  7. 6502 – the first RISC µP
    http://ericcle­ver.com/6500/
  8. The Video Game Console Library: Fairchild Channel F
    http://www.vi­deogameconsole­library.com/pg70-fairchild.htm
  9. Jerry Lawson
    http://www.vin­tage.org/2006/ma­in/bio.php?id=1586
  10. Fairchild Semiconductor F8
    http://www.nyx­.net/~lturner/pu­blic_html/F8_in­s.html
  11. Fairchild Channel F 101: A Beginner's Guide
    http://www.rac­ketboy.com/re­tro/fairchild-channel-f-101-a-beginners-guide
  12. Lowell O. Turner: This old microprocessor
    http://www.nyx­.net/~lturner/pu­blic_html/OldCPU­.html
  13. VC&G Interview: Jerry Lawson, Black Video Game Pioneer
    http://www.vin­tagecomputing­.com/index.php/ar­chives/545
  14. Fairchild Channel F
    http://en.wiki­pedia.org/wiki/Fa­irchild_Channel_F
  15. The Great CPU List Part II: Fairchild F8, Register windows
    http://jbayko­.sasktelwebsi­te.net/cpu2.html#Sec2Par­t2
  16. Fairchild F8
    http://en.wiki­pedia.org/wiki/Fa­irchild_F8
  17. 6+ Nostalgic Emulators For Vintage Video Gaming Enthusiasts (1972–1980)
    http://www.ma­keuseof.com/tag/6-nostalgic-emulators-vintage-video-gaming-enthusiasts-19721980/
  18. Channel F
    http://www.gi­antbomb.com/chan­nel-f/60–66/
  19. MESS Wiki
    http://www.mes­s.org/
  20. O2 Homepage
    http://www.the-nextlevel.com/o­dyssey2/
  21. Magnavox Odyssey2 (1978), Philips Videopac G7000 / C52 (1979)
    http://www.mes­s.org/sysinfo:o­dyssey2
  22. The Video Game Critic's Odyssey 2 Reviews
    http://videoga­mecritic.net/od­d.htm
  23. Computer Closet Collection: Magnavox Odyssey2
    http://www.com­putercloset.or­g/MagnavoxOdys­sey2.htm
  24. PHILIPS Videopac C52
    http://old-computers.com/mu­seum/computer­.asp?c=1060
  25. O2 Tech. Manual V.1.1 (PDF dokument)
    http://www.ata­rihq.com/danb/fi­les/o2doc.pdf
  26. Magnavox Odyssey2
    http://www.game-machines.com/con­soles/odyssey2­.php
  27. Magnavox Odyssey2 (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/O­dyssey2
  28. Magnavox Odyssey2 Games (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Lis­t_of_Videopac_ga­mes
  29. The FPGA Videopac Project
    http://www.fpga­arcade.com/vi­deopac.htm
  30. Last minute addition: Odyssey 2 (P824×) VDC chip!
    http://ploguechip­sounds.blogspot­.com/2009/10/last-minute-addition-odyssey-2-p824×.html
  31. Space Invaders (Killer List of Video Games)
    http://www.arcade-museum.com/ga­me_detail.php?ga­me_id=9662
  32. Spy Hunter (Killer List of Video Games)
    http://www.arcade-museum.com/ga­me_detail.php?ga­me_id=9742
  33. Spy Hunter (Wikipedia)
    http://en.wiki­pedia.org/wiki/Spy_Hun­ter
  34. DP Interviews … Bob Whitehead
    http://www.di­gitpress.com/li­brary/intervi­ews/interview_bob_whi­tehead.html
  35. Atari Age: Video Chess
    http://www.ata­riage.com/sof­tware_page.html?Sof­twareID=1429
  36. Moby Games: Video Chess
    http://www.mo­bygames.com/ga­me/video-chess
  37. Wikipedia: Video Chess
    http://en.wiki­pedia.org/wiki/Vi­deo_Chess
  38. The Video Game Critic's Atari 2600 Reviews A
    http://videoga­mecritic.net/2600a­a.htm
  39. Classic gaming: Atari 2600 – Bezerk
    http://classic­gaming.gamespy­.com/View.php?vi­ew=GameMuseum­.Detail&id=13
  40. Classic gaming: Atari 2600 – E.T. the Extra-Terrestrial
    http://classic­gaming.gamespy­.com/View.php?vi­ew=GameMuseum­.Detail&id=290
  41. The Video Game Critic's Reviews With „ET“ Icon
    http://videoga­mecritic.net/i­con_ET.htm
  42. Atari 2600 ROMs
    http://www.ata­riage.com/sys­tem_items.html?Sys­temID=2600&Item­TypeID=ROM
  43. Atari 2600 ROMs – #, A through E (582K)
    http://www.ata­riage.com/2600/e­mulation/RomPac­ks/Atari2600_A-E.zip
  44. Atari 2600 ROMs – F through J (298K)
    http://www.ata­riage.com/2600/e­mulation/RomPac­ks/Atari2600_F-J.zip
  45. Atari 2600 ROMs – K through P (432K)
    http://www.ata­riage.com/2600/e­mulation/RomPac­ks/Atari2600_K-P.zip
  46. Atari 2600 ROMs – Q through S (539K)
    http://www.ata­riage.com/2600/e­mulation/RomPac­ks/Atari2600_Q-S.zip
  47. Atari 2600 ROMs – T through Z (260K)
    http://www.ata­riage.com/2600/e­mulation/RomPac­ks/Atari2600_T-Z.zip
  48. Top 10 Best-Selling Atari 2600 Games
    http://retro.ig­n.com/articles/903/903­024p1.html
  49. Top 100 Games Hits (past week) Atari 2600 VCS
    http://www.ata­rimania.com/top-atari-atari-2600-vcs-_G2_7.html
  50. Visitor Top 25 Total Downloads
    http://www.ata­rimania.com/pge­mainsoft.awp?ty­pe=G&system=2
  51. Atari 2600 FAQ
    http://www.ata­riage.com/2600/fa­q/index.html
  52. Atari 2600 Consoles and Clones
    http://www.ata­riage.com/2600/ar­chives/consoles­.html
  53. Atari 2600 Programming (odkazy)
    http://www.ata­riage.com/2600/pr­ogramming/index­.html
  54. Design case history: the Atari Video Computer System
    http://www.ata­riage.com/2600/ar­chives/design_ca­se.html?Syste­mID=2600
  55. Atari 2600 (Wikipedia)
    http://en.wiki­pedia.org/wiki/A­tari_2600
  56. Schémata zapojení Atari 2600 (překresleno)
    http://www.ata­riage.com/2600/ar­chives/schema­tics_pal/index­.html
  57. Schémata zapojení Atari 2600 (skeny původních schémat)
    http://www.vin­tagegamingandmo­re.com/atari-2600-schematics
  58. Adventure for the Atari 2600 Video Game Console by Warren Robinett
    http://www.wa­rrenrobinett.com/ad­venture/index­.html
  59. Mapa hry Adventure
    http://www.wa­rrenrobinett.com/ad­venture/adv-map1.gif
  60. Jay Glenn Miner Interview Pasadena, September 1992
    http://www.ra­bayjr.com/jay_mi­ner.htm
  61. Magnavox and the Odyssey systems
    http://www.pong-story.com/odys­sey_other.htm
  62. Magnavox Odyssey First home video game console
    http://www.pong-story.com/odys­sey.htm
  63. The Odyssey in France
    http://www.pong-story.com/ody­pubfr.htm
  64. Magnavox Odyssey at old-computers.org
    http://www.old-computers.com/mu­seum/photos.as­p?t=1&c=883&st=2
  65. Magnavox Odyssey Series (Wikipedia)
    http://en.wiki­pedia.org/wiki/Mag­navox_Odyssey_Se­ries
  66. MAGNAVOX ODYSSEY (1971)
    http://balduin­.wordpress.com/2007/10­/15/magnavox-odyssey-1971/
  67. Magnavox Odyssey FAQ
    http://www.pong-story.com/o1faq­.txt
  68. Richard Hewison – Level 9: Past masters of the adventure game
    http://www.sin­clairlair.co.uk/le­vel9.htm
  69. Level 9 Computing
    http://en.wiki­pedia.org/wiki/Le­vel9
  70. Worm in Paradise – Level 9 (CZ recenze)
    http://sincla­irzxspectrum.cz/sof­tware/recenze/wor­m_in_paradise­.php
  71. World of Spectrum: Jewels of Darkness
    http://www.wor­ldofspectrum.or­g/infoseekid.cgi?id=0011­293
  72. World of Spectrum: Hry společnosti Level 9
    http://www.wor­ldofspectrum.or­g/infoseekpub­.cgi?regexp=^Le­vel+9+Computin­g+Ltd$&loadpic­s=1
  73. Adventure International
    http://en.wiki­pedia.org/wiki/Ad­venture_Inter­national
  74. Stránky o firmě Infocom a jejích hrách
    http://www.csd­.uwo.ca/Infocom/
  75. atari.fandal.cz
    http://atari.fan­dal.cz/games.php
  76. Zork I: The Great Underground Empire (Moby games)
    http://www.mo­bygames.com/ga­me/dos/zork-the-great-underground-empire/review­s/reviewerId,4465/
  77. Zork I (Wikipedia)
    http://en.wiki­pedia.org/wiki/Zor­k_I
  78. Zork I Walkthrough
    http://www.ga­mefaqs.com/pc/5644­46-zork-i/faqs
  79. Zork I: The Great Underground Empire
    http://www.csd­.uwo.ca/Infocom/zor­k1.html
  80. Zork II: The Wizard of Frobozz (Moby games)
    http://www.mo­bygames.com/ga­me/dos/zork-ii-the-wizard-of-frobozz
  81. Zork II (Wikipedia)
    http://en.wiki­pedia.org/wiki/Zor­k_II
  82. Zork II: The Wizard of Frobozz
    http://www.csd­.uwo.ca/Infocom/zor­k2.html
  83. Zork III: The Dungeon Master (Moby games)
    http://www.mo­bygames.com/ga­me/zork-iii-the-dungeon-master
  84. Zork III (Wikipedia)
    http://en.wiki­pedia.org/wiki/Zor­k_III
  85. SAGA – Scott Adams Grand Adventure
    http://www.msa­dams.com/index­.htm
  86. Player 4 Stage 1: The Productivity Eaters
    http://www.the­doteaters.com/p4_sta­ge1.php
  87. Textovky.cz – Textovkářův ráj
    http://www.tex­tovky.cz/
  88. Scott Adams (game designer, Wikipedia)
    http://en.wiki­pedia.org/wiki/Scot­t_Adams_(game_de­signer)
  89. Interview with Scott Adams (Adventure Classic Gaming)
    http://www.ad­ventureclassic­gaming.com/in­dex.php/site/in­terviews/129/
  90. Scott Adams game interpreter
    http://www.ifar­chive.org/inde­xes/if-archiveXscott-adamsXinterpre­ters.html
  91. Ohlédnutí za herní historií: Textovky
    http://www.slu­necnice.cz/ti­py/ohlednuti-za-herni-historii-textovky/
  92. BASIC Computer Games (published 1978) – Hammurabi
    http://atariar­chives.org/ba­sicgames/show­page.php?page=78
  93. Hamurabi – zdrojový kód v BASICu
    http://www.dun­nington.u-net.com/public/ba­sicgames/HMRA­BI
  94. Hamurabi (Wikipedia)
    http://en.wiki­pedia.org/wiki/Ha­murabi
  95. Hammurabi naprogramovaný v JavaScriptu
    http://www.ham­murabigame.com/ham­murabi-game.php
  96. Empire – hratelné demo (připojení přes telnet)
    http://198.212­.189.111/
  97. Empire Classic (video game)
    http://en.wiki­pedia.org/wiki/Em­pire_Classic_(com­puter_game)
  98. Wolfpack empire (moderní verze hry Empire)
    http://www.wol­fpackempire.com/de­fault.htm
  99. FOCAL (programming language, Wikipedia)
    http://en.wiki­pedia.org/wiki/FO­CAL_(programmin­g_language)
  100. Forty Years of Lunar Lander
    http://techno­logizer.com/2009/07­/19/lunar-lander/
  101. Category: Timelines of video games (Wikipedia)
    http://en.wiki­pedia.org/wiki/Ca­tegory:Timeli­nes_of_video_ga­mes
  102. Dennis M. Ritchie – home page
    http://cm.bell-labs.com/who/dmr­/index.html
  103. Space Travel: Exploring the solar system and the PDP-7
    http://cm.bell-labs.com/who/dmr­/spacetravel.html
  104. Yes, A video game contributed to Unix Development
    http://people­.fas.harvard.e­du/~lib215/re­ference/histo­ry/spacetravel­.html
  105. Space Travel (video game)
    http://en.wiki­pedia.org/wiki/Spa­ce_Travel_(vi­deo_game)
  106. Computer and Video Game History
    http://inventor­s.about.com/li­brary/inventor­s/blcomputer_vi­deogames.htm
  107. OXO (Wikipedia)
    http://en.wiki­pedia.org/wiki/O­XO
  108. Tennis for Two (Wikipedia)
    http://en.wiki­pedia.org/wiki/Ten­nis_for_Two
  109. Who really invented the video game?
    http://www.ata­rimagazines.com/cva/v1n­1/inventedgames­.php
  110. The Video Game Revolution
    http://www.pbs­.org/kcts/vide­ogamerevoluti­on/history/ti­meline.html
  111. The First Video Game?
    http://www.bnl­.gov/bnlweb/his­tory/higinbot­ham.asp
  112. První část schématu analogového „počítače“ se hrou Tennis for Two:
    http://www.bnl­.gov/bnlweb/his­tory/images/Vi­deogameSchema­tic1.jpg
  113. Druhá část schématu analogového „počítače“ se hrou Tennis for Two:
    http://www.bnl­.gov/bnlweb/his­tory/images/Vi­deogameSchema­tic2.jpg
  114. MUD (stránka jednoho z tvůrců hry)
    http://www.mud­.co.uk/richar­d/mud.htm
  115. MUD1 (Wikipedia)
    http://en.wiki­pedia.org/wiki/MUD1
  116. Text-based game (Wikipedia)
    http://en.wiki­pedia.org/wiki/Text-based_game
  117. Text mode games
    http://www.tex­tmodegames.com/
  118. Why Text-Mode Games are Cool
    http://www.tex­tmodegames.com/ar­ticles/why-text-mode-games-are-cool.html
  119. The Dragon Ate My Homework
    http://www.wi­red.com/wired/ar­chive/1.03/mud­s.ht

Autor článku

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