Volumes · bei.pm

Publicado em 19/11/2015·Atualizado em 13/02/2025·Português
Este texto foi traduzido automaticamente pelo OpenAI GPT-4o Mini.

Os formatos de arquivo descritos nesta página são baseados na análise técnica da propriedade intelectual de Dynamix, Inc. e Sierra Entertainment.
A propriedade intelectual faz parte da massa da Activision Publishing, Inc. / Activision Blizzard, Inc. e atualmente é de propriedade da Microsoft Corp..

As informações foram coletadas através de Engenharia Reversa e Análise de Dados para fins de arquivamento e interoperabilidade com dados históricos.
Nenhuma especificação proprietária ou confidencial foi utilizada.

O jogo pode ser adquirido atualmente como download em gog.com.

Os volumes são um contêiner de dados para o jogo, semelhante a um formato de arquivo como, por exemplo, Tarball. Pelo menos em Outpost 2, o formato reconhece apenas arquivos - sem pastas. Provavelmente, essas poderiam ser simuladas por meio de nomes de arquivos apropriados.

Um volume consiste no cabeçalho do volume e em vários blocos de volume, que correspondem aos arquivos concretos.

"Volumes" são os arquivos com a extensão 'vol' no diretório do jogo.

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras

Cabeçalho de Volume

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras

O cabeçalho do volume não contém dados úteis.
Ele serve apenas como um contêiner.

Como primeira informação no cabeçalho do volume, devem estar as strings do volume; em seguida, vêm as informações do volume.

Strings de Volume

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras
Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras
0x0008 uint(32) Comprimento da carga útil

Indica quantos bytes dos dados a seguir são realmente dados úteis.

Os dados restantes da lista de strings de volume devem ser considerados como lixo.

Em arquivos com data posterior, esses 'dados restantes' são 0x00, o que pode indicar falhas na ferramenta durante o desenvolvimento do jogo, ou seja, pode ser que um desenvolvedor só tenha se preocupado com a correta inicialização dos buffers muito tarde, já que não há impacto no jogo se os dados estão ou não inicializados.

0x000c uint(8)[] Lista de nomes de arquivos

Trata-se de uma lista de nomes de arquivos terminada em 0 bytes, que - pelo menos no componente de dados apresentado - parece esperar apenas caracteres ASCII.

Não é necessário avaliar mais detalhadamente este bloco de dados ao analisar os dados, uma vez que nas informações do volume os offsets dos nomes dos arquivos são referenciados diretamente.

Os Volume Strings são uma lista de nomes de arquivos que estão contidos dentro do volume.

Informações de Volume

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras

As informações de volume contêm detalhes adicionais sobre os arquivos. De certa forma, isso é uma espécie de entrada de diretório FAT (FAT = Tabela de Alocação de Arquivos).

O número de arquivos é determinado pelo tamanho do bloco dividido pelo comprimento das entradas de diretório - 14 bytes.

Cada uma das entradas de diretório tem a seguinte estrutura:

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Deslocamento do Nome do Arquivo

Indica em qual offset (!) dentro da lista de nomes de arquivo (strings de volume) o nome do arquivo é encontrado.

Refere-se ao início do bloco de dados úteis.

0x0004 uint(32) Deslocamento do arquivo

Indica em qual deslocamento dentro do arquivo de volume total a arquivo se encontra.

0x0008 uint(32) Tamanho do arquivo

Indica o tamanho do arquivo em bytes.

0x000c uint(16) Bandeiras?

Parece haver informações adicionais sobre a codificação do arquivo.

  • 0x03 é definido quando o arquivo está comprimido. Aqui aparentemente um árvore de Huffman é utilizada.
  • 0x80 parece estar sempre definido.

Bloco de Volume

Endereço x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Deslocamento Tipo de dado Designação Explicação
0x0000 uint(32) Bytes Mágicos
0x0004 uint(24) Comprimento do bloco
0x0007 uint(8) Bandeiras

Um bloco de volume é um contêiner que armazena arquivos. Ele contém apenas mais uma vez - devido ao formato do bloco - a redundância do tamanho do arquivo e, em seguida, seguem-se diretamente os dados úteis.