Volumeni · bei.pm
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.
|
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.