Volums · bei.pm

Publicat el 19/11/2015·Actualitzat el 13/02/2025·Català
Aquest text ha estat traduït de manera automatitzada per OpenAI GPT-4o Mini.

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.

  • 0x03 està establert si el fitxer està comprimit. Aquí sembla que s'utilitza un arbre de Huffman.
  • 0x80 sembla estar sempre establert.

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.