Next SpacePocta Magic Systems

Domov / Technológia roku 1997

Technológia roku 1997

DOS, 640×480 v 256 farbách, Sound Blaster a CD-ROM, ktorý za sekundu prečíta toľko, koľko dnes jedna fotka z mobilu. Ako sa dala v roku 1997 urobiť takáto hra.

Ako vyzeral počítač, na ktorom sa v lete 1997 hralo Next Space? Pre dnešného čitateľa je to malý zázrak, že tá hra vôbec fungovala. Pre ľudí, ktorí ju robili, to bol každodenný boj s pamäťou, rýchlosťou a čitateľnosťou CD.

Čo je zo súborov a čo je kontext. Čísla o hre (12 MB RAM, VESA režim, rýchlosť streamovania) pochádzajú zo súborov hry a z našej analýzy programu. Pasáže označené Kontext doby sú všeobecné historické poznámky, nie fakty o hre.

DOS a 32-bitový režim

Hra sa spúšťa z DOSu, teda z operačného systému, ktorý v roku 1997 už pomaly odchádzal, ale hry sa na ňom ešte dlho vyrábali. Dôvod bol praktický: DOS dával programu takmer všetko, čo počítač mal, bez zásahov Windows.

Problém spočíva v pamäti. DOS pôvodne rozumie len prvým 640 kilobajtom RAM. Hra, ktorá potrebuje dvanásť megabajtov, sa do nich nezmestí. Riešením je takzvaný DOS extender: malý program, ktorý prepne procesor do 32-bitového, chráneného režimu a dovolí hre používať celú pamäť. Next Space používa na to DOS/4GW, ktorý je priložený na CD.

Hra sa teda skladá z troch častí:

  • NEXT.EXE, malý spúšťač (10 KB, kompilátor Borland C++). Spúšťa hru v slučke, takže keď si hráč v menu zvolí novú hru, hra sa jednoducho ukončí a spustí znova.
  • NEXT.DAT, vlastná hra (284 až 289 KB), 32-bitový program v Watcom C/C++. Watcom bol v tom čase obľúbený kompilátor pre 32-bitové hry v DOSe. Kontext doby: písal sa v ňom napríklad aj Doom.
  • SETUP.EXE, inštalátor, ktorý zapíše nastavenia do súboru next.cfg.

Dvanásť megabajtov

Minimálne 12 MB pamäte hra vyžaduje v súbore PROBLEMY.TXT, ktorý tvorcovia pribalili na CD. Kto mal v počítači len osem, mal vraj smolu: „hra NEXT SPACE pod DOSom vyžaduje minimálne 12 MB operačnej pamäti“. Radili spustiť ju z Windows 95 a v nastavení DOS aplikácií prepnúť DPMI pamäť z automatického režimu na 12 MB.

Na čo hra pamäť potrebuje? Najväčšie položky:

ČoVeľkosťPoznámka
Obraz na obrazovke307 200 B640 × 480 bodov, 1 bajt na bod
Pozadie miestnosti307 200 Buložené osobitne, aby sa dalo obnovovať
Tabuľka farieb pre miešanie65 536 Bjedna na miestnosť, 256 × 256 hodnôt
Jeden veľký pracovný blok465 500 Bmapy hĺbky, zón a chôdze a pomocné polia
Najväčšia miestnosť na CD2 194 531 Bsúbor ROOM24.DAT (v komprimovanej podobe)

Pre porovnanie: dnešný telefón má pamäť približne tisíckrát väčšiu a obyčajná fotka z neho zaberá viac než celý tento pracovný blok.

Obraz: 640 × 480 a 256 farieb

Hra používa grafický režim VESA 0x101. Slovami: 640 bodov na šírku, 480 na výšku a 256 farieb naraz. Tých 256 farieb sa vyberá z palety, ktorú si každá miestnosť nesie so sebou. Autori tak mohli každú miestnosť namaľovať vlastnými farbami, ale hra si musela pri každej zmene miestnosti prefarbiť celú obrazovku.

Prvých 56 farieb je pritom vo všetkých miestnostiach rovnakých. Používajú ich ikony inventára, kurzory a postavy. Zvyšných 200 farieb patrí vždy práve tej miestnosti, v ktorej sa Frank nachádza.

