Köszönöm Viktor. :)
Végezetül megírom a legjelentősebb program restaurálási projektem.
A Bátor Lovag:
Beolvasási hibásan volt fent az oldalon ez a szöveges kalandjáték, ráadásul egy data sor hosszan volt benne elcsámpulva, legalább 74 bájt ment félre.
Ellenben a
"MAGYARORSZÁG 1."-el ahol kevés bájt volt sérült, de zaj/szemét volt a helyükön, itt sok volt rossz, de csak kicsit más lett a tárolásuk, a félrement részen belül is látszott ismétlődés, logika.
Listázva így nézett ki:
Már a Magyarország 1-nél rájöttem, hogy a BASIC utasítások is 1-1 bájton vannak tárolva, tehát valószínűleg a sok "FOR" az valamelyik konkrét szám helyett van, és így tovább.
Az érintett rész (csak az érték rész) HEX editorban:
Az látszott hogy a sérült részben az "a" (HEX 61) a leggyakoribb, így biztosra vettem hogy az "a"-k a vesszők, cseréltem őket. A HEX 81 a második leggyakoribb a sérült részben, gondoltam valószínűleg az lesz a nulla, mivel a nem sérült rész számai közt a "0" a leggyakoribb. Ezeket is cseréltem. Mint utólag kiderült, ezekben igazam is volt, de nem 100%-ban, mert a sérült rész utolsó adatbájtja, a "B" is vessző volt eredetileg, hasonlóan mint az "a"-k, így én oda kezdetben nem vesszőt próbáltam. Továbbá volt még 9 számjegy, amiket ki kellene találni, amire elég csekélyek a matematikai esélyek. De azért próbálkoztam, olyan tippet játszottam meg, hogy a környező számokat próbálgattam, a harmadik leggyakoribb előfordulást 50-re cserélgettem. Semmi előrelépés nem történt, ugyanúgy leállt a program a játék elején "SN Error in 10070". Végül egy olyat is próbáltam, hogy a "B" is vessző lett, ami előrelépést hozott, mert utána nem jött a megszokott hibaüzenet, hanem elindult a játék. Ennek igen megörültem, de örömöm nem sokáig tartott, mert az első helyszínről semmilyen irányba nem lehetett továbbjutni. Ezáltal kiderült, hogy a számok a sérült részben a mozgással és helyszínekkel függnek össze, legalábbis egy részük biztos, és ha el is találnék egy létező számot, nem derülne ki számomra egyértelműen, hogy a megfelelő helyszínt sikerült-e eltalálnom, legalábbis erre kicsi esélyt láttam.
Jött az ötlet, hogy mivel a loadingscreen-en azt írta Szarka Zoltán hogy C16 alapján, megpróbálom megtalálni és megnézni abban az adatrészt, vagy megnézni azt, hogy melyik helyszínre kellene jutni.
Hamar kiderült számomra, hogy rengeteg helyen lehet "bátor lovag" jelmezt kölcsönözni, de C16 vagy PLUS/4-es találat az nemigen volt. Nehezítette a helyzetet, hogy Szatka Zoltán roppant szűkszavú volt, nem fedte fel hogy honnan származik a program, csak ennyit említ: "Primora írta Szarka Zoltán from D.M.C.".
Lévén akkortájt már a C64 volt a legnépszerűbb platform hazánkban, reméltem, hogy arra is átírta valaki, és az fellelhető valahol. Hasznos ötlet volt, találtam egyet egy német oldalon.
Nézegetve az adatsorokat kiderült, hogy ugyan Szarka Zoltán összevont több adatsort, de a tartalmuk, sorrendjük változatlan:
Ez alapján restaurálni tudtam az érintett számokat, a játék immár hibátlanul működött.
Egyébként noha az adatsorok számai 100%-ban azonosak, a játék szövege a két átiratban teljesen eltérő, gyakorlatilag Szarka Zoltán teljesen kicserélte, újraírta a szövegeket, és sokkal mókásabbak a Primo verzió szövegei, mint a többi verzióé.
A sérült rész után közvetlenül egy CRC bájt jött (ez nélkül mutattam a HEX-eket), de mivel a javítás után sem egyezett a CRC az összeggel, így kiderült, hogy maga a CRC bájt is sérült, "elmászott" az eredeti értékhez képest, így összesen 76 bájt ment félre. Persze ez esetben a CRC hiba csak esztétika hiba volt, a hibaszámláló kiírt "1"-et, de maguk a programsorokban már nem volt beolvasásból eredő hiba. Dem persze zavart ez az 1 is. Ez a restaurálás időben korább volt mint a JetPac töltőképernyős, ahol kianalizáltam a CRC számítást, és készítettem hozzá táblázatot, és mivel csak 1 bájtról volt szó, nekiálltam totózni. Elég hamar sikerült kitalálni, így teljes lett a restaurálás. El is küldtem Istvánnak, ki is cserélte a régit, a restaurált verzió tölthető le:
http://primo.homeserver.hu/ptp/jatek/batorlov.ptpKicsit később a történet folytatódott.
Akkor még itt volt az eladni kívánt és tesztelésem alatt álló Primo gép, így visszaalakítottam WAV fájllá a programot. Kazettára nem vettem fel, MP3-at csináltam belőle, és telefonon lejátszva próbáltam betölteni Primo-n. Ez pl. Spectrum-on esélytelen, de a Primo jól erősíti a jelet, simán betölt egy telefonról lejátszott MP3-at. Gondoltam jól kiviszem a játékot, valószínűleg évtizedek óta elsőként.
Haladtam is vele, aztán a 8-as helyszínről van lehetőség a 33-as helyszínre jutni, kétféleképp is, de a számomra kézenfekvő megoldás az nem a 33-as helyszínre visz, hanem vissza a program legelejére.
Megnéztem a C64-es verziót is, de ott működik a dolog, tehát találtam egy Szarka Zoltán által elkövetett BUG-ot. Bekapcsoltam a nyomkövetést (TRON) és elég hamar megleltem: Szarka Zoltán berakott új sorokat, eredeti sor magasabb sorszámra került, de az illetékes GOTO nem lett átírva, így a 33-as helyszín sora helyett azt várta a gép, hogy kérjük-e a használható igéket.
könnyen orvosoltam, majd játszottam tovább. Majd találtam egy elgépelést (lombik helyett "lobik"), javítottam, később egy helyesírási hibát, azt is javítottam.
Itt felmerült bennem, hogy néhol két szóköz van, vagy szóköz után vessző, tehát egy-két dolgot csak vizuálisan átterveztem volna, és lett egy erősebb indok is módosításra, Szarka Zoltán jelentősen felgyorsította a begépelési sebességet, Primo-n is gyakran 2 betű ment be egy helyett, nemhogy PC-n, emulátoron.
Így végül úgy döntöttem hogy párhuzamosan 2 verziót készítek, egy autentikus debug verziót, és egy módosítottat, ahol visszalassítom a begépelést is, és még ami menet közben még eszembe jut.
A játék legvégén találtam még egy apró bug-ot, a kilépés nem működött, mert egy önmagára hivatkozó GOTO sorba jutott a program (2090 GOTO 2090). Javítottam mindkét verzióban, kapott egy "END"-et.
Az erdőben is tapasztaltam érdekességeket, ami elsőre bug-nak tűnt. Néztem a C64-es verziót, de azonos volt. Ezen a ponton úgy éreztem hogy jó lenne meglelni az eredeti verziót, és ehhez hasznos nyomot rejtett a C64-es verzió, ugyanis az első sora eltérően a Primo átirattzól ez: "1 REM 1985 BY TIHOR MIKLOS". Így már célzottabban lehetett keresni, és kutakodásom eredménye arra is fényt derített, hogy elsőre miért nem találtam C16 - Plus/4-es fonalat: időközben átkeresztelte valaki a játékot, eredetileg "A Hős Lovag" volt a címe. Ez volt az első, kereskedelmi forgalomba került magyar nyelvű, szöveges kalandjáték. Ékezetes magyar karaktereket használt, ugyanis a Plus/4-ből 1985-től létezett olyan ROM-al szerelt verzió, mely támogatta ezt:
http://www.commodoreszerviz.hu/commodore_plus4_magyarositasa.htmEz sokat is dobott a sikerén, az iskola-számítogép programban és nyilván ilyen gépe volt otthon (vagy az iskolában) Tihor Miklósnak.
Animált! A zászló lobog!
Valószínűleg problémás lehetett használni nem magyar ROM-os Plus/4-en vagy C16-on, így ez lehetett a fő oka hogy törték a játékot, már az eredeti platformon.
Ékezet nélküli lett, jobbra cserélték a prompt-ot,
dobták a töltő képernyőt, hogy kevesebb helyet foglaljon, valamint megváltozott az erdő. Sokan BUG-nak mondják, de úgy hiszem ez szándékos. Eredendően teljesen egyszerűen lehet közlekedni az erdőben, senki sem téved el. De később már eleve úgy készülnek a szöveges kalandjátékok, hogy eltévedjen az ember az erdőben (vagy olyanra törik őket). Korabeli tapasztalt, rutinos kalandjátékosnak nem megoldhatatlan ez, de nekem eltartott egy darabig mire kiigazodtam a "tört erdőn".
Csak a töltőképernyőn van említve csak a "hős lovag", magában a játékban már csak a "bátor lovag" említés szerepel, így érthető aztán, hogy később már a címet is átírták "HOS LOVAG"-ról "BATOR LOVAG"-ra. Esetleg létezhetett C16 - Plus/4 verzió is ilyen, de én nem találtam. C64-en pedig már csak ilyen verziót találtam. Szarka Zoltán egy ilyet írt át Primo-ra, újra ékezetessé téve, de a szövegeket átírva.
Így végül a "DEBUG verzió"-ban érintetlenül hagytam az erdőt, tehát ebben csak a 2 BUG-ot az 1 elgépelést és az 1 helyesírási hibát javítottam.
A módosított verzió esetében arra jutottam, hogy az eredeti az túl könnyű, a nehéz az elérhető lesz a DEBUG verzióban, így egy aranyközéputat szültem, közepesen nehéz.
Továbbá, mivel hiányoltam a játék eredetére vonatkozó információkat, a Szarka Zoltán "küldje el programjai listáját csere céljából" oldalt kicseréltem, és dióhéjban elmesélem a játék eredetét. Egyrészt történelmi okokból, másrészt hogy könnyebb legyen a két verziót elválasztani, visszakereszteltem az eredeti nevére: "A Hős Lovag".
Végül új töltőképernyőt rajzoltam. A Plus/4-es eredeti képet nem lehet szépen megoldani Primo-ra, így végül úgy döntöttem keresek draw/clipart jellegű fekete-fehér képet, és azt ültetem át.
Felhasználtam a technika és tudomány eszközeit, Gimp2-vel és Paint-el elég sokat játszottam hogy a legélethűbben adjam vissza az eredeti szürkeskála draw képet monochrome-ban, a kívánt méreten. Onnantól már monochrome bitmap-al dolgoztam Paint-ben. A jelentős szövegmennyiséget a lehető legkisebb olvasható betűkkel akartam kirajzolni. Más már kitalálta, így a small fonts 7-est használtam. Megtartva Szarka Zoltán ötletét, hogy a cím Old-English betűtípussal legyen, második nekifutásra meglett a tökéletes megoldás: Virtual PC -> Windows 3.1: Old-English bemásolása után a Notepad-ban találtam egy betűméretet ami pont akkora, amekkorát szerettem volna, így ezt sem nekem kellett kivariálni, hogy hogyan fest a legjobban/olvashatóbban kicsinyítve, valaki már megoldotta ezt anno. Egyedül az ékezeteket kellett ao "O"-ra rajzolnom kézzel. Elég nagy munka lett volna begépelnem a kép HEX számait a HEX editorba, amit nagyon igyekeztem elkerülni. Roppant kellemes módon a Windows monochrome bitmap tárolása szinte azonos a Primo kép tárolásával, az egyetlen eltérés, hogy a Windows az alsó sorral kezd és lentről felfelé, balról jobbra tárolja a képpontokat, így nemes egyszerűséggel vízszintesen tükröztem a Paint-ben a képet. Utána már csak törölni kellett a bitmap fejrészt, és megkaptam a kívánt HEX-eket megfelelő sorrendben. Persze blokkonként kellett bemásolni, majd a CRC-ket aktualizálni, de ez már nem olyan hatalmas munka, mint egyesével HEX-eket bepötyögni. Persze ezen is könnyítettem, annyiban, hogy egy sok blokkot számolni képes támlázatot alkottam, ami kiszámolta a kép összes CRC értékét.
Ez lett végül a töltőképernyőm:
Az utolsó simítással ma lettem kész.
A levélhez mellékeltem a Szarka Zoltán autentikus DEBUG verziót és az általam jelentősebben módosított verziót is.
István, rakd majd fel kérlek a weboldalra is.
Üdv:
Gona
(Varga Gábor)