Objemy · bei.pm
Formáty souborů popsané na této stránce vycházejí z technické analýzy duševního vlastnictví společnosti Dynamix, Inc. a Sierra Entertainment.
Duševní vlastnictví je dnes součástí majetku Activision Publishing, Inc. / Activision Blizzard, Inc. a v současnosti je ve vlastnictví Microsoft Corp..
Informace byly shromážděny pomocí Reverse Engineering a analýzy dat za účelem archivace a interoperability s historickými daty.
Nebyly použity žádné proprietární nebo důvěrné specifikace.
Hra je v současnosti dostupná ke koupi jako stahování na gog.com.
Volumes jsou datové kontejnery pro hru, podobně jako archivní formát jako např. Tarball. Alespoň v Outpost 2 formát obsahuje pouze soubory - žádné složky. Pravděpodobně by se však daly simulovat pomocí odpovídajících názvů souborů.
Volume se skládá z hlavičky volume a několika bloků volume, které odpovídají konkrétním souborům.
"Volumes" jsou soubory s příponou 'vol'
ve herním adresáři.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky |
Hlava objemu
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky |
Objemový hlavička sama o sobě neobsahuje žádná uživatelská data.
Slouží pouze jako kontejner.
A jako první údaj v objemové hlavičce by měly být objemové řetězce; za nimi následují informace o objemu.
Objemové řetězce
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky | |
0x0008 | uint(32) | Délka payloadu | Uvádí, kolik bytů následujících dat je skutečně užitečných. Zbytek dat v seznamu volume-strings je zřejmě považován za garbage. V souborech s novějším datem jsou tyto 'zbylé data' 0x00, což může naznačovat nedostatky v nástrojovém řetězci během vývoje hry, tedy že se až velmi pozdě začal vývojář zabývat správnou inicializací bufferů, protože na hru nemá vliv, zda jsou data inicializována, nebo ne. |
0x000c | uint(8)[] | Seznam názvů souborů | Toto je seznam názvů souborů terminovaný na 0 bajtů, který - alespoň v rámci tohoto datového komponentu - pouze očekává ASCII znaky. Není třeba při parsování dat tento datový blok podrobněji vyhodnocovat, protože v informacích o svazku jsou stejně přímo odkazovány offsety názvů souborů. |
V případě Volume Strings se jedná o seznam názvů souborů, které jsou obsaženy v daném volume.
Informace o objemu
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky |
Informace o svazku obsahují podrobnější údaje o souborech. V určitých ohledech se jedná o jakýsi typ záznamu v adresáři FAT (FAT = Tabulka alokace souborů).
Počet souborů se vypočítá jako velikost bloku dělená délkou záznamů v adresáři - 14 bajtů.
Každý jednotlivý záznam v adresáři má přitom následující strukturu:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Offset názvu souboru | Uvedeno je, na jakém offsetu (!) v seznamu názvů souborů (Volume-Strings) se nachází název souboru. Odkazuje se přitom na začátek bloku užitečných dat. |
0x0004 | uint(32) | Offset souboru | Uvede, na jakém offsetu v rámci celého souboru objemu se soubor nachází. |
0x0008 | uint(32) | Velikost souboru | Uvede velikost souboru v bytech. |
0x000c | uint(16) | Vlajky? | Zdá se, že poskytuje další informace o kódování souboru.
|
Objemový blok
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znaky | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Typ dat | Označení | Vysvětlení |
---|---|---|---|
0x0000 | uint(32) | Magické bajty | |
0x0004 | uint(24) | Délka bloku | |
0x0007 | uint(8) | Vlajky |
Objemový blok je kontejner, který obsahuje soubory. Znovu, kvůli formátu bloku, obsahuje redundatně velikost souboru a následně přímo následují uživatelská data.