31.05.2013, 12:34
Container-Datei-Struktur der Spielstandsdateien (.GAM)
Nach meinen bisherigen Beobachtungen stellt es sich so dar: Die Spielstandsdatei teilt sich in drei Abschnitte.
1. Statische Daten: Versionsheader, Spielstand usw.: Größe versionsabhängig (z. B. 6908 Byte bei v1.06, 7116 Byte bei v3.02)
2. Variabele Daten #1: modifizierte Dateikopien aus SCHICK.DAT ((DAT (Städte)/DNG/NPC/usw.)
3. Variabele Daten #2: Charakere (die CHR-Dateien die im Spielverzeichnis beim Spielstart waren)
Wichtig für die Container Struktur:
1. Offsets 16-19 (direkt nach dem Versionsheader): 4 Byte Integer (unsigned) Offset von Abschnitt 3: Variabele Daten #2; Anzahl Charaktere = (Spielstandsdateigröße - Offset-Variable-Daten-#2) / 1754 (CHR-Dateigröße)
2. Die letzten 1144 Byte der statischen Daten sind ein Feld von 286 Variablen je 4 Byte Integer (unsigned) und beschreiben die jeweiligen Dateigrößen von Variable Daten #1. Wobei Dateinamenliste aus SCHICKM.EXE für die SCHICK.DAT als Index fungiert: ist eine der 286 Variablen des Dateigrößenfelds größer 0 dann ist die Datei die and diesem Index in SCHICKM.EXE steht in den Variablen Daten #1 der Spielstandsdatei enthalten. Und zwar in der Reihenfolge aus der SCHICKM.EXE-Dateinamensliste. Das Hinzufügen von Dateien die ich nicht in den gesehen habe (z.B. LTX, NVF) habe ich nicht getestet, auslesen und hinzufügen von Dateien funktioniert soweit ich es mit den mir vorliegenen Savegames testen konnte. Aufgefallen ist mir das in meinen Spielständen ausschließlich die DAT (Städte), NPC, FIGHT.LST, und DNG Dateien im Savegame gespeichert werden.
Nach meinen bisherigen Beobachtungen stellt es sich so dar: Die Spielstandsdatei teilt sich in drei Abschnitte.
1. Statische Daten: Versionsheader, Spielstand usw.: Größe versionsabhängig (z. B. 6908 Byte bei v1.06, 7116 Byte bei v3.02)
2. Variabele Daten #1: modifizierte Dateikopien aus SCHICK.DAT ((DAT (Städte)/DNG/NPC/usw.)
3. Variabele Daten #2: Charakere (die CHR-Dateien die im Spielverzeichnis beim Spielstart waren)
Wichtig für die Container Struktur:
1. Offsets 16-19 (direkt nach dem Versionsheader): 4 Byte Integer (unsigned) Offset von Abschnitt 3: Variabele Daten #2; Anzahl Charaktere = (Spielstandsdateigröße - Offset-Variable-Daten-#2) / 1754 (CHR-Dateigröße)
2. Die letzten 1144 Byte der statischen Daten sind ein Feld von 286 Variablen je 4 Byte Integer (unsigned) und beschreiben die jeweiligen Dateigrößen von Variable Daten #1. Wobei Dateinamenliste aus SCHICKM.EXE für die SCHICK.DAT als Index fungiert: ist eine der 286 Variablen des Dateigrößenfelds größer 0 dann ist die Datei die and diesem Index in SCHICKM.EXE steht in den Variablen Daten #1 der Spielstandsdatei enthalten. Und zwar in der Reihenfolge aus der SCHICKM.EXE-Dateinamensliste. Das Hinzufügen von Dateien die ich nicht in den gesehen habe (z.B. LTX, NVF) habe ich nicht getestet, auslesen und hinzufügen von Dateien funktioniert soweit ich es mit den mir vorliegenen Savegames testen konnte. Aufgefallen ist mir das in meinen Spielständen ausschließlich die DAT (Städte), NPC, FIGHT.LST, und DNG Dateien im Savegame gespeichert werden.