Volume · bei.pm
Bentuk fail yang diterangkan di halaman ini berdasarkan analisis teknikal harta intelek daripada Dynamix, Inc. dan Sierra Entertainment.
Harta intelek ini kini adalah sebahagian daripada aset Activision Publishing, Inc. / Activision Blizzard, Inc. dan kini dimiliki oleh Microsoft Corp..
Informasi ini telah dikumpulkan melalui Rekayasa Balik dan Analisis Data untuk tujuan pengarsipan dan interoperabiliti dengan data sejarah.
Tiada spesifikasi proprietari atau rahsia yang digunakan.
Permainan ini kini boleh dibeli sebagai muat turun di gog.com.
Volume adalah sebuah kontainer data untuk permainan, mirip dengan format arkib seperti Tarball. Setidaknya dalam Outpost 2, format ini hanya mengenal fail - tiada folder. Mungkin, ini boleh disimulasikan melalui nama fail yang sesuai.
Sebuah volume terdiri daripada header volume serta beberapa blok volume yang sepadan dengan fail-fail tertentu.
"Volumes" adalah fail dengan sambungan 'vol'
dalam direktori permainan.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Header Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Header Volume tidak mengandungi sebarang data berguna.
Ia hanya berfungsi sebagai bekas.
Dalam header Volume, yang pertama sekali seharusnya terdapat string Volume; diikuti dengan maklumat Volume.
Strim Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
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 | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera | |
0x0008 | uint(32) | Panjang Payload | Nyatakan berapa banyak Bytes dari data berikut yang sebenarnya adalah data berguna. Data yang tinggal dari senarai Volume-Strings nampaknya dianggap sebagai sampah. Dalam fail dengan tarikh yang lebih baru, 'data yang tinggal' ini adalah 0x00, yang mungkin menunjukkan kekurangan dalam toolchain semasa pembangunan permainan, maksudnya, seorang pemaju hanya mengambil berat tentang penginisialisasian buffer dengan betul pada peringkat akhir, kerana ia tidak memberi kesan kepada permainan sama ada data telah diinisialisasi atau tidak. |
0x000c | uint(8)[] | Senarai nama fail | Ini adalah senarai nama fail yang ditamatkan 0-byte, yang - sekurang-kurangnya dalam komponen data yang ada - hanya mengharapkan aksara ASCII. Tidak perlu untuk menganalisis blok data ini dengan lebih terperinci semasa memproses data, kerana dalam maklumat Volume, offset nama fail sudah dirujuk secara langsung. |
Volume Strings adalah senarai nama fail yang terdapat dalam volume tersebut.
Maklumat Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Informasi volume mengambil maklumat yang lebih terperinci berkenaan fail. Ini boleh dianggap sebagai sejenis entri direktori FAT (FAT = Jadual Pengagihan Fail)
Jumlah fail diperoleh daripada saiz blok dibahagi dengan panjang entri direktori - 14 bait.
Setiap entri direktori mempunyai struktur berikut:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Offset nama fail | Menunjukkan offset (!) dalam senarai nama fail (Volume-Strings) di mana nama fail bagi fail itu ditemui. Rujukan ini adalah kepada permulaan blok data pengguna. |
0x0004 | uint(32) | Offset fail | Menunjukkan pada offset mana dalam keseluruhan fail volume fail itu berada. |
0x0008 | uint(32) | Saiz Fail | Menunjukkan saiz fail dalam Byte. |
0x000c | uint(16) | Bendera? | Menunjukkan maklumat tambahan mengenai pengekodan fail.
|
Blok Isipadu
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | watak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Jenis Data | Nama | Penjelasan |
---|---|---|---|
0x0000 | uint(32) | Bytes Ajaib | |
0x0004 | uint(24) | Panjang Blok | |
0x0007 | uint(8) | Bendera |
Blok volume adalah sebuah kontena, yang menyimpan fail. Ia hanya mengandungi sekali lagi - berdasarkan format blok - saiz fail secara redundan dan seterusnya diikuti terus oleh data yang digunakan.