Томікі · bei.pm

Апублікавана 19.11.2015·Аднавіна на 13.02.2025·Беларуская мова
Гэты тэкст быў аўтаматычна перакладзены з дапамогай OpenAI GPT-4o Mini.

Файлы фармата, апісаныя на гэтай старонцы, заснаваны на тэхнічным аналізе інтэлектуальнай уласнасці Dynamix, Inc. і Sierra Entertainment.
Інтэлектуальная ўласнасць сёння з'яўляецца часткай актываў Activision Publishing, Inc. / Activision Blizzard, Inc. і ў дадзены момант належыць Microsoft Corp..

Інфармацыя была сабрана праз Reverse Engineering і даныя аналізу з мэтай архівацыі і ўзаемадзеяння з гістарычнымі данымі.
Не былі выкарыстаны ніякія ўласніцкія або канфідэнцыйныя спецыфікацыі.

Гульню можна набыць у якасці загрузкі на 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) Даўжыня payload

Указвае, колькі байтаў з наступных даных сапраўды з'яўляюцца карыснымі данымі.

Застаўшыяся дані ў спісе томаў-строкаў, відавочна, варта лічыць смецем.

У файлах з больш познімі датамі гэтыя 'застаўшыяся дані' 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 = табліца размеркавання файлаў).

Колькасць файлаў вылічваецца шляхам дзялення памеру блока на даўжыню запісаў каталога - 14 байт.

Кожны асобны запіс каталога мае наступную структуру:

Адр x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF симвалы
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Зсув Тып даных Назва Тлумачэнне
0x0000 uint(32) Імя файла - зрух

Указвае, на якім зрушэнні (!) у спісе імёнаў файлаў (Volume-Strings) знаходзіцца імя файла.

Гаворыць пра пачатак блока карысных даных.

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) Сцягі

Аб'ёмны блок — гэта кантэйнер, які змяшчае файлы. Ён утрымлівае толькі яшчэ раз — з-за фармату блока — рэдуndантна памер файла, а затым адразу ідуць карысныя даныя.