31. 8. 2020

DOOM - 144p/10 fps


Oficiálna, licencovaná verzia DOOM 1 na asi najpomalšom možnom hernom HW: Super Nintendo Entertainment System (tiež nazývaná Super NES, SNES) má 8/16 bit CPU 65C816 na 3.58 MHz CPU s 128 KB RAM, grafickú časť obsluhovalo PPU s 64 KB VRAM. Najčastejšie herné rozlíšenie je 256x240 pixel v 256 farbách a zvuk malo na starosti 8 kanálové SONY SPC700 s 16-bit DSP a vlastnou 64 KB audio RAM. Išlo samozrejme primárne o 2D konzolu, trochu anemické CPU a relatívne pomalšie DMA na tak veľa farieb, takže konkurenčný Megadrive s lepším a o dosť rýchlejším CPU a s menším počtom farieb zvládal "tu istú" hru často rýchlejšie a vo vyššom rozlíšení. SNES mal aj niečo ako pseudo 3D grafický "mode 7" išlo však "len" o afinnú transformáciu 2D plochy do 3D priestoru, šikovné ale nevhodné pre skutočné priestorové kalkulácie, nie to ešte rýchle textúrovanie povrchov. Nintendo si tieto skutočnosti a budúcnosť hernej grafiky plne uvedomovalo a pre SNES hľadalo hardvérove a softvérové riešenie. A našlo ich na západe.

SNES Mode 7 grafika - pôsobivé ale pre potreby DOOM hier nepoužiteľné

Argonaut Games sa postarali o ten HW upgrejd. Argonautov založil britský tínejdžer na výške Jeremy Elliott "Jez" San alias J.San alias Jason preto ten “starogrécky” názov firmy. Veľmi šikovný chlapec, ktorý predal mnoho kópií 3D strielačky Star Glider 1 a 2 na Amige a Atari ST /aj pre ZX Spectrum, samozrejme/ a CIC ochranu Gameboy/SNES kartridžov prelomil za desať minút nahliadnutím do kódu ich hier a použitím pár centového rezistoru a kondenzátora. Počas výstavy CES 1990 machrovali s 3D grafikou na starom, čiernobielom GameBoy /8 bit Z80 CPU práve ako to ZX Spectrum/ a keď poskočíme v čase aj technologickými 3D demonštrátormi pre NES/SNES. Načasovanie nemohlo byť lepšie, lebo v tom čase nintendo v tajnosti pracovalo na "3D" hrách založených na Mode 7 grafike – napríklad Pilotwings a Shigeru Miyamoto nebol nadšený z toho, že SNES nemá dostatočný výkon na 3D modely lietajúcich strojov ťažších ako vzduch, chcel filmové švenkovanie kamery okolo objektov.

Nintendo bola v tých časoch, ešte viac ako dnes, nepreniknuteľná korporátna pevnosť, arogancia a pýcha, ktorá sa s barbarským západom veľmi nebavila, mysleli si, že na to nie sú odkázaní. Pozvanie argonautov do japonska teda bolo veľkým prekvapením. Dvaja ich členovia Jez /23r./ a Dylan /18r., 3D kód/ teda leteli do Tokia a tam sa stretli s najvyššími za jedným stolom / Miyamoto, Gunpei Yokoi, Takehiro Izushi, Yasuhiro Minagawa, Genyo Takeda/. Japonci ukázali rozpracované tajné projekty, vrátane Pilotwings a spýtali sa či tu je nejaká možnosť to nakódovať lepšie. Dostali promptne negatívnu odpoveď, ale briti ponúkli aj riešenie - keď dostanú jeden milión dolárov urobia im čip do kartridža, ktorý to zvládne. Prachy dostali. Vznikla akceleračná Super FX architekúra s vlastnými na mieru ušitými inštrukciami a Miyamoto sa vytešoval nad 3D modelmi a fly-by kamerou v plne polygónovej hre Star Fox.

