#zelda #resources #gamedev #nintendo #convert-json #botw

rstb

Rust library for manipulating Breath of the Wild's resource size table

20 releases (7 breaking)

0.8.1 May 22, 2023
0.7.0 May 17, 2023
0.6.0 Feb 22, 2023
0.4.2 Dec 21, 2022
0.1.2 Jun 19, 2020

#876 in Parser implementations

Download history 10/week @ 2024-01-01 25/week @ 2024-01-08 29/week @ 2024-01-15 24/week @ 2024-01-22 26/week @ 2024-01-29 20/week @ 2024-02-05 37/week @ 2024-02-12 39/week @ 2024-02-19 64/week @ 2024-02-26 198/week @ 2024-03-04 88/week @ 2024-03-11 56/week @ 2024-03-18 40/week @ 2024-03-25 57/week @ 2024-04-01 34/week @ 2024-04-08 42/week @ 2024-04-15

182 downloads per month

MIT and maybe GPL-3.0-or-later

1.5MB
5K SLoC

BOTW resource size table (RSTB) library in Rust

crates.io api license

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);

Dependencies

~0.4–2.6MB
~32K SLoC