볼륨 · bei.pm
이 페이지에 설명된 파일 형식은 Dynamix, Inc.와 Sierra Entertainment의 지적 재산에 대한 기술 분석을 기반으로 합니다.
현재 이 지적 재산은 Activision Publishing, Inc.와 Activision Blizzard, Inc.의 자산에 포함되어 있으며, 현재 Microsoft Corp.가 소유하고 있습니다.
정보는 아카이빙 및 역사적 데이터와의 상호 운용성을 위해 리버스 엔지니어링 및 데이터 분석을 통해 수집되었습니다.
특허가 있는 비공식 사양은 사용되지 않았습니다.
현재 게임은 gog.com에서 다운로드로 구매할 수 있습니다.
볼륨은 게임을 위한 데이터 컨테이너로, Tarball과 같은 아카이브 형식과 유사합니다. 최소한 Outpost 2에서는 이 형식이 파일만 포함하고 있으며 - 폴더는 없습니다. 하지만 적절한 파일 이름을 통해 이러한 폴더를 시뮬레이션할 수 있을 것입니다.
볼륨은 볼륨 헤더와 여러 개의 볼륨 블록으로 구성되며, 이 블록은 구체적인 파일에 해당합니다.
"Volumes"는 게임 디렉토리 내에서 '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) | 페이로드 길이 | 다음 데이터 중 실제로 유효한 데이터가 몇 바이트인지 나타냅니다. 볼륨 문자열 목록의 나머지 데이터는 명백히 쓰레기로 간주되어야 합니다. 날짜가 나중인 파일의 경우 이러한 '남은 데이터'는 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) | 파일 이름 오프셋 | 파일 이름 목록(볼륨 문자열) 내에서 파일 이름이 위치하는 오프셋(!)을 나타냅니다. 이는 데이터 블록의 시작을 기준으로 합니다. |
0x0004 | uint(32) | 파일 오프셋 | 전체 볼륨 파일 내에서 파일이 위치한 오프셋을 나타냅니다. |
0x0008 | uint(32) | 파일 크기 | 파일의 크기가 바이트 단위로 얼마나 되는지 표시합니다. |
0x000c | uint(16) | 국기? | 파일 인코딩에 대한 추가 정보가 있는 것으로 보입니다.
|
볼륨 블록
주소 | 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) | 깃발 |
볼륨 블록은 파일을 수용하는 컨테이너입니다. 블록 형식 때문에 파일 크기를 중복해서 포함하고 있으며, 그 다음에는 바로 유용한 데이터가 옵니다.