Proč se Amiga bojí DOOMa?

Jan Petkov

Taky vás nejen poslední dobou přepadá otázka proč AMIGA oproti PC stále ztrácí a ztrácí. Myslím, že daleko od pravdy nebyl jeden můj přítel, když prohlásil, že Amigu přemohl DOOM. Vidíte ten paradox, jeden z nejlepších herních počítačů našeho století odstavila právě počítačová hra. A ještě, aby toho nebylo málo, tak hra vytvořená pro takový počítač, před jehož monochromatickým monitorem zezelenal nejeden úředník.

Na základě této skutečnosti se zkusme dostat o trochu blíže pravdě. Myslím, že se nespletu, když prohlásím, že takovou škodu těžko napáchá jediná hra, ale spíš určitá skupina her stejného ražení. Poodhalíme roušku jejich společného tajemství. Všechny nebo alespoň většina z nich je velmi působivá a okusíte-li jejich kouzlo jen na okamžik, propustí vaše bolavé oči až po několika hodinovém maratónu, kdy vám naštěstí a k vaší velké zlosti vypli elektřinu.
Jsou přitažlivé, protože jsou realistické, realistické jsou, protože se podobají našemu světu co do grafického zpracování, co do prostoru, ve kterém se odehrávají a co do ovládání, které má velmi blízko k manipulaci s člověkem.
Na mysl mi vytanula další otázka. V čem je tedy tak velký problém, s čím se Amiga neumí poprat, vždyť 3D her už jsme zažili a jak dobrých a jak rychlých? A máme to; kamenem úrazu a pro rozvoj Amiga her kamenem smrtelným je právě realistická grafika, což byl vlastně jediný nový, ale převratný prvek, který hra DOOM přinesla.
Dříve než se pustíte do programování vlastního DOOMa, pokusím se vám vysvětlit rozdíl mezi grafikou Amigy a PC klonu. PC má od začátku k dispozici tzv. chunky grafiku. Jde o to, že jeden bod na obrazovce odpovídá 1 bytu v paměti. 1 byte v paměti změníte velmi rychle, je to jedna z nejrychlejších operací. Naproti tomu Amiga disponuje grafikou bitplánovou, kdy se bod na obrazovce skládá pomocí grafického obvodu z několika bytů v paměti (není to úplně přesně řečeno, ale pro náš výklad to postačuje).
Proč tvůrci Amigy sáhli na první pohled k tak nešikovné variantě? Důvodů je hned několik. Bitplánová grafika umožňuje disponovat najednou s velkými bloky dat, to je taky jeden z důvodů, proč jsme si mohli zahrát tolik krásně plynulých stříleček. Bitplánů nemusí být aktivní ten nejvyšší možný počet takže jste si mohli i na počítačích s tak pomalou sběrnicí, jako měla A500, zvolit přiměřený počet barev. Všichni víme, jak se i A1200 zapotí, navolíte-li 256 barev v HiResu, což je dnes ve světě počítačové techniky více méně nižší standard.
Bohužel realistické zobrazení 3D objektů, tzv. texture mapping, vyžaduje rychlý přístup k 1 bodu obrazu, což je pro bitplánovou grafiku facka jako od Heleny Růžičkové.
Přesto přese všechno neplatí výrok jednoho z tvůrců hry DOOM, že si o takové hře mohou nechat zdát i majitelé Amigy 4000. I přes svůj bitplánový handicap si slušnou DOOMovku zahrajete už na Amize s procesorem MC68030 na padesáti. Jak je možné, že Amiga s procesorem, který snad může konkurovat Intelu80386, zvládne tak slušnou DOOMovku? Odpověď je jednoduchá: díky šikovnosti svých coderů! (Programátorské špičky, bohatá základna shareware programů a operační systém, to jsou v dnešní době největší pozitiva Amigy.) Jedním s největších problémů, se kterým se museli tvůrci DOOM klonu na Amize poprat, je co nejrychlejší simulace chunky screenu. V zásadě existují dva přístupy k řešení:
1) Simulace chunky módu pomocí copperu (copper je jeden z grafických koprocesorů Amigy). Jak je to možné? Vysvětlení následuje. V zásadě nám jde o to, abychom dokázali přistupovat k 1 bodu obrazovky jedním zápisem do paměti. Připomeneme si strukturu copper instrukce CMOVE pro přesun 1 wordu do zákaznického registru:
„DC.W registr,hodnota“. Pak nám dejme tomu 20 těchto instrukcí za sebou měnících barvu pozadí dokáže vytvořit pseudo chunky displej a to dokonce s vypnutými bitplány! Bohužel nepatří copper k nejrychlejším obvodům a k provedení jedné instrukce CMOVE potřebuje 8 pixelů LoResové grafiky. Výsledkem našich 20 instrukcí bude řádek 1 pixel vysoký a 160 pixelů široký. Jeden pseudo pixel má rozměry: 1 řádek na 8 sloupců. Tedy vcelku nic moc, ale ve starších demech můžeme shlédnout spoustu zdařilých efektů využívajících tohoto módu. Má dvě velké přednosti: svou rychlost a možnost použít až 4096 barev. Na detailní obraz je to ovšem trochu málo, co teď?
Tak rychle se pseudo chunky obrazovky nevzdáme a trochu zapojíme mozkové závity... šrum, šrum... pokud zkombinujeme copper a bitplány dostaneme další ze zajímavých módů (mimo jiné byl použit i ve hře Alien Breed 3D).
Mód pracuje následovně: copper necháme měnit barvu podobně jako v předešlém případě s jediným rozdílem, že nebudeme měnit pouze barvu pozadí, ale postupně všech barvových registrů. Bitplány zapojíme tak, že si nakreslíme obrázek s 1 pixelovými svislými proužky, kde první proužek je v barvě 0, další v barvě 1 a tak postupně až k barvě 31. Už vám svítá? Copper prostě nahodí pro každý řádek novou paletu a tím máme hotový chunky displej s body o šířce 1 pixel! A zase vám musím zchladit hlavu. Určitě vás napadlo, že na obrázku 32 pixelů širokém toho asi moc nezobrazíte a máte úplnou pravdu. Co vám ale brání, když máte AGA mašinky, aby byl obraz široký až 256 pixelů? Co? Zase šnek copper. Pod/e mých testů (a tvůrcové Alien Breedu 3D na to přišli taky) nezvládne copper naplnit více jak 50 barvových registrů během jednoho řádku. Tady je místo pro kompromis, vytvoříte si bod o velikostí 2x2 pixely, čímž získáme 2 řádky pro copper (tedy 100 barev) a velikost displeje 200 pixelů na šířku (výškově neomezeně). A přesně takový obraz vidíte v Alien Breedu 3D.
2) Druhou metodou zobrazení chunky displeje je prosté vytvoření si náhradního prostoru v paměti, který používáte chunky stylem a ten po každém naplnění převedete speciální „chunky to planar“ rutinou do bitplánového obrazu. Svého času rozpoutal tento problém přímo mánii mezi amigisty na síti a pořádali se konference jen na toto téma. Výsledkem je sada rychlejších či pomalejších anebo úplně nepochopitelných rutin uskutečňujících tento převod. Tyto rutiny se nezastaví před ničím, berou si na pomoc i dětské počitadlo, magii, blitter nevyjímaje. Kdo jednou spatřil toto dílo a snažil se tomu přijít alespoň na jeden z kloubů, ten ví o čem mluvím. Takto vytvořený chunky displej má už všechny charakteristiky klasického PC obrazu: 256 barev, velikost bodu shodnou s pixelem, možnost full screenu. Uvádí se, že takový Amiga chunky obraz má rychlost 12.5% pravého chunky obrazu, tzn. že čas k převodu není zanedbatelný a pro pravý požitek z celoplošného obrazu je vyžadován procesor MC68040 (hráči Alien Breeda 3D II mi to asi jen potvrdí).
Na závěr dnešního povídání si uvedeme malou gameskografii DOOMovek, od těch prvních a nejjednodušších až po dnešní a zítřejší skvosty (jako je Alien Breed 3DII). Pokud mne paměť neklame, tak toto šílenství odstartovala hra od ID softu nazvaná „Wolfenstein 3D“. Obsahovala pouze jednopodlažní scény, pravoúhlé stěny a strop s podlahou nebyly pokryty texturou. Tuším, že hned po ní následoval raketový nástup DOOMa. Já se ještě mezitím zmíním o hře GLOOM presentované na Amize, která je vhodným mezičlánkem. Najdeme v ní navíc šikmé stěny, podlahu a strop obarveny texturou, stále se ovšem jedná o jednopodlažní systém. Lepší realistický dojem získáme přidáním více horizontálních rovin, schody, patra,... prostě jako v DOOMovi. Od té doby nepřišlo (a ani pravděpodobně nepřijde) nic převratného. Dort se zdobí jen okrasou a třešničkami (světelné efekty, pohledy ve vertikálním směru, apod.) Jsem velmi rád, že se mezi kupou DOOMovek vyjímá čestný prapor třímající Alien Breed 3D II.
Ovšem, amigisté, neztrácejte hlavu, dobrou hru tvoří především dobrá myšlenka a šikovný nápad, vždyť většina herních skvostů vyšla právě z našich kruhů, kde je takový přístup samozřejmostí!



Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.

Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing