Schlagwort-Archive: OXYD2

Ich will jetzt nicht unbedingt behaupten, dass ich fleißig bin, aber wenn ich mal ausnahmsweise nicht faul bin, dann bin ich so richtig nicht faul. Nach einer längeren Abwesenheit und gleichzeitigen Arbeitspause an meinem Spiele-Remake, bin ich nun endlich wieder dran. Mich hat aus irgendeinem mysteriösen Grund plötzlich wieder die Motivation eingeholt, und sofort konnte ich zumindest wieder etliche Kleinigkeiten angehen und Fehler korrigieren. Allerdings habe ich durch Zufall ganz unerwartet einen weiteren Meilenstein bei der Entwicklung erreicht; einen Punkt auf meiner To-Do-Liste, den ich definitiv irgendwann umsetzen wollte, selbst wenn dies einen Nutzen nur theoretischer Natur auf dem Papier bringt.

Was bisher geschah: Einem unfassbar mäßig begabten Entwickler eines Spiele-Remakes, der zwar nicht vom Erfolg seines Projektes überzeugt, aber dafür wenigstens nicht von seinem Ziel abzubringen ist, war es gelungen, die Original-Dateien des Atari ST-Spiels SPACOLA mit Hilfe eines Debuggers zu entpacken und anschließend sogar das undokumentierte Format der Sprite-Dateien zu dechiffrieren und einen eigenen Konverter zu schreiben. Dies sollte ihm endlich einen wichtigen Einblick in die Hintergründe der Unterhaltungssoftware einer längst vergessenen Zivilisation geben. Wie hatten unsere Vorfahren einst Spiele entwickelt? Wurden die Quellcodes damals noch in Keilschrift verfasst? Mussten Benutzer an einer Kurbel drehen, wenn sie ihren Heimcomputer starten wollten? Waren antike Computerprogramme auch nur in schwarzweiß? (In diesem Fall, ja!). Unermüdlich arbeitete der selbsternannte Software-Archäologe weiter an den historischen Dokumenten, um vielleicht irgendwann einmal das perfekte Remake zu erschaffen.

Teil 3 meines fortlaufenden Hintergrundberichts: Es war eigentlich reiner Zufall als ich im Internet auf die Reverse-Engineering-Erkenntnisse von Jeremy Sawicki aus dem Jahr 2003 stieß. Der hatte diverse OXYD-Spiele in ihren Farbversionen für den IBM-PC erfolgreich analysiert und deren Formatspezifikationen offengelegt, darunter das Levelformat, die Grafik- und Sounddateien. Seine Dokumentation war unter anderem nützlich bei der Entwicklung des freien OXYD-Klons Enigma. Als ich mir die Angaben zum Grafikformat genauer ansah, erkannte ich plötzlich viele Gemeinsamkeiten zu den PAC-Dateien, die in den alten Monochromversionen der frühen Dongleware-Klassiker Verwendung fanden. Diese Dateien enthielten binäre Vollbildgrafiken für die Spiele seit Esprit (1989) und bis mindestens OXYD2 (1991).

Ich hatte mich natürlich längst selbst mehrfach daran versucht, das seltsame Dateiformat zu dekodieren, zuletzt auf Grund meiner Erfolge beim Konvertieren der Sprite-Dateien, doch das PAC-Format widersetzte sich meinen Annäherungsversuchen konsequent. Bis auf einige sehr offensichtliche Headerinformationen konnte ich kaum sinnvolle Werte herauslesen, und meine einzigen Erkenntnisse über das Kompressionsverfahren bestanden darin, dass das Bild in Blöcke unterteilt wird, und die Pixelinformationen grundsätzlich durch ein XOR-Verfahren invertiert von oben nach unten beschrieben werden. Durch Manipulieren der Dateien im Hexeditor und anschließendem Beobachten der Auswirkungen in OXYD, stellte ich erstaunt fest, dass die Dateistruktur eine sehr eigenwillige sein musste, weil oft komplett unvorhersehbare und unintuitive Artefakte im Bild dadurch enstanden. Als ich keinerlei Gesetzmäßigkeiten ausmachen konnte, gab ich mein Vorhaben desillusioniert auf.