Miestnosť zaberá 640 × 400 bodov. Spodných 80 riadkov je pruh s inventárom a textom. Animácie sú o niečo nižšie, 640 × 300 bodov.

Ďalší detail: pamäť grafickej karty sa v tom čase nedala adresovať celá naraz. Program ju musel kresliť cez okno veľké 64 KB a prepínať medzi piatimi „bankami“. Hra však neprekresľovala celú obrazovku: v každej snímke obnovila len tie štvorbodové úseky, ktoré sa zmenili.

Zvuk: Sound Blaster

Zvukovou kartou v 90. rokoch bol takmer vždy Sound Blaster alebo jeho kópia. Nastavenie bolo pre bežného používateľa trápením: treba bolo poznať adresu karty, číslo prerušenia (IRQ) a kanál DMA. Súbor PROBLEMY.TXT radí, kde to nájsť vo Windows 95: My Computer → Properties → Device Manager. A varuje: hra nefunguje s prerušením 10 (hudba a animácie občas zamrznú). Treba použiť 5 alebo 7.

Hra má vlastný ovládač zvukovej karty (okrem Sound Blasteru obsahuje aj podporu pre kartu Gravis UltraSound) a softvérový mixér pre šesť zvukov naraz pri frekvencii 22 050 Hz. To znamená, že na jednu obrazovku sa dá naraz prehrať napríklad hlas, zvukový efekt a hudba.

Zvuk je v 8-bitovom formáte, mono. Hudba je navyše stlačená metódou ADPCM na 4 bity (pozri Čo bolo jedinečné).

CD-ROM: pol gigabajtu a rýchlosť

Next Space vyšla na CD, ktoré obsahuje 504 MiB dát (česká verzia) alebo 511,2 MiB (slovenská), z toho:

  • 190 MB 3D animácie (25 súborov),
  • 225 MB (česká verzia) až 231 MB (slovenská) dabing,
  • 30 MB hudba (20 skladieb),
  • 56 MB údaje miestností, postáv a skriptov (DATA).

Dnes je pol gigabajtu drobnosť. Kontext doby: v roku 1997 mal bežný pevný disk 1 až 3 GB a CD s kapacitou okolo 650 MB bolo to najväčšie, čo sa dalo lacno vyrobiť. Veľké dáta (dabing, hudbu a animácie) hra číta za behu priamo z CD, ktoré si nájde podľa menovky NEXTSPAC.E. Na disk stačí podľa tabuľky v recenzii v časopise Score 32 MB.

Tu sa vynára otázka rýchlosti. Rýchlosť mechaniky sa vtedy označovala násobkami: 1× znamenalo 150 KB za sekundu, 2× 300 KB, 4× 600 KB a tak ďalej. Kontext doby: v roku 1997 boli bežné mechaniky 4× až 8×.

Koľko dát potrebovali 3D animácie? Spočítali sme to: všetkých 25 súborov má 199 343 401 bajtov a trvá spolu 505 sekúnd, čo je v priemere 395 KB za sekundu (vrátane zvuku). To je viac, než zvládne mechanika 2×. Na plynulé prehrávanie teda treba mechaniku aspoň 3×, pohodlne 4×. Najnáročnejšia je animácia červej diery: 24 MB za 53 sekúnd, teda 455 KB za sekundu.

Prečo streamovanie rozhodovalo

Do 12 MB pamäte sa nedá nahrať 190 MB animácií a 225 MB dabingu. Hra preto všetko, čo je veľké, číta za behu, v malých kúskoch, presne vtedy, keď to potrebuje.

  • Hlas. Každá replika sa nájde podľa čísla a prečíta sa z CD pri prehrávaní. Hlas potrebuje len 22 KB za sekundu, čo je zlomok toho, čo dnes zvládne obyčajný disk.
  • Hudba. Číta sa po blokoch po 8 KB a dekóduje sa za pochodu.
  • Videá. Prehrávač číta súbor ako súvislý prúd a po každej snímke dostane kúsok zvuku. Obraz a zvuk sú preto vždy v súlade.
  • Rotácia. V programe je aj funkcia, ktorá z CD občas prečíta malý blok, zrejme aby mechanika nezaspala a nemusela sa pri ďalšej replike znova roztáčať.

Procesor a čas

Súbory hry nehovoria, aký procesor potrebovala, ale dobové časopisy ju zhodne radia do triedy 486 (pozri nižšie). Kontext doby: typický herný počítač v lete 1997 mal procesor Pentium s taktom 100 až 200 MHz.

