Volume · bei.pm
Format file yang dijelaskan di halaman ini didasarkan pada analisis teknis dari kekayaan intelektual oleh Dynamix, Inc. dan Sierra Entertainment.
Kekayaan intelektual ini saat ini merupakan bagian dari massa Activision Publishing, Inc. / Activision Blizzard, Inc. dan saat ini dimiliki oleh Microsoft Corp..
Informasi ini telah dikumpulkan melalui Reverse Engineering dan analisis data untuk tujuan pengarsipan dan interoperabilitas dengan data historis.
Tidak ada spesifikasi yang bersifat kepemilikan atau rahasia yang digunakan.
Game ini saat ini dapat dibeli sebagai unduhan di gog.com.
Volume adalah sebuah wadah data untuk permainan, mirip dengan format arsip seperti Tarball. Setidaknya di Outpost 2, format ini hanya mengenal file - tidak ada folder. Mungkin saja folder tersebut dapat disimulasikan melalui nama file yang sesuai.
Sebuah Volume terdiri dari header Volume serta beberapa blok Volume yang sesuai dengan file-file konkret.
"Volumes" adalah file dengan akhiran 'vol'
di direktori permainan.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Judul Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Header Volume tidak mengandung data berguna apapun.
Ia hanya berfungsi sebagai wadah.
Tanggal pertama dalam Header Volume seharusnya berisi string Volume; diikuti oleh informasi Volume.
String Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera | |
0x0008 | uint(32) | Panjang Payload | Menyatakan berapa banyak byte dari data berikut yang sebenarnya adalah data berguna. Sisa data dalam daftar string volume tampaknya harus dianggap sebagai sampah. Pada file dengan tanggal yang lebih baru, 'data yang tersisa' adalah 0x00, yang dapat menunjukkan ketidakcukupan dengan toolchain selama pengembangan permainan, artinya, seorang pengembang baru memperhatikan inisialisasi buffer dengan benar sangat terlambat, karena tidak ada dampak pada permainan apakah data tersebut diinisialisasi atau tidak. |
0x000c | uint(8)[] | Daftar nama file | Ini adalah daftar nama file yang diakhiri dengan 0-byte, yang - setidaknya dalam bagian data ini - hanya mengharapkan karakter ASCII. Tidak perlu untuk mengevaluasi blok data ini lebih lanjut saat mem-parsing data, karena dalam informasi volume, offset dari nama file sudah dirujuk secara langsung. |
Volume Strings adalah daftar nama file yang terdapat dalam volume tersebut.
Informasi Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Informasi volume mencakup informasi yang lebih rinci tentang file-file. Ini dapat dianggap sebagai semacam entri direktori FAT (FAT = Tabel Alokasi File).
Jumlah file diperoleh dari ukuran blok dibagi dengan panjang entrinya direktori - 14 byte.
Setiap entri direktori memiliki struktur sebagai berikut:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Offset Nama Berkas | Menunjukkan offset (!) di dalam daftar nama file (Volume-Strings) di mana nama file dari file tersebut ditemukan. Ini merujuk pada awal blok data yang digunakan. |
0x0004 | uint(32) | Offset Berkas | Menunjukkan offset di dalam seluruh file volume di mana file tersebut berada. |
0x0008 | uint(32) | Ukuran berkas | Menunjukkan seberapa besar file dalam byte. |
0x000c | uint(16) | Bendera? | Jelas memberikan informasi tambahan tentang pengkodean file.
|
Blok Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tipe Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Sebuah Volume-Block adalah sebuah wadah yang menyimpan file. Ia hanya mengandung sekali lagi - karena format blok - ukuran file secara redundan dan setelah itu langsung diikuti oleh data yang digunakan.