Томове · bei.pm
Форматите на файловете, описани на тази страница, се основават на техническия анализ на интелектуалната собственост на 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) | Знамена? | Изглежда, че предоставя допълнителна информация за кодировката на файла.
|
Обемна блок
Адрес | 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) | Флагове |
Обемният блок е контейнер, който съдържа файлове. Той включва само отново - поради формата на блока - редундантно размера на файла и след това директно следват полезните данни.