Seit heute weiß ich endlich sehr genau, was das große Problem war. Von Sawickis Arbeit angespornt, begann ich endlich an der Entwicklung eines eigenen Konverters, den ich letztlich in mein Remake einbauen wollte, so wie bereits getan beim Konverter für Sprite-Dateien. Ich studierte die Formatspezifikationen und implementierte die Dekompressions- und Zeichenroutinen. Ohne nun zu sehr ins Detail zu gehen (wer alles wissen möchte, kann die Originalseite lesen), besteht jede Packed-Bitplane-Datei aus einem Header, einem Bitstream und einem Bytestream. Der Bitstream beschreibt dabei die gesamte Struktur des Bildes, sowie Angaben über die Kompressionsmethodik, und der Bytestream enthält die tatsächlichen Pixeldaten, die entsprechend gezeichnet werden müssen.

Jedes Bild hat die Auflösung von 640×400 Bildpunkten und ist in Blöcken von je 16×16 Pixeln aufgeteilt. Der Bitstream beschreibt dabei, wie das Bild nacheinander in Reihen von Blöcken, Blöcken, Blockquadranten und Reihen von Pixeln in immer kleinere Häppchen aufgespalten wird, wobei jedes Element entweder übersprungen oder gezeichnet werden kann. Müssen Pixel gezeichnet werden, so wird ein Byte aus dem Bytestream gelesen und dessen Bits als Pixel interpretiert, abhängig von einer der Pixelreihen darüber, die miteinander XOR-verknüpft werden, also je nachdem ob ein Bit gekippt wird oder nicht. Die Formatspezifikation von Sawicki ist dabei technisch betrachtet soweit korrekt, aber leider an mehreren Stellen etwas unpräzise formuliert, so dass ich mehrere Fehler machte, deren Behebung mich viel Zeit gekostet hat.

Das Titelbild „TITLE.PAC“: Die einzelnen Fortschritte während der Entwicklung des PAC-Konverters von oben nach unten. (Rote Bereiche sind nur Hintergrund, wo noch nichts gezeichnet wurde.)

Während der Entwicklung fiel mir jedoch auf, dass Sawicki eines der Features des proprietären Dongleware-Formats definitiv nicht kannte: Neben dem Invert-Flag, das festlegt, ob das fertige Bild noch invertiert werden muss, gab es in meinem Archiv eine einzelne Datei, die ein undokumentiertes Flag setzt. Zum Glück konnte ich am Output des Konverters bereits erkennen, was dem Bild fehlte: Es musste ein Dithered Pattern („Schachbrettmuster“) mittels XOR über das gesamte fertige Bild gezeichnet werden, um die ursprüngliche Grafik wiederherzustellen. Dieser Modus wird wohl zwar nur sehr selten angewandt, aber mein Konverter unterstützt dieses Feature nun ebenfalls. Im Endeffekt war es mir in geschätzt sechs bis sieben Stunden gelungen, eine Implementierung abzuliefern, die sämtliche 16 PAC-Dateien, die ich aus vier Spielen gesammelt hatte, fehlerfrei einzulesen und anzuzeigen vermochte.

Ohne das hilfreiche Dokument wäre ich immer noch nicht schlauer, und sonst einen Konverter zu schreiben, hätte ich wahrscheinlich nur geschafft wenn ich viele Wochen und Monate in mühsames Debugging der Spiele investiert hätte. Ob ich mir diese Zeit jemals hätte nehmen wollen, sei mal dahingestellt. Nun bin ich umso glücklicher über diese angenehme Abkürzung, die ich nehmen konnte. Der Konverter ist fertig und bereits ins Remake eingebaut. Dadurch bin ich jetzt endlich in der Lage, auch die originalen Grafikdateien in unveränderter Form im Remake einzulesen und zu verwenden. Das macht – wie eingangs im Absatz beschrieben – für den Spieler absolut keinen Unterschied, für mich als Entwickler mit Perfektionsdrang aber einen gewaltigen.

