Volumener · bei.pm

Udgivet den 19/11/2015·Opdateret den 13.02.2025·da
Denne tekst blev automatiseret oversat af OpenAI GPT-4o Mini

De filformater, der er beskrevet på denne side, er baseret på den tekniske analyse af intellektuel ejendom fra Dynamix, Inc. og Sierra Entertainment.
Den intellektuelle ejendom er i dag en del af Activision Publishing, Inc. / Activision Blizzard, Inc. og ejes i øjeblikket af Microsoft Corp..

Oplysningerne er indsamlet gennem Reverse Engineering og dataanalyse med henblik på arkivering og interoperabilitet med historiske data.
Der er ikke anvendt nogen proprietære eller fortrolige specifikationer.

Spillet kan i øjeblikket købes som download på gog.com.

Volumener er en databeholder til spillet, svarende til et arkivformat som f.eks. Tarball. I det mindste i Outpost 2 kender formatet kun filer - ingen mapper. Det er sandsynligt, at disse dog kan simuleres gennem passende filnavne.

Et volume består af volume-headeren samt flere volume blokke, der svarer til de konkrete filer.

"Volumes" er filerne med endelsen 'vol' i spilmappen.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger

Volume Overskrift

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger

Volume-headeret indeholder i sig selv ingen nyttedata.
Det fungerer kun som en container.

Som det første element i volume-headeret skal der findes volume-strenge; derefter følger volume-oplysningerne.

Volumen Strenge

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger
0x0008 uint(32) Payload-længde

Angiver hvor mange bytes af de følgende data der faktisk er nyttige data.

De resterende data fra volume-strenglisten skal åbenbart betragtes som affald.

I filer med senere datoer er disse 'resterende data' 0x00, hvilket kan indikere mangler i værktøjskæden under udviklingen af spillet, med andre ord, at en udvikler først meget sent har taget sig af korrekt initialisering af buffere, da det ikke har nogen indflydelse på spillet, om dataene er initialiseret eller ej.

0x000c uint(8)[] Filnavn-liste

Dette er en 0-byte-termineret liste over filnavne, der - i det mindste i denne datakomponent - kun forventer ASCII-tegn.

Det er ikke nødvendigt at analysere denne datablok nærmere, når man parser dataene, da filnavnenes offsets allerede refereres direkte i volumenoplysningerne.

Volume Strings er en liste over filnavne, der er indeholdt i volumenet.

Volumeinformationer

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger

Volume-oplysningerne indeholder mere detaljerede oplysninger om filerne. Det drejer sig på en måde om en slags FAT-katalogpost (FAT = File Allocation Table)

Antallet af filer beregnes ved at dividere blokstørrelsen med længden af katalogposterne - 14 byte.

De enkelte katalogposter har følgende opbygning:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Filnavn-offset

Angiver, ved hvilken offset (!) inden for filnavnslisten (volume-strenge), filnavnet på filen findes.

Dette henviser til begyndelsen af datablokken.

0x0004 uint(32) Fil-offset

Angiver, hvilken offset inden for hele volume-filen filen befinder sig.

0x0008 uint(32) Filstørrelse

Angiver, hvor stor filen er i byte.

0x000c uint(16) Flagger?

Angiver åbenbart yderligere oplysninger om filkodningen.

  • 0x03 er sat, når filen er komprimeret. Her ser det ud til, at der anvendes et Huffman-træ.
  • 0x80 er tilsyneladende altid sat.

Volume Blok

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF tegn
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Offset Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske bytes
0x0004 uint(24) Bloklængde
0x0007 uint(8) Flagger

En volume-block er en beholder, der indeholder filer. Den indeholder blot endnu en gang - på grund af blokformatet - redundant filstørrelsen, og derefter følger direkte brugerdataene.