Volumi · bei.pm
I formati di file descritti in questa pagina si basano sull'analisi tecnica della proprietà intellettuale di Dynamix, Inc. e Sierra Entertainment.
La proprietà intellettuale è attualmente parte del patrimonio di Activision Publishing, Inc. / Activision Blizzard, Inc. ed è attualmente di proprietà di Microsoft Corp..
Le informazioni sono state raccolte tramite Reverse Engineering e analisi dei dati a scopo di archiviazione e interoperabilità con dati storici.
Non sono state utilizzate specifiche proprietarie o riservate.
Il gioco è attualmente disponibile per l'acquisto come download su gog.com.
I volumi sono dei contenitori di dati per il gioco, simili a un formato di archivio come ad esempio il Tarball. Almeno in Outpost 2, il formato riconosce solo file - nessuna cartella. Probabilmente, tuttavia, queste ultime potrebbero essere simulate attraverso nomi di file appropriati.
Un volume è composto dall'intestazione del volume e da diversi blocchi di volume, che corrispondono ai file concreti.
"I 'volumi'" sono i file con l'estensione 'vol'
nella directory di gioco.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
Intestazione Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
L'intestazione del volume non contiene alcun dato utile.
Essa funge unicamente da contenitore.
Le stringhe del volume dovrebbero trovarsi come prima informazione nell'intestazione del volume; a seguire ci sono le informazioni sul volume.
Stringhe di Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere | |
0x0008 | uint(32) | Lunghezza del payload | Indica quanti byte dei seguenti dati sono effettivamente dati utili. I restanti dati dell'elenco delle stringhe di volume devono essere considerati come garbage. Nei file con una data successiva, questi 'dati rimanenti' sono 0x00, il che potrebbe indicare delle carenze nella toolchain durante lo sviluppo del gioco, ovvero che solo molto tardi un sviluppatore si è occupato della corretta inizializzazione dei buffer, poiché non ha importanza per il gioco se i dati siano inizializzati o meno. |
0x000c | uint(8)[] | Elenco dei nomi dei file | Si tratta di un elenco di nomi di file terminato con 0 byte, che - almeno nel presente componente dei dati - sembra accettare solo caratteri ASCII. Non è necessario analizzare ulteriormente questo blocco di dati durante il parsing, poiché nelle informazioni sul volume vengono comunque referenziati direttamente gli offset dei nomi dei file. |
I Volume Strings sono un elenco di nomi di file che sono contenuti all'interno del volume.
Informazioni sul volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
Le informazioni sul volume contengono dettagli più specifici sui file. Si tratta in un certo senso di una sorta di voce di directory FAT (FAT = File Allocation Table).
Il numero di file si ottiene dividendo la dimensione del blocco per la lunghezza delle voci di directory - 14 byte.
I singoli elementi di directory hanno la seguente struttura:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Offset del nome del file | Indica a quale offset (!) all'interno dell'elenco dei nomi dei file (stringhe di volume) si trova il nome del file. Si riferisce all'inizio del blocco di dati utente. |
0x0004 | uint(32) | Offset del file | Indica a quale offset all'interno dell'intero file di volume si trova il file. |
0x0008 | uint(32) | Dimensione del file | Indica la dimensione del file in byte. |
0x000c | uint(16) | Bandiere? | Fornisce apparentemente informazioni aggiuntive sulla codifica del file.
|
Blocco Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caratteri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipo di dato | Nome | Spiegazione |
---|---|---|---|
0x0000 | uint(32) | Byte Magici | |
0x0004 | uint(24) | Lunghezza del blocco | |
0x0007 | uint(8) | Bandiere |
Un volume-block è un contenitore che ospita file. Contiene soltanto - a causa del formato a blocchi - in modo ridondante la dimensione del file e successivamente seguono direttamente i dati utili.