Előzmények

Még tavaly eladóvá vált egyik kollégám A64-es masinája, s mivel szeretem a retro ügyeket, elvállaltam, hogy foglalkozom vele, tesztelem. Említette, hogy valahol van egy másolt kazettája is hozzá, mire én mondtam, hogy mindenképp találja meg. Szerencsére meg is találta.

Régen, munkahelyem minden szobája kapott kicsi rádiós magnót. Ez a magnó időszak legvégén volt, csak sztereó kis-jack fülhallgató kimenet van rajta és kész, de a semminél az is sokkal több. Szekrényből előtúrtuk, de nem működött. Szomszéd szoba, az a példány sem működött. Aztán egy harmadik viszont működött. Otthon találtam egy ránézésre esetleg alkalmas kábelt, egyik oldalon 2 db RCA (4-nek jobban örültem volna, de ha menteni nem is tudom, de beolvasni igen, az már alkalmas lesz a gép tesztelésére), de a másik oldalon apa helyett anya volt a DIN oldala. Mondom már csak egy RCA/kis-jack és egy DIN kábel kell és kész. RCA/kis-jack hamar lett, és lelkesen meg is ragadtam egy MIDI DIN kábelt, ami látszatra jónak tűnik. De azért gyanús volt, hogy külön MIDI DIN-nek hívják. Nézegettem neten és a hagyományos DIN analóg audio kábel bekötése olyan, hogy egyenesen mennek a vezetékek a kábelben, és ami az egyik végén a bal szélső, az a másik végén a jobb szélső lesz, tehát a kiosztás/bekötés nem azonos a két oldalon, hanem tükröződik. Amíg DIN-DIN a két összekötendő eszköz, addig ez nem gond, de amint át kell alakítani valamelyik oldalt, ott már nem mindegy melyik oldalhoz kell az átalakító. Nekiálltam multiméterrel kiméregetni a MIDI DIN kábelt, és ennél nem egyenes a bekötés, hanem a bal szélső, az a túloldalon is a bal szélső, így mindkét oldalon azonos a kiosztás/bekötés. A japán megoldás ezért praktikusabb, viszont nekem pont nem lesz jó a Primo-hoz. Aztán realizálva hogy az analóg DIN esetén nem mindegy hogy, magnó vagy erősítő/számítógép oldalhoz kell az átalakító, nekiálltam kimérni az átalakítómat is, és bizony az meg nem magnó oldalra lett szánva, ami nekem kellett volna, hanem erősítő oldalra. Aztán jött az ötlet, hogy lehet, hogy működni fog úgy, ha én a fordított bekötésűt használom, de aztán a MIDI DIN majd szépen visszafordítja. És jó is lett, menteni ugyan nem tudok, de beolvasni igen, s szépen be is töltötte a Primo az első programot a kazettáról.

A kezdetektől szempont volt számomra, hogy közkincs legyen a másolt kazetta tartalma, s a weboldalon meg is találtam, hogy István várja a program kazettákat/lemezeket.

Kollégám kazettáját nem küldhettem el, mert az is az eladó A64-es értékes körítése, így nekiálltam digitalizálni a kazettát, s azt küldtem el Istvánnak. István sikeresen fel is dolgozta az anyagot, nagyon jó arányban betölthetőek/futtathatóak voltak a programok, de 1 darab egy beolvasási hiba miatt nem indult, a "MAGYARORSZÁG 1.".

Próbáltam én is betölteni ezt a kazettáról Primo-n, ami jóval esélyesebb, mint emulátoron, a Primo bemenet remek erősítő/szűrő megoldása miatt. De közvetlenül a kazettáról sem működött. István képet is küldött a hibás jelalakról, amin látszott, hogy csak egy kicsi rész sérült. Izgatott a dolog, gondoltam megpróbálom "restaurálni" a hiányzó részt.


A "MAGYARORSZÁG 1." restaurálása

Elöljáróban, programozni nem tudok, nagyon minimális a BASIC ismeretem, "szókincsem", de ez persze nem szegheti kedvem.

