Schatten über Riva - shihan42/BrightEyesWiki GitHub Wiki
Bei Schatten über Riva werden die meisten Spieldaten innerhalb der ALF-Archive gespeichert.
Anmerkung: Die folgenden Daten sind noch etwas ungewiss, da es uns noch nicht gelungen ist, ein Riva-Archiv so zu packen, dass das Spiel dieses fehlerfrei nutzen kann. -- Hendrik
In den Riva-Archiven sind die Dateien jeweils Modulen zugeordnet. In der Regel gehört eine Datei in ein bestimmtes Modul, es ist jedoch auch möglich, eine Datei mehreren Modulen zuzuordnen. Im Archiv müssen die Module in einer bestimmten Reihenfolge (nämlich der gleichen wie in der .MOD-Datei, siehe dort) stehen, und innerhalb dieser die Dateien, ebenfalls in fester Reihenfolge. Auf die Module wird über ihren Namen im Archiv zugegriffen. Der Zugriff auf die Dateien erfolgt über deren Index im Archiv und nicht über den Dateinamen.
Offset | Bedeutung |
---|---|
0-3 | Signatur "ALF "=0x414C4620 |
4-7 | ?Version des Archivs (0x00000100) |
8-9 | Länge der Dateitabelle in Einträgen |
10-13 | Offset Beginn der Dateitabelle |
14-15 | Tatsächliche Anzahl der Dateien in der Tabelle |
16-19 | Offset Beginn der Daten (entspricht Header-Länge) |
20-21 | Länge der Modultabelle in Einträgen |
22-25 | Offset Beginn der Modultabelle |
26-27 | Tatsächliche Anzahl der Moduln in der Tabelle |
28-31 | Offset der Datei-Modul-Zuordnungstabelle |
32-47 | Leer (16-mal 0x00) |
Nach dem Header folgen in den Originalarchiven gleich die Daten. Die referenzierten Tabellen befinden sich ganz am Ende, beginnend mit der Dateitabelle, gefolgt von der Modul- und schließlich der Zuordnungstabelle. Theoretisch könnten die Tabellen auch direkt nach dem Header stehen, ob Riva damit allerdings zurechtkommt, steht noch aus.
Offset | Zweck |
---|---|
0-12 | Dateiname, 0-Terminiert |
13 | Unklar. (1) |
14-17 | Dateilänge |
18-21 | Unklar, vielleicht das Datum? (2) |
22-23 | Unklar. (3) |
24-27 | Offset in Little-Endian, -30 Bytes Header |
- Hat verschiedene Werte: 0x00, 0xb4 in riva.alf, 0x30 in dungeon.alf
- Möglicherweise handelt es sich dabei um ein Datum, z.B. Sekunden seit dem 01.01.1980.
- Hier weiß ich noch gar nicht, worum es sich handeln könnte. Bis jetzt nur 0-Bytes gefunden.
Die Module müssen in der richtigen Reihenfolge stehen, d.h. die Offsets müssen (streng!) monoton steigen. Der Aufbau eines Eintrages entspricht weitestgehend dem der Dateitabelle.
Offset | Zweck |
---|---|
0-13? | Name, 0-Terminiert (1) |
14-17 | Anzahl der enthaltenen Dateien (Modulgröße) |
18-21 | Unklar. Datum? (2) |
22-23 | Unklar. |
24-27 | Startnummer in der Zuordnungstabelle (3) |
- Offset 10-13 ist in DUNGEON.ALF stets 0x51007941. Der String geht nur bis Offset 9, incl. 0-Terminator. In der RIVA.ALF geht er bis Offset 12, wie auch in der Dateitabelle.
- siehe in den Dateitabelleneinträgen an gleicher Stelle.
- In 2-Byte-Schritten. Nach Addition des Zuordungstabellen-Offsets kann der Wert direkt als Offset in der Zuordnungstabelle genutzt werden (deren Einträge ja ebenfalls zwei Bytes lang sind).
Die Zuordnungstabelle enthält für jede Datei innerhalb eines Moduls einen 2-Byte-Eintrag. Dieser enthält einen Index in die Dateitabelle. Die Modultabelle ist so lang wie die Summe aller Modulgrößen, multipliziert mit 2. Innerhalb der Tabelle kommen manchmal Dummy-Einträge vor, die auf den (ungültigen) Index 0xFFFF zeigen.
Zu jeder .ALF-Datei gehört eine gleichnamige .MOD-Datei (d.h. zu X.ALF gehört auch X.MOD). Diese Datei enthält eine Liste aller Module, die in dem Archiv gespeichert sind. Unterscheiden sich die Reihenfolgen der Modulnamen in RIVAHELP.MOD und RIVAHELP.ALF, bricht RIVAHELP.EXE mit einer Fehlermeldung ab. Für RIVA.EXE und das Archiv RIVA.ALF/.MOD gilt dies nicht. Die Modulnamen sind unempfindlich gegenüber Groß- und Kleinschreibung und werden einfach hintereinander in die Datei geschrieben, jeweils getrennt durch einen DOS-Zeilenumbruch (CRLF, 0x0D0A). Nach dem letzten Modul muss ebenfalls noch einmal ein CRLF folgen.
Zu prüfen wäre noch, ob ein Modul in einer bestimmten Datei liegen muss, und ob (falls die Datei egal ist) ein Modul auf mehrere Dateien verteilt werden kann.
Die folgenden ALF-Archive werden von Schatten über Riva verwendet:
Datei | Inhalt |
---|---|
RIVA.ALF | Hauptarchiv für Spieldaten |
DUNGEON.ALF | 3D-Umgebungen |
RIVAHELP.ALF | Ingame-Handbuch |
RIVAHINT.ALF | Ingame-Lösungshinweise |
SEQS.ALF | Allgemeine Videos (z.B. die Ladesequenz, der Rattenfänger, etc.) im SMK-Format |
SPEX.ALF | Sprachausgabe-Sequenzen (z.B. im Traviatempel am Anfang) im SMK-Format |
RAW1.ALF - RAW16.ALF | vermutlich RAW-Sounds |