Volumeni · bei.pm

Objavljeno 19.11.2015.·Ažurirano 13.02.2025.·Kroatski
Ovaj tekst je automatski preveden pomoću OpenAI GPT-4o Mini.

Format datoteka opisani na ovoj stranici temelje se na tehničkoj analizi intelektualnog vlasništva Dynamix, Inc. i Sierra Entertainment.
Intelektualno vlasništvo danas je dio Activision Publishing, Inc. / Activision Blizzard, Inc. grupe i trenutno je u vlasništvu Microsoft Corp..

Informacije su prikupljene putem obrnute inženjering i analize podataka u svrhu arhiviranja i interoperabilnosti s povijesnim podacima.
Nisu korištene nikakve vlasničke ili povjerljive specifikacije.

Igra se trenutno može kupiti kao preuzimanje na gog.com.

Volumeni su kontejneri podataka za igru, slični arhivskom formatu kao što je Tarball. Bar u Outpost 2, format poznaje samo datoteke - nema mapa. Vjerojatno bi se mape mogle simulirati odgovarajućim imenima datoteka.

Volume se sastoji od Volume zaglavlja kao i od nekoliko Volume blokova koji odgovaraju konkretnim datotekama.

"Volumes" su datoteke s ekstenzijom 'vol' u direktoriju igre.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave

Naslov volumena

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave

Volumenski zaglavlje ne sadrži nikakve korisničke podatke.
Slijži samo kao kontejner.

Prvi podaci u volumenskom zaglavlju trebali bi biti volumenski stringovi; nakon toga slijede informacije o volumenu.

Volumenski nizovi

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave
0x0008 uint(32) Duljina payloada

Navodi koliko bajtova sljedećih podataka zapravo predstavlja korisne podatke.

Preostali podaci u listi volumenskih nizova očito se smatraju garbage.

U datotekama s novijim datumom ti 'preostali podaci' su 0x00, što bi moglo ukazivati na nedostatke u alatu tijekom razvoja igre, odnosno da se programer posvetio ispravnoj inicijalizaciji bafera tek vrlo kasno, jer to ne utječe na igru, jesu li podaci inicijalizirani ili ne.

0x000c uint(8)[] Popis imena datoteka

Ovo je lista imena datoteka terminirana s 0 bajtova, koja - barem u ovom dijelu podataka - očekuje samo ASCII znakove.

Nije potrebno detaljnije analizirati ovaj blok podataka prilikom parsiranja, jer se u informacijama o volumenu izravno referenciraju ofseti imena datoteka.

Volume Strings predstavljaju popis imena datoteka koje se nalaze unutar volumena.

Informacije o volumenu

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave

Informacije o volumenu sadrže detaljnije informacije o datotekama. To je na određeni način vrsta FAT unosa u direktorij (FAT = File Allocation Table)

Broj datoteka dobiva se dijeljenjem veličine bloka sa duljinom unosa u direktorij - 14 bajtova.

pojedinačni unosi u direktoriju imaju sljedeću strukturu:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Offset naziva datoteke

Navodi na kojem offsetu (!) unutar popisa imena datoteka (Volume-Strings) se nalazi ime datoteke.

Odnosi se na početak bloka korisničkih podataka.

0x0004 uint(32) Offset datoteke

Navodi na kojem se offsetu unutar cijele volume datoteke nalazi datoteka.

0x0008 uint(32) Veličina datoteke

Navodi veličinu datoteke u bajtovima.

0x000c uint(16) Zastave?

Očitava dodatne informacije o kodiranju datoteka.

  • 0x03 je postavljen kada je datoteka komprimirana. Ovdje se očigledno koristi Huffmanovo stablo.
  • 0x80 se očigledno uvijek postavlja.

Volumenski blok

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF znak
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Pomak Tip podataka Naziv Objašnjenje
0x0000 uint(32) Magični bajtovi
0x0004 uint(24) Duljina bloka
0x0007 uint(8) Zastave

Volume blok je kontejner koji sadrži datoteke. U njemu se redundantno, zbog formata bloka, ponavlja veličina datoteke, a zatim odmah slijede korisni podaci.