Woluminy · bei.pm
Opisywane na tej stronie formaty plików opierają się na analizie technicznej własności intelektualnej Dynamix, Inc. oraz Sierra Entertainment.
Własność intelektualna jest obecnie częścią majątku Activision Publishing, Inc. / Activision Blizzard, Inc. i jest aktualnie w posiadaniu Microsoft Corp..
Informacje zostały zebrane poprzez inżynierię odwrotną oraz analizę danych w celach archiwizacji i interoperacyjności z danymi historycznymi.
Nie wykorzystano żadnych zastrzeżonych ani poufnych specyfikacji.
Gra jest obecnie dostępna do zakupu jako pobranie na stronie gog.com.
Volume to kontener danych dla gry, podobny do formatu archiwum, takiego jak Tarball. Przynajmniej w Outpost 2 format ten zna jedynie pliki - bez folderów. Prawdopodobnie jednak można by je zasymulować za pomocą odpowiednich nazw plików.
Volume składa się z nagłówka Volume oraz z kilku bloków Volume, które odpowiadają konkretnym plikom.
"Volumes" to pliki z rozszerzeniem 'vol'
w katalogu gry.
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi |
Nagłówek objętości
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi |
Nagłówek wolumenu sam w sobie nie zawiera żadnych danych użytkowych.
Jest jedynie kontenerem.
Pierwszymi danymi w nagłówku wolumenu powinny być ciągi wolumenu; następnie pojawiają się informacje o wolumenie.
Łańcuchy objętości
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi |
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi | |
0x0008 | uint(32) | Długość ładunku | Podaje, ile bajtów z poniższych danych to rzeczywiste dane użytkowe. Pozostałe, niewykorzystane dane na liście łańcuchów wolumenów są najwyraźniej traktowane jako śmieci. W plikach z późniejszą datą te 'pozostałe dane' to 0x00, co może sugerować niedociągnięcia w narzędziach podczas rozwoju gry, a mianowicie, że programista zajął się poprawną inicjalizacją buforów dopiero na bardzo późnym etapie, ponieważ nie ma to wpływu na grę, czy dane są zainicjowane, czy nie. |
0x000c | uint(8)[] | Lista nazw plików | Jest to lista nazw plików zakończona znakiem 0-bajtów, która - przynajmniej w bieżącej części danych - oczekuje jedynie znaków ASCII. Nie ma potrzeby, aby przy analizie danych dokładniej oceniać ten blok danych, ponieważ w informacjach o woluminie i tak bezpośrednio odniesione są offsety nazw plików. |
Volume Strings to lista nazw plików, które znajdują się w obrębie woluminu.
Informacje o wolumenie
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi |
Informacje o woluminie zawierają bardziej szczegółowe dane na temat plików. W pewnym sensie jest to rodzaj wpisu w katalogu FAT (FAT = Tablica Przydziału Plików).
Liczba plików wynika z wielkości bloku podzielonej przez długość wpisów katalogowych - 14 bajtów.
Pojedyncze wpisy katalogowe mają następującą strukturę:
Adres | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | znak | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Offset nazwy pliku | Określa, na którym offsetcie (!) w liście nazw plików (Volume-Strings) znajduje się nazwa pliku. Odnoszą się do początku bloku danych użytkownika. |
0x0004 | uint(32) | Offset pliku | Określa, na którym offsetcie w obrębie całego pliku wolumenu znajduje się plik. |
0x0008 | uint(32) | Rozmiar pliku | Określa, jak duży jest plik w bajtach. |
0x000c | uint(16) | Flagi? | Wygląda na to, że zawiera dodatkowe informacje o kodowaniu pliku.
|
Blok objętości
Adres | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Przesunięcie | Typ danych | Nazwa | Wyjaśnienie |
---|---|---|---|
0x0000 | uint(32) | Bajty Magii | |
0x0004 | uint(24) | Długość bloku | |
0x0007 | uint(8) | Flagi |
Blok woluminu to kontener, który przechowuje pliki. Zawiera on jedynie - ze względu na format bloku - redundantnie rozmiar pliku, a następnie bezpośrednio następują dane użytkowe.