Volume · bei.pm

Verëffentlecht den 19.11.2015·Aktualiséiert den 13.02.2025·Lëtzebuergesch
Dëse Text gouf automatiséiert duerch OpenAI GPT-4o Mini iwwersat.

déi Dateiformater, déi op dëser Säit beschriwwe sinn, baséieren op der technescher Analyse vum geistegen Eegentum vun Dynamix, Inc. an Sierra Entertainment.
D'geistegt Eegentum ass Haut Deel vun der Activision Publishing, Inc.- / Activision Blizzard, Inc.-Masse an ass zur Zäit am Besëtz vun Microsoft Corp..

D'Informatioune goufen duerch Reverse Engineering an Datenanalyse fir d'Archivéierung an d'Interoperabilitéit mat historesche Date gesammelt.
Et goufen keng proprietär oder vertrauléch Spezifikatiounen benotzt.

D'Spill kann zur Zäit op gog.com als Download kaaft ginn.

Bei den Volumen handelt et sich ëm e Datencontainer fir d'Spill, ähnlech wéi e Archivformat wéi z.B. Tarball. Zumindest an Outpost 2 kann dat Format just Dateien - keng Fieder - erkennen. Wahrscheinlech kéinten dës awer iwwer entspriechend Dateinimmere simuléiert ginn.

E Volume besteet aus dem Volume-Header souwéi aus verschiddene Volume Blokker, déi den konkret Dateien entspriechen.

"Volumes" sinn d'Dateien mat der Endung 'vol' am Spillverzeechnes.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel

Volume Header

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel

De Volume Header enthält selwer keng Nutzdaten.
Hien déngt nëmmen als Container.

Als éischt Datum am Volume Header sollten déi Volume Strings sinn; dorop follegen dann d'Volume-Informatiounen.

Volumensträng

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel
0x0008 uint(32) Payload-Längt

Gëtt un, wéi vill Bytes vun den folgendene Daten tatsächlech Nutzdaten sinn.

déi aner, verbleibend Daten vun der Volume-Strings-Lëscht si schéngen als garbage ze werten.

An Dateien mat méi spéit Datum sinn dës 'verbleibend Daten' 0x00, wat op Mängel mat der Toolchain während der Entwécklung vum Spill hinweisen kéint, an dat heescht, datt sech éischt ganz spéit e Entwéckler ëm déi korrekt Initialiséierung vun den Bufferen gek kümmert huet, well et keen Afloss op d'Spill huet, ob d'Daten initialiséiert sinn oder net.

0x000c uint(8)[] Dateinumm-Lëscht

Hei handelt et sech ëm eng 0-Byte-terminéiert Lëscht vun Dateinammen, déi - op d'mannst am presente Datenbestand - nëmme ASCII-Zeichen erwaart.

Et ass net néideg, beim Parsen vun den Daten dësen Datenblock méi genee auszewäerten, well an den Volume-Informatioune sowieso direkt d'Offsets vun den Dateinammen referenziéiert ginn.

Bei de Volume Strings ass et eng Lëscht vun Dateinimm déi am Volume enthalen sinn.

Volumen Informatiounen

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel

déi Volumen-Informatiounen enthalen méi detailléiert Informatiounen iwwer d'Dateien. Et ass esou eng Aart FAT-Verzeechnesäintrag (FAT = File Allocation Table).

Die Zuel vun den Dateien ergëtt sech aus der Blockgréisst dividéiert duerch d'Längt vun de Verzeechnesäinträgen - 14 Byte.

Die eenzelne Verzeechnesäinträgen hunn all folgend Struktur:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Dateinumm-Offset

Gëtt ugewise, an wéi engem Offset (!) an der Dateinummelëscht (Volume-Strings) den Dateinumm vun der Datei fënnt.

Bezieht sech op de Start vum Nutzdatenblock.

0x0004 uint(32) Datei-Offset

Gëtt un, an wéi engem Offset an der ganzer Volume-Datei d'Datei ass.

0x0008 uint(32) Datei-Gréisst

Gitt un, wéi grouss d'Datei an Byte ass.

0x000c uint(16) Fändel?

Gëtt anscheinend zousätzlech Informatiounen iwwer d'Dateikodéierung u.

  • 0x03 ass gesat, wann d'Datei kompriméiert ass. Hei kënnt anscheinend e Huffmann-Baum zum Asaz.
  • 0x80 ass scheinbar ëmmer gesat.

Volume Block

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Offset Datentyp Bezeechnung Erklärung
0x0000 uint(32) Magie Bytes
0x0004 uint(24) Block-Längt
0x0007 uint(8) Fändel

Eng Volume-Block ass e Container, deen Dateien opnimmt. Hien enthält nëmmen eng kierz - wéinst dem Blockformat - redundant d'Dateigréisst an nom de folgend direkt d'Nutzdaten.