볼륨 · bei.pm

게시일: 2015년 11월 19일·업데이트 날짜: 2025년 02월 13일·한국어
이 텍스트는 OpenAI GPT-4o Mini에 의해 자동으로 번역되었습니다.

이 페이지에 설명된 파일 형식은 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) 국기?

파일 인코딩에 대한 추가 정보가 있는 것으로 보입니다.

  • 0x03은 파일이 압축된 경우 설정됩니다. 여기서 허프만 트리가 사용되는 것으로 보입니다.
  • 0x80은 항상 설정된 것으로 보입니다.

볼륨 블록

주소 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) 깃발

볼륨 블록은 파일을 수용하는 컨테이너입니다. 블록 형식 때문에 파일 크기를 중복해서 포함하고 있으며, 그 다음에는 바로 유용한 데이터가 옵니다.