23. 12. 2008

GPU retro test

Šírka adresovej zbernice určuje maximálnu veľkosť operačnej pamäte, ktorú je schopný procesor využiť. Pravdivá veta, ktorá zásadným spôsobom determinovala grafické možnosti 8 bitových počítačov. Ich mikroprocesory triedy MOS 6502/10, alebo Zilog Z80 majú osembitovú dátovú a sesťnásťbitovú adresovú zbernicu schopnú adresovať práve tých magických 64 kilo pamäte /2 na 16/. Aby ste mali predstavu koľko spapá taká primitívna grafika, použijem jeden z posledných osembitov - Sam Coupé. V natívnom 16 farebnom móde /4 bity na pixel ala Atari ST/, a v rozlíšení 256x192 pixlov potrebovala 24 kilový video framebuffer. Tá istá veľkosť pamäte stačilo na vyššie rozlíšenie 512×192, ale už iba v 4 farbách. Aby to bolo úplne jasné, na štandardnú 320x200x16 farieb si pripravte presne 32KB Vram. Zvážte preto svoje možnosti, zabudnite na double buffering. Niekde totiž musíte nasúkať ešte aj BIOS, a samotný kód programu. Z tohto dôvodu preto osembity riešili svoju grafickú stránku v štýle jedna 8 kilová stránka by mala stačiť.

Atari. V duchu hneď vidím údesne hranatú grafiku /160 x 192 bodov/, ale aj veľa farieb. Teraz už iste chápete, že pri veľmi malej videopamäti sú rozlíšenie a farby, ako dve spojené nádoby. Je tiež nutné pripomenúť, že vzhľadom na zadupanie Atarička do zeme konkurentami C64 a ZX48 sa nikdy jeho skutočne schopnosti nerozvinuli. Kdekoľvek nájdete cifry ako maximálne rozlíšenie 384x240 /kvôli kompatibilite s istými typmi obrazoviek znížené na 320 x 192 x 2 farby/. Až 16 farieb z palety 256 na obrazovke. Nič z toho však v skutočnosti nie je podstatné. Sila grafického čipsetu v skutočnosti leží v dvoch špeciálnych čipoch. ANTIC /Alpha-Numeric Television Interface Circuit/, a GTIA /Graphics Television Interface Adapter/. Extrémne flexibilné, a výkonné šváby na generovanie rastrovej grafiky, kontroly sprajtov, riadenie jasu farieb. ANTIC umožnoval podobné kúsky, ako neskôr všemocná Amiga. Napríklad mať na ploche teoreticky aj všetkých 14 grafických módov. Každý s vlastným rozlíšením, počtom farieb a veľkosťou alokovanej pamäte. Išlo o čip s vlastnou inštrukčnou sadou, skutočné GPU a staral sa hlavne o pozadie-background scény. Zabudovanie relatívne drahého DMA /Direct Memory Access/, umožnilo nepriamo použiť lacné CPU na nízkom kmitočte. Až Antic svoju prácu urobil, posunul ju ku GTIA, ktorý sa postaral o pohyblivé časti obrazu a farby. Hovorím hlavne o hárdverovej podpore pre 8 sprajtov /CPU opäť ďakuje/. Štandardne išlo o 4 sprajty typu players /max. 8 x 256 pixlov/ a 4 sprajty typu missiles /2 x 256/. Zo štyroch úzkych striel bolo možné urobiť jedného širokého hráča. Jasné, dúfam. Sprajty bolo štandardne jednofarebné /dalo sa to softvérovo obísť/, riadenie ich pohybu však bolo veľmi prepracované. Obrazom, alebou jeho časťou ste mohli hýbať opäť s HW podporou v štýle coarse scrolling /po 8 pixloch/ alebo fine scrolling /jemne po jednom pixly/. Záver: Dokonale nevyužitý potenciál, vyvážená herná mašina.

