Volums · bei.pm
Els formats de fitxer descrits en aquesta pàgina es basen en l'anàlisi tècnica de la propietat intel·lectual de Dynamix, Inc. i Sierra Entertainment.
La propietat intel·lectual forma part actualment de la massa d'Activision Publishing, Inc. / Activision Blizzard, Inc. i actualment és propietat de Microsoft Corp..
La informació s'ha recopilat mitjançant Enginyeria inversa i Anàlisi de dades amb l'objectiu d'arxivar i garantir la interoperabilitat amb dades històriques.
No s'han utilitzat especificacions propietàries ni confidencials.
El joc es pot adquirir actualment a gog.com com a descàrrega.
Els volums són un contenidor de dades per al joc, similar a un format d'arxiu com ara Tarball. Almenys a Outpost 2, el format només reconeix fitxers - no carpetes. Probablement, però, es podrien simular aquestes últimes mitjançant noms de fitxer adequats.
Un volum consta del capçalera del volum així com de diversos blocs de volum que corresponen als fitxers concrets.
"Volums" són els fitxers amb l'extensió 'vol'
a la carpeta del joc.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes |
Capçalera de volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes |
El volum header no conté cap dada útil.
Només serveix com a contenidor.
Com a primera dada al volum header s'han de trobar les cadenes del volum; a continuació hi ha les informacions del volum.
Cadenes de volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes | |
0x0008 | uint(32) | Longitud de la càrrega útil | Indica quants bytes de les dades següents són realment dades útils. Les restants dades de la llista de cadenes de volum sembla que han de ser valorades com a garbage. En fitxers amb data posterior, aquestes 'dades restants' són 0x00, cosa que podria indicar mancances amb la toolchain durant el desenvolupament del joc, és a dir, que un desenvolupador no es va preocupar per la correcta inicialització dels buffers fins molt més tard, ja que no té influència en el joc si les dades estan inicialitzades o no. |
0x000c | uint(8)[] | Llista de noms de fitxers | Això és una llista terminada en 0 bytes de noms de fitxers, que - almenys en la part de dades present - només sembla esperar caràcters ASCII. No és necessari avaluar aquest bloc de dades amb més detall al moment de parsejar les dades, ja que en la informació del volum es referencien directament els offsets dels noms de fitxers. |
Les cadenes de volum són una llista de noms de fitxers que es troben dins del volum.
Informació del volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes |
La informació de volum conté detalls més específics relacionats amb els fitxers. D'alguna manera, és una mena d'entrada de directori FAT (FAT = File Allocation Table).
El nombre de fitxers es calcula dividint la mida del bloc per la longitud de les entrades del directori - 14 bytes.
Les entrades de directori individuals tenen l'estructura següent:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Desplaçament del nom del fitxer | Indica en quina desena (!) dins de la llista de noms de fitxers (cadenes de volum) es troba el nom del fitxer. Es refereix al començament del bloc de dades útils. |
0x0004 | uint(32) | Desplaçament de fitxer | Indica en quin offset dins de tot el fitxer de volum es troba el fitxer. |
0x0008 | uint(32) | Mida del fitxer | Indica quina mida té el fitxer en bytes. |
0x000c | uint(16) | Banderes? | Semblen haver-hi informació addicional sobre la codificació del fitxer.
|
Bloc de volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caràcter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Desplaçament | Tipus de dada | Designació | Explicació |
---|---|---|---|
0x0000 | uint(32) | Bytes màgics | |
0x0004 | uint(24) | Longitud del bloc | |
0x0007 | uint(8) | Banderes |
Un volum de bloc és un contenidor que allotja fitxers. Conté només una vegada més - a causa del format del bloc - la mida del fitxer, i després segueixen directament les dades útils.