Skunk (11/12/2011)
Po téměř roce čekání mi v půlce listopadu konečně z US dorazil Skunkboard pro Jaguára a já se z toho doslova tetelím blahem. Tohle HW udělátko je prostě geniální vynález! Blahoslaveni budiž borci z The GOAT Store, že to navzdory všem trablům dotáhli s třetí produkční dávkou Skunka do finále, protože první dvě série jsem svého času naprosto hloupě ignoroval a později jsem toho hodně litoval.
Co to vlastně ten Skunkboard je? Nic víc a nic míň než jaguárovský flashovatelný cart. Taková vývojová zařízení samozřejmě existovala už v době krátkého života poslední herní konzole od firmy Atari, jenomže ty dnes prakticky nelze sehnat. A když už, tak jsou nehorázně drahá a možnosti jejich použití odpovídají době svého vzniku, kdy posledním výkřikem techniky byl paralelní port. Naproti tomu Skunk je veskrze moderní produkt, který se po připojení k PC stroji chová jako standardní USB zařízení.
Úplně původní Skunkboard měl ve výbavě 4 MB paměti. Revize 2 a 3 dostaly navíc další 4 MB, čili mohou fungovat buď v módu se dvěma bankami po čtyřech megách nebo s jednou bankou o velikosti 6 MB. Nejsem si úplně jistý, proč tento druhý mód vůbec existuje, protože všechny mě známé komerčně prodávané hry jsou maximálně čtyřmegové. A to včetně BattleSphere Gold, o které mi kdysi Honza Křupka tvrdil, že snad má být šestimegová. Ale přes Jaga rozhodně jsem žádný odborník, takže se třeba pletu nebo jsem, jako již tradičně, zase něco zcela nepochopil.
Z hlediska uživatele je také velmi důležité to, že Skunk podporuje kromě flashování paměti cartu také nahrávání dat přímo do RAMky Jaguára. Funguje tedy stejně jako oblíbený BJL systém, pro který v posledních letech až na výjimky vznikaly všechny homebrew gamesky, neboť jenom pár her bylo od počátku psáno pro JagCD. Komunikace se Skunkem probíhá přes speciální SW ovládaný výhradně z příkazové řádky, což sice není zrovna dvakrát pohodlné, ovšem k oldschool feelingu to asi patří. :)
Než mi Skunkboard (původně objednaný za neodolatelně výhodnou zaváděcí cenu někdy na podzim loňského roku) doputoval před měsícem do pracek, viděl jsem toto zařízení pouze párkrát u Honzy na několika Atari akcích. Moc se mi líbila možnost zahrát si nejnovější produkce přímo z cartu, ale jak to celé funguje jsem vlastně nevěděl. Proto mě při prvním zapojení Skunka nemile překvapilo, že se nic neděje a Jaguar CoPy hlásí nedostupnost zařízení. Docela mě to i vystrašilo, poněvadž se zbrusu novou leč nefungující elektronikou mám bohaté zkušenosti. Naštěstí problém byl v propojovacím kablíku, který jsem si hned druhý den běžel koupit.
Od té doby fachá Skunk k mé naprosté spokojenosti a opravdu ho můžu všem, co to s Jaguárem myslí alespoň trochu vážně, jenom a jenom doporučit. GOAT ho má stále ještě k dispozici za pravda ne úplně nízkou cenu $115.90, k čemuž je potřeba přičíst poštovné a nejnověji z nařízení prokleté Evropské unie také naprosto debilní clo ve výši cca 600 Kč, nicméně Skunkboard za to podle mne skutečně stojí. Pokud člověk chce na real HW hrát bez použití BJL nejnovější freewarové věci a nemá JagCD, je to dokonce snad i jediná cesta. A nakonec ani nemusí nakupovat originální carty komerčních her z 90. let, protože jejich dumpy lze, při trošce snahy, na internetu nalézt. Čímž pochopitelně nikoho nenavádím k nějakým nekalostem, pouze to konstatuji.
Největší radost mi Skunk udělal, když machři z grupy Reboot, která v současné době kraluje jaguárovské scéně, vypustili svou poslední gamesku Kobayashi Maru. Střílečky já totiž úplně miluju a tahle věc navíc na Jagovi po Tempestovi jako teprve druhá hra podporuje rotary ovladač, se kterým to mastit je naprosto špičkový zážitek. Od léta, kdy jsem po pár hodinách snažení dohrál až konce gamesu I-War, jsem Jaguára takhle intenzivně neprohnal a fakt jsem se vyřádil. Kromě toho jsem si konečně na svém vlastním stroji zahrál Project One a hlavně Downfall, další vynikající produkce Rebooťáků.
K úplně maximální spokojenosti mi nyní schází snad už jenom sehnat dumpy her Skycopter a Speedster II, abych si je mohl na Skunkovi vyzkoušet. Já vím, nejsou to žádné perly, avšak na vlastní oči jsem tyhle dvě kuriozitky ještě nikdy neviděl...
Jubileum (20/11/2011)
Tak tohle je totální masakr. Dneska je tomu přesně na den sedm let, co jsem oficiálně spustil stránku a8.fandal.cz! Sedm let!!! To už je kurevsky dlouhá doba. Zvlášť když uvážím, jak se to všechno během doby vyvinulo a jakou neskutečnou kouli jsem si to dobrovolně přivázal k noze.
Už jenom uvést sajtu do provozu mne stálo několik měsíců perné práce, kdy jsem poměrně zdlouhavě (hlavně u dem) ke každému prográmku v databázi zjišťoval rok vzniku, jméno autora a případné speciální požadavky na HW (přídavná paměť, stereo, BASIC, starší verze OS atd.). Když jsem s tím byl konečně hotový a archív byl veřejně uveden v život, z jakéhosi pro mě dnes již nepochopitelného důvodu jsem se rozhodl každý den vkládat do mySQL nové přírůstky, ačkoliv jsem původně webovou verzi mojí soukromé sbírky ataráckých her a dem nějak pravidelně aktualizovat rozhodně neměl v úmyslu.
Nejsem si jist, zda to každému nebo alespoň většině lidí dochází, ale spravovat v jednom člověku projekt velikosti a rozsahu a8.fandal.cz je pořádný zápřah. Abych mohl pravidelně přidávat novinky pokud možno alespoň trochu na úrovni, musím se ve volném čase prohrabávat hromadama softwaru staženého z internetu nebo ještě hůř sedět u reálného Atárka a pracně procházet kazety nebo diskety ve snaze objevit nějakou neznámou zajímavou věc z dob minulých, protože jenom se zbrusu novou produkcí bych rozhodně nevystačil. V tomto směru mě strašně zklamala minimální podpora od osmibitové Atari scény, protože v podstatě pouze Charlie Chaplin a Miker mě dlouhodobě podporovali a stále ještě podporují občasným přísunem kvalitního SW.
Není proto divu, že jsem se na podzim 2006, ve stavu totální nasranosti na celý vesmír, vykašlal po dvou letech brutálního nasazení na každodenní aktualizace a začal jsem stránky updatovat pouze o víkendech. Jenomže to bych to asi nebyl já, abych si na sebe po ročním a tolik potřebném oddechu neupletl nový bič v podobě blogu, kam jsem se - já vůl - ze začátku snažil něco psát den co den, čímž jsem se opětovně velice rychle vyšťavil a málem jsem tuto dnes zřejmě nejlepší část sajty pro naprosté vyhoření autora zrušil. Naštěstí i s blogem jsem se časem propracoval k vyhovujícímu formátu, tj. příspěvky méně často, ovšem o to delší, výživnější a snad i zajímavější.
Suma sumárum jsem k dnešnímu datu za těch sedm let existence serveru a8.fandal.cz zveřejnil přesně 1296 novinek a celkově jsem to v databázi dotáhnul na 4121 her a 2379 dem, což dohromady dává - neuvěřitelnou shodou magických okolností - rovných 6500 kousků. Velmi mě těší zvláště to, že jsem pro podobně postižené nadšence povětšinou z Turbo kazet osobně zachránil pěknou řádku softwaru, který by jinak už dost možná nikdy nikdo neviděl. Těch věcí bylo opravdu hodně. Například nevydaná polská gamesa Maszyna czasu, ale hlavně docela slušná kupa původní česko-slovenské produkce. Jako například hry Lemmings, Pyromania, Batman, IBM Tetris, Detonator,
Logicmaster, Kosmonauti, Avex či Inferno, výborné vzdělávací programy Avika a Orbis Pictus, ale také dema Killers, Last Words, SPS Megademo, Music Bag III, 2nd Demo nebo Chaotic Demo.
Mimoto jsem se věnoval kódování vlastních gamesek a demíček, hackování a crackování, patchování her pro multijoy, ale i opravování bugů v cizích programech. Zapomenout samozřejmě nemůžu ani na památné konverze 64 kB a 128 kB XEGS cartů (Barnyard Blaster, Battlezone, Bug Hunt, Commando, Crime Buster, Crossbow, Deflektor, Desert Falcon, Mario Bros., Mean 18, MidiMaze, Tower Toppler) na file verze, kde jsme si společně s Bob!kem opravdu dosyta zablbnuli při zrychlování unikátně řešeného golfu Mean 18. Během všech těchto programátorských podniků jsem získal spoustu cenných zkušeností a oproti roku 2004 jsem jako Atarista bezesporu poskočil o několik výkonnostních tříd. Také jsem se myslím poměrně aktivně zapojil do dění na české osmibitové Atari scéně, pravidelně jezdím na různé Atari párty a nezanedbatelnou měrou přispívám do magazínu Flop.
Když už jsem u té naší miniscény. Také zde se toho v posledních sedmi letech hodně stalo. Především nás obrovským způsobem posílil návrat ztracených synů MaPy a PéGého do služby, čímž se počet aktivních českých osmibiťáků začal nebezpečně blížit k desítce. To je sice pořád směšně málo, ovšem na to, kolik nás je, dáváme o sobě ve světě poměrně hlasitě vědět. Nedávno nás bohužel postihla krutá rána v podobě Rasterovy tragické smrti, kdy jsem si říkal, zda něco takového vůbec dokážeme ustát. Nyní, s odstupem času a po doufám vydařeném říjnovém VZAKu 2k11, to vypadá, že česká A8 scéna a Flop přežijí. Ačkoliv je jasné, že Raster je prostě nenahraditelný a že bez něho půjde úroveň zdejší Atari produkce kvalitativně i kvantitativně znatelně dolu.
Ale dost smutných myšlenek. My se chca nechca musíme dívat spíše do budoucna. A já sám za sebe můžu zodpovědně prohlásit, že Atari mě stále baví, pár věcí bych ještě velmi rád naprogramoval a taky energii nutnou pro pravidelné aktualizace a vůbec zajišťování chodu a8.fandal.cz se mi pořád jakýmsi záhadným způsobem daří odkudsi čerpat. Takže pokud jste doufali, že se mne a mojí lamerské sajty v dohledné době jednou pro vždy konečně zbavíte, bude si asi muset nějakou tu chvíli počkat. Jestli máte naopak pocit, že to nedělám zas až tak úplně špatně a občas na tyto stránky dobrovolně zavítáte, potom jste to právě vy, kvůli kterým tento server existuje. Zachovejte mi přízeň!
Skandální odhalení (26/10/2011)
Pokud vás těší, že na této stránce máte opět co číst, poděkujte za to prosím PéGému. Neboť to byl právě on, kdo mne po přečtení si posledního zápisku upozornil, zda by již nebylo vhodné zveřejnit cheaty do hry Diamondz, kterou jsme spolu spáchali vloni na jaře. A já si řekl, že má pravdu. Od releasnutí Diamondz uplynul rok a půl, nikdo to už dávno nehraje a nikdo tedy nebude naštvaný, že mu kazíme zábavu. No a protože někdy před rokem jsem vypustil další gamesku Milk Nuts, do které jsem si taktéž dovolil zamontovat nějaké ty cheaty, rozhodl jsem se, že na toto téma napíšu rovnou celý článeček. Nebude to sice nic extra dlouhého, ale těsně před víkendovým VZAKem stejně na víc nemám čas.
Začněmež od konce. Milk Nuts má v sobě dva cheaty. Oba si svými jemnými diktátorskými způsoby vydupal Fly, podobně jako mnoho dalších úžasných funkcí této silně nepovedené parodie na NESovku Nuts & Milk. Podržíte-li za hry CTRL+OPTION a k tomu naklapete "NUTS", máte opět k dispozici plný časový limit pro daný level. Pokud napíšete "MILK", dostanete navíc rovných deset životů, což se v této gamese hodí podstatně víc, protože je poměrně dost těžká i pro zkušené pařmany. To byl ostatně také důvod, proč jsem do ní ve verzi 1.1 dodatečně dodělával volbu obtížnosti, poněvadž původně to bylo opravdu více než na ostří nože.
Do komerčně mimořádně úspěšného megahitu Diamondz byly naimplementovány rovněž dva naprosto boží cheaty. Oba se aktivují při zadávání přístupových kódů k jednotlivým levelům a oba vymyslel PG. Po odeslání hesla "ACCESS" se dostanete do závěrečné obrazovky s gratulací k dohrání celé hry, kterou normálně uvidíte pouze po úspěšném zdolání posledního pětačtyřicátého levelu. Můj dvorní grafik a designér ovšem zřejmě usoudil, že se mu natolik povedla, že by bylo škoda nemít možnost se na ní čas od času bez námahy podívat. Druhý cheat "FREEZE" vás ve hře zbaví problémů s nemilosrdně ubývajícím časem a jeho aktivace se projeví kratičkým probliknutím obrazu.
Kromě toho jsem na výslovnou žádost kolegy PG vložil do Diamondz a Mind Blastu možnost přepínat během hry všechny hudby, které tyto gamesky obsahují. Opět bezpochyby proto, že jeho RMT konverze amigáckých MODů jsou naprosto skvostné a například hudbu z titulní obrazovky by byl přímo neodpustitelný hřích nechat zvučet jenom tam. V obou hrách jsou shodně tři řádně narostlé RMT moduly (Diamondz obsahuje celkem dvanáct kilobajtů vysoce kvalitní muziky, Mind Blast pak dokonce patnáct) a vybírat z nich lze přes současný stisk kláves CTRL+SHIFT+číslo skladby od jedničky po trojku.
Z nějakého důvodu trpím neodbytnou představou, že jsem dával ještě jeden cheat do Mind Blastu, s jehož pomocí se nechalo dostat do gratulační obrazovky, která je podle mého názoru ještě vymakanější než ta v Diamondz. Ve zdrojáku ovšem ani při největší snaze nic takového nemůžu najít a taky PG o ničem neví. Takže to vypadá, že se jenom velmi úspěšně mystifikuju a že tudíž seznam cheatů v mých hrách žádné další pokračování nemá. Čili užijte si alespoň ty skutečně existující a třeba se vám díky nim podaří ty prokleté Milk Nuts dohrát. :) Myslím, že vymazlenou závěrečnou obrazovku této platformovky doposud mnoho lidí nevidělo...
Cheatování (10/10/2011)
Moje dnešní povídání nepřímo navazuje na článeček o hledání atárkovských velikonočních vajíček ze začátku září letošního roku. Při pracném a zdlouhavém pídění se po easter eggech, které se aktivují naklapáním hesla z klávesnice, jsem totiž narazil na pozoruhodnou a svého času bohužel nikdy nevydanou polskou hru Fatal Game, v jejímž kódu se kontroluje zadání slova "METALLICA". Následným zkoumáním v emulátoru jsem odhalil, že v tomto případě nejde o velikonočních vajíčko, nýbrž o klasický cheat na doplnění klíčů a střeliva. V tu chvíli mě napadlo, že bych si na ty cheaty měl ze cvičných důvodů trošku více posvítit, protože ať už o tom víte nebo ne, informace o cheatech zabudovaných do her přímo autory já sbírám a jsou součástí databáze na této sajtě. Uvádím je u příslušné gamesky vždy v poznámce a v tuto chvíli jich eviduju hóóóóódně přes stovku.
Všechny ty nesmrtelnosti, nekonečné životy, neubývající energie, přístupy do vyšších levelů atp. se na Atárku v drtivé většině případů realizují přes nějakou akci na klávesnici. Tímto směrem jsem také zaměřil svou pozornost, respektive pátral jsem po gamesách, které si hlídají stisk krajně podezřelých kombinací kláves. Začal jsem nejprve oblíbenými trojhmaty CTRL+SHIFT+klávesa, protože ve hrách mají takové kulišárny jenom zřídkakdy nějaké logické opodstatnění. V geniálním Total Commanderu jsem tedy dal vyhledat všechny atárkovské soubory obsahující hexadecimální řetězce odpovídající sledům instrukcí typu LDA $D209 CMP #$EC či LDA $02FC CMP #$EC (adresy $D209 a $02FC shodně vracejí interní kód stisknuté klapky a hodnota $EC je CTRL+SHIFT+TAB). Později jsem okruh hledání rozšířil i na kombinace CTRL+klávesa a SHIFT+klávesa, ale ty se již poměrně často využívají i k "legálním" operacím, takže jsem několikrát ke svému rozčarování zjistil, že přes CTRL+P je ve hře pauza, CTRL+S vypíná zvuky, atd.
Přesto jsem celkově vzato nebyl s výsledky svého občasného snažení rozhodně zklamaný, poněvadž a jelikož jsem nalezl docela slušnou řádku cheatů, o jejichž existenci jsem doposud (z mně známých zdrojů) nevěděl. Tyto svoje nálezy jsem do mySQL bušil průběžně, bez nějakého upozorňování návštěvníků mého webu. Nepředpokládám tedy, že by snad existoval člověk, který by všechny přírůstky za poslední cca čtyři týdny dokázal zaznamenat. Pokud si toho ovšem vůbec kdo všimnul, což je myslím mnohem pravděpodobnější. :) Proto jsem si dal tu práci a poctivě jsem si do deníčku zapisoval, cože jsem to všechno vyčmuchal. Zde je abecední seznam her obsahujících mnou nově objevené cheaty, kterých je shodou jakýchsi podivných okolností rovná desítka:
Fatal Game,
Labyrinth,
Panther,
Phobos,
Ruff And Reddy,
The Fish-Adventure of Mr. Fish,
The Living Daylights,
Tumble Bugs,
Vanadium,
Zombies.
Nejděsivější z těchto cheatů je podle mého názoru naimplementován ve hře Tumble Bugs. Stisknout současně SHIFT, OPTION, BREAK a fire je na real HW téměř nadlidský úkol, člověku se prostě nedostává rukou a prstů. Vzpomínám si, že jsem ve finále na joysticku přilepeném na stole mačkal spoušť nosem :-D - nicméně cheat se mi nakonec úspěšně podařilo aktivovat, což se mimochodem projeví tím, že obrazovka změní barvu z modré na zelenou. Ono v emulátoru to vlastně není v případě podobných šílených kombinací o nic jednodušší než na skutečném železe, protože PC klávesnice má často problém současný stisk hromady kláves vůbec pobrat. Zvlášť když má člověk joystick namapovaný na numpad. V takovém případě se mi osvědčilo přehodit si joy na šipkové klávesy a fire na Control. Nemáte-li to samozřejmě takto již defaultně.
Věřím, že alespoň pár lidem udělají nebo udělaly výsledky mojí výzkumnické práce radost, protože Atari gamesníků (a někdy pořádně zapálených) tu mezi námi podle mých zkušeností ještě pár pobíhá. Současně doufám, že by někdo mohl na oplátku potěšit i mě. To v případě, že by mi poslal návod na nějaký ten cheat, který v mé databázi není.
P. S. Pokud se chcete podívat, ke kterým hrám je na a8.fandal.cz k dispozici popis cheatu, doporučuji v "details" hledat klíčová slova "type" nebo "press".
RSS (25/09/2011)
Myslel jsem na to už delší dobu, ale k rozhodné akci jsem se dokopal až nyní. Fandalův Atari blog má ode dneška svůj RSS kanál. Pár lidí si o tuto službu říkalo (a někteří drzouni dokonce opakovaně) již před drahnou dobou a kolega Dex se dokonce domnívá, že blog bez RSS není blogem. Nuže vážení, vaše prosby a nářky byly vyslyšeny: tady ho máte!
Důvodů, proč jsem nakonec povolil a RSSko svého nechvalně neproslulého blogu jsem dal po letech dohromady, je několik. Předně jsem na tom po práci nabitém létě konečně časově poněkud lépe a v nejbližší době se opět chystám na nějaké ty Atari projekty. A prvním v řadě byl právě avizovaný RSS kanál. S tím souvisí další věc. Většinou jsem se psaním svého blogu skutečně bavil a vždy jsem se těšil na následné špičkování s Rasterem, se kterým jsme si téměř pravidelně dělali z těch mých nekonečných provokací, vtípků a sarkasmů znovu a znovu srandu. Bohužel čtenář, na kterém mi nejvíce záleželo, se na tuto stránku už nikdy nepodívá. Vyrovnávám se s tím opravdu jenom velmi těžko, a i když na podzim a v zimě pravděpodobně nebude nouze o témata, zatím nějak necítím to správné nadšení, se kterým jsem v minulých dobách bušil do kláves svoje úchylné příspěvky. Proto je možné, že se doba mezi aktualizacemi mého Atari blogu bude ještě více protahovat a stane se znatelně nepravidelnou. Pokud tuto stránku náhodou sledujete, mohl by vám nově zřízený RSS kanál poněkud usnadnit život, protože je mi jasné, že chodit sem několikrát denně (ano, jsou mezi vámi i tací jedinci) a zkoušet, zda-li se autor milostivě uvolil opět něco vyžvýknout, není zrovna zábava.
Rád bych tímto také požádal o otestování RSSka a o případné připomínky např. k formátu poskytovaných informací, jelikož příslušná stránka není generována automaticky, nýbrž je to ručně lepené. Pro tuto chvíli jsem do kanálu vyslal posledních pět aktualizací blogu, další - doufejme - budou následovat.
Velikonočná vajca (03/09/2011)
Jak všichni jistě dobře víte, hledání velikonočních vajíček ve hrách pro osmibitové Atari je můj oblíbený sport, ve kterém navíc dosahuji poměrně slušných výsledků. Co slušných, já jsem v této činnosti naprostá světová špička! Jen pro připomenutí: první hromadu easter eggů jsem odhalil v roce 2009, další pak loni v březnu a vše vyvrcholilo nálezem vajíček v gamesách Joust a Planet Smashers pro konzoli 7800. Nyní jsem k těmto úspěchům přidal další pozoruhodný šťouch, který jak tak koukám přišel opravdu jako na zavolanou, protože od poslední akce uběhlo už přece jenom docela dost času a moje dlouho budovaná pověst elitního machra tedy byla ve vážném ohrožení.
Zcela bez mučení se přiznávám, že objevení dvou vajíček ve hrách od Stevena A. Ridinga nebylo dílem náhody. Neboť já čas od času po těchto srandičkách cíleně pátrám, byť většinou bez úspěchu. Někdy zkouším hledat sled instrukcí odpovídající pro hry netypickým akcím, jako je například hlídání současného stisku více funkčních kláves, jindy se zase pídím po textech, které by mohly indikovat nějakou tu kulišárnu. Ze zkušenosti totiž vím, že autoři mnohdy svoje velikonoční vajíčka ani příliš nemaskovali, kolikrát jim stačilo vtipný text vypisovat v BASICovském textovém módu 1 nebo 2, kde se barva znaků řídí horními dvěma bity, jejichž určité kombinace činí takto "zakódovaný" text na první pohled nečitelným. Na mě si ale nepřijdou, protože já jsem si napsal PC utilitu, která vezme libovolný Atari binár, všem bajtům snuluje dva nejvyšší bity a převede je do ASCII kódování. Jediným problémem pak samozřejmě zůstává nalezení původně skryté zprávy v chaotickém textovém souboru o velikosti typicky v desítkách kilobajtů.
Při mojí zatím poslední a tentokrát dokonce úspěšné honičce za velikonočními vajíčky jsem se zaměřil na hry vzniklé do roku 1982. Tehdy jednak v rámci dobové módy easter eggy opravdu frčely a druhak jsem tím výrazně zúžil množinu objektů k prozkoumání. A velmi záhy jsem narazil na něco opravdu zajímavého. V dumpu hry Air Strike II se po prohnání mojí utilitkou vyloupnul na světlo boží nápis "WELCOME MASTER GOOD TO SEE YOU", což okamžitě vzbudilo mou pozornost. Následovala chvilička disassemblování a brzy bylo jasné, že jsem na správné stopě, protože v kódu jsem nalezl jednu krátkou rutinu hlídající zadání hesla "strappy", po kterém se inkriminovaný text zobrazil. Zádrhel ovšem byl, že tato rutinka se nikde nevolala. Pomyslel jsem si, že asi mám nějakou divnou verzi této klasické střílečky a z Atarimanie jsem si proto stáhnul originální dump. Přitom jsem s překvapením zjistil, že hra Air Strike II existovala ve dvou verzích. 16k, jak už název napovídá, byla určena pro stroje se šestnácti kilobajty RAM, a od své větší sestřičky 32k se liší v podstatě jenom tím, že z paměťových důvodů nezobrazuje mapu tunelu. Důležité ovšem je, že v 16k vyťukání hesla "strappy" v titulní obrazovce opravdu funguje a má za následek vyplivnutí pozdravu, který tam autor sám sobě zanechal.
Povzbuzen objevem tohoto easter eggu, o kterém jsem nikde na internetu nenašel sebemenší zmínku, jsem se okamžitě vrhnul na další hry z dílny kolegy Ridinga a téměř identický kód velikonočního vajíčka jako v Air Strike II jsem lokalizoval ve známé gamesce Capt. Sticky's Gold. Zde je nutno z klávesnice nabušit kód "ste6502", v tomto případě již během vlastní hry, aby se zobrazil nápis "GREATINGS FRIEND OF STEVEN RIDING >TOPMAN HIMSELF<". Jen je třeba se ujistit, že člověk má puštěnou 32k verzi této hry (ano, také Capt. Sticky's Gold má dvě oficiální varianty!) , poněvadž v 16k toto velikonoční vajíčko vůbec není naimplementováno. Narozdíl od 32k verze Air Strike II, kde jeho kód i data jsou v bináru k nalezení, pouze tam oproti 16k chybí jedna klíčová instrukce JSR. Stejně by mě zajímalo, co to měli tenkrát v English Software na začátku 80. let za divné nápady prodávat dvě různá provedení téhož. Já každopádně mám ve svém archívu u obou zmiňovaných her pouze 32k verze, o něco ošizenější 16k jsou ke stažení na Atarimanii.
Po pečlivém prostudování Ridingovým vajíček mohu myslím zodpovědně prohlásit, že se jedná pouze o nevinnou legrácku se zobrazením "tajné" zprávy, neboť kromě přerušení právě vykonávané činnosti, vypsání nějakého toho textu a čekání na klávesu START už příslušná část kódu nic jiného nedělá. Předpokládám proto, že pozoruhodné vedlejší efekty, které má aktivace easter eggů na svědomí, už v plánu nebyly. Sranda je hlavně s Air Strike II. Z titulní obrazovky se mimo jiné jakýmkoliv pohybem joysticku pustí vlastní gamesa a jelikož se toto hlídá v přerušení, ve kterém rovněž běží herní engine, lze takto odpálit start i při zobrazeném nápisu "WELCOME MASTER". Následky jsou úžasné. Protože hlavní program je stále v easter egg rutině čekající na START, letí raketka tunelem s cyklicky měnícími se barvami a může střílet nebo bombardovat, ale kolize střel a bomb se už realizují mimo VBI a proto vůbec nefungují, takže velice rychle nastává nevyhnutelný konec. A jakmile se tak stane, jediným vysvobozením zůstává tlačítko START, po kterém se skočí do titulní obrazovky. Jenomže program si mezitím myslí, že už se hraje, a člověk uvázne s raketkou mezi nápisy AIR STRIKE II, kde mu nezbývá nic jiného, než spáchat několikrát po sobě rituální sebevraždu.
Podobné je to s gamesou Capt. Sticky's Gold. Po aktivaci velikonočního vajíčka zůstává na obrazovce kromě nápisu "GREATINGS FRIEND" také z PMG objektů složený potápěč, se kterým se (možná záměrně?) nechá nadále hýbat a střílet z harpuny. Avšak když se člověk trochu snaží a heslo "ste6502" namlátí dostatečně rychle po spuštění hry, tj. v době, kdy k nápisu "PREPARE FOR LEVEL" odspoda letí číslo úrovně, dají se i tady vykouzlit hodně zajímavé věci. A to bych řekl, že autor velmi pravděpodobně již v úmyslu neměl. Po stisknutí STARTu - stejně jako u Air Strike II - dojde na překrásnou přehlídku barev a hra se ocitne v neovladatelném stavu. Přerušení se stará o pohyb rybiček a o pár dalších věcí, hlavní programová smyčka je ale beznadějně zaseknutá v rutině obstarávající easter egg.
Jsou to věci, že? Historie osmibitových Atari je opět o pár perliček bohatší a to už poněkolikáté díky Fandalovi, vašemu oblíbenci. Na jednoho hloupého strojaře, kterého profesně trápí především to, jestli zase někde neutrhne frézu, nerozláme vrták nebo to nedej bože rychloposuvem nenapálí do něčeho vřetenem (a pro kterého tedy počítače a programování vždy byly, jsou a budou pouze koníčkem), si nevedu úplně špatně. Co říkáte?
Věnováno Rasterovi (09/08/2011)
Poměrně dlouho jsem váhal, zda mám následující řádky zveřejnit či ne, protože cokoliv, co napíšu nebo řeknu, bohužel nemůže vůbec nic změnit na hrozné skutečnosti, že "náš" Radek již není mezi živými. Ale nějak jsem potřeboval se alespoň pokusit trošičku si utřídit zmatené myšlenky a hodit je obrazně řečeno na papír. A když už jsem to udělal, nakonec jsem se rozhodl podělit se o ně i s vámi. Neboť mnozí jste měli tu čest poznat Rastera osobně a pokud je také pro vás jeho tragicky předčasná smrt stále nesnesitelně bolavou ranou na duši, potom vězte toto: nejste v tom sami.
Znal jsem Radka Štěrbu nějakých jedenáct nebo dvanáct let a troufnu si tvrdit, že byl jedním z mých velmi dobrých přátel. A to i přes to, že osobně jsme se vídávali jenom párkrát do roka a jinak jsem spolu komunikovali výhradně elektronickou formou. Diskutovali a dopisovali jsme si nejenom o Atari téměř každý den po ICQ nebo emailem, naposledy jenom pár hodin před oním příšerným neštěstím. Možná je to jenom moje zbožné přání, ale když se na to tak zpětně dívám, mám pocit, že jsme byli naladěni na stejnou notu. Jistě, spojovalo nás především společné hobby, ale rozuměli jsme si také lidsky. Snad to i on cítil podobně.
Můj vztah k Radkovi bych popsal jednou větou asi takto: měl jsem ho rád za to, co uměl a kým byl, obdivoval jsem ho a respektoval. Byl bezpochyby chytřejší a v tolika směrech podstatně talentovanější než já, což určitě velmi dobře věděl, ale nikdy to ani mrknutím očka nedával najevo. Ohledně Atari byl nekonečnou studnicí vědomostí, ze které jsem často čerpal, a hodně z toho, co dnes umím, mne se svatou trpělivostí naučil právě Raster. Ochota pomáhat druhým byla ovšem jenom jednou z mnoha Radkových vlastností, které z něj dělaly bez nadsázky skvělou lidskou bytost. Moc a moc budu postrádat jeho klidnou, vstřícnou, veskrze pozitivní a přátelskou povahu, originální myšlení, neuvěřitelnou kreativitu a jeho typický smysl pro inteligentní humor.
Na smrt blízké osoby nemůže člověka na tomto světě nikdy nic jakkoliv připravit, zvláště pak na šok, který nevyhnutelně přichází při náhlé a naprosto nečekané ztrátě. Vždy, když znovu pomyslím na to, že Radek tu s námi už není, je to jak zásah elektřinou. Stále tomu nemůžu uvěřit a pořád dokola se mi vrací, že tohle přece není možné, že to prostě nemůže být pravda. Něco ve mně vzpírá akceptovat realitu a já tuším, že vyrovnat se s Rasterovým odchodem bude vyžadovat ještě hodně a hodně času. Zapomenout ale nebude nikdy možné a já to ani nechci. Radek byl výjimečně dobrý člověk a já si vzpomínku na něj ponesu do konce života...
"Lepší odcházijou, enom my potvory ostávame." (30/07/2011)
Tak strašlivě smutný zápisek, jako je tento, už doufám nikdy do svého blogu nebudu muset psát. Ve čtvrtek 28. července 2011 tragicky zemřel vynikající Atarista a především skvělý člověk Radek "Raster" Štěrba. Navždy nás opustila mimořádná a nenahraditelná osobnost, bez které život už nikdy nebude takový, jako býval dřív. Pakliže existuje nebe, na nějakém tom obláčku se jistě našlo místo i pro Rastera, protože duší jako byla ta jeho jsem doposud mnoho nepotkal. A jelikož s mou případnou cestou do nebíčka to asi nebude tak úplně jednoduché, jsem alespoň za to rád, že jsem Radkovi stihnul složit poklonu ještě za jeho pozemského života. Bohužel nevím, zda někdy dostanu další šanci, v tuto chvíli je jisté pouze to, že ačkoliv se to rozum stále brání přijmout, na tomto světě už spolu nikdy nevyrazíme na žádnou Atari party ani jen tak na pivo, nezapaříme multijoyovku ani dlouho do noci nepokecáme, nedáme dohromady další gamesu a ani už ho nikdy nenaučím pořádně házet frisbee. Vím určitě taky to, že Radek by rozhodně nechtěl, abychom to my ostatní tady s Atari zabalili "jenom" proto, že on již u toho nemůže být. Snad Tě, Radku, nezklameme.
Budeš nám všem hrozně scházet, kamaráde!!!
![](../img/raster.png)
Crackování v praxi II (27/07/2011)
Dobře, ukecali jste mne. Druhý díl z cyklu "Crackuje celá rodina" je zde. V hlavní roli gamesa Thinx, dále hrají Fandal, Miker, Fred Meijer, disketová jednotka Atari XF-551, emulátor Atari800Win PLus, hexaeditor UltraEdit-32 a další. Upozorňujeme diváky, že tento snímek s detektivní zápletkou není vhodný pro Spectristy, Sharpisty a další podobná podezřelá individua. Je určen pouze pro skalní fanoušky osmibitových Atari řady XL/XE, kterým v útrobách tiká RISCové srdíčko 6502, protože o ničem jiném než právě o Atárku se zde mluvit nebude. Kšá, Spectristi, kšá! Máte moc registrů pro zdejší kraj!! Commodoristům se tímto jako chudším vzdáleným příbuzným sledování pořadu milostivě povoluje.
Pokud jste ve zdraví pobrali obsah minulé epizody, víte už, jak s úspěchem cracknout disketu s prostou ochranou založenou na testování existence špatného sektoru. Tentokrát si něco povíme o tom, jak postupovat, když objekt našeho zájmu klade o něco větší odpor a nenechá se zlomit během čtvrt hodinky. Nejdříve trochu historie. Hru Thinx dal v roce 1993 dohromady Erik Stok z týmu Comtech Crew a o její distribuci se staral ANG Software. Pod touto značkou prodávali machři z Nizozemí celkem něco kolem patnácti gamesek, z toho pět originálních (zbytek byly licence). Thinx mezi nimi zaujímá zvláštní postavení proto, že veřejně na internetu byla vždy dostupná pouze demoverze s šesti levely, zatímco plná hra jaksi nebyla k dispozici. Přiznávám, že já bych si něčeho podobného asi těžko všimnul, protože mít přehled o tom, zda ty tisíce her, co mám ve svém archívu, jsou všechno ostré nebo plně funkční verze, to opravdu nezvládám. Když už ale někdo přijde s tím, že někde něco chybí, je třeba doplnit či opravit, jsem více méně vždy ochoten s tím něco podniknout (je-li to možné). Stejně jako v tomto případě.
Všechno odstartovala tato diskuse na AtariAge, kde se původně jenom hledali bývalí holandští Ataristé. Do toho jim vstoupil Miker, jestli nemají kontakt na Erika Stoka. Že prý tento borec na Atarimanii ke své vlastní hře Thinx připsal komentář, jak ho mrzí, že jí nemůže dát volně k dispozici, jelikož si už po těch letech nedokáže poradit s její ochranou. A že prý kdyby alespoň poskytnul dump originální diskety, jistě by si s tím už někdo věděl rady (koho to tím Miker jenom mohl myslet? :-]). Na to zareagoval Fred Meijer, že Thinx je opravdu "těžce" zabezpečená proti kopírování a on osobně neví, co s tím, ale že jí má ve svém webshopu. A to byla informace, na kterou jsem čekal. Kontaktoval jsem Freda, abych se ujistil, že mu nebude vadit, když si od něj Thinx koupím, cracknu jí a následně jí šoupnu na web všem ke stažení. Fredovi to naštěstí nebylo vůbec proti srsti (dost možná proto, že měl na skladě úplně poslední exemplář) a navíc také on prohlásil, že i autor hry bude jedině rád. Tak jsem už na nic nečekal, zaplatil jsem požadovaných necelých sedm Euro včetně poštovného a od té chvíle jsem se mohl pouze úpěnlivě modlit, aby notoricky nespolehlivé pošty někde zásilku nepohřbily nebo nezničily. To se díky bohu nestalo a třetí červnový víkend jsem měl Thinx doma (kratičký černobílý A5 manuál + disketa, to vše od roku 1993 zatavené v igelitu). Pustil jsem se tedy do práce.
Ze skříně jsem vytáhl starou dobrou XF-551, propojovací SIO kablík a z neuvěřitelně propletené hromady nejrůznějších zdrojů, adaptérů, kabelů a všemožných ovladačů jsem po kratším zmateném hledání vydobyl i jedno funkční trafo. Pospojoval jsem to, disketu vrazil do mechaniky, zapnul Atárko a... hra nenaběhla. ;) Prostě nešla nabootovat. Objevilo se logo čekající na stisknutí klávesy START nebo na fire, načetla se halda sektorů, pustilo se depackování a po dramatické pauze vše začalo odznovu. No toto?! Trošku jsem znejistěl, ale pokračoval jsem dál podle plánu (co mi nakonec jiného zbývalo, že?). Odpálil jsem APE, nasadil sektorový kopírák a jal se vytvářet ATR kopii originálního disku. Podle očekávání se na něm vyskytovaly dva vadné sektory, protože jakýkoliv jiný typ ochrany u této hry by pro mne byl býval překvapením. Tím pro real HW skončilo účinkování v našem příběhu, zbytek se odehrával pod emulátorem.
Při prvním spuštění čerstvě vyrobeného ATRka v Atari800Win PLus jsem především zjistil, že hra se chová stejně jako na skutečném železe, tj. vůbec nefunguje. Jelikož jsem se neměl absolutně čeho chytit, počkal jsem si odhadem na plus mínus konec depakovací části a pustil jsem v monitoru záznam běhu procesoru 6502 na disk (příkaz "tron jmeno_souboru"), abych zjistil, co se to vlastně děje. Tímto způsobem sice vznikají během chvilky obrovské soubory v řádu desítek a stovek megabajtů, ovšem někdy jiné cesty než trasování zkrátka není. A jsou i případy, kdy to pomůže. Haha. Po chvilce zuřivého listování vzniklého výpisu jsem totiž natrefil na místo, kde se skáče na adresu $E477 (cold start), a zpětnou analýzou chování programu jsem konečně odhalil, která bije. Autor jako ochranu použil fintu se sektorem, jehož opakované čtení dává pokaždé jiný výsledek (typicky se to dělalo tak, že jedno čtení vracelo samé nuly a druhé samé $FF). Jako označení této ochrany navrhuji oficiální název "dvojitý agent", aby všem bylo do budoucna jasné, o čem je bez dlouhého popisu situace řeč. Všichni autoři mého blogu souhlasí? (V sále se zvedá les rukou a asistentky sčítají hlasy...) Ano, souhlasí! Návrh byl jednomyslně přijat!!
Vše podstatné se děje v této části kódu:
$8152 LDY #$00 ; index prvního bajtu
$8154 LDA $3000,Y ; porovnej výsledek prvního čtení
$8157 CMP $3080,Y ; s výsledkem druhého čtení
$815A BEQ $8160 ; shoda?
$815B INY ; ne, přejdi na další bajt
$815C BPL $8154 ; už jsme prošli všech 128 bajtů?
$815F RTS ; vše OK, ochrana nalezena
$8160 JMP $879D ; ha - pirátská kopie!
Tomuto testu předchází dvojí čtení sektoru $39B, přičemž první výsledek se ukládá do paměti od adresy $3000 a druhý od $3080. Následuje zde rozepsané a okomentované porovnání obou těchto paměťových prostorů, a jakmile se v nich narazí na shodný bajt, tj. dvojitý agent nezafungoval, skočí se na adresu $8160, odkud již vede přímá cesta ke studenému startu. Navýsost vtipné je ovšem to, že na originální disketě s Thinxem jsem při vší snaze dvojitého agenta v sektoru 923 nenašel a nepodařilo se mi to ani nikde jinde. Proto není divu, že mi hra nešla spustit! Zřejmě jsem obdržel nějaký nepovedený kus nebo co. To ale naštěstí ničemu nevadí. Dvojitý agent sloužil pouze a jenom jako ochrana umístěná daleko na konci disku. Kdyby však obsahoval data, která by se dále používala, tak jako třeba u hry Stickybear Bop, kde na dvojitého agenta vyšla přímo část kódu, bylo by to podstatně horší. To by spíš byl býval pěknej průšvih, protože 128 chybějících bytů si člověk opravdu nedomyslí.
Když už jsem toto vše věděl, rozeběhnout Thinx v emulátoru nebyl žádný problém. Dal jsem si breakpoint na adresu $8154, a když se tam program dostal, změnil jsem o dvě instrukce dál podmínku BEQ na BNE a bylo to. Hra se krásně pustila, všechno fungovalo a já věděl, že jsem blízko tomu, abych Ataristy obšťastnil dalším zachráněným kouskem kvalitního softwaru. Jenomže pak mi došlo, že cracknout Thinx nebude úplně snadné. Kritická část kódu, kontrolující existenci ochrany, je při bootování součástí druhého partu, který je kompletně zapakovaný. A to packerem, po kterém jsou zkomprimovaná data k nepoznání od těch původních. Nikde na disku proto nenajdete sled bajtů $B9 $00 $30 $D9 $80 $30 $F0 $04, kde by jednoduše stačilo přepsat hodnotu $F0 (BEQ) na $D0 (BNE). A i kdyby to bývalo šlo, tak by se ta potvora stejně správně nerozbalila, neboť tento typ komprimačních metod neustojí ruční zásah do zapakovaných dat. A je už jedno, jestli je to kvůli nesedícímu konečnému CRC nebo zda jsou nějaké kontrolní součty potřeba přímo při dekompresi. Prostě vyhodí kopyta a nazdar.
Musel jsem na to jinak. Nabízelo se sice řešení v podobě vydumpování paměti emulátoru po aplikaci právě popsaného breakpointového čarování a jejího opětovného zapakování jiným packerem, ale to by bylo na můj vkus hoooodně prasácké. Jelikož hra ukládá na disketu tabulku nejlepších a file verze tedy nepřicházela v úvahu, byl bych buď nucen udělat i nový disk loader celé hry, protože mnou zkomprimovaný crack by byl délkově zaručeně odlišný od originálu, nebo bych musel použít pro bootování DOS. A to by znamenalo naprosté překopání úplně všeho. Tomu já neříkám něco cracknout, ale zprznit. "Co teda k***a s tím?" opakoval jsem si bezradně, když tu mě napadlo propašovat při bootu někam do paměti droboulinký kousíček mého kódu, který se pustí hned po rozbalení hlavní části, přepíše inkriminovanou podmínku a až poté předá řízení původnímu programu. Skok pryč z depakovací rutiny na samotný kód hry, tj. na adresu $8000, jsem po chvilce pátrání v paměti emulátoru úspěšně lokalizoval a tři bajty $4C $00 $80 pro instrukci JMP $8000 byly i na disku, protože dekomprimační část kódu naštěstí ničím dalším zabalená již nebyla (což se teoreticky taky mohlo stát). Čili teď už chybělo jen nápad prakticky zrealizovat.
Nejprve jsem myslel, že svých pár bajtíků přilepím do posledního použitého sektoru, poněvadž jsem se domníval, že Thinx má klasický sekvenční sektorový loader. V geniálním a pekelně rychlém hexaeditoru UltraEdit-32 jsem však zjistil, že i poslední sektor je plný až po okraj a navíc jsem si všimnul, že další prázdné sektory za ním vypadají velmi podezřele, jako kdyby byly zformátované pod DOSem 2.5 nebo něčím kompatibilním. To jest poslední tři bajty jsou použité pro řetězení. Moje podezření zesílilo, když jsem v posledním sektoru zahlédl typickou bajtovou sekvenkci $E0 $02 $E1 $02, což je RUN header standardního Atárkovského bináru. Pro takové případy mám už z dřívějška po ruce jednu malou utilitku, která ATRko přeoře, poslední tři bajtíky z každého sektoru vyhodí a výsledek poslepuje. I poštval jsem jí na dump Thinxe a po chvilce práce jsem dostal přesně to, co jsem očekával: přímo spustitelný XEX s mnoha bloky a několika INIT headery. V tu chvíli bylo vše naprosto jasné: Erik Stok svou gamesu normálně zkompiloval do podoby bináru a pak si dal tu práci, že část diskety zformátoval jakoby ve stylu DOSu, svůj program tam napral a k tomu přidal speciální loader, schopný poradit si se všemi typy bloků A8 bináru. Pro zmatení nepřítele ovšem svůj formát diskety zmodifikoval a nutno říci, že mě v tomto posledním bodě opravdu nachytal s trenkama dole.
Mým logickým záměrem bylo k původnímu bináru připlácnout před RUN header další kraťoulinký blok LDA #$D0 STA $815A JMP $8000, který mi zajistí vyřazení ochrany. Jenže já vůl si pořádně neprostudoval, jak to tam má autor s těma sektorama přesně naimplementované. Prostě jsem mrknul na předposlední dva bajty několika po sobě jdoucích sektorů, a když jsem viděl, že je to záměrně dělané úplně jinak než je běžné, už jsem to dál nezkoumal a začal jsem v hexaeditoru rovnou mlátit nová data. A to byla hrubá chyba, protože mi to pořád padalo a vůbec to dělalo psí kusy. Jako by nestačilo, že jsem měl velké problémy najít v paměti místo, kam bych svých pár bajtů schoval, neboť depakovací rutina mimo jiné ostošest čistí co může. Ve finále jsem bezpečnou paměťovou oblast našel až na začátku první stránky paměti, tj. na spodku zásobníku, což rozhodně není moc košer, avšak zoufalá situace si vyžádala zoufalé řešení. Ale abych to zkrátil. Kdybych si byl býval hned uvědomil, že poslední byte sektoru klasicky udává celkový počet obsazených bajtů a že tedy toto Mr. Stok nezmodifikoval, ušetřil bych si hromadu času. Takhle mi to doteklo až po spoustě marných pokusů, kdy jsem konečně zvítězil. A to vložením pouhých dvanácti bajtů (z čehož čtyři bajtíky připadají na header bloku), změnou instrukce JMP $8000 na JMP $0100 a nezbytným updatem onoho prokletého bajtu číslo $7F v posledním obsazeném sektoru. Čisté a elegantní!
Jako poslední krok celého dobrodružství zbývalo cracknutou verzi Thinxe v milovaném UltraEditu poněkud učesat. Začal jsem tím, že zbytečně velkou 130 kB disketu překlopil na 90 kB. Pak jsem vykostil sektor s naprosto nepotřebnou VTOC tabulkou a snuloval jsem i pár dalších bezprizorních bajtů v nepoužitých sektorech. No a na úplný závěr jsem ještě musel opravit chybku v tabulce top five (sektory $16B a $16C), kam se nějakým způsobem vloudilo jedno špatné čísílko do hexadecimálního vyjádření pátého nejlepšího výkonu. V textové části bylo zapsáno 300 bodíků, ale o kus dál bylo místo $12C (300 decimálně) nesprávně uloženo $1E1. Na tento nedoraz jsem přišel při důkladném testování celé hry, která mě popravdě až tolik nezaujala a dál než do třetího levelu jsem se neprokousal. Pokud vás ovšem logické přesouvací gamesky jako Bombay či Replugged baví, snad vás i Thinx, který už nějaký ten pátek u mě na sajtě visí, potěšil. Mně ke štěstí stačí, že jsem plnou verzi této hry úspěšně zachránil pro další generace, kterým to bezpochyby bude úplně fuk.
Jste-li nyní z nějakého důvodu v pokušení si Thinxe cracknout svými vlastními silami, není nic snazšího než si stáhnout mnou vyrobenou ATR kopii vypadnuvší ze sektorového kopíráku. Originální disketu mám fyzicky bohužel pouze jednu a té se zatím zbavovat nehodlám...
Tak takhle ne, dámy a pánové! (10/07/2011)
Minule jsem slíbil, že se ještě vrátím k anketě ze začátku června, takže pojďme tedy na to. No, příliš jste mě nepotěšili. Nic jiného na to nelze říct. Upřímně, takové výsledky jsem nečekal. Co vám budu povídat. Myslel jsem, že na můj veskrze důvěryhodný blog nahlížíte ne snad úplně odlišně, ale přece jenom poněkud jinak. Je to pro mne zkrátka a dobře trošku zklamání. Zvláště potom, co dvě předposlední ankety, kterými jsem uzavřel blog za rok 2010, dopadly k mé velké a ne nijak výrazně hrané radosti naprosto skvěle. Zřejmě to ovšem bylo pouze a jenom tím, že jsem tehdy neskutečně dobře volil jak otázky, tak i soubory možných odpovědí. V červnu se mi to očividně až tolik nepovedlo, protože někteří jedinci - s chabou a trapnou výmluvou, že neumí korejsky - dokonce odmítali hlasovat! Jako bych já mohl za to, že ve škole nedávali pozor a místo toho se věnovali lumpárnám.
Jiní exoti šli naopak do opačného extrému. Nejlepší Atari hudebník všech dob a všech dosud prozkoumaných vesmírů, dříve známý jako Poison, jenž si ve své nekonečné skromnosti začal nedávno říkat Allmighty, pravidelně zcela zkresloval výsledky anket tím, že v zaměstnání obíhal všechny dostupné počítače a zuřivě klikal, co mu síly stačily. Touto svou podvratnou činností nejenom, že téměř úplně znehodnocoval snahu všech poctivě hlasujících, ale co je horšího, vzbuzoval tím ve mně falešný dojem, že tento blog čte nečekaně velký zástup Ataristů. Čili pokud jsem se až do jeho šokujícího přiznání na letošní PLatariádě domníval, že můj humoristický skoro pravidelník sleduje minimálně celá Klapzubova jedenáctka včetně táty Klapzubáka, nyní už je jasné, že jsme v tom zase zůstali pouze my Čtyři z tanku a pes.
Poučen z těchto bolestných zjištění, rozhodl jsem se dovést ankety na svém blogu jednou a provždy k naprosté dokonalosti. Už žádné volnomyšlenkářské nepořádky! Od nynějška budu jednak nadmíru pečlivě připravovat obsah nových anket, ale především hodlám dopředu určit také výsledky. Jistota je jistota. Čtenáři samozřejmě i nadále budou moci zcela svobodně hlasovat podle svého nejlepšího vědomí a svědomí, akorát jejich názory nebudou jakkoliv brány v potaz, což je ostatně základní vlastnost mého blogu. Jsem bytostně přesvědčen, že je to nejschůdnější způsob, jak zajistit, abych pak byl s takovou anketou, respektive s vaším hlasováním, skutečně plně spokojen a vyhnul se tím zbytečným překvapením, rozčarováním a nedorozuměním. Následující anketku tedy berte jako takovou první vlaštovku mého zbrusu nového přístupu k této problematice.
Vidíte ty krásné, oku a duši lahodící výsledky? Takhle nějak byste měli hlasovat, holomci! Jenže nechat to na vás, to bych se zase mohl dočkat kdoví čeho, jenom ne těch jediných správných a očekávaných dat, která bych poté mohl svědomitě zpracovat a těšit se z nich. I když pominu Poisonovy - pardon, omlouvám se - Allmightyho do nebe volající excesy, stále mám velmi vážné podezření, že také vy ostatní si bez dohody se zadavatelem anket naprosto nezodpovědně hlasujete, jak vás zrovna napadne. Navíc si beztak ještě kolikrát ani pořádně nepřečtete, o čem anketa vlastně tentokrát je, a něco tam prostě namačkáte. A právě tomu chci definitivně udělat přítrž. Kapišto?
Crackování v praxi (22/06/2011)
Dneska bych se asi měl věnovat všemi napjatě očekávanému vyhodnocení ankety z prvního červnového víkendu, ale nechám si to až někdy na příště. Tentokrát půjde moje pověstné a širokou čtenářskou obcí tolik oblíbené vtipkování přece jenom lehce stranou, protože tématem je crackování her na osmibitovém Atari, a to občas není ani trošku sranda. Tuto problematiku jsem zde již sice řešil a popisoval několikrát, avšak v posledních dvou týdnech jsem na tomto poli opět dvakrát zabodoval, čili nebylo o čem přemýšlet. Musím se znovu veřejně pochválit, což mi naštěstí nečiní sebemenší problém. Nicméně bych tuto dnešní tirádu rád pojal spíše jako cvičení a ne jako suchopárnou přednášku. Probíranou látku si budete moci sami na pokusných objektech prakticky ověřit a kdo to nestihne v hodině, ten si to bude moct udělat za domácí úkol. Krátký úvod bychom tedy měli za sebou a nyní hurá rovnou na věc.
Většina ochran softwaru proti kopírování je na Atárku v případě disket založena na manipulaci se záznamem na úrovni formátu disku. Některé další a zřídka používané ochrany, jako je použití systému náhodně vybíraných otázek (např. dotazovaní se na určité slovo na jisté stránce v manuálu) nebo unikátní optické udělátko lenslok u textovek od Level 9 Computing, ponechme nyní stranou. Standardní A8 disketa má při jednoduché hustotě záznamu 40 stop, 18 sektorů na stopu a sektor po 128 bytech, což dává kapacitu 90 kB. Při střední hustotě záznamu máme 40 stop, 26 sektorů na stopu a sektor opět po 128 bytech neboli kapacitu 130 kB. Právě tyto dva formáty v oblasti komerčního softwaru jasně vládly, protože gamesu, která by se prodávala na disketách s dvojnásobnou hustotu záznamu (40 stop x 18 sektorů x 256 bytů na sektor = 180 kB), jsem doposud ještě nepotkal. Bezpečně nejoblíbenější ochranou - používanou v různých obměnách - bylo vytváření špatných (nečitelných) sektorů a jejich následné testování na programové úrovni. Existovaly pochopitelně i jiné pozoruhodné triky, které opravdoví hardcore programátoři sem tam zabudovali do svých výtvorů. Třeba u hry Necromancer od věhlasné firmy Synapse, která si na ochranách svých produktů dávala obzvlášť záležet, je origoš disketa drsně zformátovaná částečně se stopami po 18 a částečně po 17 sektorech. A část pro jistotu není zformátovaná vůbec. :)
Buď jak buď, bez upravené disketovky (např. populární Happy čip) si člověk disketu se záměrně nakopnutým formátem běžným způsobem nezkopíroval, respektive duplikát neodpovídal 1:1 zdrojovému disku, s čímž samozřejmě autor ochrany počítal a pomocí pár jednoduchých testů to byl schopen i zjistit. Když se tak stalo, většinou následovalo zavěšení systému. Ale ne vždy. Například střílečka The Tail of Beta Lyrae, na Atárku celkově jedna z nejsofistikovaněji zabezpečených her vůbec, se sice z neoriginálního disku taky spustí, ale běží ve velmi těžkém módu. Opravdu rafinované, jen co je pravda! Překonat tyto ochrany znamená zasáhnout do původního kódu a bezpečnostní pojistky vyřadit neboli SW cracknout. Jak přesně na to bych vám chtěl demonstrovat na hře Warlok. Tahle věc z roku 1983 se prodávala v UK na kazetách a disketách, v obou variantách s ochranou. Z nějakého důvodu nikdo nebyl schopen cracknout disketovou verzi nebo spíš se takový crack do dnešních dob nezachoval a všude po internetu se povalovala jenom kazetová verze převedená na XEX binár. Ta měla tu droboulinkou chybičku, že obsahovala pouze první level ze čtyřech a po jeho úspěšném (a hlavně i neúspěšném) dohrání chtěla načítat data z pásky, která pochopitelně nebylo kde vzít, a bylo vymalováno. O tomto zádrhelu se v zasvěcených kruzích vědělo, dokud se ale na AtariAge v květnu letošního roku neobjevil PRO image disketové verze Warloka, nedalo se s tím nic dělat.
Zde nyní musím maličko odbočit od tématu a podívat se na zoubek formátu PRO. Jeho duchovním otcem je Steven Tucker, autor vynikajícího APE, což je PC software emulující přes SIO2PC disketovku. Vymyslel ho už před mnoha lety proto, aby nějakým způsobem dokázal vytvářet image disket zachovávající i jejich ochrany, tj. aby nemusel nic crackovat. Snažil se tedy o to samé, co o něco mladší projekt VAPI se svými ATX soubory. Jenomže Tuckerův vynález, vyžadující na propojení disketovky s PC místo standardního a rozšířeného SIO2PC jeho vlastní speciální kabel zvaný ProSystem, se prakticky vůbec neujal. Pokud je mi známo, jako PRO image bylo vydumpováno naprosté minimum softwaru a kromě APE má podporu tohoto formátu pouze emulátor Altirra. A aby se to nepletlo, ATX a PRO image jsou vzájemně nekompatibilní. Čili pokud jsem tu kdysi prohlásil, že ATX je nechutně obskurní záležitost, tak nevím, jak pojmenovat PRO. Moje stanovisko se v každém případě nemění a nezmění: komu se to líbí, ať si klidně ATX nebo PRO používá. Já ovšem s těmito soubory nekamarádím a co budu živ, budu je crackovat a převádět na ATR. Howgh.
A právě to jsem udělal i s PRO verzí Warloka. Nejprve jsem si ověřil, jestli se má cenu do cracku pouštět. To jest zda je tam ta hra skutečně celá a plně funkční. Když se ukázalo, že tomu tak je i navzdory tomu, že se v této kopii jakýsi vtipálek realizoval přeplácnutím několika nápisů, dal jsem se do díla. Nyní mě prosím sledujte opravdu pozorně, protože toto už je vážně důležité. A to platí i pro ty dva blbečky v poslední lavici!! Nejprve přišel ke slovu sektorový kopírák. Já osobně používám jednoduchoučký, ale spolehlivý a prověřený Sectorcopy 1.5, který má dvě základní výhody. Zaprvé podporuje rozšířenou paměť a zadruhé se pokaždé, když narazí na vadný sektor, zastaví a čeká, co na to uživatel (START = opakuj pokus o načtení sektoru, SELECT = ignoruj chybu a pokračuj dál). To umožňuje si čísla špatných sektorů v klidu poznamenat, což se, jak záhy uvidíme, moc a moc hodí. Při kopírování PRO image Warloka na standardní ATRko Sectorcopy nahlásí problémy se sektory 4 a 5, zbytek diskety je OK. Když ale ATR kopii zkusíte pustit, systém padne na hubu. Je tedy jasné, že vadné sektory jsou součástí ochrany, kterou je nutno vyřadit. V případě Warloka je to hodně snadné, ba až triviální, což byl také důvod, proč jsem tuto hru vybral jako demonstrační příklad toho, jak borci mého kalibru při crackování postupují.
Stačí správně použít mocná kouzla poskytovaná emulátory, konkrétně systém breakpointů. Zde popíšu postup v emulátoru Atari800Win PLus, pod Altirrou to jde jistě také, ale tu já nepoužívám a nikdy jsem v ní něco takového nedělal. Nuže: pustíme si pod emulátorem naše zatím ještě padavé ATRko Warloka, skočíme do monitoru (klávesa F8), napíšeme příkaz "b write=30a a=04" (uvozovky vynechat, prosím) a dalším příkazem "cont" jako continue okno monitoru opět uzavřeme. Příkazem "b write=30a a=04" nastavíme vyvolání breakpointu v situaci, kdy dojde k zápisu na adresu $030A a v akumulátoru je současně hodnota $04. Jinými slovy na okamžik, kdy se loader hry Warlok chystá pomocí systémových služeb načíst první vadný sektor. Adresa $030A je totiž nižší byte pointeru na číslo načítaného sektoru. Jakmile je breakpoint vyvolán, emulátor skočí automaticky do monitoru a současně vypíše, na které adrese v paměti k tomu došlo. Loader Warloka tak činí na samotném konci bootování úvodní části, na adrese $30F9. A když od této adresy pustíme disassembler (příkaz "d 30F9", resp. "d 30F7"), vidíme, že autor na to šel poměrně dost naivně a jeho způsob zabezpečení této hry proti kopírování je průhledný až běda:
$30F7 LDA #$04 ; LO byte vadného sektoru $04
$30F9 STA $030A ; zápis do tabulky pro SIO operace
$30FC LDA #$00 ; HI byte vadného sektoru $04
$30FE STA $030B ; zápis do tabulky
$3101 JSR $E453 ; volání systémové SIO služby
$3104 BMI $3109 ; nastala chyba při čtení sektoru?
$3106 JMP $0000 ; nenastala, takže crash
$3109 LDA #$05 ; LO byte vadného sektoru $05
$310B STA $030A ; zápis do tabulky
$310E JSR $E453 ; volání systémové služby
$3111 BMI $3116 ; co chyba?
$3113 JMP $0000 ; nenastala -> crash
$3116 JMP $4F00 ; pusť hru!
Tento odstavec můžete Bobe, Marku, Radku a vy všichni ostatní šprti s červenými ataristickými diplomy klidně přeskočit, ale pro ty, co nic nedešifrovali ani z krásně okomentovaného kódu: nejprve se zkusí načíst vadný sektor $04 a když se to povede, tzn. systém nevrátí v příznaku N chybu, skočí se do ZP na nesmyslnou adresu $0000 a systém spadne. Pak se to samé vyzkouší pro jistotu i se druhým špatným sektorem $05. Toť vše. Jak primitivní! Na odstranění této ochrany stačí v nějakém hexaeditoru například přepsat instrukce JMP $0000 na JMP $4F00. Respektive těch možností je mnohem mnohem víc, já jsem to celé pro ilustraci vyřešil tak, že jsem kontrolu sektorů $04 a $05 zcela vyhodil a nahradil jsem tuto část kódu detekcí systému NTSC spojenou s úpravou konstant v časování jednoho DLI, které korektně fungovalo pouze na PALu. Kromě toho jsem z cracknutého ATRka vyházel všechny "vtipné" nápisy, co tam napráskal jistý Happy Hacker a nahradil jsem je původními texty podle kazetové verze.
Myslím, že z tohoto popisu je už na první pohled více než zřejmé, že udělat plně funkční cracknutou ATR verzi hry Warlok je při jistých znalostech osmibitového Atari naprosto rutinní záležitost na deset minut. Proto mi pořád není jasné, proč PRO image Warloka ležel na AtariAge takovou dobu úplně ladem, dokud jsem se toho neujal. Proč hergot nikdo z těch desítek a stovek zkušených a zručných Ataristů, co AtariAge a podobné servery hojně navštěvují a velmi moudře tam hovoří, alespoň čas od času nepřiloží ruku k dílu a svým méně šťastným kolegům nepomůže? Nechápu to. Asi by je to příliš obtěžovalo, nezajímá je to nebo se jim prostě a jednoduše nechce. Když už to ale nehodlají dělat pro sebe, měli by to alespoň udělat pro ty druhé! Problém totiž je, že když se nebude nikomu nic chtít, můžeme celé to naše slavné hobby rovnou na místě zabalit. Možná to ne všem dochází, ale máme vlastně pořádné štěstí, že tak daleko to zatím nedošlo, protože pár lidem se ještě občas cosi dělat chce. <samochvála> Jako třeba mně. </samochvála>
Pokud vás toto poněkud delší povídání zaujalo a čistě náhodou byste si chtěli pohrát s Warlokem dle mého návodu osobně, zde je původní PRO image této hry, jak jsem ho stáhnul z AtariAge, a zde je necracknutá ATR verze, která vypadnula ze sektorového kopíráku. Fixnuté a cracknuté ATRko je na a8.fandal.cz od předminulého týdne k nalezení přímo v archívu. Pro vyjasnění celé problematiky bych rád dodal, že mnou popsaný způsob nastavení breakpointů ke zjištění místa, kde má Warlok zabudovanou ochranu, není samozřejmě ani zdaleka jediný možný. Lze se vydat např. cestou hlídání si IRQ vyvolaného instrukcí BRK (skok na vektor $206), protože právě sem se systém před pádem s největší pravděpodobností propracuje. To už je jenom a pouze na vaší breakpointové kreativitě, jak se doberete kýženého výsledku.
A ještě něco, než se mi jako obvykle rozutečete po hospodách. Kromě Warloka se mi před pár dny též podařilo vyrobit crack plné verze hry Thinx, což už byla o něco zajímavější prácička. Stojíte-li také o toto pošahané vyprávění, jako již tradičně plné ironie, sarkasmu, suchého i polosuchého humoru a místy dokonce seriózních informací, napište mi (nebo můžete tento víkend zkusit škemrat osobně na PLatariádě) a sejde-li se dostatečný počet ohlasů, zvážím sepsání přenášky Crackování v praxi II. Jak by to poté bylo se zápočty ještě nevím, ale nějaké řešení se vždycky najde. To je pro dnešek vše, stejně koukám, že mi tu v první řadě spíte!
(05/06/2011)
Intelektuální exploze (22/05/2011)
Já to věděl! Já to říkal! Jednou to prostě přijít muselo!! A že to vyšlo zrovna na úterý 17. května 2011, to už je prostě výsledek náhody, respektive náhlého osvícení. Ale jako blesk z čistého nebe to taky nepřišlo, to zas ne. Tvrdé české ataristické jádro ví již delší dobu, že toužím napsat prostou oldschool gamesku, takovou, jaké frčely na přelomu 70. a 80. let. Byly to doby, kdy si mnoho her vystačilo s jednou jedinou obrazovkou a hlavní byl tehdy především nápad a hratelnost. Mluvím tu o takových legendárních peckách jako jsou gamesy Space Invaders, Centipede, Pacman, atd. Už dlouhá léta takové věci k mé velké lítosti pro A8 vůbec nevznikají a mě se přitom po časech, kdy v jednoduchosti byla síla, hrozně stýská. Vcelku pochopitelný trend po komplexnějších a promakanějších hrách je na nejenom na osmibitech patrný už od raných 80. let, o novější produkci ani nemluvě. V posledních letech pro Atárko totiž ve většině případů vznikají především různé logické hříčky (a to ještě vesměs jde o předělávky z jiných platforem), protože do arkádovek se pouští málokdo. A když už se někdo takový najde, ani ho nenapadne stvořit něco zbrusu nového ve stylu automatovek ze zlatých sedmdesátých. Výjimkou snad může být pouze Rasterova úchylně geekovská hra Space Binvaders. Rozhodl jsem se proto, že tento znepokojivý a tristní stav změním. Že prostě vymyslím pokud možno originální jednoduchoučkou (dokonce až primitivní) gamesu, dobře hratelnou a navíc ještě zábavnou. Jediným drobným a nepodstatným zádrhelem je to, že zdánlivě všechno už bylo dávno vymyšleno a že tedy i v nejlepším případě bude moje vysněná hra něčemu již existujícímu alespoň trochu podobná. Je nad slunce jasné, že na tento problém naráží tvůrci her dnes a denně a že si s tím trápí závity podstatně chytřejší mozky než je ten můj. Nadto já rozhodně nejsem žádný rozený kreativec a dá mi strašlivou práci vyplodit něco alespoň trochu použitelného. Vlastně jediný nápad, na který snad můžu být jakž takž hrdý, jsem zrealizoval v 1 kB joketru The Steam Train. Proto asi nepřekvapí, že i když jsem se čas od času snažil vypotit nějakou zajímavou ideu, nic kloudného ze mě nikdy nevypadlo. Musel jsem tedy požádat o spolupráci. Myslím, že to bylo na loňské Fujiama party (nebo že by už na Foreveru 2010?), co jsem se svěřil kamarádům Ataristům se svou maniakální posedlostí zrealizovat cosi inovativního v duchu počátků herní produkce pro A8. K tématu jsem se pak vracel snad pokaždé, co jsme se opět sešli, až tuším na letošní Atariádě otravování nebohých kolegů konečně přineslo plody. Brainstormingem jsme s Rasterem, PG, Poisonem a možná i Pepaxem, to už si opravdu nepamatuju, dali dohromady koncept "elektrikářské" gamesky, který se mi opravdu líbil a který by určitě stál za pokus. Přesto jsem i poté párkrát (a samozřejmě bezvýsledně) dumal nad něčím ještě méně komplikovanějším. A jelikož už se asi v křemíkovém nebi nemohli dál na to moje nekonečné trápení dívat, nějaká bezpochyby vyšší síla se rozhodla zasáhnout. Kráčel jsem si takhle v ono úterý na podvečerní procházce s Rexíčkem po lesní cestě, když v tom se zčista jasna přihnal super nápad na hru přesně podle mých představ! Během chvíle jsem toto nečekané vzplanutí mysli rozvinul v naprosto dokonalý plán gamesky jednoduché až mrazí, dokonce s možností kooperativního módu dvou hráčů. A jak to mám ve zvyku, znovu jsem vše důkladně promýšlel a v hlavě vypilovával večer před spaním v posteli, kde mi to jak známo šrotuje odjakživa nejlépe. Očividně jsem udělal dobře, protože můj mozeček, opojený a nadopovaný radostí ze sebe sama, vyplivl během pouhých pár hodin další perlu. Tentokrát mě napadl efekt do 1 kB intra, a to ne žádná zoufale přihlouplá srandička jako obvykle, lébrž docela seriózní idea, na které bych možná mohl postavit mojí skutečně první plnohodnotnou demo produkci v životě. Předpokládám, že jsem si tímto monstrózním doublekickem v jediném dni vybral svůj příděl úžasných nápadů minimálně na několik let dopředu, protože od té doby jsem už nic dalšího nevymyslel, po nocích spím poměrně dobře a rozhodně se nebudím s návaly geniálních myšlenek, jako chudák Raster/C.P.U. Nyní řeším pouze jediné dilema. Mám se do své krásné gamesy pustit s vervou hned teď nebo mám s její realizací počkat do zimy, kdy tradičně programuju svoje příspěvky do Flopu? Nejsem si jistý. Zřejmě by ale stálo za to nejprve koncept hry vybalit na ostatní Ataristy, aby mi to jako obvykle sborově pochválili. Třeba je přitom i napadnou nějaká další vylepšení. Taky je otázka, jak na tom je můj dvorní grafik a vůbec klíčový spolupracovník PG s časem, protože je možné, že MaPa s jeho pomocí na něčem právě pracuje pro letošní ABBUC SW Compo, které loni tak slavně vyhráli s Ocean Detoxem. Uvidíme. Každopádně si myslím, že jsem opravdu na dobré cestě udělat si fakt velkou radost. Jejda, já su tak šťastné! Jen doufám, že mi to vydrží i po prvních diskusích nad mým ještě nenarozeným děťátkem s ostatními členy Czech Atari Strike Force, protože někteří nejmenovaní jedinci z Prostějova - Vrahovic a blízkého okolí někdy dokážou člověku opravdu "vlít" energii a nadšení do žil, jen co je pravda.
Nevěřte (bezhlavě) emulátorům!! (10/05/2011)
V minulosti jsem se tu již o problematiku emulování osmibitových Atari řady XL/XE několikrát otřel, události posledních dnů mne ovšem přiměly k sepsání delšího povídání pouze na toto téma. Emulátory se postupem času staly pro mnoho Ataristů zcela nenahraditelným pomocníkem a i já na rovinu přiznávám, že si bez nich už nedovedu jakoukoliv práci absolutně představit. Pořád je ovšem třeba mít na paměti, že sebelepší emulátor není a nikdy nebude stoprocentní náhradou za reálné železo. Někteří jedinci na to ale zdá se stále více zapomínají, a proto se nám tu začíná nebezpečně zvyšovat počet programů napsaných a odladěných výlučně pod emulátorem, které pak na skutečném Atari fungují v lepším případě s potížemi, v tom horším neběží vůbec. Tato vskutku nepěkná věc ošklivá móda se rozmáhá hlavně v sousedním Polsku, odkud za poslední dva tři roky vzešlo již několik her, které měly na real HW hodně zásadní problémy. Osobně se kloním k názoru, že je to asi dáno tím, že se na Atari pokoušejí v assembleru něco tvořit lidé, kteří neprošli tvrdou školou programování v éře bez emulátorů. O chování skutečného Atárka proto možná nevědí tolik, co jejich služebně starší kolegové, respektive nedávají si až takový pozor na mnohé zdánlivě nepodstatné detaily, které však mnohdy skrývají nečekaná a nebezpečná úskalí. Zkrátka a dobře. Emulátor je pouze zjednodušeným modelem opravdového hardwaru a z tohoto důvodu nejenom, že snese daleko víc (programátorských) prasáren, ale (a to je velmi podstatné) často s úspěchem úplně pomíjí nejrůznější mezní a zvláštní stavy, ke kterým může na Atárku docházet. Ono se ale není čemu divit, protože emulovat náš oblíbený computer není vůbec žádná sranda. Hlavní zádrhel jsou samozřejmě zákaznické čipy fy Atari, především Pokey (zvuk) a Antic (obraz).
Abych tu ovšem jenom planě neteoretizoval a nenadával, připravil jsem pro vás dva kraťoulinké testovací prográmky, na kterých se můžete na vlastní kukadla přesvědčit, že emulátorům se opravdu nedá slepě důvěřovat. Ten první na střídačku zuřivě zapisuje do registru horizontálního rolovaní hodnoty 0 a 6, což se pod emulátorem projevuje v pravidelně se opakujících intervalech zmatečným vlněním testovacího nápisu. Takto by se asi taky podle prosté logiky měl Antic chovat, jenomže na real HW se děje úplně něco jiného. Dochází tam k totálnímu zborcení obrazu, protože skutečný Antic z jakéhosi důvodu nemá ani trošičku rád, když se mu během jednoho mikrořádku zapíší do HSCROLu (dost) různé hodnoty. Experimentálně jsem zjistil, že tento jev nastává při všech šířkách obrazu, ovšem pouze při některých kombinacích zapisovaných hodnot. Například kombinaci 0 - 1 můj PAL Antic bez mrknutí očka ustojí a emulátor tedy v tomto případě napodobuje svůj velký vzor naprosto věrně, ale už třeba takové střídání hodnot 0 - 3 vždy spolehlivě dělá hrubou neplechu. Že se něco takového v praxi může skutečně stát, jsem se na vlastní kůži přesvědčil před rokem při práci na titulní obrazovce gamesky Diamondz a znovu pak na přelomu letošního roku, když jsem pracně opravoval hru "Go Elwood Go!", kde Polák Gonzo dokázal nevhodným časováním v DLI shodou nešťastných okolností vyrobit stejný průšvih.
I můj druhý testovací prográmek poukazuje na určité specifické chování Anticu. Povšimněte si prosím, že chybám při emulaci Pokeye se zde vůbec nevěnuju. Od zasvěcených sice vím, že emulace tohoto zvukového čipu místy taky hapruje, jenomže já mám naprostý hudební hluch a nějak to nedokážu kvalifikovaně posoudit. Že je něco fakt úplně špatně, poznám tak akorát, když hraje nějaká příšerně falešná skladba od Emkaye. No nic. Matka příroda holt musela někde ubrat, když už mi dala do vínku tolik jiného talentu. Hehééééé. Ale zpět k nakousnutému tématu. Pokud pamatuje doby, kdy jsme honili naše Atárka na starých dobrých ČB televizích, možná si i vzpomenete, jak u her, které horizontálně rolují (například mne napadá moje oblíbená střílečka Timeslip), byl úplně u pravého okraje obrazovky vidět na některých zobrazovadlech jakýsi animovaný bordel. Cosi se tam překreslovalo, převalovalo a pořád dokola motalo. A nebyla to chyba vaší TV, Antic tam opravdu něco řeší. Legrace je v tom, že Atari tento odpad bere v potaz při plnění kolizních registrů! Takže když odpálíte můj druhý testík pod emulátorem, změna barvy obrazovky vám bude signalizovat kolizi mezi svislým pruhem (PMG hráč) a pozadím pouze v místech, kde jsou kusy textu, zatímco na real HW vám kolize navíc problikne ještě jednou zcela vpravo, prakticky mimo obraz, právě v místech již zmiňovaného bordelu. Pokud vám není existence této vlastnosti Atárka při rolování obrazu o šířce 48 bajtů známa, je tím potencionálně zaděláno na setsafra zatrolený problém. Přesně jak jsem minulý týden zjistil při zoufalém pátrání, proč Gonzova nejnovější hra "Dino" vykazuje na real HW navýsost prapodivné chování, když v emulátoru se zdálo být všechno v nejlepším pořádku.
Jsem si jist, že takových podobných menších či větších nedorazů mají emulátory ještě mnohem mnohem víc, a to včetně těch, které lze označit za moderní a které jsou stále ve vývoji. Sem pro platformu Win32 počítám Altirru, Atari800, Atari++ a s pořádným přimhouřením obou očí i mnou stále ještě preferovaný Atari800Win PLus, byť ten už lze bohužel označit spíše za obstarožní. Ani v jednom z nich se moje testovací prográmky nechovají správně, což si ti z vás, kteří vlastní real HW, mohou snadno ověřit. Čili ještě jednou a posledy. Emulátory jsou bezesporu skvělá věc a jako utilita pro vývoj jsou dnes už prakticky naprosto nepostradatelné, o tom žádná. To je prostě bez debat. Ovšem fakt, že člověku něco hezky šlape v emulátoru, ještě vůbec nic neznamená. Každý program vyvinutý pod emu (což je dnes zřejmě drtivá většina nové produkce) musí bezpodmínečně projít i důkladným testováním na skutečném železe, protože jedině v tom případě je do budoucna zaručeno jeho korektní fungování. Emulátory se budou i nadále vylepšovat a hlavně předělávat, takže co si dnes někdo krásně napíše na míru pro nějaký hypotetický Megaemulator 2.0, to mu jednou ani náhodou nemusí běhat pod verzí 4.0. Naproti tomu program fungující na real HW v roce 2011 si na něm pustíte bez problémů i o dvacet let později.
P.S. Pokud jsem tu snad plácal nějaké vysloveně nesmysly či neodpustitelné nepřesnosti, což se mi při mých poměrně chabých znalostech Atárka mohlo velmi snadno stát, prosím všechny ty Rastery, Bob!ky a jiné případné nemilosrdné kritiky, aby mi to patřičně vytmavili v diskusi pod článkem.
BAS2XEX (25/04/2011)
Po obrovském a pro mne naprosto nečekaném úspěchu s PC utilitkou na tvorbu samostatně spustitelného XEX souboru z levelů vytvořených v Boulder Dash Construction Kitu (celá dvě - slovy DVĚ - poděkování na fóru AtariAge, pár laskavých slov od Rastera a především ani jedna hrozba žalobou, veřejným lynčováním či snad dokonce fyzickou likvidací ze strany společnosti First Star Software) jsem se rozhodl pochlubit se světu ještě s jedním svým cross platformovým prográmkem. To máte ale radost, že?! Tentokrát jde o utilitu určenou pro převod BASICovských programů uložených pomocí příkazu SAVE na spustitelné XEXy. Nazval jsem ji mimořádně vtipně BAS2XEX a tato moje úžasná utilitka nedělá v podstatě nic jiného, než například výborný Rasterův program BCOM (k nalezení např. ve Flopu #36), pouze se jedná o udělátor určený pro PC. Jeho asi největší výhodou je proto fakt, že zvládne převést na XEX i opravdu velmi dlouhé BASICovské programy, protože není limitován velikostí paměti malého Atárka. Už jsem tu kdysi dávno sáhodlouze leč zábavně psal o tom, že na mé sajtě naleznete pouze dva typy Atárkovských souborů, to jest ATR (diskety) a XEX (bináry). Řekl bych, že jste si za ty roky již asi všimnuli, že právě na XEXy mám převedené i všechny původně BASICovské programy, které při běhu nedohrávají další části. Původně jsem tyto XEXy dělal z BAS souborů starým dobrým BCOMem, později jsem je lepil ručně ve vynikajícím PC hexaeditoru UltraEdit-32 a v poslední době už pro tyto účely používám výlučně svůj vlastní BAS2XEX. Dělám to proto, že manipulace s XEXy je podle mne výrazně lepší než s tokenizovaným BAS souborem, a to jak na real HW, tak i pod emulátorem. Odpadá hlavně neustálé a navýsost otravné skákání do BASICu a poté neméně pracné spouštění programů přes RUN "D:JMENO.BAS". A to ani nemluvím o případech, kdy je BAS program příliš velký na to, aby se vešel do paměti společně s DOSem. Což se mimochodem stává poměrně hodně často u věcí vytvořených v bývalém Česko-Slovensku, kde drtivá většina Ataristů jela pouze a jedině v Turbu, pod kterým se BASICovské programy defaultně natahovaly od setsakra nízké adresy $0700, čímž pro ně bylo v paměti k dispozici o dost víc místa. Ne, nic takového. BAS soubor převedený na XEX má na začátku kratičký kus kódu ve strojáku, který vše potřebné udělá za nás. Pokud máte na danou problematiku stejný názor jako já, možná se vám bude můj BAS2XEX někdy hodit. Jedná se opět o maličkou DOSovou aplikaci ovládanou z příkazové řádky. Jako první parametr použijte jméno BAS programu, který chcete převést (například "TEST.BAS"), druhý (a nepovinný) parametr je zaváděcí adresa programu v hexadecimálním vyjádření (ovšem pozor, bez znaku "$"). Tu jsem z historických důvodů nechal defaultně na $0700, pokud ale nedej bože hodláte svoje programy pouštět pod nějakým DOSem, obecně se doporučuje load adresu nastavit minimálně na $2000. Výstup programu je zapsán do XEXu se jménem shodným se vstupním souborem, v našem případě tedy do "TEST.XEX". BAS2XEX již ode mne v minulosti dostalo pro privátní používání pár vybraných a tradičně velmi vděčných šťastlivců, nyní máte šanci rozšířit řady spokojených zákazníků i vy. Ať vám BAS2XEX slouží do roztrhání osmibitového těla!
Boulder Dash (13/04/2011)
Máte rádi hru Boulder Dash? Máte, že jo! No, já si to myslel. Tahle gameska je prostě super. Zalíbila se mi ještě jako pačesatému a uhrovatému adolescentovi hned jak jsem jí poprvé vyzkoušel a od té doby jí řadím mezi svoje vůbec nejoblíbenější Atárkovské hry. Vzpomínám si také, jak jsem byl nadšený, když jsem zjistil, že existuje i Boulder Dash Kit na vytváření vlastních jeskyní. V něm jsem
udělal hezkých pár levelů, líbily se mi a tvořil jsem především takové, ve kterých byla spousta motýlů, protože čím víc motýlů, tím víc Adidas. Pardon, tím větší jatka. ;) Bohužel všechny moje
výtvory v BDK vzaly za své, když jsem svoje Atárko začátkem 90. let prodal, a to naneštěstí taky včetně všech kazet. K hrátkám s BDK jsem se vrátil až ve své "nové" Atari éře, tj. po roce 2000. Hodně nepravidelně, doslova čas od času, k tomu sednu a nějakou tu jeskyni stvořím. Všechno ale hlavně poctivě ukládám, protože jednou budu mít (a tomu fakt věřím) materiálu na celou hru. Tj. na dvacet
jeskyní, v čemž jsou započítány i čtyři malé bonus obrazovky. Prostě přesně tak, jak je to v originále jednou pro vždy nastavil Peter Liepa. Udělat svého vlastního Boulder Dashe, to byl vždycky můj velký sen.
Mluvím tu samozřejmě o samostatně spustitelném souboru obsahujícím moje levely a ne o hraní jednotlivých jeskyní pod BDK. Že lze vlastní levely nějak "zkompilovat" dohromady je známá věc, každý
z nás určitě někdy potkal nějakou tu custom verzi Boulder Dashe. Bohužel jsem nikdy nevěděl, jak se to vlastně dělá a zjišťovat to pracným zpětným inženýrstvím mě ani trochu nelákalo. Zkoušel jsem sice se dopídit nějakých informací na AtariAge, kde se jinak potulují mraky neuvěřitelných chytráků, kteří vědí všechno o všem, ale na můj dotaz svého času vůbec nikdo nereagoval. Naštěstí je tu ale kolega Homesoft z Dojčlandu, docent v oboru boulderdashologie, který se zabývá i takovými chuťovkami, jako je portování
BD levelů z Commodora, a to prosím včetně grafiky. Můj první dotaz někdy před rokem sice s odůvodněním na nedostatek času zahrál do autu, o víkendu se mi ale konečně zadařilo a vymámil jsem z něj všechny potřebné informace ohledně tvoření vlastních klonů mé oblíbené gamesky. Homesoft byl dokonce natolik laskav, že mi zkompiloval jím užívaný engine hry, kde je pouze potřeba poeditovat pár bajtíků, připojit k tomu levely, RUN header a bum prásk, nový Boulder Dash je na světě. I zajásal jsem, a když jsem navíc zjistil, že to opravdu krásně funguje, rozhodl jsem se, že darů přítele Homesofta využiju k napsání si PC utilitky pro ještě snadnější tvorbu vlastních verzí Boulder Dashe. Nemyslel jsem přitom primárně na moje levely, které dám dohromady neznámo kdy, ale především na těch několik
disket s hromadou dat pro BDK, které jsem během časů nashromáždil. Právě pro tento okamžik, kdy konečně budu vědět, jak je poskládat do samostatného souboru, jsem si je vlastně schovával. A možná
moje utilitka potěší i některého z laskavých čtenářů, který třeba řešil nebo řeší obdobný problém. Nuže, potřebujete-li ze svých CAV a INT souborů splácat plnohodnotnou hru, moje utilita je vám plně k dispozici. Pomocí mého prográmku si předně můžete změnit text v horním řádku titulní obrazovky, kde je normálně nápis "BY PETER LIEPA". Sem se vejde rovných dvacet znaků a moje utilitka vámi zadaný nápis sama vycentruje, a to dokonce i při lichém počtu znaků, což je moje vlastní fíčurka, kterou ani Homesoft ve svých verzích
nemá. Konverzí na Atascii projdou pouze písmena a číslice, přičemž malá písmena se zobrazují barvou 3 a velká barvou 4. Tím se dostávám k nastavení barev v title screenu. Barva 1 je podklad pod
nápisem "Boulder Dash", barva 2 je stín teček, které po tomto podkladu putují, barva 3 je barva těchto pohyblivých teček, nápisu "Boulder Dash", rámečku kolem něj a textů pod ním, barva 4 je pak
použita pro počet hráčů, počet joysticků a číslo vybrané jeskyně plus případně pro velká písmena zadaná do textu horního řádku. Barvy můžete zadávat buď decimálně nebo také hexadecimálně (při použití
znaku "$" před číslem). V případě, že chcete ponechat default hodnoty, stačí dotaz odentrovat. Po nastavení barev se program ptá na počet jeskyní a pak už jenom zbývá mu předhodit jednotlivé
datové soubory. Mějte prosím na paměti, že moje utilitka není 100% blbuvzdorná. Například existenci zadaných datových souborů kontroluji, ale zda se jedná opravdu o skutečný CAV nebo INT soubor
z programu Boulder Dash Kit už nekontroluju, to je zkrátka na vaši zodpovědnost. Stejně tak při zadávání čísel je pouze na vás, zda tam zadáte nesmysly nebo rozumná data. Jsem nicméně ochotný se bavit s
případnými zájemci o opravách či úpravách mého prográmku, stejně tak jako určitě uvítám jakýkoliv feedback. Pokud vás tvoření vlastní levelů do BD nezajímá, můžete se alespoň těšit na zbrusu nové
verze této maniakální hry, které od nynějška budu díky mé miloučké DOSové aplikaci sem tam pouštět do světa. A pokud vás ani to nezajímá, tak je mi to jedno. Boulder Dashi zdar!
TCL (22/03/2011)
Stáhli jste si v neděli ode mne ze sajty hru Break Out a vyzkoušeli jste jí? Pakliže jste tak čistě náhodou učinili, možná jste si i dokonce všimnuli nápisu "TCL Demonstration" v titulní obrazovce. Myslím, že je na čase vám prozradit, odkud a proč vlastně se tam tento nápis vzal. Nuže, důvod je prostý. Hra Break Out je napsána v jazyce TCL, což je zkratka pro Test Computer Language. Že jste o něm v životě neslyšeli? No, nejste sami. I já jsem na to hleděl se zdviženým obočím (možná s oběma, ale to už si přesně nepamatuju). Na disketu 'TCL.ATR' jsem narazil při procházení jednoho ze tří DVD s A8 softwarem, které mi svého času velmi nezištně poskytnul Andreas Koch aka Charlie Chaplin z Německa. Moje zásoby kvalitního SW, který bych dával na sajtu, se totiž každým týdnem nemilosrdně tenčí, a tak jsem se rozhodl, že ona DVD tentokrát projdu opravdu důkladně, protože před lety jsem je v rychlosti více méně jenom proletěl. A dobře jsem udělal. Před dvěma týdny jsem objevil mně dosud neznámé demíčko "The Puzintro", které jsem již mezitím taky prásknul na web, což bylo opravdu dobré znamení, že nějaký ten nový soft z oněch DVD ještě vydolovat půjde. To se znovu potvrdilo, když jsem v adresáři 'Programming' našel TCL. Po spuštění ATR na mě vyběhly hlášky 'Test Computer Language, Version 2.2', 'Copyright (c) 1985-1990 by D.Firth.' a pod tím 'Ok.'. Hezké, ale co jako s tím? Mrknul jsem na obsah diskety a vidím, že je tam jeden docela velký soubor 'BREAKOUT.TCL'. Dobře. Třeba je to nějaký příklad, takže to zkusím nahrát a pustit, schválně, co se to z toho vyklube. A tak píšu 'LOAD "D:BREAKOUT.TCL"'. Kdepak, error. Tož jinak. Co třeba 'LOAD D:BREAKOUT.TCL'? Uff, taky ne. Hmm, fakt dobrý. Návod či manuál přiloženej žádnej, jak dál safra? Chvíli dumám... Že by styl á la MAC/65? Zadávám 'LOAD #D:BREAKOUT.TCL' a světe div se, ono se to nahrálo. Píšu 'LIST' a i to funguje. Listuje se mi jakýsi zdroják a já s úžasem koukám na něco, co mi velmi připomíná Atalan. Prapodivné příkazy se zvláštní syntaxí, skoro jako Famfrlon, řekl bych. :)) No dobrá, ještě zjistíme, co z tebe vypadne, kámo. Klapu "RUN", mačkám RETURN (respektive Enter) a... Nic se neděje a já čekám, pořád čekám, stále čekám a znovu čekám, když vtom se to pustilo. Fíha, dost dobré! Sice mnohokrát obehrané téma, ovšem jinak hodně pěkně udělaná (byť brutálně těžká) hra pro paddles, svižná jak ve strojáku. Paráda!! Skvělý potencionální přírůstek do archívu. Jak ale z toho proboha udělat přímo spustitelnou verzi? Přece nebudu nutit lidi, aby postupovali stejně jako já. To jest pustit TCL prostředí, nahrát zdroják, dát RUN a pak dlouho čekat, až to něco provede. Naprosto nepřijatelné. S lítostí zavírám emulátor a přesunuju TCL.ATR do adresáře, kde shromažďuju věci, které výhledově zveřejním. Teď ale na (zřejmě drsné) tvoření file verze bohužel nemám čas, bude to muset počkat. Ale jak už to u mne bývá, když na nějaký takový zajímavý problém natrefím, vytrvale mě to pak dráždí a nutí špekulovat, kudy asi tak nejlépe na ten zatrolený zašmodrchanec. Stejné to bylo i tentokrát a bezpochyby právě proto přichází po dvou dnech zčista jasna vpravdě geniální nápad: nemá ten úžasný TCL náhodou i kompilátor? Hned jak jsem mohl, běžel jsem to zkusit a bingo! Příkaz COMPILE to zná a cosi to dělá, ale odezva na RUN i poté trvá strašně dlouho (protože se to znovu překládá, jak mi později došlo). A co takhle 'COMPILE #D:BREAKOUT.XEX'? Opět bez problémů a na disketě se dokonce objevuje nový soubor požadovaného jména. Bleskurychlá zkouška a ona je to fakt zkompilovaná gameska Break Out, sice bez RUN headeru, ale hlavně spustitelná jako samostatný soubor. Neuvěřitelné. Vy zíráte, my zíráme! Před nějakými pětadvaceti lety tu David Firth (ano, ten David Firth, původní autor emulátoru Atari800) na Atárku z neznámých důvodů stvořil jakýsi zvláštní programovací jazyk a napsal si v něm hezkou demonstrační hru, abych poté přišel já, celou tu velepodivnost oprášil, uvedl v život a vytáhl jí opět na světlo boží. Nezlobte se na mne, ale to se prostě nedá zakončit jinak než mým vlastním citátem...
P.S. Pro ty z vás, kteří mi po přelouskání tohoto textu nevěříte ani slovo, což je předpokládám drtivá většina velevážených čtenářů, přikládám sem disketu s TCL ve stavu, v jakém jsem k ní přišel. Stáhněte si to, vyzkoušejte a až v tom napíšete nějakou novou megagamesu, dejte mi prosím vědět. Rád jí na a8.fandal.cz zveřejním.
Pařáty vám zlámu, nenechavci! (07/03/2011)
V posledních třech čtyřech týdnech jsem se Atari prakticky nevěnoval (bo mám zcela jiné starosti), a proto i tento můj dnešní hlubokomyslný canc bude o nejlepších počítačích historie jenom zčásti.
Asi jste si všimnuli, že sajtu, resp. archív, pravidelně aktualizuju každý víkend. Někdy mě to baví, někdy ne, někdy tam mám co dát, někdy je to horší, ale zatím se držím. Nikdo mi za to moc
neděkuje a ještě míň lidí mě sem tam podpoří zasláním nějakého toho nového a neznámého softwaru, nicméně zvyknul jsem si. Fňuk, fňuk. Nicméně zpět k tématu. Novinky do mysql databáze ve většině případů nabíjím
předem a systém sám pak zajistí zveřejnění newsů v přednastavené datum. Toto dělám zpravidla v pátek večer a abych to měl vždy hned z krku, napráskám tam nové věci jak na sobotu, tak i na neděli. A jak
jsem všimnul, některým koumákům to došlo a už v sobotu si stahují SW, který se v newsech objeví až v neděli. Zřejmě to nemůžou vydržet nebo nemohou na odpornou stránku a8.fandal.cz zajít z
psychických důvodů víc než jednou za týden. Buď jak buď, rozhodl jsem se dát těmto Sherlockům trochu přes prsty. Z jednoho cracku jsem vytáhnul ďábelský opakující se smích ze hry
Ghostbusters, v Paint Shopu jsem si namaloval vtipný obrázek, obalil jsem to hromadou zapakovaných fake dat a šoupnul jsem to na server, kde se to tvářilo jako SW připravený pro zveřejnění na neděli
27. února. Aby návnada vypadala opravdu k zakousnutí, pojmenoval jsem svou srandičku Turrican, napsal jsem k tomu, že se jedná o konverzi z C-64 pro Atari 130XE, vymyslel jsem si věrohodně znějící
autory z Polska (příjmení jsem vzal ze stránek Sejmu, hahaha) a screenshot jsem pořídil upravením originálního obrázku z commodorovské verze do barevné palety Atárka, samozřejmě s odpovídajícím rozlišením.
A poté jsem už jenom čekal, kolik lidí se chytne. Během soboty jsem tak ulovil tři nezbedníky a pak od neděle do pátku 4. března (kdy "Turrican" byl další v řadě za již skutečnou nedělní novinkou)
jsem lapil další tři. To máme šest vytrestaných vykuků. Zajímavé je, že se mi nikdo z potrefených neozval, ani se o tom nikde na žádném fóru nepsalo. Všichni, co se nechali nachytat, se asi
dost styděli, že sedli na lep tak průhlednému triku. Turrican na Atárku, kdo to jakživ slyšel?! Neozval se dokonce ani PG, o kterém si myslím (dokonce bych si na to i vsadil), že mi to taky
sežral. No a abych vás ostatní, poctiváky od kosti, neokradl o to potěšení si Turricana na A8 zahrát, tu máte mou úžasnou
verzi ke stažení plus obrázek, který jsem na všechny ty nedočkavce nalíčil. Já vám dám, kouřit mi tu v kostele!!
![](http://a8.fandal.cz/files/binaries/games/t/turrican.png)
A nyní se musím opět odmlčet. Z cvičných důvodů jsem totiž (již poněkolikáté) začal hezky od začátku sledovat celý seriál Battlestar Galactica. Toto bezkonkurenčně nejlepší sci-fi dílo všech dob je skutečně něco naprosto
fenomenálního. Já opravdu mám rád sci-fi seriály jako je Stargate SG-1/Atlantis/Universe, Firefly, Akta X, Babylon 5 nebo The Outer Limits, ovšem dámy a pánové, kam se všichni hrabou na BSG!
To je prostě ultrageniální masakr, který mě pokaždé zas a znovu rozseká. Myslím, že skutečný rozsah a propracovanost BSG si člověk začne naplno vychutnávat až tak při třetím nebo čtvrtém shlédnutí
tohoto šedesátihodinového megaprojektu. Já třeba zrovna teď jsem cca po týdnu u konce druhé season a právě před chvílí jsem do sebe nechal nemilosrdně nastřílet čtyři epizody vrcholící
neuvěřitelným 18. dílem ("Downloaded"). A jsem z toho na sračky. Takže mě prosím omluvte. Ještě mě čekají celé dvě sezóny, Razor, The Plan, The Last Frakkin Special, nějaké ty director's cuty a vystřižené scény. A kdo
BSG nikdy neviděl, s tím se zkrátka nebavím. To vám doufám všem došlo. So say we all!
Forth (13/02/2011)
Nevím, zda jste si stáhli a zkoumali hru Word Flyer, o které jsem tu psal posledně, ale možná vás bude zajímat, že už asi tuším, jak se celá věc má. Potvrdilo se totiž moje podezření, že fak hustej
kód WF vzniknul kompilací v nějakém vyšším programovacím jazyce, konkrétně ve Forthu. Že se jedná právě o Forth mě napadlo, vlastně ani pořádně nevím proč, během konverzace s Matošimim, který můj blog čte
pravidelně a rád. Možná se mi hluboko v podvědomí aktivovala vzpomínka na to, jak jsem kdesi četl, že jakýsi dobrodruh zkoušel pro firmu Atari Inc. naportovat na Atárko ve Forthu hru Donkey
Kong Junior. Po půl roce práce měl údajně pohromadě pouze první obrazovku, a to ještě zcela bez zvuků. Když to v Atari viděli, radši celý projekt zastavili a pověřili někoho, ať to napíše ve
strojáku. :) Ať už to bylo jakkoliv, Forth byla trefa. Prověřil jsem chování pár her, o kterých jsem věděl, že byly ve Forthu napsané, a podobnost s kódem Word Flyeru byla natolik do očí bijící,
že nebylo pochyb. Šlo především o naprosto nezaměnitelnou konstrukci na větvení programu, která ve Forthu vypadá takto: JMP ZP_ADRESA a odtud JMP (ADRESA). Krása, že?
Ale protože jsem chtěl mít naprostou jistotu, že se jde opravdu o Forth, prošel jsem všechny vyšší programovací jazyky pro A8, které mě jenom napadly, abych se podíval, jak vypadá jimi generovaný
kód. Word Flyer je z roku 1983, což rovnou vyloučilo jako kandidáty Kyan Pascal, Deep Blue C a Lightspeed C, protože ty tehdy ještě neexistovaly. Zbývaly tak vlastně jenom Action! a Forth,
protože na (případně zkompilovaný) BASIC a další interprety, jako jsou Logo nebo Pilot, je WF příliš rychlý a komplikovaný SW. Action! to ovšem také nemohl být, protože i když jím zkompilovaný kód je taky
něco úžasného, tak přece jenom vypadá jinak než ta zhovadilost, co leze z Forthu. Takže bylo jasno. WF byl skutečně napsaný v tomto ďábelském "stack-oriented" jazyce, ve kterém se klasické "Hello, World!"
realizuje tímto pozoruhodným příkazem:
: HELLO ( -- ) CR ." Hello, world!" ; HELLO <cr>
Když už jsem takto záhadu Word Flyeru zcela rozšifroval, napadlo mne, kolik tak asi her může být v tomto šíleném jazyce na Atárku napsáno. Pro náš stroječek je jen tak pro zajímavost hned několik
verzí Forthu, jako například Fig-Forth, LogForth, QS-Forth a nejnověji volksForth, se kterým Carsten Strotmann v roce 2006 dokonce vyhrál ABBUC SW Compo a který tedy až do nástupu Atalanu byl
vlastně posledním programovacím jazykem vytvořeným pro osmibitová Atari. I prošmejdil jsem svůj archív a výsledky mne opravdu překvapily. Nalezl jsem minimálně dvacítku games, které
byly prokazatelně zkompilované ve Forthu. Z těch známějších je to například Worms? nebo Jeepers Creepers (moje oblíbená). Doslova s otevřenou hubou jsem ovšem zíral na to, že pod Forthem napsal
slavný Polák Roland Pantola svoje legendární pecky Sexmisja, Wladcy Ciemnosci a Klatwa. To jako teda klobouk dolu a na místě ho sníst, protože toto všechno jsou mimořádně skvělé a
opravdu komplexní hry!
A jsme zase u toho. Co člověk všechno o tom našem Atárku takhle po volných večerech ještě nezjistí?
Word Flyer (30/01/2011)
Milé děti! Povím vám pohádku. Žil byl jeden Atarista a ten velmi rád crackoval a hackoval nejrůznější software pro osmibitová Atari, nejčastěji hry. Začínal skromně, moc toho neuměl, ale postupem
času se hodně naučil a nedělalo mu velké potíže rozlousknout i ty nejsložitější, nejzákeřnější a nejkomplikovanější ochrany, co jich kdy autoři do svých výtvorů nasázeli. A možná si o sobě začal
myslet až příliš, protože pýcha předchází pád. Na jaře roku 2008 dostal od borců ze serveru Atarimania VAPI image obskurní
výukové hry Word Flyer s tím, že se to celé chová divně. I přesto, že ATX formát by teoreticky měl být 100% kopií reálného disku zahrnující všechny jeho myslitelné parametry a tudíž by měl také zachovat
všechny možné ochrany, Word Flyer byla výjimka potvrzující pravidlo. Pod emulátorem podporujícím VAPI image se hra občas spustila, jindy zase crashnula, a to naprosto
náhodně, zdánlivě bez příčiny. Náš hrdina to zkusil vyřešit, ale poprvé si ve své skvostné kariéře nabil hubu. Strávil s tím hodně času, ale úspěch se nedostavil. Nakonec dospěl k závěru, že VAPI
image hry Word Flyer je poškozený. K tomuto přesvědčení ho vedly dva důvody: jednak na ATX nebyl žádný nečitelný sektor, což jinak byla typická známka všech ochran, které do té doby kdy potkal, a druhak
v jednom ze sektorů byl nápis "THIS IS A COPIED DISK!", z čehož usoudil, že onen ATX není kopií originálního disku, lébrž je to kopie kopie. Možná už tušíte, že oním supermanem, co si na Word Flyeru
vylámal zuby, jsem byl já. A pokud si snad myslíte, že jsem takové ponížení nemohl přejít jen tak, máte pravdu. Nepřešel. Čas od času jsem se k Word Flyeru vracel, zkoušel jsem tohleto a pak zase támhleto,
ovšem marně. Ta bestie stále odolávala a mě to pěkně žralo.
Hlavní důvod, proč jsem měl s Word Flyerem tak obrovské potíže, spočíval v tom, že kód této gamesy je ta největší PRASEČINA, kterou jsem kdy v životě na A8 viděl. Neustále se tam vše řeší v šílených a zcela
neprůhledných smyčkách, které chaoticky zapisují do nulté stránky, kde se pak naprosto nepochopitelně ORuje, ANDuje, EORuje, sčítá nebo zase odečítá, v paměti se brutálně poskakuje z místa na místo pomocí nepřímých skoků
opět nejlépe přes ZP, z rutin se vrací přes změnu návratových parametrů na stacku, a to všechno pořád dokola. Zkrátka to nemá ani hlavu ani patu, je to totální maglajz biblických rozměrů. Myslím, že takový
kód by nedokázal žádný člověk stvořit. Tipnul bych si, že WF byl napsaný v nějakém vyšším programovacím jazyce a po zkompilování z toho vznikla tahle zrůdnost, ve které se prostě nedá vyznat. Kdyby
byl býval Word Flyer napsaný v čistém strojáku, poradil bych s tím hravě, avšak toto udělalo z jeho hackování martýrium, které už doufám nikdy nezažiju. Z toho už asi tušíte, že jsem WF nakonec úspěšně
zdolal. No ano, nebudu tady pořád chodit kolem horké kaše. Po téměř dvou letech jsem tuhle divnou gamesu, která si svojí kvalitou tolik úsilí z mé strany ani za mák nezasloužila, konečně pokořil.
Byla to prostě otázka cti a prestiže!
Rozhodující útok na nedobytnou pevnost jménem Word Flyer jsem po dlouhém leč marném obléhání podniknul ještě před koncem minulého roku, kdy jsem si z US za pět doláčů objednal originální disketu. Myslel jsem si, že když budu mít
v ruce skutečně původní verzi hry, budu schopen s tím už nějak pohnout. Jaké proto bylo moje nezměrné překvapení, když ATR kopie dorazivší diskety byla na bajt shodná s ATR kopií "poškozeného" VAPI image.
To jsem tedy zíral. Zvlášť když na real Atari hra pokaždé nabootovala z mojí XF551 bez problémů. Bylo jasné, že pes je zakopaný někde jinde. Dlouho jsem pátral, o cože vlastně kráčí, až jsem se konečně
trefil do černého. Sektor 41 na originální disketě vykazoval chování typické pro jednu z ochran používaných na osmibitovém Atari, kdy čtením tohoto sektoru dvakrát po sobě přijdou pokaždé jiná data. S tímto
jsem se již v minulosti několikrát potkal a věděl jsem tedy, jak na to (viz. například zápisek v blogu z 16. července 2009). Jenomže vždy to bylo tak, že sektor následující po onom "divném" sektoru
nešel přečíst, takže jsem měl v ruce určité vodítko, na co se zaměřit, kdežto tentokrát byly všechny sektory zcela OK a já tedy doslova hledal pověstnou jehlu v kupce sena. Když už jsem ovšem věděl, odkud
vítr fouká, poměrně rychle jsem zjistil, co a kam program chce, aby při čtení sektoru 41 přišlo. Pod emulátorem jsem mu poté pomocí breakpointů dokázal předhodit správná data a Word Flyer
se k mé radosti poprvé spustil!
To bylo někdy před týdnem. Ale jak už to bývá, radost měla velmi krátké trvání. Obejít totiž ochranu s dvojím čtením stejného sektoru znamená zasáhnout do původního kódu, protože na klasické
disketě bez ochran nic takového udělat nejde a je tedy třeba číst pokaždé jiný sektor, aby člověk na výstupu dostal rozdílná data. A já bohužel záhy zjistil, že Word Flyer si něco takového nenechá
líbit, poněvadž si kontroluje integritu dat v paměti a při jakékoliv změně vlastního kódu odkráčí do křemíkového nebe. Aby toho nebylo málo, při pokusech o odstranění této ochrany jsem
narazil na další problém. Hru jsem sice dokázal s pomocí breakpointů a monitoru mého oblíbeného emulátoru Atari800Win PLus rozběhnout, ale pouze při fast SIO. Když byl SIO patch vypnutý, WF opět spolehlivě
spadnul na držku. To mě fakt rozladilo a na týden jsem toho hackování opět nechal, protože se mne už ale opravdu začala zmocňovat zuřivost.
Znovu jsem se odhodlal Word Flyer podráždit až včera. Zase došlo na breakpointy, trasování a zdlouhavé špekulování, co se to tady vlastně děje. Úkol byl jasný. Přijít na to, proč s vypnutým fast SIO
nejde hra pustit. Pomalu jsem to začal chápat až po mnoha pokusech a hodinách práce, kdy jsem si všimnul, že WF po operaci se záludným sektorem 41, což byla - jak teď už vím - pouze jedna z celkem tří použitých ochran,
nejprve hodněkrát po sobě opakovaně čte první sektor, pak úplně náhodně načte libovolný sektor, poté sektor $13, opět zas další libovolný, pak sektor $25, atd. Vždy tedy jeden náhodně, pak další
o plus $12, až se dostane k sektoru $6D, přečte poslední náhodný a buď se čtením od sektoru $36 tentokrát již opravdu rozjede loadování hlavní části (při fast SIO) nebo naopak crashne (s fast SIO off).
Především se ale při tom všem po každém volání SIO rutin sleduje stav čítače $D40B a také systémových hodin. V tu chvíli mě napadlo, že on si zřejmě měří jakési fyzické parametry diskety, tedy jak
dlouho trvá celá ta složitá sekvence pokusného načítání sektorů, a podle toho usoudí, zda jde o originální disketu nebo o kopii. Doteď přesně nevím, jak rozdílně by se měla chovat kopie od originálu,
ovšem to mě netrápí. Důležité je, že odstraněním tohoto měření, resp. ukládáním si výsledných časů a stavu counteru aktuálně vykreslovaného TV řádku, jsem prolomil i tuto ochranu a Word Flyer
naběhnul v emulátoru za pomoci mocného breakpointování i při vypnutém fast SIO. Při patchnutém SIO vše fungovalo jen tak mimochodem proto, že SIO operace probíhaly okamžitě a program tedy nenaměřil žádné časové zpoždění při čtení oněch
pokusných sektorů, s čímž autoři opravdu nemohli počítat a co jejich algoritmus dokonale oblaflo.
Poslední krok celé ságy byl dát to všechno dohromady, tj. z kódu WF vyházet měření rychlosti čtení a programově obelstít fígl se sektorem 41, což znamenalo zapsat několik NOPů a přidat pár instrukcí, na
které v paměti naštěstí zbývalo kousek místa, hlavně ale zlomit i poslední ochranu, čili již zmiňovanou kontrolu nahraných dat. I to byla dost fuška, protože jsem v tom zmateném kódu opět nedokázal pochopit, jak to
vlastně WF přesně dělá. Ve finále to dopadlo tak, že jsem metodou pokus omyl našel vhodný okamžik, kdy mnou upravená testovací rutina zapíše do jakéhosi kontrolního součtu (pokud to vůbec je kontrolní
součet, na čemž ovšem de fakto stejně nezáleží) do HI bajtu nulu, čímž ošálím i tuto bezpečností pojistku. Čili abychom si to shrnuli: Word Flyer si nahraje úvodní část, ukáže se logo Electronic Arts,
program si ověří, zda se nahrál neporušený, poté zkontroluje ochranu se sektorem 41 a ještě pro jistotu disketu proměří pokusným čtením haldy sektorů. Toto vše cracknout rovná se téměř dva roky
občasného (o to však intenzivnějšího) dumání, pokusů a obětovaných pěti amerických dolarů mé maličkosti. Závěrem tohoto zřejmě historicky nejdelšího zápisku v mém blogu bych rád dodal, že cracknutý Word Flyer bude ke stažení ode mne
ze sajty příští víkend. Pokud si snad budete tuto věc chtít i zahrát, vězte prosím, že jde o gamesku pro jednoho nebo dva hráče a jejím cílem je cvičit se s anglickými slovíčky. Je-li vám kolem šesti let věku,
možná vás i pobaví. Jinak vám přeju hodně štěstí zjistit, jak se to vlastně ovládá. Na to si už každý musí přijít sám. Všechno za vás dělat nemůžu. A pro ty nejzvídavější jedince doporučuji si hru v monitoru zastavit
a trošku se podívat, jak program funguje. Třeba se mrknout do historie posledních vykonaných instrukcí a vůbec na právě prováděný kód. Je to pastva pro oči a duše každého programátora zcela jistě zaplesá, to slibuju!
A nyní již zazvonil zvonec a pohádky je konec. Tedy pohádky s dobrým koncem. Přesně tak, jak to má být.
Nová gameska na obzoru (17/01/2011)
Po rádoby vtipných anketkách z minulého týdne, kterými jsem uzavřel blogovací sezónu 2010,
jsem tu dnes pro změnu s naprosto seriózními informacemi. Rád bych vás informoval o projektu s kódovým označením "MT", což je moje nejnovější hra
exkluzivně psaná pro letošní Flop. Spolu s PG na ní děláme necelých čtrnáct dní a už se nám to pomalu rýsuje do krásy. Z toho je myslím jasné, že půjde o
poměrně dost jednoduchou záležitost, určenou primárně pro naše tolik oblíbené a hlavně hojně navštěvované Atari parties, neboť se jedná o multiplayerovku až pro osm hráčů.
K tomu je samozřejmě potřeba úžasný multijoy interface. Bez něj si "MT" zahrajete maximálně ve dvou. Inspirací pro mou druhou multijoyovku (tou první
byla gameska Astro4 Road z roku 2006) je jistá hra z Falcona, která je pro změnu variací na jednu klasiku z Atari 2600. Již nyní je ovšem po
grafické stránce lepší než její sestřička běžící ve VGA módu na dvaatřicetibitovém Falconovi, protože PG se nám opět jednou nádherně rozkreslil.
Ostatně. Věděli jste, že i kolega PG má na internetu svůj ataristický blog, který se zrovna nedávno
dočkal své pravidelné aktualizace? Právě díky Zdeňkovi bude "MT" bezkonkurenčně nejbarevnější a nejlépe vypadající multijoy hra vše dob a podle prvních reakcí
prostějovsko-olomouckých betatesterů bude zřejmě i docela zábavná. Což je také můj záměr. :) Jak už bylo řečeno, "MT" vyjde ve Flopu 54 (ano, bude to už
čtyřiapadesáté číslo vašeho nejoblíbenějšího českého disketového magazínu pro osmibitová Atari!), což by se
předběžně mělo stát první víkend v dubnu, kdy by se podle Pepaxe měla konat letošní Atariáda. Raster nicméně plánuje jakousi předpremiéru "MT"
na Foreveru C, tj. v půlce března. Nápad to myslím je zajímavý, alespoň uvidíme, jak budou reagovat nezávislí pozorovatelé, navíc z jiných platforem...
| 2019
| 2018
| 2016
| 2015
| 2014
| 2013
| 2012
| 2011
| 2010
| 2009
| 2008
| 2007
|
|
Global Stats:
Top dowloads:
|
|