1 Punkte von GN⁺ 2024-05-24 | 1 Kommentare | Auf WhatsApp teilen

Der Fehler mit der Master-Disk von Space Quest II

    1. Mai 2024
  • Äußerlich ist an dieser Diskette nichts Besonderes, aber die gespeicherten Daten enthalten etwas Besonderes, von dem Sierra On-Line nichts wusste und das man dort sicher nicht absichtlich mitliefern wollte.
  • Wenn du in deiner Sierra-Adventure-Spielesammlung eine 720-KB-Diskette hast, bist du nicht allein.
  • Die Versionen 2.0D und 2.0F von Space Quest II waren nicht selten.

Eine einfache Verzeichnisliste

  • Ein Blick auf die Dateiliste der Diskette zeigt nichts Auffälliges.
  • Auch die Liste von Version 2.0D unterscheidet sich nicht von anderen Sierra-Spieldisketten.
  • Die Zeitstempel zeigen, dass die wichtigsten Datendateien des Spiels (PICDIR, LOGDIR, VIEWDIR, SNDDIR, VOL.0, VOL.1) am 14. März 1988 erstellt wurden.
  • Die .OVL-Dateien wurden am 15. März 1988 erstellt, der AGI-Interpreter-Code am 18. März 1988.
  • Auffällig an der Verzeichnisliste ist, dass der „unbenutzte“ Bereich der Diskette größer ist als der genutzte. 302.918 Bytes sind belegt, 402.432 Bytes werden als unbenutzt angezeigt.

Einsatz eines Hex-Editors

  • Um genauer zu sehen, was sich auf der Diskette befindet, braucht man ein Werkzeug namens Hex-Editor.
  • In den 1980ern wurde dafür oft Norton Utilities verwendet; heute ist der von Maël Hörz geschriebene HxD Hex Editor eine hervorragende Alternative.
  • Auf einer frisch formatierten DOS-Diskette sollten unbenutzte Sektoren mit dem Bytewert 0xF6 gefüllt sein.
  • Diskette 2 von Space Quest II Version 2.0D entspricht diesem Fall, aber auf Diskette 1 gibt es keine mit 0xF6 gefüllten Sektoren.
  • Die unbenutzten Sektoren auf Diskette 1 sind mit etwas gefüllt, das wie C-Quellcode aussieht.
  • Das legt stark nahe, dass die Master-Diskette zuvor für etwas anderes verwendet wurde und nach dem Löschen der Dateien nicht korrekt formatiert wurde.

Quellcode des AGI-Interpreters

  • Im Hex-Editor sehen die Daten wie Text aus.
  • Kopiert man den ASCII-Text in einen Texteditor, wirkt er wie C-Quellcode.
  • Es sind zwei Funktionen definiert: DisplayStatusLine und StatusLineOn.
  • Die Funktion DisplayStatusLine scheint eine Textzeile anzuzeigen, die den aktuellen Punktestand und den Status des Tons ausgibt.
  • Dieser Quellcode ist Teil des AGI-Interpreters.
  • Scrollt man im Hex-Editor weiter durch die unbenutzten Sektoren, findet sich eine große Menge Quellcode.
  • Dieser Quellcode ist in zusammenhängenden Sektoren gespeichert und daher leicht zu extrahieren.
  • Insgesamt ist er auf 93 Dateien verteilt: 75 C-Quelldateien, 16 Assembler-Quelldateien und 2 DOS-BAT-Dateien.
  • Insgesamt sind es mehr als 15.000 Zeilen Code, und die meisten Dateien sind vollständig.
  • Diese Space-Quest-2-Spieldiskette enthält rund 70 % des Quellcodes von Sierra On-Lines AGI-Interpreter.

Änderungshistorie der Quelldateien

  • Einige Quelldateien enthalten in den Header-Kommentaren eine Änderungshistorie.
  • So enthält etwa der Header-Kommentar der Quelldatei ANIMATE.C den Dateinamen, eine Funktionsbeschreibung, den Namen des Compilers (MWC) und die Änderungshistorie.
  • Die Programmierer kennzeichneten sich über ihre Initialen.
  • JAS steht für Jeff Stephenson, den Hauptprogrammierer am AGI-Interpreter-Code, DCI für Chris Iden.
  • Auch Robert Heitman wird erwähnt, sein Schwerpunkt lag jedoch vor allem auf Grafikwerkzeugen.

Speicherabbild von AGI.EXE

  • Auf SQ2 2.0D 720KB Diskette 1 befindet sich auch ein Speicherabbild der ausführbaren Datei AGI.EXE.
  • Dieses Speicherabbild liefert eine Liste der Module und Quelldateien, aus denen der AGI-Interpreter besteht.
  • Insgesamt werden 98 Quelldateien erwähnt, von denen 71 vollständig auf der SQ2-Diskette enthalten sind.
  • Das bedeutet, dass etwa 70 % des Quellcodes des AGI-Interpreters auf der SQ2-Diskette enthalten sind.

Sierras geistiges Eigentum

  • 1984 kämpfte Sierra On-Line darum, das Geschäft am Laufen zu halten.
  • Der Erfolg von King’s Quest trug maßgeblich dazu bei, das Schicksal des Unternehmens zu wenden.
  • Das AGI-Adventure-Game-System und die damit entstandenen Spiele waren eine zentrale Einnahmequelle von Sierra On-Line.
  • Der Quellcode des AGI-Interpreters war zentrales geistiges Eigentum von Sierra.
  • Dass 70 % dieses Quellcodes massenhaft kopiert und an Kunden verschickt wurden, war ein großer Fehler.

