ꦮꦺꦴꦭꦸꦤ꧀ · bei.pm
Format file sing diterangake ing kaca iki adhedhasar analisis teknis babagan hak kekayaan intelektual saka Dynamix, Inc. lan Sierra Entertainment.
Hak kekayaan intelektual saiki dadi bagian saka Activision Publishing, Inc.- / Activision Blizzard, Inc.-massa lan saiki diduweni dening Microsoft Corp..
Informasi iki dikumpulake liwat Reverse Engineering lan Datenanalyse kanggo tujuan arsip lan interoperabilitas kanthi data sejarah.
Ora ana spesifikasi sing duwe hak utawa rahasia sing digunakake.
Gim iki saiki bisa dituku minangka unduhan ing gog.com.
Volume iku minangka wadah data kanggo game, padha karo format arsip kaya Tarball. Ing Outpost 2, format iki mung ngerti file - ora ana folder. Mungkin iki bisa disimulasikake liwat jeneng file sing cocog.
Sebuah Volume dumadi saka header Volume lan sawetara blok Volume, sing cocog karo file konkret.
"Volumes" iku file kanthi akhiran 'vol'
ing direktori game.
ꦄꦢꦿ | 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) | ꦗꦺꦴꦗꦶꦪꦶꦏꦶꦁ |
Judhul Volume
ꦄꦢꦿ | 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) | ꦗꦺꦴꦗꦶꦪꦶꦏꦶꦁ |
Header Volume ora ngemot data pangguna apa-apa.
Iku mung minangka wadah.
Dina pisanan ing Header Volume kudu ana Volume Strings; sawise iku banjur bakal ana informasi Volume.
Volume Strings
ꦄꦢꦿ | 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) | ꦥꦼꦭꦺꦴꦭꦣꦺ-ꦭꦺꦁꦒꦺ | Nyatakake pira byte saka data ing ngisor iki sing sejatine minangka data sing migunani. Data liyane sing isih ana ing dhaptar Volume-Strings katon minangka garbage. Ing berkas-berkas kanthi tanggal luwih anyar, 'data sing isih ana' iku 0x00, sing bisa nuduhake kekurangan ing toolchain nalika pangembangan game, tegesé, yen pangembang anyar nggatekake inisialisasi buffer kanthi bener ing pungkasan, amarga ora ana pengaruh marang game manawa data kasebut wis diinisialisasi utawa ora. |
0x000c | uint(8)[] | ꦢꦺꦠꦶꦤꦺꦴꦩꦺꦤ-ꦭꦶꦱꦺ | Iki minangka dhaptar jeneng file sing diakhiri 0-byte, sing - paling ora ing komponen data sing ana - mung ngarepake karakter ASCII. Ora perlu kanggo mriksa blok data iki luwih jero nalika nyaring data, amarga ing informasi volume, offset jeneng file wis dirujuk langsung. |
VOLUME STRINGS iku sawijining dhaftar jeneng file sing kalebu ing sajroning volume kang ana.
Informasi Volume
ꦄꦢꦿ | 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) | ꦗꦺꦴꦗꦶꦪꦶꦏꦶꦁ |
Informasi volume nyakup informasi luwih rinci kanggo file-file. Iki minangka sawijining jinis entri direktori FAT (FAT = File Allocation Table)
Jumlah file ditentokake saka ukuran blok dibagi dhuwure entri direktori - 14 Byte.
Entri direktori siji-sijine duwe susunan kaya ing ngisor iki:
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦢꦺꦠꦶꦤꦼꦩꦤ-ꦲꦺꦴꦠꦺꦤ꧀ | Nyatakaké ing ngendi offset (!) ing sajroning dhaptar jeneng file (Volume-Strings) jeneng file saka file kasebut bisa ditemokake. Iki nuduhake awal blok data sing digunakake. |
0x0004 | uint(32) | ꦢꦺꦠꦶ-ꦲꦺꦴꦤ꧀ | Nunjukna ing offset ngendi ing sakabehe file volume file iki ana file kasebut. |
0x0008 | uint(32) | ꦢꦺꦴꦠꦶ-ꦕꦺꦴꦤꦶ | Nyatakaké, pira gedhéné file ing byte. |
0x000c | uint(16) | ꦗꦶꦪꦶ? | Katingalipun nambah informasi babagan encoding file.
|
Blok Volume
ꦄꦢꦿ | 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) | ꦗꦺꦴꦗꦶꦪꦶꦏꦶꦁ |
Sak sawijining Volume-Block iku sawijining wadah, ing ngendi file-file disimpen. Iku mung ngemot - amarga format block - ukuran file sing redundant lan saiki langsung dilanjutake dening data sing digunakake.