A hibás rész eléggé a program elején volt, kísérletezgettem emulátorral és a géppel is. Emulátorra betöltve a digitalizált fájlt, olyan 3 sor volt rossz, viszont kazettáról a Primo-n betöltve csak kevesebb mint 10 karakter, így aztán maradtam csak a valós gépen javításnál.

Először kicsit csalódott voltam, mert kazettáról olvasva sem lett sokkal jobb a helyzet, a program működőképessége nem változott; sőt, sokáig tévúton jártam, mert azt hittem, picit még rosszabb lett a helyzet. Ugyanis emulátoron betöltve láttam "PRINT" utasítást is, míg kazettáról olvasva nem. De végül rájöttem, hogy a "PRINT" utasítás is 1 db "karakter"-ként van tárolva, ahogy egy-egy betű is, és így kerülhetett csak elő, félreolvasás/értelmezés okán, nem pedig, mint 5 egymás utáni karakter, amit én egy darabig hiányoltam kazettán, és a javítás első pár próbájánál ragaszkodva a "PRINT"-hez, nem jutottam előre. E tévedésem ezért vitt tévútra. Utána csak az volt a bajom, hogy kettőspontot akartam rakni oda, ahová vessző kellett volna. Aztán olvasva a Primo weblap szkennelt "listák, tippek" rész programkódjait, végre találtam egy hasonló programrészt, s rájöttem: vessző fog kelleni. Próbálgattam kitalálni, hogy hogyan nézhetett ki az eredeti programsor, s egyszer csak eltaláltam, elindult a program!
Sajnos lementeni nem tudtam kazettára, mert ugye az a kábelkompozícióm arra nem alkalmas, így aztán lefényképeztem minek kell lennie a végeredménynek, aztán emulátoron is megcsináltam a javítást, és onnan mentettem ki.

A "MAGYARORSZÁG 1." egy oktatóprogram, Magyarország városait kell bejelölni a térképen. Ismerős volt a képernyő, kis keresgélés után megtaláltam, hogy a program érdemi része azonos a gyűjteményben már meglévő "Magyarország városai" cíművel.

Ez utóbbi egy upgradelt verzió, load-nál kirajzolja a címet, aztán a végén felvillan az "állítsd meg a magnót", és autorun-os, ellenben az általam restaurálttal, de onnantól azonos, így "Magyarország" címmel ad leírást a programhoz (nem pedig, mint "Magyarország városai" címmel, így nem biztos, hogy az eredeti alkotó készítette ezt az update-et/módosítást).

Egyértelmű számomra hogy a "MAGYARORSZÁG 1." a régebbi, az eredeti. De így legalább két külön verzió is lett a gyűjteményben.

Miután mindezekkel végeztem, az A64 sikeresen el lett adva, a kollégám, akitől érkeztek az anyagok, talált egy kábelt, ami DIN apa és a magnó oldalon 4 RCA van. Egy igazi kincs, jól el is raktam.

Utóirat: A programok a Primo weblapon az "Egyéb" kategóriájú letölthető programok között találhatók meg:


A JetPac restaurálása

A sikeren felbuzdulva lett még két restaurálási projekt. Mivel időközben sikeresen el lett adva kollégám Primo gépe, ezek már emulátoron lettek tesztelve, illetve legnagyobb arányban az adott PTP fájl lett szerkesztve HEX editorban.

Korább, mikor az eladott Primot teszteltem, próbáltam a JetPac-ot is, és zavart, sajnáltam, hogy sérült a loading screen, a "JETPAC IS LOADING" szöveg meg van törve, a felső része jelentősen el van tolódva balra, nem is olvasható, csak ki lehet következtetni:

Más hibák is keletkeztek, legalább 2 helyen fekete pixelek vannak fehér helyett. Gondoltam, hogy amint rájövök a képtárolási szisztémára, valószínűleg nem lesz nagy meló "visszahúzni" az eltolódott részt és javítani a pixelhibákat a PTP állományban HEX editorral.

Annyiban tévedtem, hogy az érintett rész javításának végére vettem csak észre, hogy ha a HEX értéket átváltom kettes számrendszerbe, akkor gyakorlatilag látom a képtárolást önmagában, mert a 0 a fekete, az 1 pedig a fehér pixel.

