Viele Spiele haben Mogeleien (alias Cheats) eingebaut, die das Spielen erleichtern. Bei der Eingabe eines Codewortes ist man unverwundbar oder kann einen beliebigen Abschnitt anwählen. Und wenn keine Cheats vorhanden sind, mogelt man selbst, verändert im Programm die Anzahl der Startleben oder erhöht im Spielstand seine Energie.
Mogeln bei Adventures ist kaum möglich - dort gibt es keine Levels, keine Zahl der Leben. Der Spielstand ist recht kompliziert: Abgelegt werden dort Informationen, in welcher Szene man sich wo befindet, welche Gegenstände man mit sich führt und über welches Wissen man verfügt. Ein Beispiel: Hat sich Jack am Tatort den Zigarrenstummel nicht angesehen, kann er Charlie nicht fragen, wer Davidoff-Zigarren gekauft hat. Solche Feinheiten muß sich ein Spielstand merken.
Bei "Jack Orlando" sind die zehn Spielstände im Spiel-Unterverzeichnis SAVEGAME in den Dateien JACKSAVE.000 bis JACKSAVE.009 abgelegt.
Es hat mich interessiert, eine Lösung zu entwickeln, wie man in "Jack Orlando" a) in beliebige Szenen springt und sich b) eventuell fehlende Gegenstände verschafft. In kurzer Zeit waren beide Probleme gelöst - dank des transparenten Aufbaus der Spielstände.
Die Programmierer von "Jack Orlando" sparten mit einem Punkt: Der Spielstand weiß nicht, wo sich Jack in einer Szene gerade befindet; wird der Stand geladen, beginnt die Szene neu. Ein Mogler muß sich nicht damit auseinandersetzen, wie die Koordinaten von Jack abgespeichert werden; er braucht nur herauszufinden, wie die Szene im Spielstand abgelegt ist.
Das war extrem einfach. Die Szenen sind durchnumeriert und in einzelnen Datei (SC*.PAK) im Verzeichnis ACTION auf der CD-ROM abgespeichert. Ein korrespondierender Dateiname, nur mit der Endung CCG, steht im Klartext eines Spielstands, gleich am Anfang, nach der (vom Spieler festgelegten) Beschreibung, etwa "IM CASINO", und dem Namen der gerade gespielten Musikdatei (*.MUS).
Man braucht nur mit einem Hexeditor aus der Szene SC009.CCG zum Beispiel SC112.CCG zu machen, und schon springt man vom unfreundlichen Biff an den Schluß des Spiels, genau vor das Verwaltungsgebäude auf dem Militärgelände. Die Tabelle 1 verrät Ihnen, welcher Szene welcher Dateiname zugeordnet ist. Wenn beim Überschreiben der neue Dateiname kürzer als der alte ist, füllen Sie ihn mit einem 00-Byte auf.
Nun versuchte ich, das Inventar aufzustocken. Ich ging von der Überlegung aus, daß für jeden Gegenstand ein Platzhalter festgelegt wird. Wird ein Gegenstand aufgenommen, bekommt der Platzhalter ein Häkchen. Das wollte ich überprüfen: Ich stellte mich vor einen Gegenstand, speicherte ab, nahm den Gegenstand auf, speicherte erneut und verglich die beiden Spielstände. Unerwarteterweise unterschieden sich die Dateien um einige tausend Bytes. Das wiederholte ich mehrfach mit verschiedenen Gegenständen - und stets erhielt ich das gleiche rätselhafte Ergebnis.
Ich nahm einen zweiten Gegenstand auf, und der Spielstand wurde noch größer. Um die gleiche Anzahl Bytes? Tatsache: Mit jedem neuen Gegenstand wurde der Spielstand um 3556 Byte größer. Ein "leerer" Spielstand ist 1135 Byte groß, mit einem Gegenstand 4691 Byte, mit zwei Gegenständen 8247 Byte und so weiter.
Nun wollte ich sehen, ob sich die 3556 Byte jedes Gegenstands schwerwiegend unterscheiden, und schrieb ein Programm, das einen entsprechenden Vergleich anstellte. Der Unterschied war gravierend, und das irritierte mich.
Auf das Naheliegendste kam ich zuletzt: Ich betrachtete die Datei intensiv mit einem Hexeditor und machte zwei Entdeckungen: Die Bytes jedes Gegenstands begannen mit einem Dateinamen, und der Rest bestand aus Bytemustern, wie ich sie von Grafiken kenne. Da die Information, daß ein bestimmter Gegenstand aufgenommen wurde, nie 3556 Byte (und damit den Gehalt einer eng beschriebenen A4-Seite) füllen kann, schloß ich, daß im Spielstand zugleich die Grafik des Gegenstands abgelegt wird, ein Verfahren, das ich als nicht sonderlich effektiv einschätze.
Ich ließ die Dateien des Spiels durchsuchen, ob der Dateiname eines Gegenstands irgendwo auftauchte. In der RESOURCE.PAK hatte ich Erfolg - und sogar größeren als ich erwartete: Bestandteil der Datei war eine Liste aller Bezeichnungen (wie ZEITUNGSSTÜCK) und daneben der dazugehörige Dateiname (wie 59PLAK_I.BM).
Probehalber ersetzte ich den Dateinamen für den bereits aufgenommenen BESEN (MIOT.BM) durch APFEL (JABLKO.BM) und lud den Spielstand. Voilà! Zwar wurde weiterhin die Grafik für den Besen angezeigt, aber die Beschreibung nannte ihn Apfel, und der Schuhputzer nahm das Objekt, ohne mit der Wimper zu zucken.
Die letzte Konsequenz wäre zu ermitteln, wo die Grafiken für jeden Gegenstand abgespeichert sind, eine sehr aufwendige Arbeit, die ich mir ersparte, wenngleich ich mit RESOURCE.PAK die richtige (allerdings 3 MB große) Datei sehr wahrscheinlich bereits entdeckt habe.
Die Erweiterung eines Spielstands um einen neuen Gegenstand ist sowieso eine Operation, die ohne Programme, die a) noch zu schreiben sind und b) ohnehin nicht im Rahmen dieses Textes zur Verfügung gestellt werden können, kaum möglich ist.
Aber ein Kompromiß bahnt sich an, der einer Eigenart des Spiels zu verdanken ist: Rund jeder zweite Gegenstand in "Jack Orlando", der sich aufsammeln läßt, ist ein "roter Hering", ein geflügeltes Wort für Objekte ohne tiefere Bewandtnis, die den Spieler auf die falsche Fährte locken sollen. (Der Begriff ist einem älteren Adventure zu verdanken, in dem als Gegenstand ohne Anwendungszweck eben ein roter Hering aufgetaucht ist.) Gut jeder zweiter Findling im Spiel ist ein Gegenstand, der sich nicht sinnvoll anwenden läßt. Diese eher unangenehme Eigenschaft läßt sich hier gewinnbringend einsetzen: Fehlt Ihnen ein wichtiges Objekt, sammeln Sie etwas auf, speichern ab und ersetzen den Dateinamen; die Tabelle 2 wird Ihnen dabei helfen.
Die Dateinamen enthalten ein seltsames Kürzel und zum Teil die Szenennummer, vor allem bei Dingen, die mehrfach im Spiel auftauchen. Die Kürzel sahen mir wie polnische Begriffe aus. (Die Programmierer des Spiels stammen ja aus Polen.) Mangels Polnisch-Wörterbuch griff ich zu einem Nachschlagewerk der russischen Sprache, die der polnischen ähnelt, und erkundigte mich danach, wie Apfel auf Russisch heißt: Jabloko.
Nehmen Sie für die Veränderungen einen Hexeditor. Sie finden mehrere dieser Werkzeuge in der Download-Ecke von www.mogelpower.de.
Ach so, "Jack Orlando" hat einen eingebauten Cheat: Drücken Sie im Spiel F9, erscheint ein kleines Fenster, in das sich ein Paßwort eingeben läßt. Das einzige Paßwort, das ich kenne, heißt EPILOGUE und läßt Sie die Endanimation samt Abspann sehen.
|