Hra beží presne 20 snímok za sekundu. Riadi ju časovač s frekvenciou 100 Hz: päť tikov znamená jednu snímku. Hra sa neriadi rýchlosťou procesora, ale časovačom, takže beží v pôvodnom tempe.

Čo hra vyžadovala podľa dobových časopisov

Peter Hegyi si minimálnu konfiguráciu z obalu nepamätá, preto sme ju dohľadali v dobových recenziách, ktoré má archív OldGames.sk:

ZdrojProcesorPamäťMechanikaIné
Level 30 (júl 1997)486DX28 MB2× CD-ROMDOS, 1 CD
Riki 28 (august 1997), „minimálna konfigurácia“486DX2/6612 MBCD-ROM
Score 47 (november 1997)486/100 MHz8 (12) MBpevný disk 32 MB, Win95 / DOS

Tabuľky sa mierne líšia. Súbor PROBLEMY.TXT na CD je v pamäti jednoznačný: pod DOSom treba 12 MB (8 MB stačí len v okne Windows 95 po nastavení DPMI). Hra potrebovala SVGA grafiku s 256 farbami, ako píše aj Riki. Výpočet prenosovej rýchlosti animácií v texte vyššie ukazuje, že mechanika 2× je na hrane. Časopis Level uvádza ako minimum 2×, pohodlnejšie by bolo 4×.

Cena v čase vydania: v reklame na hru v časopise Riki 28 je uvedená odporúčaná maloobchodná cena 799 Sk. Hra sa predávala v obchodoch a dala sa objednať aj telefonicky u Magic Systems a Maxtechu.

Windows 95 a nové grafické karty

Hra vyšla v čase, keď sa používatelia presúvali z DOSu na Windows 95, a to sa v súbore PROBLEMY.TXT odráža. Autori popisujú šesť problémov, na ktoré môže hráč naraziť:

  1. nefunguje automatická detekcia zvukovej karty,
  2. karta je nastavená na prerušenie 10 a hra zamŕza,
  3. hra nejde spustiť na 8 MB pamäte,
  4. ovládanie hry po stlačení tlačidla zamrzne (chodba pred bytom androidiek, výťah),
  5. 3D animácie blikajú (nové karty ako Matrox Mystique majú inak napísaný VESA BIOS, riešenie: SciTech Display Doctor z priečinka UTILS),
  6. myš občas zbehne do ľavého dolného rohu (riešenie: iný ovládač myši, napríklad GMOUSE).

Pri štvrtom probléme autori priznávajú chybu a sľubujú: „Na túto chybu by mal vyjsť v blízkej dobe patch.“ O tri mesiace neskôr, v septembri 1997, vyšla česká verzia, v ktorej autori opravili 14 miestností. Zamrznutie z tohto štvrtého problému (ovládanie pri výťahu v izbe 36) ale podľa našich dát neopravili: oprava sa týkala iného zamrznutia, v izbe 37 (dvojklik na zatvorené dvere). Chybu pri výťahu opravili až my. Záplaty hry, ako potvrdil Peter Hegyi, naozaj vychádzali v hráčskych časopisoch.

Kto s tým pracoval

Ako spomína Peter Hegyi, celé jadro hry napísal Michal Hegyi. Michal Weis a Michal Horka napísali rôzne rutiny, medzi nimi prehrávač videa na úrovni strojového kódu, ktorý vedel prehrávať animácie z CD rýchlosťou 20 snímok za sekundu (pozri Magic Systems). Ako sa strojový kód hry dostal do dnešného prehliadača, sa dočítate na stránke Hra online.

Ukážky hudby z hry (4-bitová ADPCM, dekódovaná)

  • Hudba 3hrá v lokáciách 43, 48, 51
  • Hudba 4hrá v lokáciách 12, 29, 35
  • Hudba 5hrá v lokáciách 52
  • Hudba 16hrá v lokáciách 50, 54
  • Hudba 14hrá v lokáciách 1, 35, 39, 46
  • Hudba 1hrá v lokáciách 27, 50
  • Hudba 22hrá v lokáciách 3, 5, 32, 39
  • Hudba 17hrá v lokáciách 40
  • Bonusová skladba z CD (NEXTSPAC.MP3)
Hore