MANIC MINER - ZX/C64 verze (C)Y2k3 K.M.S. freeware under ZOA licence Manic Miner ZX je konverze známé osmibitové legendy ze ZX spectra. Hra je přeprogramována v jazyce ANSI C, zdrojový kód je volně k dispozici a je možno ji přeložit pro DOS, Windows, Linux, Unix, BeOS, Mac a další platformy, které podporuje grafická knihovna Allegro. Jedná se o klasickou plošinovku, ve které má hráč za úkol sbírat předměty, přičemž se musí vyvarovat dotyku se vším, co se hýbe (a někdy i nehýbe :-) ). Hráč si může zvolit jednu ze tří variant hry, které se liší drobnými detaily (podporovány jsou verze Software Projects, Bugbyte a C64) a jako bonus nabízí také levely Manic Miner 2 a 3 z C64. Hru Manic Miner jistě není třeba představovat nikomu, kdo se jen trochu vážně zajímá o počítače. Verze pro ZX se stala legendou a i v dnešní době, po více než dvaceti letech od jejího vzniku, má spousty příznivců. Stačí jen hledat v google.com :-) Toho, kdo má zájem si zahrát původní verzi pod emulátorem potěší fakt, že server worldofspectrum.org získal jako u většiny ZX spectrum her souhlas k jejímu bezplatnému šíření a nabízí ji ke stažení zdarma ve svém archívu. Aby hra neupadla v zapomnění, rozhodl jsem se ji roku 2000 přeprogramovat pro počítače PC. Tři roky provozu www stránek, na kterých se hra nacházela, potvrdily, že pamětníci mají zájem o původní ZX verzi i o verzi z PMD-85. V systémovém logu lze často vidět, že návštěvník do vyhledávacího programu napsal "manic miner PMD85 download" nebo něco podobného. Moje konverze z roku 2000 však zájemcům o ni přinášela jedno omezení: byla naprogramována pro operační systém DOS a používala přímý přístup do videoRAM a na IO porty. Ještě ve Windows 95 to tolik nevadilo, ale pod dnes používanými Windows 2000/XP již spustit nejde. Také v poslední době registruji značný nárůst uživatelů Linuxu, který je se svým DOSEmu ještě méně kompatibilní. Proto jsem se rozhodl, že svůj remake naprogramuji znovu a to v jazyce C jako univerzálně portovatelný program. Po necelém týdnu mechanického přepisování kódu z Pascalu do ANSI C vznikla současná verze hry, kterou je možno díky použité grafické knihovně Allegro přeložit nejen pro DOS, ale i pro Windows, Linux, BSD, BeOS, QNX, Mac a další platformy. Až na tuto konverzi jsem ponechal hru v původním stavu, pouze jsem do hry přidal hudbu. Věřím, že díky tomu přitáhne hra ještě více zájemců a že pobaví i po tolika letech od doby, kdy vznikla. Samotnou hru již nebudu znovu popisovat, ale přiložím původní dokumentaci, kterou jsem psal pro DOS verzi v roce 2000. Kromě toho jsem do adresáře se hrou přihrál i starou DOS verzi, kterou jsem pojmenoval "ManicMinerZX_DOS - old (non-portable).exe". Poznámka: první verze z roku 2000 v Pascalu používala hojně přístup k IO portům grafické karty a videoRAM. Protože vykreslování grafiky bylo realizováno unikátním způsobem (viz další část dokumentace), rozhodl jsem se, že než abych předělával celý grafický engine (a v podstatě celou hru), raději si napíšu emulaci textového režimu VGA karty. To je jen informace pro ty, kteří budou zkoumat zdrojové kódy a budou se divit, proč je vykreslování tak "krkolomně" naprogramované :-) Remake je volně šiřitelný i se zdrojovými kódy, pokud jsou dodrženy licenční podmínky ZOA. Je tedy možné program používat, šířit, umisťovat na Internetu i na softwarových kolekcích bez poplatků či jiných protislužeb. Program je určen primárně pro operační systémy DOS, Linux a Windows, ale je možno jej portovat i na další operační systémy (Unix, BeOS, Mac...), pro které je k dispozici grafická knihovna Allegro. Věřím, že tato volně šiřitelná konverze známé osmibitové hry potěší všechny pamětníky a příznivce starých časů, kdy hry byly opravdu zábavné, ačkoli byly velmi jednoduché. Hodně zábavy přeje autor. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! Důležitý dodatek pro uživatele OS LINUX !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! Operační systém Linux obsahuje závažnou chybu, !! díky níž na místě zamrzne, pokud nenadetekuje !! SVGA grafickou kartu a Allegro provede nahození !! standardního VGA režimu 320x200 po neúspěšném !! pokusu o nastavení 640x480! Není to chyba !! hry, ale závažný nedostatek ovladačů operačního !! systému Linux (cheche: a pak že je Linux stabilní - !! spadne při běžné práci stejně snadno, jako Windows). !! Vyřešil jsem to tím, že uživatel má možnost !! v příkazovém řádku zadat parametr '320', !! který zajistí, aby se hra vůbec nepokoušela !! nahodit grafický režim 640x480, ale rovnou standardní !! 320x200. Tento režim se naštěstí týká jen setupu, !! který se v rozlišení 320x200 stane hůře čitelný, !! samotné hry se to netýká. !! Takže shrnu: pokud po spuštění hry totálně !! zamrzne Linux, není to chyba hry, ale Linuxu a !! lze to vyřešit parametrem '320'. !! Pod Windows a pod DOSem se podobný problém !! nevyskytl a předpokládám, že nenastane ani pod !! Linuxem, pokud ovladače detekují SVGA grafickou !! kartu umožňující rozlišení 640x480 a vyšší. !! Používal jsem distribuci RedHat 6.0, tak je také !! možné, že v jiných distribucích, popřípadě !! vyšších verzích RedHat, již je chyba ošetřena. !! !! Podrobnosti o chybě: !! ukázka 1(funguje bez problémů-pokud není SVGA k dispozici, je program ukončen, !! takto jsem ale hru řešit nechtěl, lepší je po neúspěchu se SVGA zkusit VGA režim): !! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0)){ !! GFXfail(); // Vypis chybu a ukonci program !! } !! !! ukázka 2(funguje bez problémů-k chybě by zde dojít nemělo nikdy, protože VGA !! grafický adaptér je k dispozici vždy): !! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 200, 0, 0)){ !! GFXfail(); // Vypis chybu a ukonci program !! } !! !! ukázka 3(kombinace předchozích dvou, hra se pokusí nahodit VGA, pokud není !! k dispozici SVGA. Pod Windows a DOSem bez problémů, ale LINUX KOMPLETNĚ ZAMRZNE při !! nahazování VGA módu): !! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0)){ !! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 200, 0, 0)){ !! GFXfail(); // Vypis chybu a ukonci program !! } !! } !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --------------------------------------------------------------------------- ================================================================================= --------------------------------------------------------------------------- ****************************************** ** Původní dokumentace k verzi pro DOS: ** ** (informace o spouštění hry se týká) ** ** (jen staré verze pro DOS, nikoli ) ** ** (nové multiplatformní verze ! ) ** ****************************************** MM je společně s BOULDERDASHem a ARKANOIDem nejpředělávanější hra všech dob. Najdeš jí na úplně všech počítačích včetně PMD-85, ačkoliv oficiálně komerčně byla vydaná jenom na ZX a C64. Na všech ostatních počítačích to předělali nadšenci, jako jsem já, doma. MM napsal původně šestnáctiletý Matthew Smith na ZX (roku 1983) a hra se velice brzy stala legendou. Má doteď svoje fancluby a spousty internetových stránek. To vše přes všechny ty několikasetmegové 3Dfx skrolovací doomovky, co se v současnosti dělají. MM i JSW mělo na ZX pouhých 32Kb a byl to samozřejmě čistý assembler (já konverzi psal v pascalu, assembler jsem používal jen na výpomoc). Velice brzy se začaly dělat podobné hry na stejném principu (Alligata...) a verze s jinými levely (nejznámější JSW3). Mimochodem Matthew Smith napsal prý jen MM a JSW pro Software Projects a možná ještě jednu méně známou hru a s tvorbou skončil. Na PC existuje excelentní konverze MM (1997) a JSW (1999) od Andyho Nobla s perfektní grafikou a hudbou, ale kromě emulátorů osmibitů jsem klasickou verzi pro PC nikde neviděl. Takže proto jsem se rozhodl MM předělat v původí verzi. A nejen to. Můžeš si vybrat i verzi pro C64, která, ačkoliv je stejná jako na ZX, má několik odlišností, některých úmyslných, některých asi ne. A když jsem už dělal verzi pro C64, přidal jsem své dvě staré předělávky MANIC MINER 2 a 3, které jsem dělal na C64 kdysi dávno jako 13tiletý školák. Samozřejmostí je vestavěný cheat o několika úrovních a funkce systémového nastavení - pro emulaci mono monitoru (nebo emulaci verze pro PMD-85, kde je hra černobílá) a pro regulaci rychlosti. Hra je totiž synchronizovaná podle zpětného běhu paprsku obrazovky a protože nové karty mají vyšší refresh než 60Hz, hra je pak moc rychlá. Rozhodně se ale nestane, jako u jiných starých her, že bude hra tak rychlá, že ťukneš do klávesy a objevíš se na opačném konci levelu. Co ve hře není je zvuk. Důvod je jednoduchý- nemám ani zvukovou kartu, ani PC speaker. Celá hra vznikla na počítači 386SX25 bez bedny (karty v MB leží jen tak na stole) za pár stovek, proto jde spustit narozdíl od dnešních her téměř na všem. Podmínkou pro spuštění je 286ka a VGA grafická karta. V rámci originality jsem se rozhodl hru kompletně napsat né v grafice, ale v textovém módu. V grafice píše hry každý, ale hru v textovém módu s plynulým skrolingem objektů nemá hned tak někdo. Nejdřív jsem musel udělat emulaci sprajtů v textovém módu. Grafický engine jich umí obsloužit devět (poslední má malý defekt, ale to se projeví jenom v jednom levelu a to ještě tak, že to není na závadu, protože už chyběl znak ve znakové sadě). Mimochodem verze pro C64 kvůli pouze osmi hardwarovým sprajtům v tom levelu nemá jednu příšerku. Jak to funguje ? Jednoduše. Každá mrcha včetně postavičky zabírá dvakrát dva znaky, ale protože se musí pohybovat po bodech, každý sprajt spotřebuje třikrát tři znaky. No a grafický engine spočítá polohu příšerky podle X a Y, umístí jí do matice 3x3 znaků a přes to dá funkcí OR pozadí, přes které příšerka leze. Těmito upravenými znaky se pak přepíšou původní znaky a je to. Trochu jsem zakysnul, když jsem měl dělat titulní obrázek v textovém módu a stejně tak level 20, kde je horní část levelu překreslená právě tím titulním obrázkem. Pak jsem ale našel, že VGA grafická karta umí nahodit textový mód do režimu, kde jsou na obrazovce dvě znakové sady najednou. Celkem tedy 512 znaků a to pro obrázek stačí díky tomu, že ZX spectrum mělo jenom 32 znaků na řádek a navíc ten obrázek není na celý obraz, ale jenom do dvou třetin. C64 bohužel má 40 znaků na řádek, tak je titulní obrázek MM3 ořízlý. Vidíš tedy, že komplet celá hra je v textovém režimu poskládaná z písmenek, ačkoliv by to nikdo neřekl. Díky tomu je také věrně emulované prolézání barev příšerek do pozadí, přesně jak to má ZX spectrum. ZX totiž, ačkoliv umí jenom grafiku, neumí zobrazit víc než dvě barvy na 8x8 bodů. Protože textový mód se chová stejně, je tento známý defekt ZX spectra emulovaný přesně jako na ZX. C64 tento defekt nemá, protože má hardwarové sprajty, které se kreslí nezávisle na pozadí, ať už textovém nebo grafickém, a nedělá barevné čtverečky okolo znaku. Moje hra se ale v C64 emulaci chová stejně jako ZX, protože textový režim má stejnou vlastnost jako grafika ZX. Hardwarové sprajty prostě na PC chybí :-( Při startu se zobrazí obrazovka s nastavením hry a s výběrem verze. Kdykoliv během hry i v této obrazovce lze skončit hru klávesou ESC a vyskočit zpět do DOSu. Blikající nabídka znamená start hry s aktuálním nastavením. Stiskni 1, pokud chceš originál verzi ze ZX spectra od Software Projects. 2 je verze ZX od BugByte, 3 je verze z C64 a A a B jsou moje verze MM2 a MM3. Odlišnosti mezi verzemi popíšu níže. Dále je tu CHEAT OPTIONS a SYSTEM OPTIONS. V Cheat si můžeš vybrat, zda chceš nekonečné životy (implicitně Ano), jestli bude hra reagovat na kolize s pohyblivými objekty (implicitně Ne) a můžeš si vybrat level, ve kterém začneš. Přímo ve hře můžeš klávesou F11 přeskakovat levely a F12 hru pozastavit. V System options můžeš vypnout barvy (zůstanou jenom u titulního obrázku a u reakcí na klíč a na zabití). Nastavením hodnoty u Speed Delay zpomalíš hru, pokud je příliš rychlá, když máš vyšší refresh obrazovky. Číslo znamená, kolikrát se bude čekat na vykreslení snímku, než se provede jeden pohyb hry. Čím vyšší, tím je hra pak pomalejší. Částečně to může sloužit i jako takový cheat, ale ostatní cheaty jsou stejně natolik účinné, že musíš projít celou hru i bez zpomalení. Po spuštění hry pomocí 1,2,3,A nebo B tě naskočí titulní obrázek a po stisku ENTER se dostaneš do hry. Hra se dá hrát buď šipkami, nebo klávesami QWZ. Šipky doporučuji jenom na numberblocku, protože samotné šipky jsou hardwarově nevhodně dělané a vynechávají. A zde popíši rozdíly mezi verzemi hry. MM2 a 3 jsou odvozeny od C64 verze a tak se jich týkají také odlišnosti oproti ZX. MM3 má jinou znakovou sadu a obě verze - MM2 i 3 mají jiný titulní obrázek. Rozdíly mezi verzemi MM1 Software Projects a BugByte jsou pouze v příšerkách v levelu 17 a 18 - místo rotujících trojúhelníků má BugByte verze jakási mlýnská kola a místo brouků v 18tým levelu má medůzy. V šestém levelu má místo statické "držky" obyčejné křoví. Verze pro C64 vychází z verze Software Projects, ale má dost odlišností. V první řadě je to v titulním obrázku nápis RETURN místo ENTER, protože u C64 se ENTER jmenuje RETURN. Pak má jinak některé barvy a někde některé znaky. Defekt bestií v 16tém levelu jsem neemuloval, protože je pravděpodobně způsoben později chybou v nahrávání z kazety a nejspíš ho nemá každý. Ve dvanáctém levelu chybí jedno kolo (nevím proč, asi na něj zapomněli) a v 18tém levelu chybí jedna příšerka kvůli tomu, že je v levelu celkem devět pohyblivých objektů a C64 má jenom osm hardwarových sprajtů. 19tý level se liší pozicí postavičky na začátku a tím, že se paprsek láme jen jednou, narozdíl od ZX, kde se může klikatit několikrát. Mimochodem původní verze měla v 19 levelu (a nejen v něm) chybu, díky které nešel projít bez cheatu na kolize objektů. Podlahy se totiž posunuly při pádu postavičky o znak (a více) nahoru, ale sprajty zůstaly na stejném místě, takže kolize s nepohyblivými objekty neodpovídaly polohou s kolizemi s bestiema. Tuto chybu jsem pochopitelně neemuloval. Ve dvacátém levelu není původní příšerka ze ZX, ale je použitá z jednoho předchozího levelu. Také neleze jenom k oku, ale až na konec levelu. Rozdílů je tam ještě trochu více, ale ty nejhlavnější jsem popsal. Na ostatní si teď nevzpomínám, ale na co jsem narazil, to jsem udělal. Systémové požadavky: 286 (dop.386/20MHz), 640Kb RAM, VGA gr. karta. Operační systém MSDOS. Nejde pod Windows NT a 2000, pod Win95/98 jde, ale musí se pouštět na celý obraz, ne v okně. Hra je samozřejmě freeware i se zdrojovými kódy pod licencí ZOA.