Какво е CSO файл?
Файл с разширение .cso е компресиран ISO файл с изображение. CSO е алтернатива на метода за компресиране на DAX; известен също като CISO; беше първият метод за компресиране на ISO файлове и обикновено е предпочитан метод за архивиране на PlayStation Portable неща. Този формат използва компресия Deflate, която може да включва до девет слоя за компресия. За създаване на изображения се използва софтуер като Prometheus и YACC.
CSO файлов формат
Файловият формат CSO беше първият метод за компресиране за ISO за спестяване на повече място в паметта. Подобренията се правят от време на време за по-добро компресиране. CSO използва компресиране на Deflate с девет нива на предварително зададени настройки, обикновено всяко ниво може да обработва 2 KiB блока поотделно. Въпреки че най-високите нива на компресия могат да забавят и удължат времето за зареждане в софтуера, който зависи силно от поточното предаване на диска, също така по-ниските нива могат да извършат значително компресиране.
CSO файлова структура
CSO файловият формат съдържа 24-байтово заглавие, блокове с данни и индексна таблица. Little-endian се приема за полета, по-големи от байт. Архитектурата endian на PlayStation Portable е дадена по-долу.
Заглавие
Отместване (байтове) | Име | Размер (байтове) | Цел |
---|---|---|---|
0x0 | магия | 4 | Винаги CISO или 0x4F534943, когато се чете като 32-битово цяло число. Това поле се използва за идентифициране на CSO файл. Обърнете внимание, че това поле може да е различно за другите производни на CSO, например ZSO използва магическия код ZISO. |
0x4 | Размер на заглавката | 4 | За оригиналния файлов формат CSO “v1” това поле се игнорира и следователно не се изисква да бъде точно. Форматът “v2” и ZSO обаче изискват това поле винаги да е 0x18 (24 байта). |
0x8 | Некомпресиран размер | 8 | Размерът на оригиналния некомпресиран ISO в байтове. |
0x10 | Размер на блок | 4 | Размерът на всеки блок данни в байтове преди компресиране. Обикновено 2048 байта, същият като размера на всеки ISO 9660 сектор. |
0x14 | Версия | 1 | Версията на използвания файлов формат. За формат “v1” стойността може да бъде 0 или 1. За формат “v2” това трябва да е 2. Освен това форматът ZSO изисква това да бъде 1. |
0x15 | Подравняване на индекс | 1 | Подравняването на всеки запис в индекса, определено в битове. |
0x16 | Запазено | 2 | Това поле е неизползвано. Във формат “v1” това поле се игнорира и може да съдържа произволни стойности. Във формат “v2” това поле трябва да е нула. |
Индексна таблица
Индексната таблица съдържа няколко 4-байтови записа, които показват позицията на всеки блок от данни и допълнителен последен запис, който сочи към края на файла. Съдържанието на всеки запис е както следва:
Бит | Дължина | Маска | Име | Цел |
---|---|---|---|---|
0 | 31 | 0x7FFFFFFF | Позиция | Това поле, когато се измести наляво от подравняването на индекса, дадено в заглавката, показва позицията, където започва блокът с данни. |
31 | 1 | 0x80000000 | Тип компресия | Форматът ZSO има подобна семантика, само че 0 представлява LZ4 вместо Deflate. Във формат “v2”. Блокът имплицитно се счита за некомпресиран, ако размерът на блока е равен или по-голям от размера на блока, посочен в заглавката на файла. |
Блокове данни
Блоковете данни се състоят от некомпресирани или компресирани данни. Размерът на блок се изчислява, като се получи неговата позиция и след това се извади от позицията на следващия блок. Ако подравняването на индекса е по-голямо от нула, вероятно размерът на блока е по-голям от данните, които съдържа.
Препратки
- N/A