Jak jsem zachraňoval Lemmings

František "Fandal" Houra

Ne, vážený čtenáři, tento text není o tom, jak jsem hrál a slavně dohrál tuto klasikou gamesku. I když tak trochu o hraní Lemmings ale je - samozřejmě na platformě osmibitových Atari!

Tento článek pojednává o tom, jak jsem tento týden (dnes je 14. ledna 2005) - zřejmě jako vůbec první člověk - po několika dnech práce úspěšně převedl na disketovou verzi hru Lemmings z produkce Davida Spilky alias Datriho z roku 1998. Prácička to byla vskutku zajímavá a Raster usoudil, že by to někoho mohlo i zajímat.

Někteří z vás možná na Datriho hru Lemmings kdysi narazili, někteří možná ne. Pro jistotu uvedu základní fakta. Datri tuto hru napsal s použitím dema Lemmings Prevision, které někdy kolem roku 1994 naprogramovali v Polsku Mariusz Kropiwnicki a Marek Drozdowski. Použil z něj, s mírnými úpravami, grafiku a také část kódu. Nicméně hodně toho musel vytvořit sám a ve finále z toho byla velmi pěkná hra s dvaceti devíti levely, která se i komerčně prodávala.

Ke mně osobně se Lemmings dostali poprvé až na sklonku minulého roku, kdy jsem od Datriho dostal pět kazet s veškerou jeho tvorbou. Datri mi tento svůj poklad svěřil s tím, abych se pokusil "zachránit co se dá". Jinými slovy převést několik stovek jeho programů na diskety, respektive pomocí APE a SIO2PC kabelu do PC. A zde celá story vlastně začíná.

Přenést takový program z Turba 2000 na disk není až takový problém. Pokud tedy ponechám stranou klasické trable s kazetami a věčnými boot errory. Horší je to v případě, že se nějaký program v Turbu dohrává na vícero částí. Vytvoření spustitelného binárního souboru je pak více či méně komplikovaná práce, spočívající se spojení oněch částí do jednoho celku a vzájemném propojení přes INIT hlavičky.

Možnost ponechat jednotlivé části samostatně a postupně je dohrávat do paměti pomocí DOSu tu sice také teoreticky je, ale problém je v tom, že programátoři pracující výhradně s Turbem hodně často operovali v paměťovém rozsahu vymezeném většině DOSů (tj. od cca $0400 až po cca $2000). Datri samozřejmě nebyl výjimkou, spíše naopak. Jeho programy tuto oblast téměř vždy a hlavně s úspěchem likvidovaly.

Navíc si Datri, bohužel, v programech na několik částí přímo liboval. Namátkou mohu jmenovat dílka jako Brutal Karate, NHL Coach, Videogame, Panter a další a další. Tyto hry jsem vesměs převedl na spustitelné bináry poměrně rychle. Lemmings byli ovšem trochu jiná káva. Během hry se jednak dohrávají další díly, podle toho ve kterém levelu právě jste, a co hůř, tyto jednotlivé úrovně se v originální verzi nahrávaly ve speciálním Turbu.

Pan Spilka toto Turbo vytvořil samozřejmě proto, aby zabránil nelegálnímu šíření Lemmings. Osobně nemohu posoudit, nakolik se mu to podařilo, ale faktem je, že takovýto program zkopírovat už v samotném Turbo formátu není úplně jednoduché. Zvláštnost Datrim vytvořeného Turba spočívá především v tom, že hlavička je dlouhá 68 byte, což normální Turbo loadery a kopírovací programy jako hlavičku neberou. Datri si také mimochodem musel pro kopírovaní Lemmings napsat speciální kopírovací program.

Ale zpět k mojí konverzi. V prvním kroku jsem samozřejmě musel dostat všechny díly Lemmings na disk. Úvodní dvě části, jakési intro a vlastní hru, jsem převedl bez problémů, protože to byly klasické Turbo soubory. Na dalších pět datových částí jsem už musel nasadit jinou techniku: pomocí TM-2304 jsem je převedl jako deset samostatných souborů, vždy hlavičku a vlastní data zvlášť. Problém ale byl, že jsem nevěděl, kam se tyto jednotlivé díly v paměti nahrávají. A tady to začalo být opravdu zajímavé.

