Volume · bei.pm

Diterbitkan pada 19/11/2015·Dikemas kini pada 13/02/2025·Malaiisch
Teks ini telah diterjemahkan secara automatik melalui OpenAI GPT-4o Mini.

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.

  • 0x03 ditetapkan jika fail itu dimampatkan. Nampaknya di sini menggunakan pokok Huffman.
  • 0x80 nampaknya sentiasa ditetapkan.

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.