ssbh_lib Latest Version docs.rs

ssbh_lib is a Rust library for reading and writing SSBH binary files. Each SSBH format has a major and minor version. All versions used by Smash Ultimate are supported.

| Format | Supported Versions (major.minor) | | --- | --- | | 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 | | Nrpd (.nurpdb) | 1.6 | | Nufx (.nufxlb) | 1.0, 1.1 | | Shdr (.nushdb) | 1.2 |

Example

A traditional struct definition for SSBH data may look like the following. rust struct FileData { name: u64, name_offset: u64, values_offset: u64, values_count: u64 } The FileData struct has the correct size to represent the data on disk but has a number of issues. The values array doesn't capture the fact that SSBH arrays are strongly typed. It's not clear if the name_offset is an offset relative to the current position or some other buffer stored elsewhere in the file.

```rust

[derive(BinRead, SsbhWrite)]

struct FileData { name: SsbhString, name_offset: RelPtr64, values: SsbhArray
} `` Composing a combination of predefined SSBH types such asSsbhStringwith additional types implementingSsbhWriteandBinReadimproves the amount of type information for the data and makes the usage of offsets less ambiguous. The code to read and write the data from the raw binary data is handled entirely by derivingBinReadandSsbhWrite`.