- -+-++ SUICIDE HACK ++-+- -
Interner Aufbau der Texte aus dem Diskmag Suicide Issue #1 bis #11
-----------+----+--+-++-+++-++++++++++-+++-++-+--+----+-----------
- -+-++ Mad/OS ++-+- -
Diese Dokumentation ist entstanden, als ich verzweifelt versucht habe, einen
Text aus dem Suicide zu drucken. Kurz gesagt: Das geht nicht! Also setzte ich
mich hin und zerlegte die einzelnen Dateien. Das Ergebnis kann hier in
Textform nachgeschlagen werden.
Die im Suicide Issue #1 enthaltenen Texte sind folgendermaáen codiert:
Offset Lnge Beschreibung
00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah
18 1 Versionsnummer 01h
19 1 Typ der folgenden Daten (normalerweise 00h fr einfachen Text)
20 n Daten
Die ersten 18 Bytes sind bei jeder Datei gleich. Sie dienen lediglich dazu,
eine gltige Datei zu erkennen. Das Zeichen "1A" hat dabei eine besondere
Bedeutung, da es in Textdateien zum Markieren des Dateiendes verwendet wird.
Versucht man z.B. mit dem Befehl TYPE einen Suicide-Text anzuzeigen, so wird
die Ausgabe nach der Signatur abgebrochen. Dies ist durchaus sinnvoll und
beabsichtigt.
Je nach Versionsnummer sind der Text und die darin enthaltenen Bilder anders
codiert. Ich werde jede Version getrennt beschreiben, da sie sich teilweise
sehr stark unterscheiden.
Wenn die Typmarkierung bei Offset 19 den Wert 00h zeigt, so enthlt die Datei
nur einen einfachen Text, der sehr simpel verschlsselt ist. Jedes Byte wird
um 128 erhht oder verkleinert, je nachdem. In Basic lát sich das z.B. mit
der Formel ((Byte+128) mod 256) ausdrcken. Zeilenumbrche sind als ein
einzelnes Byte 13h abgespeichert.
Wenn die Datei ein Bild enthlt, dann gilt ein erweiterter Dateiaufbau:
Offset Lnge Beschreibung
19 1 Typ 01h fr ein nun folgendes Bild
20 2 Lnge der folgenden PCX-Daten in Byte
22 n Ein ganz normales PCX-Bild mit 16 Farben inclusive Header
n n Text
Der Text ist wiederum einfach verschlsselt. Zustzlich enthlt er an einer
beliebigen Stelle vier besondere Bytes mit den Werten 70 81 70 8Ah (oder in
entschlsselter Form AE 01h AE 04h). An dieser Stelle wird spter das Bild
eingefgt.
Manchmal gibt es auch Dateien, die als Typ den Wert 03h oder 09h enthalten.
Vermutlich handelt es sich dabei um eine spezielle Textsorte mit mehreren
integrierten Bildern.
------------------------------------------------------------------------------
Fr das Suicide Issue #9 wurde der Dateiaufbau geringfgig verndert. Auf die
Versionsnummer 02h folgt nun vor dem eigentlichen Text ein Titel, der im
Diskmag an Stelle des Dateinamens angezeigt wird.
Offset Lnge Beschreibung
00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah
18 1 Versionsnummer 02h
19 1 Lnge des Titels (Zahl von Null bis maximal 40)
20 40 Titel (berzhlige Bytes enthalten undefinierte Zeichen)
60 1 Typ der folgenden Daten (normalerweise 00h fr Textdaten)
61 n Daten
Die Typmarkierung bei Offset 60 enthlt normalerweise den Wert 00h. Darauf
folgt eine beliebige Anzahl Text, der erst am Dateiende endet. Der Text selbst
ist sehr einfach verschlsselt. Von jedem ASCII-Wert werden 128 abgezogen bzw.
addiert. So ergibt beispielsweise das Leerzeichen den Wert 160, aus einem A
wird der Wert 193 und aus einem á wird der Wert 97. Zeilenumbrche werden
durch ein einzelnes "Return" markiert, das verschlsselt als Zeichen 141 er-
scheint.
Wenn jedoch beim Offset 60 der Wert 01h erscheint, so folgt vor dem Text ein
normales PCX-Bild mit 16 Farben.
Offset Lnge Beschreibung
60 1 Typ 01h fr ein nun folgendes PCX-Bild
61 2 Lnge der folgenden PCX-Datei in Byte
63 n ein ganz normales PCX-Bild mit 16 Farben
n n Text
Der Text enthlt auáerdem an einer beliebigen Stelle (oft gleich am Anfang)
vier Bytes mit den Werten 70 81 70 8Ah. Diese dienen als Platzhalter fr die
Stelle, an der das Bild eingefgt wird.
Das Suicide Issue #9 enthlt insgesamt sieben Texte mit integrierten Bildern:
ASM95.SUI, DBASE.SUI, GEBABBEL.SUI, OCR.SUI, PANTASIE.SUI, SIMON2.SUI und
TURBKURS.SUI
------------------------------------------------------------------------------
Die Textversion 03h wird ausschlieálich beim Suicide Issue #10 und #11
verwendet. Der Sinn dieser nderung ist mir nicht ganz klar, vermutlich hat es
etwas mit der Decodierungs-Geschwindigkeit zu tun.
Offset Lnge Beschreibung
00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah
18 1 Versionsnummer 03h
19 2 Zwei Nullbytes
21 40 Irgendwelcher Schrott (kann ignoriert werden)
61 1 Ein Nullbyte
62 n Textdaten
Die Textdaten sind hnlich simpel kodiert wie bei der letzten Version. Auch
hier muá zu jedem Byte der Betrag 128 addiert oder subtrahiert werden. Nur die
Zeilenumbrche werden anders gespeichert. Das ASCII-Zeichen 20 (kodiert als
94h) muá in Leerzeichen umgewandelt werden. Nach genau 80 Zeichen sollte ein
Zeilenumbruch erfolgen. Man kann immer gleich 80 Zeichen aus der Datei lesen
und umwandeln. Das letzte Zeichen in einer solchen Zeile ist immer ein Leer-
zeichen - nach der letzten Zeile folgen keine weiteren Daten.
Eine weitere nderung: Smtliche Umlaute sind im ANSI-Format (Windows) gespei-
chert.
Suicide Issue #10 enthlt kein einziges Bild. Das Suicide Issue #11 enthlt
wieder sechs Texte mit Bildern: atomtest.sui, descent2.sui, dinfo2.sui,
hexen.sui, italien.sui und telekom.sui
------------------------------------------------------------------------------
Das Suicide Issue #12 ist die einzige Ausgabe, in der die Textdateien nach
Version 4 codiert sind. Mir ist es bisher nicht gelungen, die eigentliche
Textverschlsselung zu durchschauen. Aber ich arbeite daran. Der Header
besitzt in etwa folgenden Aufbau:
Offset Lnge Beschreibung
00 18 Signatur "SUICIDE TEXT-FILE" sowie das Zeichen 1Ah
18 1 Versionsnummer 04h
19 1 00h
20 1 Beim Text Adressen.Sui steht hier 0Fh, bei allen anderen 00h
------------------------------------------------------------------------------
Die letzte Ausgabe Suicide Issue #13 verwendet wiederum eine anders kodierte
Textverschlsselung mit der Versionsnummer 5. Diese weist vermutlich keine
groáen Unterschiede zur Version 4 auf. Scheinbar wird eine Art Zufallszahlen-
generator verwendet, oder die einzelnen Zeichen werden miteinander verrechnet.
An der Dekodierung arbeite ich noch.
- -+-++ Mad/OS ++-+- -
- -+-++ Dezember 1998 ++-+- -