Und schließlich zu meinem anderen Projekt, das im Moment ein wenig im Hintergrund steht.
Arbeiten wollte ich an diesem Spiel schon lange. Schon als ich es das erste Mal gespielt hatte kam das Verlangen. Aber - ähnlich wie bei Lufia 2 - war es wiedereinmal unmöglich für mich. Ein Jahr später dann hat die Telekom wieder einmal Mist gebaut und ich stand ohne Internet da. Diese Zeit habe ich dann genutzt, um mir Valkyrie Profile noch einmal anzusehen. Zunächst verlief es wieder einmal erfolglos. Nichtmal im SaveState des Emulators ließ sich Text finden. Aus Neugier habe ich dann einmal das gesamte SaveState in einem grafischen Editor durchgescrollt - und ich wurde fündig!
Es zeigte sich, dass das Spiel die Zeichensätze in einem ungewöhnlichen Format speicherte, nämlich nur die Zeichen die auch verwendet wurden. Die Ursprünge davon liegen vermutlich bei der japanischen Version, wo so eine Vorgehensweise viel wertvollen RAM speichern kann. Für englische Spiele ist es dagegen sehr ungewöhnlich und fast schon kontraproduktiv.
Jedenfalls hatte ich so endlich einen Anfang gefunden. Das nächste Problem stellte die Komprimierung des Spiels dar. Besser gesagt, die Komprimierungen. Es gibt zwei verschiedene, aber sie sind relativ ähnlich. Es dauerte ein wenig, aber schließlich könnte ich sie beide umsetzen und so die Daten vom Spiel dekomprimieren.
Aber schon zeigte sich das nächste Problem. Das Dateisystem vom Spiel. Alles was man auf der CD finden konnte waren drei Dateien. Einmal die CNF-Date, die das System zum Starten braucht, einmal die ELF-Datei die den Code enthält, und schließlich eine 700mb große Datei wo der Rest des Spiels enthalten ist. Nun, wo sollte man da anfangen? Ich wusste schon, dass das Spiel diese Datei intern in viele tausend einzelne Dateien unterteilt, aber, wie macht es das?
Es half alles wenig. Aber durch einen glücklichen Zufall bekam ich Kontakt zu einem französischen Rom-Hacker namens Pixel - der einigen sicher ein Begriff sein sollte (Stichwort: Terminus Traduction). Nach einem kleinen Crashkurs in Sachen Verschlüsselungen und kleinen Hilfestellungen konnte ich so dank ihm die Dateien vom Spiel entpacken!
Und das waren nicht grade wenige. Viele tausend Dateien waren es, 4300 Stück. Allesamt natürlich ohne Namen. Ein wenig günstiger Umstand ist das, aber damit muss man nun einmal klar kommen. Die nächste Zeit verbrachte ich also damit diese Dateien zu analysieren, Daten zu finden, Zeichensätze zu analysieren (da das Spiel ja für jeden Text nur die nötigen Zeichen speicherte), Texte zu dumpen, und so weiter. Es gelang mir schließlich sogar, die Daten vom Spiel auch wieder erfolgreich zu komprimieren - ein großer Schritt für mich.
Aber dennoch blieb ein Problem. Die Daten wieder richtig einzufügen blieb umständlich, wegen den Fehlerkorrekturen die so eine CD inne hat. Für C++ gab es dafür Code der einem das abnahm, aber da ich mit Objekt Pascal arbeitete war das keine Wahl. Da ich allerdings schon lange auf C++ umsteigen wollte, fasste ich den Entschluss es nun endlich zu tun.
Es war ein harter Umstieg, und ich musste viel Code portieren, aber schließlich hat es sich gelohnt. Inzwischen kann ich sehr gut mit C++ umgehen, habe allen Code portiert, und auch noch viel mehr geschrieben.
Zu dem was ich inzwischen alles mit dem Spiel anstellen kann zählen:
- Alle Daten dekomprimieren und wieder komprimieren (effektiver als vorher!)
- Alle Arten von Texten dumpen und wieder einfügen und Zeichensätze anpassen
- Grafiken extrahieren
… nach viel sieht das nicht aus, oder? Aber es ist es. Viel Code steckt da drin, und vieles kann man damit anstellen. Doch es steht mir noch viel Arbeite bevor.
Anzumerken ist auch noch, dass die italienische Gruppe SadNES City ebenfalls an diesem Spiel arbeitet, und wir uns gegenseitig gut mit Informationen unterstützen.