ボリューム · bei.pm
このページに記載されているファイル形式は、Dynamix, Inc. と Sierra Entertainment の知的財産に関する技術分析に基づいています。
この知的財産は現在、Activision Publishing, Inc. / Activision Blizzard, Inc. に属しており、現在は Microsoft Corp. に所有されています。
情報は、アーカイブと歴史的データとの相互運用性を目的とした リバースエンジニアリング と データ分析 によって収集されました。
独自の機密仕様は使用されていません。
現在、このゲームは gog.com でダウンロード購入できます。
ボリュームは、ゲームのためのデータコンテナで、アーカイブ形式のようなものです。例えば、タールボールのように。 少なくともアウトポスト2では、この形式はファイルだけを扱い、フォルダーはありません。 ただし、適切なファイル名を使うことで、これを模倣することができるでしょう。
ボリュームは、ボリュームヘッダーと、特定のファイルに対応するいくつかのボリュームブロックで構成されています。
「ボリューム」は、ゲームディレクトリ内の'vol'
という拡張子を持つファイルです。
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 |
ボリュームヘッダー
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 |
ボリュームヘッダーには、実際のデータは含まれていません。
これは単なるコンテナとして機能します。
ボリュームヘッダーの最初のデータにはボリューム文字列があり、その後にボリューム情報が続きます。
ボリューム文字列
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 |
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 | |
0x0008 | uint(32) | ペイロードの長さ | 以下のデータのうち、実際にどれだけのバイトが有効データであるかを示します。 ボリューム文字列リストの残りのデータは、明らかにゴミと見なされます。 新しい日付のファイルでは、これらの「残りのデータ」は0x00であり、これはゲームの開発中にツールチェーンに欠陥があったことを示しているかもしれません。つまり、データが初期化されているかどうかはゲームに影響しないため、開発者がバッファの正しい初期化に気を配ったのは非常に遅くなった可能性があります。 |
0x000c | uint(8)[] | ファイル名リスト | これは、ファイル名の0バイト終端リストであり、少なくとも現在のデータ部分ではASCII文字のみが期待されます。 データを解析する際に、このデータブロックをより詳しく評価する必要はありません。なぜなら、ボリューム情報の中でファイル名のオフセットが直接参照されているからです。 |
ボリューム文字列は、ボリューム内に含まれている ファイル名のリストです。
ボリューム情報
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 |
ボリューム情報は、ファイルに関する詳細な情報を含みます。 これは、ある意味でFAT(ファイルアロケーションテーブル)の ディレクトリエントリのようなものです。
ファイルの数は、ブロックサイズをディレクトリエントリの長さ(14バイト)で割ったものになります。
各ディレクトリエントリは、以下の構成を持っています:
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | ファイル名オフセット | ファイル名リスト(ボリューム文字列)のどのオフセット (!) にファイル名があるかを示します。 これはデータブロックの開始を指します。 |
0x0004 | uint(32) | ファイルオフセット | ファイルが全体のボリュームファイル内のどのオフセットに位置しているかを示します。 |
0x0008 | uint(32) | ファイルサイズ | ファイルのサイズがバイトでどれくらいかを示します。 |
0x000c | uint(16) | 旗? | ファイルのエンコーディングに関する追加情報があるようです。
|
ボリュームブロック
アドレス | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 文字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
オフセット | データタイプ | 名称 | 説明 |
---|---|---|---|
0x0000 | uint(32) | マジックバイト | |
0x0004 | uint(24) | ブロックの長さ | |
0x0007 | uint(8) | 旗 |
ボリュームブロックは、ファイルを格納するコンテナです。 ブロック形式のため、ファイルサイズが冗長にもう一度含まれ、 その後に直接利用データが続きます。