Mein SPACOLA-Remake kann nun die ursprünglichen Sounddateien, die Sprites und die Grafikdateien korrekt lesen. An der Interpretation der originalen Leveldaten arbeite ich mich weiterhin Schritt für Schritt voran, sie werden aber immerhin schon komplett eingelesen. Alles was jetzt noch vollständig fehlt: Die Musikdaten im SMS Synthesizer-Format von Jürgen Piscol. Ob ich dieses Kapitel jemals abschließen werde, lässt sich im Moment noch nicht einmal sagen. Andererseits, wer weiß schon, ob sich nicht doch wieder jemand findet, der zufällig eine detaillierte Analyse des Formats in Schriftform für mich zur Einsicht hat. Dann könnte nämlich alles ganz schnell gehen.

Das „Boss Is Coming“-Bild aus OXYD2, dargestellt im PAC-Konverter, zeigt den Datenbank-Manager „Phoenix“ von den Application Systems Heidelberg

Und falls sich nun jemand fragt, wieviele PAC-Dateien in SPACOLA Eclipse denn nun eingelesen und angezeigt werden können: Es sind ganze vier Dateien! Erstens, das Titelbild beim Laden des Spiels. Zweitens, das typische HUD mit dem Radar auf der rechten Seite. Drittens, der Rentenbescheid zum Ausdrucken nach Abschluss des letzten Levels. Die vierte und letzte PAC-Datei ist tatsächlich ein ungenutztes Bild, das die Kontaktadresse des Dongleware-Verlages enthält. Vermutlich wurde es in einer früheren Version des Spiels verwendet, und dann durch ganz normalen Text in der Dongleware-Schriftart ersetzt. Alle diese vier Originaldateien werde ich nun ins Remake einbauen und in irgendeiner Weise nutzen, damit sich der ganze Entwicklungsaufwand auch gelohnt hat.

enigmalogoVoller Freude präsentiere ich mal wieder einen kleinen News-Beitrag auf meinem Blog, der sich meiner Headergrafik als würdig erweist und sie ausnahmsweise nicht gar so deplatziert wirken lässt: Fast sechs Jahre hat es gedauert, nun können OXYD-Fans endlich aufatmen, denn Enigma ist wieder da, in der neuen Version 1.20.

Enigma ist ein hervorragendes und einzigartiges Esprit-, OXYD-, OXYD2-, Oxyd Magnum-, Sokoban-, usw. -Kombi-Remake, das so viele großartige Kistenverschiebe-, Puzzle-, Denk- und Geschicklichkeitsspiele vereint, wie man sich kaum vorstellen kann. Alleine als Atarianer wird man unendlich viel Freude daran haben, weil es sich spielt wie die alten Dongleware-Meisterwerke. Der Suchtfaktor ist auch heute noch enorm. Wenn ich durch meinen exzessiven OXYD-Konsum in Kindheitstagen nicht längst immunisiert wäre, würde ich dem Charme von Enigma wahrscheinlich Tag und Nacht erliegen. In der Hinsicht verhält sich das bei mir vielleicht ein bisschen wie mit Obelix und dem Zaubertrank.

enigma120Da sich die neueste Version nun wirklich sehr lange Zeit gelassen hat, gibt es tatsächlich eine ganze Stange an Änderungen, darunter beinahe 1500 neue Levels für alle möglichen Spielarten. Auch einige bekannte Dongleware-Levels sind neu hinzugekommen, wie man schon am Screenshot erkennen kann. Darüber habe ich mich persönlich am meisten gefreut. Außerdem gibt es einige neue Musikstücke, neuerdings sogar im laufenden Spiel wenn man das möchte. Viele neue Steine und Spielobjekte wurden implementiert, es gibt viele grafische Verbesserungen, und eine komplett neue API, wobei letzteres wohl nur den Entwicklern und Leveldesignern auffallen wird.

