Volume · bei.pm

Publicat pe 19.11.2015·Actualizat pe 13.02.2025·Română
Acest text a fost tradus automat prin OpenAI GPT-4o Mini.

Formatele de fișier descrise pe această pagină se bazează pe analiza tehnică a proprietății intelectuale de la Dynamix, Inc. și Sierra Entertainment.
Proprietatea intelectuală este astăzi parte a masei Activision Publishing, Inc. / Activision Blizzard, Inc. și este deținută în prezent de Microsoft Corp..

Informațiile au fost adunate prin Inginerie Inversă și Analiza Datelor în scopul arhivării și interoperabilității cu datele istorice.
Nu au fost folosite specificații proprietare sau confidențiale.

Jocul poate fi achiziționat în prezent de la gog.com ca descărcare.

Volițele sunt un container de date pentru joc, asemănător cu un format de arhivă, cum ar fi Tarball. În cel puțin Outpost 2, formatul cunoaște doar fișiere - fără foldere. Cel mai probabil, acestea ar putea fi simulate prin denumiri corespunzătoare ale fișierelor.

Un volum constă din antetul volumului, precum și din mai multe blocuri de volum, care corespund fișierelor concrete.

"Volumele" sunt fișierele cu extensia 'vol' din directorul jocului.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri

Antet Volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri

Antetul volumului nu conține date utile.
Acesta servește doar ca un container.

Primul element în antetul volumului ar trebui să fie șirurile volumului; urmate apoi de informațiile despre volum.

Șiruri de volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri
0x0008 uint(32) Lungimea payload-ului

Indică câte byte din datele următoare sunt de fapt date utile.

Datele rămase din lista de volume-strings sunt evident de considerat gunoi.

În fișierele cu dată ulterioară, aceste 'date rămase' sunt 0x00, ceea ce ar putea indica neajunsuri ale toolchain-ului în timpul dezvoltării jocului, adică, un dezvoltator s-ar fi ocupat de corecta inițializare a bufferelor abia foarte târziu, deoarece nu are impact asupra jocului dacă datele sunt inițializate sau nu.

0x000c uint(8)[] Lista numelui fișierelor

Aici este vorba despre o listă de nume de fișiere terminată cu 0 bytes, care - cel puțin în componenta de date prezentată - pare să aștepte doar caractere ASCII.

Nu este necesar să evaluăm mai în detaliu acest bloc de date în timpul parsării, deoarece în informațiile volumului sunt referite direct offset-urile numelui fișierelor.

Volume Strings reprezintă o listă de nume de fișiere care sunt incluse în volum.

Informații despre volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri

Informațiile despre volum conțin detalii mai aprofundate despre fișiere. Acestea reprezintă, într-un fel, un fel de înregistrare în director FAT (FAT = File Allocation Table)

Numărul de fișiere rezultă din dimensiunea blocului împărțită la lungimea înregistrărilor din director - 14 octeți.

Fiecare înregistrare din director are următoarea structură:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Offset nume fișier

Indică la ce offset (!) din lista de nume de fișiere (Volume-Strings) se găsește numele fișierului.

Se referă la începutul blocului de date utile.

0x0004 uint(32) Offset de fișier

Indică la ce offset din întreaga fișier de volum se află fișierul.

0x0008 uint(32) Dimensiunea fișierului

Indică cât de mare este fișierul în byte.

0x000c uint(16) Steaguri?

Se pare că oferă informații suplimentare despre codificarea fișierului.

  • 0x03 este setat atunci când fișierul este comprimat. Aici se pare că se folosește un arbore Huffmann.
  • 0x80 pare să fie întotdeauna setat.

Bloc de volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractere
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Offset Tip de date Denumire Explicație
0x0000 uint(32) Bytes Magice
0x0004 uint(24) Lungimea blocului
0x0007 uint(8) Steaguri

Un volum-block este un container care găzduiește fișiere. Acesta conține doar din nou - datorită formatului block - redundant dimensiunea fișierului, iar apoi urmează direct datele utilizatorului.