Domů / Technologie roku 1997
Technologie roku 1997
DOS, 640×480 v 256 barvách, Sound Blaster a CD-ROM, který za sekundu přečte tolik, kolik dnes zabere jedna fotka z mobilu. Jak se dala v roce 1997 udělat taková hra.
Jak vypadal počítač, na kterém se v létě 1997 hrálo Next Space? Pro dnešního čtenáře je to malý zázrak, že ta hra vůbec fungovala. Pro lidi, kteří ji dělali, to byl každodenní boj s pamětí, rychlostí a čitelností CD.
Co je ze souborů a co je kontext. Čísla o hře (12 MB RAM, režim VESA, rychlost streamování) pocházejí ze souborů hry a z naší analýzy programu. Pasáže označené Kontext doby jsou obecné historické poznámky, ne fakta o hře.
DOS a 32bitový režim
Hra se spouští z DOSu, tedy z operačního systému, který v roce 1997 už pomalu odcházel, ale hry se na něm ještě dlouho vyráběly. Důvod byl praktický: DOS dával programu téměř všechno, co počítač měl, bez zásahů Windows.
Problém spočívá v paměti. DOS původně rozumí jen prvním 640 kilobajtům RAM. Hra, která potřebuje dvanáct megabajtů, se do nich nevejde. Řešením je takzvaný DOS extender: malý program, který přepne procesor do 32bitového chráněného režimu a dovolí hře používat celou paměť. Next Space k tomu používá DOS/4GW, který je na CD přiložen.
Hra se tedy skládá ze tří částí:
- NEXT.EXE, malý spouštěč (10 KB, kompilátor Borland C++). Spouští hru ve smyčce, takže když si hráč v menu zvolí novou hru, hra se jednoduše ukončí a spustí znovu.
- NEXT.DAT, vlastní hra (284 až 289 KB), 32bitový program napsaný ve Watcom C/C++. Watcom byl v té době oblíbený kompilátor pro 32bitové hry v DOSu. Kontext doby: psal se v něm například i Doom.
- SETUP.EXE, instalátor, který zapíše nastavení do souboru next.cfg.
Dvanáct megabajtů
Požadavek na minimálně 12 MB paměti uvádí soubor PROBLEMY.TXT, který tvůrci přibalili na CD. Kdo měl v počítači jen osm, měl prý smůlu: „hra NEXT SPACE pod DOSem vyžaduje minimálně 12 MB operační paměti“. Radili ji spustit z Windows 95 a v nastavení aplikací DOS přepnout paměť DPMI z automatického režimu na 12 MB.
K čemu hra paměť potřebuje? Největší položky:
| Co | Velikost | Poznámka |
|---|---|---|
| Obraz na obrazovce | 307 200 B | 640 × 480 bodů, 1 bajt na bod |
| Pozadí místnosti | 307 200 B | uloženo zvlášť, aby se dalo obnovovat |
| Tabulka barev pro míchání | 65 536 B | jedna na místnost, 256 × 256 hodnot |
| Jeden velký pracovní blok | 465 500 B | mapy hloubky, zón a chůze a pomocná pole |
| Největší místnost na CD | 2 194 531 B | soubor ROOM24.DAT (v komprimované podobě) |
Pro srovnání: dnešní telefon má paměť zhruba tisíckrát větší a obyčejná fotka z něj zabere víc než celý tento pracovní blok.
Obraz: 640 × 480 a 256 barev
Hra používá grafický režim VESA 0x101. Slovy: 640 bodů na šířku, 480 na výšku a 256 barev najednou. Těch 256 barev se vybírá z palety, kterou si každá místnost nese s sebou. Autoři tak mohli každou místnost namalovat vlastními barvami, ale hra musela při každé změně místnosti přebarvit celou obrazovku.
Prvních 56 barev je přitom ve všech místnostech stejných. Používají je ikony inventáře, kurzory a postavy. Zbývajících 200 barev patří vždy právě té místnosti, ve které se Frank nachází.
Místnost zabírá 640 × 400 bodů. Spodních 80 řádků je pruh s inventářem a textem. Animace jsou o něco nižší, 640 × 300 bodů.
Další detail: paměť grafické karty se v té době nedala adresovat celá najednou. Program ji musel kreslit přes okno velké 64 KB a přepínat mezi pěti „bankami“. Hra však nepřekreslovala celou obrazovku: v každém snímku obnovila jen ty čtyřbodové úseky, které se změnily.
Zvuk: Sound Blaster
Zvukovou kartou v 90. letech byl téměř vždy Sound Blaster nebo jeho klon. Nastavení bylo pro běžného uživatele trápením: bylo třeba znát adresu karty, číslo přerušení (IRQ) a kanál DMA. Soubor PROBLEMY.TXT radí, kde to najít ve Windows 95: My Computer → Properties → Device Manager. A varuje: hra nefunguje s přerušením 10 (hudba a animace občas zamrznou). Je třeba použít 5 nebo 7.
Hra má vlastní ovladač zvukové karty (kromě Sound Blasteru obsahuje i podporu karty Gravis UltraSound) a softwarový mixér pro šest zvuků najednou při frekvenci 22 050 Hz. To znamená, že na jedné obrazovce lze najednou přehrát například hlas, zvukový efekt a hudbu.
Zvuk je v 8bitovém formátu, mono. Hudba je navíc zkomprimována metodou ADPCM na 4 bity (viz Co bylo jedinečné).
CD-ROM: půl gigabajtu a rychlost
Next Space vyšla na CD, které obsahuje 504 MiB dat (česká verze) nebo 511,2 MiB (slovenská), z toho:
- 190 MB 3D animace (25 souborů),
- 225 MB (česká verze) až 231 MB (slovenská) dabing,
- 30 MB hudba (20 skladeb),
- 56 MB údaje o místnostech, postavách a skriptech (DATA).
Dnes je půl gigabajtu drobnost. Kontext doby: v roce 1997 měl běžný pevný disk 1 až 3 GB a CD s kapacitou kolem 650 MB bylo to největší, co se dalo levně vyrobit. Velká data (dabing, hudbu a animace) hra čte za běhu přímo z CD, které si najde podle jmenovky disku NEXTSPAC.E. Podle tabulky v recenzi časopisu Score stačí na pevném disku 32 MB.
Tady se nabízí otázka rychlosti. Rychlost mechaniky se tehdy označovala násobky: 1× znamenalo 150 KB za sekundu, 2× 300 KB, 4× 600 KB a tak dále. Kontext doby: v roce 1997 byly běžné mechaniky 4× až 8×.
Kolik dat potřebovaly 3D animace? Spočítali jsme to: všech 25 souborů má 199 343 401 bajtů a trvá dohromady 505 sekund, což je v průměru 395 KB za sekundu (včetně zvuku). To je víc, než zvládne mechanika 2×. Pro plynulé přehrávání je tedy potřeba mechanika alespoň 3×, pohodlně 4×. Nejnáročnější je animace červí díry: 24 MB za 53 sekund, tedy 455 KB za sekundu.
Proč o všem rozhodovalo streamování
Do 12 MB paměti se nedá nahrát 190 MB animací a 225 MB dabingu. Hra proto všechno, co je velké, čte za běhu, v malých kouscích, přesně ve chvíli, kdy to potřebuje.
- Hlas. Každá replika se najde podle čísla a přečte se z CD při přehrávání. Hlas potřebuje jen 22 KB za sekundu, což je zlomek toho, co dnes zvládne obyčejný disk.
- Hudba. Čte se po blocích po 8 KB a dekóduje se za pochodu.
- Videa. Přehrávač čte soubor jako souvislý proud a po každém snímku dostane kousek zvuku. Obraz a zvuk jsou proto vždy v souladu.
- Rotace. V programu je také funkce, která z CD občas přečte malý blok, zřejmě aby mechanika neusnula a nemusela se při další replice znovu roztáčet.
Procesor a čas
Soubory hry neříkají, jaký procesor potřebovala, ale dobové časopisy ji shodně řadí do třídy 486 (viz níže). Kontext doby: typický herní počítač v létě 1997 měl procesor Pentium s taktem 100 až 200 MHz.
Hra běží přesně 20 snímků za sekundu. Řídí ji časovač s frekvencí 100 Hz: pět tiků znamená jeden snímek. Hra se neřídí rychlostí procesoru, ale časovačem, takže běží v původním tempu.
Co hra vyžadovala podle dobových časopisů
Peter Hegyi si minimální konfiguraci z obalu nepamatuje, proto jsme ji dohledali v dobových recenzích, které má archiv OldGames.sk:
| Zdroj | Procesor | Paměť | Mechanika | Jiné |
|---|---|---|---|---|
| Level 30 (červenec 1997) | 486DX2 | 8 MB | 2× CD-ROM | DOS, 1 CD |
| Riki 28 (srpen 1997), „minimální konfigurace“ | 486DX2/66 | 12 MB | CD-ROM | |
| Score 47 (listopad 1997) | 486/100 MHz | 8 (12) MB | pevný disk 32 MB, Win95 / DOS |
Tabulky se mírně liší. Soubor PROBLEMY.TXT na CD je co do paměti jednoznačný: pod DOSem je třeba 12 MB (8 MB stačí jen v okně Windows 95 po nastavení DPMI). Hra potřebovala grafiku SVGA s 256 barvami, jak píše i Riki. Výpočet přenosové rychlosti animací v textu výše ukazuje, že mechanika 2× je na hraně. Časopis Level uvádí jako minimum 2×, pohodlnější by bylo 4×.
Cena v době vydání: v reklamě na hru v časopise Riki 28 je uvedena doporučená maloobchodní cena 799 Sk. Hra se prodávala v obchodech a dala se objednat i telefonicky u Magic Systems a Maxtechu.
Windows 95 a nové grafické karty
Hra vyšla v době, kdy uživatelé přecházeli z DOSu na Windows 95, a to se v souboru PROBLEMY.TXT odráží. Autoři popisují šest problémů, na které může hráč narazit:
- nefunguje automatická detekce zvukové karty,
- karta je nastavena na přerušení 10 a hra zamrzá,
- hra nejde spustit na 8 MB paměti,
- ovládání hry po stisknutí tlačítka zamrzne (chodba před bytem androidek, výtah),
- 3D animace blikají (nové karty jako Matrox Mystique mají jinak napsaný VESA BIOS, řešení: SciTech Display Doctor ze složky UTILS),
- myš občas uteče do levého dolního rohu (řešení: jiný ovladač myši, například GMOUSE).
U čtvrtého problému autoři přiznávají chybu a slibují: „Na tuto chybu by měl vyjít v blízké době patch.“ O tři měsíce později, v září 1997, vyšla česká verze, ve které autoři opravili 14 místností. Zamrzání z tohoto čtvrtého problému (ovládání u výtahu v místnosti 36) ale podle našich dat neopravili: oprava se týkala jiného zamrzání, v místnosti 37 (dvojklik na zavřené dveře). Chybu u výtahu opravili až my. Záplaty ke hře, jak potvrdil Peter Hegyi, opravdu vycházely v herních časopisech.
Kdo na tom pracoval
Jak vzpomíná Peter Hegyi, celé jádro hry napsal Michal Hegyi. Michal Weis a Michal Horka napsali různé rutiny, mezi nimi přehrávač videa na úrovni strojového kódu, který uměl přehrávat animace z CD rychlostí 20 snímků za sekundu (viz Magic Systems). Jak se strojový kód hry dostal do dnešního prohlížeče, se dočtete na stránce Hra online.
Ukázky hudby ze hry (4bitová ADPCM, dekódovaná)
