Volumer · bei.pm
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.
|
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.