Crates.io | rstb |
lib.rs | rstb |
version | 1.0.0 |
source | src |
created_at | 2020-06-16 17:59:32.772933 |
updated_at | 2024-07-29 20:37:51.051313 |
description | Rust library for manipulating Breath of the Wild's resource size table |
homepage | |
repository | https://github.com/NiceneNerd/rstb-rust |
max_upload_size | |
id | 254599 |
size | 6,537,503 |
A quick and easy library for manipulating the resource size table (RSTB) from The Legend of Zelda: Breath of the Wild in Rust. Can edit an RSTB directly or convert to and from a JSON representation. Basic usage to manipulate an RSTB file:
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);