Druhá generácia Super FX /RISC na 21.4 MHz namiesto 10.74 a viac RAM/ poháňala hry ako Super Mario World2: Yoshi’s Island, Winter Gold a DOOM. Ak ste teda otvorili DOOM SNES kartridž našli ste tam 16 bitové RISC s 512KB framebufferom, kde zapisoval svoje dáta, "iba" 2 MB ROM s kódom hry a jej asetmi /a DOOM vážne potreboval raz toľko/. Obal, farbu plastu DOOM katridža bola tiež unikátna – červená. Z celého cirka 800 kusového katalógu SNES hier bolo dovolené iba trom mať inú farbu ako sivú /DOOM a Maximum Carnage boli červené, Killer Instinct bol čierny/.

Máme teda HW /dopredu poviem, že pre potreby DOOM enginu stále katastrofálne nedostatočne výkonný na úrovni i286 na 20Mhz s mizerným GPU/ a potrebujeme ešte geniálneho kódera. Randy Linden. Určite ho poznáte - pre Amigu uvaril Dragon's Lair /nemožné konverzia "laser disc" arcade kabinetu/ a je to on, čo v čistom asm kóde naprogramoval PS1 emulátor Bleem! pre PC a neskôr Bleemcast! pre SEGA Dreamcast. Je to pán prográmtor. Obdivoval hru DOOM, kolosálny posun v grafike a hernej mechanike a rozhodol sa vo voľnom čase, ako hobby projekt, dostať túto hru na SNES pomocou cracknutého kartridžu s hrou Star Fox /SFX2 čip/.


A dokázal to úplne sám, na zelenej lúke, z nuly a bez internetu. Od kompletných vývojárských nástrojov pre SFX čip až po vlastný klon DOOM engine. Presne tak, lebo nemal prístup ku zdrojovému kódu ID softu, takže si to nakódoval po svojom v čistom asembleri /PC DOOM engine je céčku/ a nazval to Reality engine. Nemá prakticky nič spoločné s carmackom okrem toho, že číta dáta z toho istého WAD súboru. Obmedzenia zo strany SNESu boli brutálne a 2 megabajtová ROM bola zaplnená do posledného bajtu vitálne dôležitými asetmi /vošla sa tam aj podpora pre myš a Xband modem, teda online MP/. Čo sa nevošlo, letelo preč, preto niekoľko tých chýbajúcich levelov, zvukov, animácii enemákov a každý bubák kričí ako Imp. Duch hry, jej hrateľnost však ostala plne zachovaná a slušný predajný úspech sa nakoniec dostavil.

Grafika. Extra kapitola ku technickej stránke. SNES s akcelerátom transformácie geometrie stále nemá dostatočný fillrate pre plnenie obrazu pixelami alebo textúrami. Z tohto dôvodu je preto strop a podlaha miestností DOOM SNES verzie zobrazená iba ako farebný gradient, ditherovaný prechod. A muselo sa ísť dole aj s rozlíšením. Z natívných 256x224 sa pomocou čierneho rámčeka dokola mínus pevný status bar zišlo na 216x144 pixelov grafiky v hernom okne. A pretože pixely po vertikále boli duplikované tak vo finále SNES Reality "doom" engine renderuje v hre DOOM iba 108x144 pixelov na priemerných 10 fps !! asi ako ta i386/25Mhz, keď sa to dá podľa YT odhadnúť.

A teraz si svorne poplačme aká krivda sa nám stala, keď budeme musieť hrať niektoré PS5 hry v mrzkom rozlíšení 2560 × 1440/60fps s RT efektami. Randy Linden je fanatik. Je to človek, čo si zohnal amigu, urobil na nej C64 emulátor, vyriešil pripojenie C64 floppy mechaniky. Potom išiel na výstavu a pred prezidentom Commodore spustil tu amigu, spustil ten emulátor, vložil do C64 floppy mechaniky C64 hru a nabootoval to a na tej amige aj hral. Ohromení boli všetci. Podobné sadnutie si na zadok nám už všetkým pri moderných hrách roky chýba, bez ohľadu na fenomenálny prebytok výkonu či už pri PS4 alebo pri nadchádzajúcih next gen konzolách. Dnes Randy s vlastnou start-up firmičkou robí nejaké malé veci pre android /hej, vyzerá to ako Quake engine, čo už asi nikoho neprekvapí/. Nový HW vzdialený už len niekoľko týždňov teda máme nespochybniteľne v tip-top kondicií, čaká sa na geniálnych kóderov a herných dizajnérov.