Volymer · bei.pm
De filformat som beskrivs på denna sida är baserade på teknisk analys av immateriella rättigheter från Dynamix, Inc. och Sierra Entertainment.
Det immateriella rättigheterna är idag en del av Activision Publishing, Inc.- / Activision Blizzard, Inc.-massan och ägs för närvarande av Microsoft Corp..
Informationen har sammanställts genom Reverse Engineering och dataanalys för syftet att arkivera och säkerställa interoperabilitet med historiska data.
Inga proprietära eller konfidentiella specifikationer har använts.
Spelet kan för närvarande köpas som nedladdning på gog.com.
Volymer är en databehållare för spelet, liknande ett arkivformat som till exempel Tarball. Åtminstone i Outpost 2 känner formatet endast till filer - inga mappar. Det är troligt att dessa ändå skulle kunna simuleras genom motsvarande filnamn.
Ett volym består av volymhuvudet samt flera volymblock som motsvarar de konkreta filerna.
"Volymer" är filerna med ändelsen 'vol'
i spelmappen.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor |
Volymhuvud
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor |
Volymhuvudet innehåller i sin tur inga användardata.
Det fungerar bara som en behållare.
Det första datumet i volymhuvudet bör vara volymsträngarna; följt av volyminformationen.
Volymsträngar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor | |
0x0008 | uint(32) | Payload-längd | Anger vilken mängd bytes av följande data som faktiskt är nyttolaster. De återstående data i listan över volymsträngar verkar tydligen vara att betrakta som skräp. I filer med senare datum är dessa 'återstående data' 0x00, vilket kan tyda på brister i verktygskedjan under utvecklingen av spelet, det vill säga att en utvecklare först mycket sent har tagit hand om korrekt initialisering av buffrarna, eftersom det inte påverkar spelet om datan är initierad eller inte. |
0x000c | uint(8)[] | Filnamn-lista | Detta är en 0-byte-terminerad lista av filnamn som - åtminstone i den aktuella datakomponenten - endast förväntar sig ASCII-tecken. Det är inte nödvändigt att noggrant utvärdera denna datablok vid parsning av data, eftersom offset för filnamnen ändå refereras direkt i volyminformationen. |
Volume-strängarna är en lista med filnamn som ingår i volymen.
Volyminformation
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor |
Volyminformationerna tar detaljerad information om filerna. Det handlar på ett sätt om en slags FAT-katalogpost (FAT = File Allocation Table).
Antalet filer beräknas genom blockstorleken dividerat med längden på katalogposterna - 14 byte.
De enskilda katalogposterna har följande struktur:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Filnamns-offset | Anger vilket offset (!) inom filnamnslistan (volymsträngar) filnamnet på filen finns. Detta avser början av datablocket. |
0x0004 | uint(32) | Filoffset | Anger att filen befinner sig vid vilken offset inom hela volymfilen. |
0x0008 | uint(32) | Filstorlek | Anger hur stor filen är i byte. |
0x000c | uint(16) | Flaggor? | Tycks ge ytterligare information om filkodningen.
|
Volymblock
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tecken | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Förskjutning | Datatyp | Beteckning | Förklaring |
---|---|---|---|
0x0000 | uint(32) | Magiska byte | |
0x0004 | uint(24) | Blocklängd | |
0x0007 | uint(8) | Flaggor |
En volymblock är en behållare som tar emot filer. Den innehåller ytterligare en gång - på grund av blockformatet - redundant filstorleken och därefter följer direkt användardata.