Aztán, mivel láttam 2 további gyanús pixelt, melyeknek szerintem fehérnek kellene lennie, ellenőrzésképp összeszedtem az eredeti Spectrum loading screen-t, és összehasonlítottam az érintett részt. Igazam volt, a két gyanús pixelt is javítani kellett. Ekkor észrevettem, hogy a JETPAC szöveg körüli keret picit aszimmetrikus, a jobb oldali része egy pixelsorral vastagabb, mint a bal. Kíváncsi voltam, hogy elszámolás/elgépelés eredménye-e ez. De nem az, merthogy a Spectrum verzióban is ugyanígy van ez, tehát a Primo port elkészítője hűen követte az eredeti grafikát, legalábbis ezen a részen, mert az összehasonlításnál észrevettem, hogy 2 szempontból is javította az eredeti képet.
Az egyik, hogy adott egy plusz fehér pixelsort a "JETPAC IS LOADING" alá, mert az eredetiben van ugyan egy sor a szöveg felett, de alatta nincs.

A másik, hogy az eredeti Spectrum-os képernyőn nem használták grafikára az alsó két karaktersor képernyőrészt (valószínűleg azt Spectrum-on máshogy kell címezni/programozni, mint a képernyő többi részét, és/vagy irkál oda betöltés közben). De a Primo port alkotója csak az alsó 1 karaktersor részt nem használta (a számláló belerondítana az ULTIMATE logóba), és emellett nemcsak, hogy lehúzta a használt képernyő rész legaljára a "JETPAC IS LOADING" alatti részt, hanem az így keletkezett üres területre (üres égboltra), rajzolgatott csillagokat is! Kiváló munka!

Itt az összehasonlítgatásnál vettem észre, hogy több fekete blokk végén van egy-egy fekete pixel, aminek fehérnek kell lennie. Ez viszont nem kazetta beolvasási hiba, mert ez legalább 15 CRC-t érint, és betöltéskor nem 17 beolvasási hibát írt, hanem csak 2-t. Viszont, látva az alkotó precíz munkáját, biztosan nem szándékos e különbség, és kizárólag fekete pixelek lettek többletben, és kizárólag fekete pixelek után (tehát például 4 fekete után 4 fehérnek kellene lennie, de ehelyett 5 fekete, majd 3 fehér van). Ezek legjobban az "ULTIMATE PLAY THE GAME" embléma "U", "E" és "P" betűi bal szélén vehetők észre. Tehát hitem szerint ezek a logikai hibák anno a kazettára tároláskor keletkezhettek. Mindet javítottam.

Ezzel persze a 2 eltérő CRC felugrott 17-re. Ez már elég nagy szám volt ahhoz, hogy ne totózzam a kontroll számokat, hanem pontosabban dolgozzam ki az összesítendő bájtokat.

A CRC mindig egy blokk végén van, közvetlenül utána kezdődik a következő blokk. Képernyő tartalom esetén úgy tapasztaltam 8 bájt van az adatbájtok előtt. Nem teljesen értem őket, de nem is kell, elég, ha a CRC számítást tudom értelmezni. Meg is lett. Kerestem a kaland.ptp-ben (abban sok kép van), egy olyan részt, ahol csupa fekete (0) képernyő blokkok vannak (azzal igen könnyű számolni).

Arra számítottam, hogy a csupa nulla adatbájtok utáni CRC az 0 lesz. Hát nem volt az. Nekiálltam hozzáadogatni az adatbájtok előtti blokk elemeket, hátulról bájtonként. A hátulról negyedikig érve (az a szám, amit töltés közben kiír mint számlálóállás), megkaptam a CRC értékét. Tehát a CRC nemcsak az adatbájtokat, hanem az előttük lévő blokkrész hátsó részét is kontrollálja! Általában persze túl nagy az összeadandó számok összessége, így a CRC bájt csak az összeg utolsó számjegyeit használja (HEX-ben az utolsó 2 számjegy).

