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