14 个重大发布
| 0.19.0 | 2024 年 7 月 23 日 |
|---|---|
| 0.18.0 | 2024 年 2 月 26 日 |
| 0.17.0 | 2023 年 5 月 8 日 |
| 0.16.0 | 2023 年 3 月 8 日 |
| 0.10.1 | 2021 年 7 月 24 日 |
#44 in 游戏
每月 126 次下载
在 ssbh_data 中使用
205KB
4K SLoC
ssbh_lib

ssbh_lib 是一个用于读取和写入 SSBH 二进制文件的 Rust 库。每个 SSBH 格式都有一个主版本号和次版本号。所有由 Smash Ultimate 使用的版本都得到支持。
| 格式 | 支持的版本(主.次) |
|---|---|
Hlpb (.nuhlpb) |
1.1 |
Matl (.numatb) |
1.5, 1.6 |
Modl (.numdlb,.nusrcmdlb) |
1.7 |
Mesh (.numshb) |
1.8, 1.9, 1.10 |
Skel (.nusktb) |
1.0 |
Anim (.nuanmb) |
1.2, 2.0, 2.1 |
Nlst (.nulstb) |
1.0 |
Nrpd (.nurpdb) |
1.6 |
Nufx (.nufxlb) |
1.0, 1.1 |
Shdr (.nushdb) |
1.2 |
示例
SSBH 数据的传统结构定义可能如下所示。
struct FileData {
name: u64,
name_offset: u64,
values_offset: u64,
values_count: u64
}
结构体 FileData 具有正确的大小来表示磁盘上的数据,但存在一些问题。数组 values 没有捕捉到 SSBH 数组是强类型的这一事实。不清楚 name_offset 是相对于当前位置的偏移量,还是文件其他地方存储的某个缓冲区的偏移量。
#[derive(BinRead, SsbhWrite)]
struct FileData {
name: SsbhString,
name_offset: RelPtr64<SsbhString>,
values: SsbhArray<u32>
}
将预定义的 SSBH 类型(如 SsbhString)与实现 SsbhWrite 和 BinRead 的附加类型组合在一起,可以提高数据类型信息量,并使偏移量的使用更加明确。读取和写入原始二进制数据的代码完全由 BinRead 和 SsbhWrite 派生处理。
依赖项
~0.7–1.3MB
~27K SLoC