22 个版本 (1 个稳定版)
1.0.0 | 2024 年 7 月 29 日 |
---|---|
0.9.0 | 2024 年 7 月 8 日 |
0.8.1 | 2023 年 5 月 22 日 |
0.6.0 | 2023 年 2 月 22 日 |
0.1.2 | 2020 年 6 月 19 日 |
#366 在 解析器实现
每月下载量 843
1.5MB
5K SLoC
基于 Rust 的 BOTW 资源大小表(RSTB)库
一个用于快速方便地在 Rust 中操作《塞尔达传说:荒野之息》资源大小表(RSTB)的库。可以直接编辑 RSTB 或将其转换为 JSON 表示形式。基本用法:操作 RSTB 文件
use rstb::{ResourceSizeTable, Endian};
let buf: Vec<u8> = std::fs::read("test/ResourceSizeTable.product.rsizetable")?;
// Read RSTB from data, can automatically decompress if yaz0 compressed
// (requires `yaz0` feature)
let mut table: ResourceSizeTable = ResourceSizeTable::from_binary(buf)?;
// Set the size for a resource
table.set("Map/MainField/A-1/A-1_Dynamic.mubin", 777);
// Check the size
assert_eq!(
table.get("Map/MainField/A-1/A-1_Dynamic.mubin").unwrap(),
777
);
// Dump to JSON, if `json` feature enabled
#[cfg(feature = "json")]
{
let json_table = table.to_text();
// From JSON back to RSTB
let new_table = ResourceSizeTable::from_text(&json_table)?;
}
// Write new binary copy, and we'll yaz0 compress it
#[cfg(feature = "yaz0")]
let out_buf: Vec<u8> = table.to_compressed_binary(Endian::Big);
依赖项
~0.4–2.8MB
~34K SLoC