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