Volume · bei.pm

Diterbitkan pada 19/11/2015·Diperbarui pada 13/02/2025·Indonesian
Teks ini telah diterjemahkan secara otomatis oleh OpenAI GPT-4o Mini.

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.

  • 0x03 diatur jika file dikompresi. Di sini tampaknya menggunakan pohon Huffman.
  • 0x80 tampaknya selalu diatur.

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.