Volumes · bei.pm

Publié le 19/11/2015·Mis à jour le 13/02/2025·French
Ce texte a été traduit automatiquement par OpenAI GPT-4o Mini.

Les formats de fichiers décrits sur cette page sont basés sur l'analyse technique de la propriété intellectuelle de Dynamix, Inc. et Sierra Entertainment.
La propriété intellectuelle fait aujourd'hui partie de l'actif de Activision Publishing, Inc. / Activision Blizzard, Inc. et est actuellement détenue par Microsoft Corp..

Les informations ont été collectées par Reverse Engineering et Analyse de données dans le but d'archivage et d'interopérabilité avec des données historiques.
Aucune spécification propriétaire ou confidentielle n’a été utilisée.

Le jeu peut actuellement être acheté en téléchargement sur gog.com.

Les volumes sont des conteneurs de données pour le jeu, similaires à un format d'archive comme par exemple Tarball. Au moins dans Outpost 2, le format ne connaît que des fichiers - pas de dossiers. Il est probablement possible de simuler ces derniers à l'aide de noms de fichiers appropriés.

Un volume se compose de l'en-tête du volume ainsi que de plusieurs blocs de volume, qui correspondent aux fichiers concrets.

Les "volumes" sont les fichiers avec l'extension 'vol' dans le répertoire du jeu.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux

En-tête du volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux

Le Volume Header ne contient aucune donnée utile.
Il sert uniquement de conteneur.

En premier lieu, on devrait trouver les chaînes de volume dans le Volume Header ; ensuite viennent les informations sur le volume.

Chaînes de volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux
0x0008 uint(32) Longueur de la charge utile

Indique le nombre de bytes des données suivantes qui sont réellement des données utiles.

Les données restantes de la liste des chaînes de volume doivent apparemment être considérées comme des déchets.

Dans les fichiers avec une date ultérieure, ces 'données restantes' sont 0x00, ce qui pourrait indiquer des insuffisances avec la chaîne d'outils lors du développement du jeu, c'est-à-dire qu'un développeur ne s'est préoccupé de l'initialisation correcte des tampons que très tard, car cela n'a pas d'impact sur le jeu que les données soient initialisées ou non.

0x000c uint(8)[] Liste des noms de fichiers

Il s'agit d'une liste de noms de fichiers terminée par un caractère nul, qui - du moins dans cet ensemble de données - semble n'attendre que des caractères ASCII.

Il n'est pas nécessaire d'analyser ce bloc de données plus en détail lors du traitement des données, car dans les informations du volume, les offsets des noms de fichiers sont de toute façon référencés directement.

Les chaînes de volume sont une liste de noms de fichiers qui sont contenus dans le volume.

Informations sur le volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux

Les informations sur le volume contiennent des informations plus détaillées sur les fichiers. Il s'agit en quelque sorte d'une sorte d'entrée de répertoire FAT (FAT = File Allocation Table)

Le nombre de fichiers est déterminé par la taille des blocs divisée par la longueur des entrées de répertoire - 14 octets.

Les entrées de répertoire individuelles ont chacune la structure suivante :

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Décalage de nom de fichier

Indique à quel offset (!) dans la liste des noms de fichiers (chaînes de volume) se trouve le nom de fichier du fichier.

Il se réfère au début du bloc de données utiles.

0x0004 uint(32) Décalage de fichier

Indique à quel offset à l'intérieur du fichier volume total se trouve le fichier.

0x0008 uint(32) Taille du fichier

Indique la taille du fichier en octets.

0x000c uint(16) Drapeaux ?

Il semble fournir des informations supplémentaires sur le codage des fichiers.

  • 0x03 est défini lorsque le fichier est compressé. Apparemment, un arbre de Huffman est utilisé ici.
  • 0x80 est apparemment toujours défini.

Bloc de Volume

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Octets magiques
0x0004 uint(24) Longueur de bloc
0x0007 uint(8) Drapeaux

Un bloc de volume est un conteneur qui stocke des fichiers. Il contient simplement - en raison du format de bloc - une redondance de la taille du fichier, suivie directement des données utiles.