Ke slovu totiž přišel emulátor, zdlouhavé zpětné disassemblování a snaha pochopit, jak funguje Datriho originální Turbo loader. Po nějakém čase jsem do toho jakž takž proniknul a zjistil jsem, že Datri nejprve načte hlavičku, z ní pak v rychlosti vytáhne pár dat a ověří si, zda se nahrává správný díl hry. Pokud ano, datová část se natáhne vždy do stejného úseku paměti a jde se opět honit po obrazovce nebohé Lemmingy.

Zkusil jsem tedy - opět v emulátoru, jinak si mimochodem vůbec nedovedu představit, jak bych to někdy dal dohromady - přihrát k načtené hře první datovou část. To jsem udělal tak, že jsem na místo volání Turbo loaderu dal cyklickou smyčku, z disku natáhnul data a smyčku odstranil. A ejhle - hra se k mojí neskonalé radosti opravdu rozeběhla! To už jsem věděl, že jsem na správné cestě.

Teď to chtělo napsat vlastní diskový loader jednotlivých levelů, protože - jak už jsem se zmínil - použít funkce DOSu nešlo. Nikdy jsem sice nic takového nedělal, ale s pomocí literatury a několika užitečných rad od lidí na AtariAge.com jsem to dal dohromady a Datriho special Turbo loader jsem nahradil svým sektorovým loaderem. Ten kromě vlastního datového bloku nahrává do paměti i výše popisovanou kritickou část hlavičky, ve které se nachází na dvakrát zakódované heslo příslušné herní úrovně.

Další krok na cestě k úspěchu bylo vytvoření bootovací diskety, na kterou bylo kromě datových bloků třeba přidat obě části vlastní hry. A opět ke slovu přišel sektorový disk loader, na který už zbyly všehovšudy tři volné stránky paměti, těsně pod hranicí OS. Naštěstí to stačilo, protože loader hry má ve finále přesně 241 bytů. Při tvorbě bootovací diskety jsem se opětovně pohyboval v pro mě doposud zcela neprobádaných oblastech, ale po nějakém čase se mi to naštěstí podařilo dát do kupy.

No a konečně poslední díl do skládačky jménem disketová verze Lemmings: testování funkčnosti všech 29 levelů plus opravy chyb v původní verzi, na které mě Datri upozornil, ale o kterých už přirozeně dávno nevěděl, jak je opravit. Jednalo se hlavně o heslo ke třetí části, které se sice po dohrání druhé úrovně správně zobrazilo, ale při zadávání to chtělo jedno písmenko jiné. Problém jsem měl také s hudbou na reálném Atari, než mi Raster poradil, že je třeba po disketových operacích zinicializovat Pokey. V jednom levelu pak Lemmings (neboli Lumíci, jak jim říká Datri) startovali ze špatné pozice, což bylo zřejmě způsobeno chybou při přenosu dat z kazeťáku do PC.

Pak už zbývalo jenom celou tu novinu o disketových Lemmings rozhlásit do světa, poděkovat Datrimu za nezištnou spolupráci a pár cenných rad a vyslat dílo do světa. Pokud jste tuto událost dosud nezaznamenali a chtěli byste si Lemmings zahrát, jsou ke stažení na mém webovském archívu Atari softwaru. Jeho adresa je atari.fandal.cz a přímo Lemmings je možno nalézt na stránce atari.fandal.cz/detail.php?files_id=4726.

Závěrem bych rád požádal ty z vás, kteří by snad doma měli buď na kazetách nebo na disketách nějaký zajímavý software a chtěli ho, podobně jako Lemmings, zachránit pro další generace, nechť mne kontaktují na e-mailové adrese fandal@fandal.cz. Předem děkuji.