Így már nem volt akkora munka a javított képhez igazítani a kontroll számokat, készítettem hozzá egy Excel táblát, amibe bemásolva az érintett rész HEX számait, összegzi azokat, s az összeg utolsó két számjegyével javítani tudtam az adott rossz kontroll számot.
A restaurált/javított loading screen ez lett:

Utóirat: A program a Primo weblapon a "Játék" kategóriájú letölthető programok között található meg:


A Bátor Lovag restaurálása

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."-gyel, 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 loading screen-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 Szarka 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étikai hiba volt, a hibaszámláló kiírt "1"-et, de magukban a programsorokban már nem volt beolvasásból eredő hiba. De 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:
batorlov.ptp

Kicsit 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 átirattó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-mal szerelt verzió, mely támogatta ezt: http://www.commodoreszerviz.hu/commodore_plus4_magyarositasa.htm

Ez sokat is dobott a sikerén az iskola-számítógé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 arany kö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-pal 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 az "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áblázatot alkottam, ami kiszámolta a kép összes CRC értékét.

Ez lett a töltőképernyőm:

Spectrum átirat és további javítások:

2022 nyarán megkeresett a "sinclair.hu"-ról PGYURI, hogy ha hozzájárulok, akkor az általam módosított Hős Lovagot átírná Spectrum-ra (természetesen hozzájárultam), valamint írta, hogy talált hibát a programsorban, pár Szarka Zoltán által elkövetett helyesírási hibát, meg furcsa/értelmetlen hivatkozásokat ("GOSUB 19000" ott meg csak egy "RETURN").

Megvizsgáltam, tényleg volt 1 hiba, az is még Szarka Zoltán óta megvolt, javítottam a helyesírási hibákat, megnéztem én is ezeket a funkció nélküli hivatkozásokat. Szarka Zoltán tette bele, a korábbi verziókban nincs. Mindig pozitív fejlemény után van berakva, így arra jutottunk Gyurival, hogy valószínűleg Szarka Zoltán tervezett egy pozitív megerősítés hangot, majd végül elvetette azt. Talán csúnyán szólt a Primo-n, ami fejben még jó volt. Kicsit kísérleteztem, a mélyebb hangok csúnyán szólnak, de a magasak kevésbé. Végül két magas hangot raktam bele, ez elfogadható pozitív megerősítésnek.

19000 BEEP 10,400 : BEEP 5,800 : RETURN

Végül észrevettem egy saját hibát is:

Minden BASIC sor elején van 2 bájt (még a sorszám előtt), amit nem tudtam dekódolni, nem foglalkoztam vele. Legnagyobb arányban HEX editorban javítgattam mindig a programokat, de néha emulátorból is dolgoztam, és onnan is kimentettem egy-egy állapotot, és azt folytattam HEX editorban. Ilyenkor mindig töltőképernyő nélkül dolgoztam. Nem figyeltem, de megváltoztak a sorszám előtti bájtok, így állományon belüli pozícióhoz lehet közük. Mindenesetre a jelenleg publikált verzióm is olyan, hogy nem tényleges pozícióra hivatkoznak ezek a bájtok. Az egymásutániság miatt nem okoz gondot ez, de kilistázva a BASIC programsort, az utolsó sor után egy kis szemetet is listáz oda. Mivel nem tudom, hogy kell töltőképernyővel együtt menteni állományt, így végül egy töltőképernyővel azonos méretű üres BASIC részt raktam az érdemi BASIC rész elé (emiatt át- majd vissza kellett sorszámozni pár BASIC sort), így mentettem ki emulátorból, HEX editorban visszamásoltam a töltőképernyőt, majd az eredeti BASIC sorszámokat. Így jók lettek a pozíciók is, és már nincs szemét a BASIC programsor listája végén, szerkezetileg is hibátlan lett az állomány.

Megjelent nemrég a sinclair.hu portálon is a Spectrum átirat:

Utóirat: A programok a Primo weblapon a "Játék" kategóriájú programok között találhatók meg:


A Manic Miner restaurálása

