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

rstb

Rust 库,用于操作《塞尔达传说:荒野之息》的资源大小表

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解析器实现

Download history 51/week @ 2024-04-25 60/week @ 2024-05-02 39/week @ 2024-05-09 57/week @ 2024-05-16 63/week @ 2024-05-23 75/week @ 2024-05-30 63/week @ 2024-06-06 62/week @ 2024-06-13 69/week @ 2024-06-20 62/week @ 2024-06-27 253/week @ 2024-07-04 82/week @ 2024-07-11 82/week @ 2024-07-18 514/week @ 2024-07-25 183/week @ 2024-08-01 54/week @ 2024-08-08

每月下载量 843

MIT 和可能 GPL-3.0-or-later

1.5MB
5K SLoC

基于 Rust 的 BOTW 资源大小表(RSTB)库

crates.io api license

一个用于快速方便地在 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