Volum · bei.pm
Filformatene som er beskrevet på denne siden, er basert på teknisk analyse av åndsverk frå Dynamix, Inc. og Sierra Entertainment.
Åndsverka er i dag ein del av Activision Publishing, Inc.- / Activision Blizzard, Inc.-massen og er for tida eid av Microsoft Corp..
Informasjonen er samla inn gjennom Reverse Engineering og dataanalyse med det formål å arkivere og oppnå interoperabilitet med historiske data.
Ingen proprietære eller konfidensielle spesifikasjoner har blitt brukt.
Spelet kan no kjøpast som nedlasting på gog.com.
Volumene er ein datakontainer for spelet, liknande eit arkivformat som til dømes Tarball. I alle fall i Outpost 2 kjenner formatet berre til filer - ingen mapper. Det er truleg mogleg å simulere desse gjennom tilsvarande filnamn.
Eit volum består av volumoverskrifta samt fleire volumblokker som tilsvarar dei konkrete filene.
"Volumer" er filene med ending 'vol'
i spelemappa.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg |
Volumoverskrift
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg |
Volume-headeret inneheld ikkje noko brukardata.
Det fungerar berre som ein container.
Det første elementet i volume-headeret bør vere volume-strengane; deretter følgjer volume-informasjonen.
Volumstrenger
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg | |
0x0008 | uint(32) | Lastelengd | Gjev opp kor mange byte av dei følgjande dataene som faktisk er nyttedata. Dei andre, attverande dataene i volum-strenglista blir tydelegvis å rekne som søppel. I filer med seinare dato er desse 'attverande dataene' 0x00, noko som kan tyde på manglar med verktøykjeda under utviklinga av spelet, med andre ord at ein utviklar fyrst veldig seint har teke seg av korrekt initialisering av buffere, ettersom det ikkje har innverknad på spelet om dataene er initialiserte eller ikkje. |
0x000c | uint(8)[] | Filnamn-liste | Denne teksten handlar om ei 0-byte-terminert liste av filnamn, som - i alle fall i denne datadelen - berre forventar ASCII-teikn. Det er ikkje nødvendig å evaluere denne datablokken meir nøye når ein parser dataene, sidan offsetane til filnamna uansett vert referert direkte i volum-informasjonen. |
Volumetekstane er ei liste over filnamn som er innehalde i volumet.
Voluminformasjon
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg |
Voluminformasjonen inneheld meir detaljerte opplysningar om filene. Dette er på ein måte ein slags FAT-katalogpost (FAT = File Allocation Table).
Antalet filer kjem fram ved å dele blokkerstørrelsen med lengda på katalogpostane - 14 byte.
Dei enkelte katalogpostane har følgjande oppbygging:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Filnamn-offset | Angir på kva offset (!) innanfor filnamnlista (volum-strengar) filnamnet til fila finst. Dette refererer til starten av nyttedata-blokka. |
0x0004 | uint(32) | Filoffset | Angir kva offset innanfor den heile volume-fila som fila ligg. |
0x0008 | uint(32) | Filstorleik | Angir kor stor fila er i byte. |
0x000c | uint(16) | Flagg? | Det ser ut til å vere tilleggsmeldingar om filkodingen.
|
Volumboks
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | teikn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magiske byte | |
0x0004 | uint(24) | Blokk-lengde | |
0x0007 | uint(8) | Flagg |
Eit volumeblock er ein container som tar imot filer. Han inneheld berre ein gong - på grunn av blokkformatet - redudant filstorleiken, og deretter følgjer direkte nytteopplysningane.