Objemy · bei.pm

Publikováno dne 19.11.2015·Aktualizováno dne 13. 02. 2025·čeština
Tento text byl automaticky přeložen pomocí OpenAI GPT-4o Mini.

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.

  • 0x03 je nastaveno, pokud je soubor komprimovaný. Zde se zřejmě používá Huffmanovo stromové kódování.
  • 0x80 je zřejmě vždy nastaveno.

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.