Wie konnte das passieren?

  • Wenn eine neue Spielversion fertig war, wurde eine „Produktionskopie“-Master-Diskette erstellt, die in einer FormMaster-Diskettenkopiermaschine verwendet wurde.
  • Diese Maschine kopierte jedes einzelne Byte der Diskette.
  • Diskette 1 der Space-Quest-II-Versionen 2.0D und 2.0F wurde unformatiert verwendet.
  • Dadurch enthielten Hunderttausende SQ2-Disketten 70 % des Quellcodes des AGI-Interpreters.

Eine knapp vermiedene Krise

  • Mit sehr hoher Wahrscheinlichkeit war dies ein unbeabsichtigter Fehler.
  • Weder Sierra noch Konkurrenten oder Kunden bemerkten den Vorfall.
  • Er wurde erstmals im Oktober 2016 vom Online-Nutzer NewRisingSun entdeckt.
  • Da dies gegen Ende der AGI-Ära geschah, wurde es wohl nicht zu einem großen Problem.
  • Es ist eine faszinierende Geschichte digitaler Archäologie und ermöglicht einen Einblick darin, wie Sierra On-Line den AGI-Interpreter geschrieben hat.

Für Interessierte wurde der extrahierte Quellcode des AGI-Interpreters in ein GitHub-Repository hochgeladen: https://github.com/lanceewing/agi

Schau dir auch AGILE an, einen webbasierten AGI-Interpreter. Diese Implementierung wurde vom ursprünglichen AGI-Quellcode geleitet.


Meinung von GN⁺

  • Der Wert digitaler Archäologie: Dieser Artikel zeigt die Bedeutung digitaler Archäologie. Alte Software und Daten besitzen historischen und technischen Wert.
  • Lehren aus einem Sicherheitsfehler: Der Vorfall unterstreicht die Bedeutung von Datensicherheit und Datenmanagement. Beim Umgang mit sensiblen Daten sind gründliche Prüfung und korrektes Formatieren unerlässlich.
  • Beleg für technischen Fortschritt: Der Quellcode des AGI-Interpreters zeigt den technischen Fortschritt der Spieleentwicklung in den 1980er Jahren. Das kann heutige Entwickler inspirieren.
  • Die Kraft von Open Source: Durch die Veröffentlichung des ursprünglichen Quellcodes erhalten heutige Entwickler die Möglichkeit, ihn zu studieren und in neuen Projekten zu nutzen.
  • Das Risiko durch Konkurrenten: Wäre dieser Quellcode damals von Wettbewerbern entdeckt worden, hätte Sierras Wettbewerbsvorteil erheblich Schaden nehmen können. Das erinnert daran, wie wichtig der Schutz geistigen Eigentums für Unternehmen ist.

1 Kommentare

 
GN⁺ 2024-05-24
Hacker-News-Meinung

Zusammenfassung der Hacker-News-Kommentare

  • Double Dragon II: The Revenge for DOS (1989)

    • Dieses Spiel wurde auf zwei Disketten vertrieben, und auf einer davon befand sich in einer gelöschten Archivdatei der komplette Quellcode. Mit dem Befehl DIR war er nicht sichtbar, ließ sich aber leicht wiederherstellen.
  • Reverse Engineering von Synthesizer-ROMs

    • Beim jüngsten Reverse Engineering von Synthesizer-ROMs wurden im Yamaha-DX9-ROM Teile der Firmware-Symboltabelle und Codeblöcke des Entwicklungssystems entdeckt. Solche Funde vermitteln ein tiefes Verständnis der damaligen Entwicklungswerkzeuge.
  • Kindheitserinnerungen an Spiele

    • Dieses Spiel war ein wichtiger Teil der Kindheit, und im heutigen Leben ist es schwer, dieselbe Art von „Verbindung“ zu spüren. Space Quest 2, 3 und 4 fühlen sich an wie ein Teil der DNA.
  • Die Geheimnisse der AGI-Engine

    • Es wird angenommen, dass die AGI-Engine keine besonderen Geheimnisse enthielt, von denen Konkurrenten durch ein Leck hätten profitieren können. Sierra-Spiele waren erfolgreich, weil viel Arbeit in Grafik und Storytelling gesteckt wurde.
  • Speicherabbild und Quellcode

    • Mit einem Speicherabbild, Teilen des Quellcodes und Reverse-Engineering-Werkzeugen ließe sich vermutlich das Ganze rekonstruieren.
  • HxD Hex Editor

    • Als modernes, hervorragendes Werkzeug wurde der von Maël Hörz entwickelte HxD Hex Editor genannt. macOS-Nutzer können sich auch Hex Fiend ansehen.
  • Das ROM von Air Fortress

    • Die Famicom-Version von Air Fortress enthielt unbeabsichtigt viele zusätzliche Daten. Die japanische Cartridge hatte 128+128 KB, während die US-NES-Version auf 128+32 KB verkleinert wurde.
  • Artefakte manueller Releases

    • Früher kam es häufig vor, dass manuell veröffentlichte Artefakte noch verbliebene Daten enthielten. Dank modernem CI/CD und automatisierten Build-Systemen passiert das heute seltener.
  • Entdeckung von Quellcode

    • Niemand hatte bemerkt, dass sich Quellcode auf der Diskette befand. Das erinnert an die jüngsten Entdeckungen rund um Tetris und Super Mario Bros. Dank Internet und Emulatoren erhalten alte Spiele neues Leben.
  • Kommentare zur Änderungshistorie

    • Kommentare zur Änderungshistorie zeigen Liebe zum Detail und handwerkliches Können. Das erinnert an den Essay „No Silver Bullet“ und deutet darauf hin, dass Software noch immer Zeile für Zeile von Programmierern geschrieben wird.