#sega #cmp #format #was #header #created

sega_cmp

使用Sega的CMP格式的数据压缩库

2个不稳定版本

使用旧的Rust 2015

0.2.0 2018年2月17日
0.1.0 2018年2月17日

#685 in 压缩

每月下载量 28

LGPL-3.0

27KB
495

sega_cmp

此Rust crate提供了Sega的CMP 运行长度编码压缩格式的实现。此格式由Sega创建,并用于许多由Sega和第三方开发的Saturn游戏。此库旨在提供100%兼容的压缩器,可用来替换零售Saturn游戏中的数据。

此crate包含由@MrConan1编写的C代码。

贡献

  1. 复制仓库
  2. 创建一个新分支
  3. 提交你的更改
  4. 发起一个拉取请求
  5. 🎉

错误和支持

请在此仓库的问题跟踪器上报告任何问题。我将尽力帮助!


lib.rs:

此crate提供了使用Sega的CMP运行长度编码方案压缩文件的支持,该方案用于Sega Saturn游戏机的游戏。

运行长度编码是一种简单的压缩方法,它通过分析数据中的重复数据序列(或“运行”)来工作;任何重复序列都可以通过重复X次N次的命令来替换。

例如,想象一下文本 AAAAAAAABBBBAABA。如果你用模式描述它,你可以认为它就像 8A4B2A1B1A - 这只需要10个字节而不是16个字节。

Sega将CMP包含在官方Saturn SDK中;他们提供了一个闭源的命令行工具来压缩数据和源代码,以便在游戏内部进行压缩。因此,许多游戏使用它来处理大量重复内容的数据,如文本和图形。此crate的CMP实现旨在与原始解码器100%兼容;它产生的压缩数据与原始编码器相同。其输出已在使用CMP的商用Saturn游戏中进行测试。

此crate提供了两个基本功能:生成头的 create_header 和创建数据的 compress。大多数Saturn游戏将两者存储在同一个地方,头信息紧跟在压缩数据之后。

依赖项

~225KB