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 游戏

Download history 2/week @ 2024-05-07 2/week @ 2024-05-14 3/week @ 2024-05-28 1/week @ 2024-06-04 12/week @ 2024-07-02 126/week @ 2024-07-23

每月 126 次下载
ssbh_data 中使用

MIT 许可证

205KB
4K SLoC

ssbh_lib 最新版本 docs.rs

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)与实现 SsbhWriteBinRead 的附加类型组合在一起,可以提高数据类型信息量,并使偏移量的使用更加明确。读取和写入原始二进制数据的代码完全由 BinReadSsbhWrite 派生处理。

依赖项

~0.7–1.3MB
~27K SLoC