#nintendo #yaz0 #file-format #archive-format #sarc #byml #aamp

roead

Rust对oead C++库的常见任天堂格式的移植

49个版本 (1个稳定版)

1.0.0 2024年8月17日
0.25.3 2024年6月24日
0.25.1 2024年4月7日
0.23.1 2023年6月12日
0.9.0 2021年11月18日

#537 in 解析器实现

Download history 70/week @ 2024-04-27 53/week @ 2024-05-04 49/week @ 2024-05-11 57/week @ 2024-05-18 86/week @ 2024-05-25 59/week @ 2024-06-01 69/week @ 2024-06-08 66/week @ 2024-06-15 338/week @ 2024-06-22 109/week @ 2024-06-29 223/week @ 2024-07-06 73/week @ 2024-07-13 82/week @ 2024-07-20 92/week @ 2024-07-27 88/week @ 2024-08-03 50/week @ 2024-08-10

每月319次下载
用于 2 crates

GPL-3.0-or-later

1MB
18K SLoC

C 12K SLoC // 0.2% comments Rust 6K SLoC // 0.0% comments C++ 126 SLoC // 0.2% comments Shell 23 SLoC // 0.1% comments

roead

crates.io api license build

oead C++库的Rust子库

oead 是一个用于现代任天堂 EAD(现 EPD)游戏标题中使用的常见文件格式的 C++ 库。

目前,oead 只处理最近游戏中广泛使用的非常常见的格式,如 荒野之息超级马里奥奥德赛

  • AAMP(二进制参数存档):仅支持版本 2。
  • BYML(二进制 YAML):支持版本 2、3 和 4(roead 中最多支持 v7)。
  • SARC(存档)
  • Yaz0(压缩算法)

roead 项目通过直接移植或(对于 yaz0 模块)提供对 oead 特性的安全且符合习惯的绑定来提供 oead 的核心功能。(Grezzo 数据表不支持。)有关 oead 的更多信息,请访问 其 GitHub 仓库

roead 的每个主要模块都可以配置为功能。默认功能集包括 bymlaampsarc,yaz0。为了与许多现有的这些格式的工具兼容,还有一个 yaml 功能,该功能可以将 AAMP 和 BYML 文件序列化为 YAML 文档。最后,使用 with-serde 功能提供 serde 支持。

有关 API 文档,请参阅每个模块的文档。

从源代码构建

roead 的大部分是纯 Rust,可以与任何相对较新的版本编译。稳定的 MSRV 是 1.69。然而,yaz0 模块提供了对 oead 代码的 FFI 绑定,因此要使用它,需要以下额外要求

  • CMake 3.12+
  • 支持 C++17 的编译器
  • 构建 zlib 所需的一切

首先,克隆仓库,然后进入roead目录并运行git submodule update --init --recursive

贡献

问题跟踪器:https://github.com/NiceneNerd/roead/issues
源代码:https://github.com/NiceneNerd/roead

本项目受GPLv3+许可协议的许可。oead受GPLv2+许可协议的许可。

依赖项

~0.5–28MB
~364K SLoC