Expand description
§roead
§A Rusty child of the oead C++ library
oead is a C++ library for common file formats that are used in modern first-party Nintendo EAD (now EPD) titles.
Currently, oead only handles very common formats that are extensively used in recent games such as Breath of the Wild and Super Mario Odyssey.
- AAMP (binary parameter archive): Only version 2 is supported.
- BYML (binary YAML): Versions 2, 3, and 4 are supported.
- SARC (archive)
- Yaz0 (compression algorithm)
The roead project brings oead’s core functionality, by directly porting or (for the yaz0 module) providing safe and idiomatic bindings to oead’s features. (The Grezzo datasheets are not supported.) For more info on oead itself, visit its GitHub repo.
Each of roead’s major modules is configurable as a feature. The default
feature set includes byml
, aamp
, sarc,
and yaz0
. For compatibility
with many existing tools for these formats, there is also a yaml
feature
which enables serializing/deserializing AAMP and BYML files as YAML
documents. Finally, serde support is available using the with-serde
feature.
For API documentation, see the docs for each module.
§Building from Source
Most of roead is pure Rust and can compiled with any relatively recent nightly release. However, the yaz0 module provides FFI bindings to oead code, so to use it the following additional requirements are necessary:
- CMake 3.12+
- A compiler that supports C++17
- Everything necessary to build zlib
First, clone the repository, then enter the roead directory and run
git submodule update --init --recursive
.
§Contributing
Issue tracker: https://github.com/NiceneNerd/roead/issues
Source code: https://github.com/NiceneNerd/roead
This project is licensed under the GPLv3+ license. oead is licensed under the GPLv2+ license.
Modules§
- aamp
aamp
Port of theoead::aamp
module. - byml
byml
Port of theoead::byml
module. - sarc
sarc
Port of theoead::sarc
module. - Miscellaneous needful oead types.
- yaz0
yaz0
Bindings for theoead::yaz0
module, which supports Yaz0 decompression and fast compression (using syaz0).
Macros§
- array
byml
Convenience macro to construct aByml
array using array literal syntax. Example: - h
aamp
A convenient macro for hashing AAMP names. This can help ensure they are hashed at compile time in contexts where the compiler may not otherwise realize it is an option. - lists
aamp
Convenience macro to construct aParameterListMap
with map literal syntax. Example: - map
byml
Convenience macro to construct aByml
map using map literal syntax. Example: - objs
aamp
Convenience macro to construct aParameterObjectMap
with map literal syntax. Example: - params
aamp
Convenience macro to construct aParameterObject
with map literal syntax. Example:
Enums§
- Represents endianness where applicable.
- Error type for this crate.