C64. Drahé prasa. Z úvodných 1000 USD to spadla počas cenovej vojny až na dve stovky, Atari ste však mohli zohnať iba za jednu. Za tú cenu by to teda mal byť namakaný stroj. Hodíme preto reč o bájnej VIC II /Video Interface Controller/ na 17.7 MHz. VIC II vlastne spája ataričkárské dve grafické čipy do jedného. V niečom je lepší, v niečom horší. Dokopy však o trošku vedie. Pár pikošiek. Dokáže adresovať iba 16 kilo pamäte, je tu DMA podpora, celú hlavnú 64 kilovú pamäť vidí ako štyri malé banky. Ma podobne ako atari obrovskú kopu grafických módov, ktoré sa hrajú s rozlíšením na úkor farieb, a naopak. Štandardne používa 16 farieb, a podobné "atari" kockaté rozlíšenie. Má 8 hárdvérových sprajtov, tie však môžu byť viacfarebné !! Za istú cenu - rozlíšenie 24x21 pixlov v monochromatickom režime, alebo 12x21 v multi-colore. Zo 47 jeho 8 bitových riadacich registrov je 34 určené pre ovládanie sprajtov. Čo hovorí za všetko. Inak sa nielen tu masovo používa technika sprite multiplexora, ktorá vám umožní použiť na obrazovke viac ako hárdvérovo do kameňa zapísaný počet sprajtov. Technika stará ako svet, pozná ju aj staručká Atari 2600. Špinavé finty ako FLI /Flexible Line Interpretation/, zmena farebných atribútov v bloku 8x1 respektíve 4x1 pixlov za účelom peknučkých statických "amiga" obrázkov si pozrite veľmi názorne zdes. Záver: Dokonale využitý potenciál, v globále graficky trochu lepší stroj ako Atari.

ZX Spectrum. Omyl prírody. Chúďa úbohé. Žiaden dedikovaný videoprocesor. O vykreslenie obrazu sa staral všeúčelový zákaznický obvod ULA /Uncommitted Logic Array/. DMA, HW sprajty, HW skroling budete hľadať márne. Jediný grafický mód: 256 x 192 pixlov. Paradoxne ide o veľmi jemné rozlíšenie, vyššie ako to v ktorom beží 95% Atari, C64 hier. Pevná paleta 15 farieb + blikanie , ktorú môžte použiť celú. Rýchlo sa však vrhnime na patologicky známy problém speccy grafiky. Atribútová kolízia. O čo vlastne ide ? Ako som už spomenul vyššie, musíme sa vojsť do 8 kilovej banky, jediné dostupné rozlíšenie je DOSŤ vysoké, a používame kopu farieb. Spočítajme si to - základný frame bez farieb 256x192/8 = 6144 bajtov. Veľa . Inžinieri na spektre to vyriešili tak, že je možne určiť farebné atribúty iba pre celý blok 8 x 8 pixlov a v ňom môžu byť naraz iba 2 farby. Takže tu máme 32 x 24 blokov = 768 bajtov. Pripočítame tých 6144 a sme v ažurite s 6912 bajtami. Skvelé pre statický obraz, obrovské problémy v hrách. Typický príklad. Zelená kytka na čiernom pozadí, zatiaľ žiaden problém. Zo strany sa však blíži biely sprajt. Hoplá, tri farby v bloku 8 x 8 pixlov, ale speccy nezvládne. A na svete je hnus /sledujte prilbu panduľáka, a ešte jedna hlava/. Speccy progiši však neskladali zbrane a velmi poctivým prepočitaním obrazovky /grafiku určovali hranice atribútov/, a inými technikami sa to dalo minimalizovať na nepostrehnuteľnú úroveň. Takto to však robili iba tí nejlepší. Určite sa pýtate ako je to s farebnosťou sprajtov, ich počtom, kvalitou skrolingu. Odpoveď je jednoduchá - žiadne hárdvérové limity !! Všetko záleží na kvalite váško kódu, môžte mať na obrazovke aj 20 viacfarebných sprajtov, alebo 6 paralaxne skrolujúcich rovín. Ak na to máte. A hlavná podmienka, pretože všetko vlastne beží pod priamom kontrolou CPU, narozdiel od tých prvých dvoch mašín. Ak by nemal gumák CPU bežiace na brutálnych 3.5Mhz /Atari XL 1.79 MHz, C64 1Mhz/ tak by sme vlastne ani nemali o čom teraz hovoriť. Je na rane, že sila spektra bola hlavne vo výpočetne náročných 3D hrách. Záver: v rukách majstra skvelé výsledky, nejde však o stroj navrhnutý pre hry.

Iba malá bodka na záver. Už som to raz v jednej retro debate spomenul. Slová vývojára: "Neviem čo je väčší zázrak. Fantastický Turrican na C64ke, alebo tá istá hra nepatrne horšia na spektre bez akejkoľvek HW podpory pre grafiku." Ja sa pripojím s otrepaným faktom, speccy /trochu drevená emulácia/verzia R-type /hra extra náročná na hafo farieb, sprajtov, skroling, pravá arcade bomba/ je proste nádherná, a veselo môže tej na C64 konkurovať /všimnite si chýbajúce chŕlenie štiav a blikajúci chvost záverečného bossa - fušérský sprite multiplexor, a neanimované sprajty v kruhu smrti v čase 2:50 !!/.