A weboldalon 3db ZX Spectrum Manic Miner átirat létezik, az alap, az "örökélet"-es, valamint a Vili a bányász. Valószínűleg nagyjából ilyen időrendben is készülhettek, az alap a legegyszerűbb, nagy részben érintetlenül van benne a Spectrum kód, a mozgató billentyűk meg lettek változtatva, de a képernyőn lévő szöveg nem lett ehhez igazítva. Az örökéletes-ben már át lett írva a képernyőn is a billentyű kiosztás, kicsit bele lett rajzolva a nyitóképernyőn (egyben utolsó pályán) látható fa lombkoronájába, és ha nem is örök, de jó sok életre lett növelve az eredeti kevéske. Nagyon sok a hasonlóság e két verzió közt, azonos memóriacímre töltenek, és a gépi kód elején van egy jó nagy üres rész, ami gondolom csak azt a célt szolgálja, hogy adott memóriacímre kerüljön a képernyőtartalom. Az örökéletes így az alap verzióból származhat, lehet hogy ugyanaz a személy alkotta. A "Vili a bányász" ellenben nagyon eltér a másik kettőtől, a kódban talán már csak a pályák rajzolása azonos az eredeti Spectrum verzióval. Az alap átíratben még a színezések is érintetlenül benne vannak, amelyeknek persze nincs hatása a Primón. Ez az alap verzió az amely valószínűleg elgépelés miatt tartalmaz vizuális hibákat, ezt javítottam. Nagyobb méretű képernyőn mutatom, hogy jobban észrevehető legyen:

Van ahol mintha egy, van ahol mintha 2 pixellel balra lenne a rajzolat, máshol hiányos a rajzolat, vagy éppen van, noha nem kellene lennie. A lombkorona, a ház vagy a talaj, az nem hiba, Spectrumon más-más színezéssel lett feltöltve az adott terület, például a lombkorona peremén a rajzolat zöldre, a többi kékre van színezve, míg a lombkorona belsejében a rajzolat piros, a többi pedig zöld, így a végeredményben a Spectrumon az egész lombkorona zöld lesz, míg a Primón a rajzolat fehér és kész. Ez egyébként a "Vili a bányász"-nál, noha ez a legkidolgozottabb verzió, az utolsó pályán ugyanilyen ronda, üres a lombkorona belseje, fekete a ház stb.

A "BUG-BYTE" előtti kicsi, hosszú "ű" sem elírás, a Spectrumon a 7F a copyright karakter, ami a Primón nincs használva, helyette oda került az "ű". Ezt a régi írógépes szabványnak számító (c) -re javítottam, oly módon, hogy a szöveget felvezető részből kivettem az első 2 karaktert, hogy ne csússzon el a képek memóriacímzése.

Később, még két pályán a mozgó ellenfél karaktereknél is látható rajzolati hiba, ezek is elgépelésből származhatnak. Ezek megtalálása elsőre lehetetlen feladatnak tűnt, de aztán a Spectrum érdemi kódrészekhez hasonlítva a megfelelő programrészeket, sikerült ezeket lokalizálni és javítani.

A kód első részében található nagy üres részét is kivágtam, az előtte lévő részt memóriacímzését módosítva a változáshoz. A mozgató billentyűk szövegében nem javítottam a szöveget, meghagytam az eredeti spectrum-os billentyűkiosztás szöveget, lévén ez ennek a verziónak a sajátja.

A rajzolatot, ahol zavaró volt hogy nem fehér, hanem fekete, az adott részen inverzbe raktam. Időben ez volt a legnagyobb munka. Ahol 3 szín találkozik, ott egyiket el kellett engednem, így a naptól jobbra lévő fehér szirt el lett engedve. Törekedtem az autentikusságra, így az eredetileg zöld talajon lévő sárga növényeket is meghagytam, de a talajnak inkább fehérnek kellett lennie, így ezek az alsó növények feketék lettek. Ez a képernyő egyben az utolsó pálya felső része is, ott viszont zavaró hogy a pálya fölötti fekete úgy néz ki, mintha használható tér lenne, noha nem az, így a játék, karakter mozgásának vizuális terét figyelembe véve, legalsó sort fehérre rajzoltam:

Minden mást érintetlenül hagytam.

Utóirat: A programok a Primo weblapon a "Játék" kategóriájú programok között találhatók meg:

Gona (Varga Gábor)