Die neuen Download-Pakete kann man ab sofort auf der Enigma-Webseite herunterladen. Mac-Benutzer müssen sich leider noch ein wenig gedulden, für den Anfang gibt es nur Windows-Binaries und den Quelltext zum selbst kompilieren. An dieser Stelle nochmals der Hinweis darauf, dass Enigma auf Grund der Reverse-Engineering-Leistung hinter der sogenannten „Oxydlib“ die alten Dateiformate der Ur-OXYDs laden und interpretieren kann, genauer gesagt die Original-Sounds und die Landschaftsdaten, so dass sich schnell ein noch wesentlich authentischeres Spielerlebnis für Fans einstellt. Die importierten Landschaften der Originale funktionieren aber nur eingeschränkt, da auch nach all den Jahren noch längst nicht alle Spielelemente im Remake umgesetzt sind.

Das Internet ist eine gigantische Schatzkiste. Das konnte ich in den letzten Jahren bei vielen Gelegenheiten immer wieder feststellen. Dieses Mal konnte ich eine ganz besondere Rarität ergattern, die ich schon seit meiner Kindheit haben will. Noch dazu stellte sich heraus, dass besagte Rarität in einem außergewöhnlich guten Zustand ist, praktisch kaum benutzt. Meine Sammlung wird damit endlich komplett, nach lächerlichen 21 Jahren.

Eigentlich bin ich überhaupt kein Sammler und Raritätenjäger, ich habe gar nicht das Geld oder den Platz, um mir eine entsprechende Sammlung aufzubauen, und so mancher hat sein ganzes Haus voller Spielerelikte, Konsolen, Handhelds, ungeöffneter Originalversionen, Handbücher, alter Homecomputer, und was weiß ich noch alles. Ich bin aber in gewisser Hinsicht etwas ähnliches, nämlich Verfechter der Informationsfreiheit und Informationserhaltung, ganz im speziellen im Bereich alter Spiele bzw. historischer Software, auch für Systeme, die längst nicht mehr existieren. Sehr gerne beschäftige ich mich darunter mit den auf dem Atari ST bekannten Kugel- oder Murmelspielen von Meinolf Schneider (OXYD-Reihe), sowie von Martin Hintzen und Jürgen Verwohlt (Thriller- und Shocker-Reihe). Mit diesen Spielen verbinde ich eine sehr spannende und angenehme Kindheit. Ich war eines von jenen Kindern, die keinen Nintendo hatten, aber dafür alle möglichen Computer – zum Glück, denn mit Computern kann man doch soviel mehr machen als mit Spielekonsolen.

Gerade vor wenigen Tagen führte ich ein einstündiges Telefoninterview mit Martin Hintzen über seine aktive Zeit als Spieleentwickler für den Atari ST. Ich konnte ihm so einige Interna über seine Spiele, und nebenbei so manche interessante Anekdote entlocken. Das ist einer der Gründe, warum ich derzeit wieder in einem richtigen Atari-Fieber bin. Nun ist es mir – wider Erwarten – tatsächlich gelungen, etwas zu erwerben, was inzwischen kaum noch zu bekommen ist: ein Exemplar von „Das Oxyd 2 Buch„. Daneben habe ich mir jeweils ein zusätzliches Exemplar von „Das OXYD-Buch“ und dem „Spacola Sternenatlas“ bestellt, schon alleine weil meine alten Exemplare etwas abgegriffen sind (um es mal harmlos auszudrücken). Die Bücher waren teilweise deutlich teurer als der ursprüngliche Verkaufspreis, aber das konnte mich nicht abhalten, diese seltene Gelegenheit zu nutzen. Jetzt besitze ich alle drei Dongleware-Bücher für den Atari ST. Oh Internet, gelobet und gepreiset seiest du.

