Томове · bei.pm

Публикувано на 19.11.2015·Актуализирано на 13.02.2025·Български
Текстът е автоматично преведен чрез OpenAI GPT-4o Mini.

Форматите на файловете, описани на тази страница, се основават на техническия анализ на интелектуалната собственост на Dynamix, Inc. и Sierra Entertainment.
Интелектуалната собственост днес е част от масата на Activision Publishing, Inc. / Activision Blizzard, Inc. и в момента е собственост на Microsoft Corp..

Информацията е събрана чрез обратен инженеринг и анализ на данни с цел архивиране и интероперативност с исторически данни.
Не са използвани собствени или конфиденциални спецификации.

Играта може в момента да бъде закупена за изтегляне на gog.com.

Обемите представляват контейнер за данни за играта, подобен на архивен формат като например Tarball. Поне в Outpost 2 форматът познава само файлове - без папки. Възможно е обаче те да бъдат симулирани чрез съответни имена на файлове.

Едно обемче се състои от заглавката на обема, както и от няколко обемни блока, които съответстват на конкретни файлове.

"Обемите" са файловете с разширение 'vol' в директорията на играта.

Адрес 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) Флагове

Обем Заглавие

Адрес 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) Флагове

Обемният хедър от своя страна не съдържа никакви данни за употреба.
Той служи единствено като контейнер.

Като първи данни в обемния хедър трябва да се намират обемните низове; след това следват информацията за обема.

Обемни низове

Адрес 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) Дължина на полезния товар

Посочва колко байта от следните данни всъщност са полезни данни.

Останалите данни от списъка с обемни низове очевидно трябва да се считат за мусор.

В файлове с по-късна дата тези 'оставащи данни' са 0x00, което може да показва недостатъци в инструменталната верига по време на разработката на играта, т.е. че разработчикът се е заел с правилната инициализация на буферите едва много късно, тъй като няма значение за играта дали данните са инициализирани или не.

0x000c uint(8)[] Списък с имена на файлове

Това е списък с имена на файлове, завършващ с 0 байтово терминатор, който - поне в предоставения набор от данни - предполага само ASCII символи.

Не е необходимо при парсването на данните да се анализира този данен блок по-подробно, тъй като в информацията за тома директно се реферира към офсетите на имената на файловете.

Обемните низове представляват списък с имена на файлове, които са включени в обема.

Информация за обема

Адрес 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) Флагове

Информацията за обема съдържа по-подробни данни за файловете. По някакъв начин това представлява вид запис в директорията на FAT (FAT = File Allocation Table)

Броят на файловете се определя от размера на блока, разделен на дължината на записите в директорията - 14 байта.

Отделните записи в директорията имат следната структура:

Адрес x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF символи
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Офсет Тип данни Надпис Обяснение
0x0000 uint(32) Име на файл - офсет

Посочва на кой офсет (!) в списъка с имена на файлове (обемни низове) се намира името на файла.

Отнася се до началото на блока с полезни данни.

0x0004 uint(32) Файлово отместване

Посочва на какъв офсет в цялостния файл на тома се намира файлът.

0x0008 uint(32) Размер на файла

Указва колко голям е файлът в байтове.

0x000c uint(16) Знамена?

Изглежда, че предоставя допълнителна информация за кодировката на файла.

  • 0x03 е зададен, когато файлът е компресиран. Изглежда, че тук се използва дърво на Хъфман.
  • 0x80 очевидно винаги е зададен.

Обемна блок

Адрес 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) Флагове

Обемният блок е контейнер, който съдържа файлове. Той включва само отново - поради формата на блока - редундантно размера на файла и след това директно следват полезните данни.