什么是一 .cso 文件?
扩展名为 .cso 的文件是压缩的 ISO 映像文件。 CSO 是 DAX 压缩方法的替代方案;也称为 CISO;是压缩 ISO 文件的第一种方法,通常是存档 PlayStation Portable 内容的首选方法。此格式使用 Deflate 压缩,最多可包含九个压缩层。 Prometheus 和 YACC 等软件用于创建图像。
CSO 文件格式
CSO 文件格式是 ISO 用于节省更多内存空间的第一种压缩方法。不时进行增强以更好地压缩。 CSO 使用 Deflate 压缩,具有九个预设级别,通常每个级别可以单独处理 2 KiB 块。虽然最高级别的压缩会在严重依赖光盘流的软件中减慢和延长加载时间,但较低级别的压缩也可以执行大量压缩。
CSO 文件结构
CSO 文件格式包含一个 24 字节的标题、数据块和一个索引表。对于大于一个字节的字段,假定为小端。 PlayStation Portable 的架构字节序如下所示。
标题
偏移量(字节) | 姓名 | 大小(字节) | 目的 |
---|---|---|---|
0x0 | 魔术 | 4 | 始终为 CISO,或读取为 32 位整数时为 0x4F534943。此字段用于标识 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