Wer die Spiele nicht kennt und sich jetzt fragt, welche interessanten Geschichten in diesen Büchern stehen könnten, den muss ich enttäuschen. Die Bücher bestehen aus zwei Teilen: Zum einen fungieren sie als Handbuch für das jeweilige Spiel, zum anderen bestehen die Bücher zu 90% nur aus Kopierschutzcodes, also seitenweise Kolonnen aus Ziffern und Buchstaben, die man eingeben musste, wenn das Spiel danach fragte. Mehr ist das nicht. Warum also für so einen alten unnützen Krempel soviel Geld ausgeben? Genau. Weil halt. Aus zwei Gründen ist es absolut unsinnig, diese Bücher heute noch zu kaufen: 1. Es gibt gecrackte bzw. kopierschutzfreie Versionen der OXYD-Spiele im Netz. 2. Es gibt Enigma, einen freien OXYD-Klon für alle möglichen modernen Betriebssysteme. So, und auf der anderen Seite trifft das auf Spacola schonmal nicht zu, denn davon gibt es meines Wissens keine gecrackte Version. Wie auch, die „Codeabfrage“ ist derart intelligent mit dem Gameplay verknüpft, dass man sich das Spielen ohne Buch schon rein prinzipiell sparen kann. Zum anderen ist es einfach die Nostalgie an diesen Büchern, die mich reizt. Außerdem haben sie einen gewissen Seltenheitswert, denn die Zielgruppe war relativ klein und entsprechend wenige Exemplare sind jeweils in Umlauf gekommen, vermutlich nur wenige tausend Stück.

Und was mache ich mit meiner Beute nun? Keine Ahnung. Tag und Nacht bewundern. Einscannen und als PDF aufbereiten. Von der Staubschicht befreien, einschweißen und in einer Glasvitrine ausstellen. Wenn ich eine hätte. Wahrscheinlich kommen sie einfach nur ins Regal. So richtig habe ich mir das noch nicht überlegt.

OxydEs ist inzwischen genau 20 Jahre her, da hat ein Modula-2-Programmierer aus dem nahen Neckargemünd eines der bekanntesten Monochromspiele für den Atari ST entwickelt und damit gleichzeitig eine neue Lizenzform für Spielesoftware erfunden: OXYD.

OXYD war ein Geschicklichkeits- und Denkspiel, in dem man eine schwarze Kugel durch 100 (+100 im Zweispielermodus) Landschaften navigiert, die man löst indem man OXYD-Steine mit gleichem Motiv wie beim Memory öffnet. OXYD war Dongleware, das heißt das Spiel war Public Domain, aber nur eingeschränkt spielbar. Um es durchzuspielen, benötigte man die Codes aus dem OXYD-Buch. Mit dem richtigen Code konnte man magische Steine sprengen, die sonst ein unüberwindbares Hindernis darstellten.

Ein Jahr später erschien der Nachfolger OXYD2 für den Atari ST, der einige Erweiterungen mit sich brachte und 200 neue Landschaften. Aber im Grunde war es dasselbe Spiel. Noch im selben Jahr wurde allerdings Spacola veröffentlicht, das komplett anders war: ein 2D-Weltraum-Ballerspiel mit witzigen Gags und ähnlich netter Grafik. Diese drei Spiele gehörten praktisch mit zum Pflichtprogramm für jeden Atarianer.

Entwickelt wurden diese drei Dongleware-Spiele 1990 und 1991 von Meinolf Amekudzi (geb. Schneider) in der Programmiersprache Megamax Modula-2. Die mehr als beeindruckenden Titelsongs dazu komponierte Jürgen Piscol. Mit meinen drei neuesten Youtube-Videos wollte ich euch einen kleinen Einblick in die Spielewelt meiner Kindheit gewähren:

OXYD
OXYD2
Spacola

Vielleicht lade ich die kommenden Tage auch noch die Titelmusik zu MIDI-Maze II hoch – praktisch der Urgroßvater aller First-Person-Shooter.