Volumi · bei.pm

Pubblicato il 19/11/2015·Aggiornato il 13/02/2025·Italiano
Questo testo è stato tradotto automaticamente tramite OpenAI GPT-4o Mini.

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.

  • 0x03 è impostato quando il file è compresso. Qui sembra essere utilizzato un albero di Huffman.
  • 0x80 sembra essere sempre impostato.

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.