Volumer · bei.pm

Publisert den 19.11.2015·Oppdatert 13.02.2025·Norwegian (Bokmål)
Denne teksten ble automatisert oversatt av OpenAI GPT-4o Mini.

Filformatene beskrevet på denne siden er basert på teknisk analyse av åndsverk fra Dynamix, Inc. og Sierra Entertainment.
Åndsverket er i dag en del av Activision Publishing, Inc. / Activision Blizzard, Inc. og eies for øyeblikket av Microsoft Corp..

Informasjonen er samlet inn gjennom Reverse Engineering og dataanalyse for arkiverings- og interoperabilitetsformål med historiske data.
Ingen proprietære eller konfidensielle spesifikasjoner har blitt brukt.

Spillet kan nå kjøpes som nedlasting på gog.com.

Volumer er en databeholder for spillet, lignende et arkivformat som for eksempel Tarball. I hvert fall i Outpost 2 kjenner formatet kun filer - ingen mapper. Det er sannsynlig at disse imidlertid kan simuleres gjennom passende filnavn.

Ett volum består av volumheaderen samt flere volumblokker som tilsvarer de konkrete filene.

"Volumer" er filene med filendelsen 'vol' i spillkatalogen.

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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg

Volumoverskrift

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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg

Volumenkoppen inneholder ingen nyttedata.
Den fungerer kun som en beholder.

Som den første datoen i volumkappen skal volumstrenger være; deretter følger voluminformasjonen.

Volumstrenger

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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg
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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg
0x0008 uint(32) Payload-lengde

Angir hvor mange bytes av de følgende dataene som faktisk er nyttedata.

De resterende dataene fra volum-strenglisten må åpenbart vurderes som søppel.

I filer med senere dato er disse 'resterende dataene' 0x00, noe som kan tyde på mangler i verktøykjeden under utviklingen av spillet, med andre ord at en utvikler først tok seg av korrekt initialisering av bufferne svært sent, siden det ikke har noen innvirkning på spillet om dataene er initialisert eller ikke.

0x000c uint(8)[] Filnavn-liste

Dette er en 0-byte terminert liste over filnavn som - i hvert fall i den nåværende datakomponenten - kun forventes å inneholde ASCII-tegn.

Det er ikke nødvendig å evaluere denne datablokken nærmere når man parser dataene, da filnavnene uansett blir referert direkte i voluminformasjonen.

Volumetekstene er en liste over filnavn som finnes innenfor volumet.

Voluminformasjon

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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg

Voluminformasjonen inneholder mer detaljerte opplysninger om filene. Dette er på en måte en slags FAT-katalogoppføring (FAT = File Allocation Table).

Antall filer beregnes ved å dele blokkstørrelsen på lengden av katalogoppføringene - 14 byte.

Hver enkelt katalogoppføring har følgende oppbygning:

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

Angir hvilket offset (!) innenfor filnavnlisten (volum-strenger) filnavnet til filen finnes.

Dette refererer til begynnelsen av nyttelasten.

0x0004 uint(32) Fil-offset

Angir hvor i hele volumfilen filen befinner seg.

0x0008 uint(32) Filstørrelse

Angir hvor stor filen er i byte.

0x000c uint(16) Flagger?

Det ser ut til å være ekstra informasjon om filkoding.

  • 0x03 er satt når filen er komprimert. Her ser det ut til å være et Huffman-tre i bruk.
  • 0x80 er tilsynelatende alltid satt.

Volumblokk

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 . . . . . . . . . . . .
Forskyvning Datatype Betegnelse Forklaring
0x0000 uint(32) Magiske byte
0x0004 uint(24) Blokklengde
0x0007 uint(8) Flagg

En volumeblok er en beholder som tar opp filer. Den inneholder bare en gang til - på grunn av blokkformatet - redundant filstørrelsen, og deretter følger bruksdataene direkte.