.CSO 파일이란?
확장자가 .cso인 파일은 압축된 ISO 이미지 파일입니다. CSO는 DAX 압축 방법의 대안입니다. CISO라고도 합니다. ISO 파일을 압축하는 첫 번째 방법이었고 일반적으로 PlayStation Portable 항목을 보관하는 데 선호되는 방법입니다. 이 형식은 최대 9개의 압축 레이어를 포함할 수 있는 Deflate 압축을 사용합니다. Prometheus 및 YACC와 같은 소프트웨어는 이미지를 만드는 데 사용됩니다.
CSO 파일 형식
CSO 파일 형식은 더 많은 메모리 공간을 절약하기 위한 ISO의 첫 번째 압축 방법이었습니다. 더 나은 압축을 위해 때때로 향상되었습니다. CSO는 9개 레벨의 사전 설정이 있는 Deflate 압축을 사용하고 있으며 일반적으로 각 레벨은 2KiB 블록을 개별적으로 처리할 수 있습니다. 가장 높은 수준의 압축은 디스크 스트리밍에 크게 의존하는 소프트웨어에서 로드 시간이 느리고 길어질 수 있지만 낮은 수준은 상당한 압축을 수행할 수도 있습니다.
CSO 파일 구조
CSO 파일 형식은 24바이트 헤더, 데이터 블록 및 인덱스 테이블을 포함합니다. 리틀 엔디안은 바이트보다 큰 필드에 대해 가정됩니다. PlayStation Portable의 아키텍처 엔디안은 다음과 같습니다.
헤더
오프셋(바이트) | 이름 | 크기(바이트) | 목적 |
---|---|---|---|
0x0 | 매직 | 4 | 32비트 정수로 읽을 때 항상 CISO 또는 0x4F534943입니다. 이 필드는 CSO 파일을 식별하는 데 사용됩니다. 이 필드는 CSO의 다른 파생 상품에 대해 다를 수 있습니다. 예를 들어 ZSO는 매직 코드 ZISO를 사용했습니다. |
0x4 | 헤더 크기 | 4 | 원래 CSO “v1” 파일 형식의 경우 이 필드는 무시되므로 정확하지 않아도 됩니다. 그러나 “v2” 및 ZSO 형식에서는 이 필드가 항상 0x18(24바이트)이어야 합니다. |
0x8 | 압축되지 않은 크기 | 8 | 압축되지 않은 원본 ISO의 크기(바이트)입니다. |
0x10 | 블록 크기 | 4 | 압축 전 각 데이터 블록의 크기(바이트)입니다. 일반적으로 각 ISO 9660 섹터의 크기와 동일한 2048바이트입니다. |
0x14 | 버전 | 1 | 사용 중인 파일 형식의 버전입니다. “v1” 형식의 경우 값은 0 또는 1일 수 있습니다. “v2” 형식의 경우 이 값은 2여야 합니다. 또한 ZSO 형식에서는 1이 되어야 합니다. |
0x15 | 인덱스 정렬 | 1 | 각 인덱스 항목의 정렬로, 비트 단위로 지정됩니다. |
0x16 | 예약됨 | 2 | 이 필드는 사용되지 않습니다. “v1” 형식에서 이 필드는 무시되며 임의의 값을 포함할 수 있습니다. “v2” 형식에서 이 필드는 0이어야 합니다. |
인덱스 테이블
인덱스 테이블에는 각 데이터 블록의 위치를 나타내는 여러 4바이트 항목과 파일의 끝을 가리키는 추가 마지막 항목이 있습니다. 각 항목의 내용은 다음과 같습니다.
비트 | 길이 | 마스크 | 이름 | 목적 |
---|---|---|---|---|
0 | 31 | 0x7FFFFFFF | 위치 | 헤더에 지정된 인덱스 정렬만큼 왼쪽으로 이동하면 이 필드는 데이터 블록이 시작되는 위치를 제공합니다. |
31 | 1 | 0x80000000 | 압축 유형 | ZSO 형식은 비슷한 의미를 가지고 있지만 0은 Deflate 대신 LZ4를 나타냅니다. “v2” 형식으로. 블록 크기가 파일 헤더에 지정된 블록 크기보다 크거나 같은 경우 해당 블록은 암시적으로 압축되지 않은 것으로 간주됩니다. |
데이터 블록
데이터 블록은 압축되지 않은 데이터 또는 압축된 데이터로 구성됩니다. 블록의 크기는 위치를 얻은 다음 다음 블록의 위치에서 빼서 계산합니다. 인덱스 정렬이 0보다 크면 블록 크기가 보유하고 있는 데이터보다 클 수 있습니다.
참고문헌
- N/A