Library for recent Nintendo EAD formats in first-party games


Keywords
cpp, nintendo, nintendo-switch, pybind11
Licenses
GPL-3.0/GPL-3.0+
Install
pip install oead==1.2.6.post1

Documentation

oead

oead is a C++ library for common file formats that are used in modern first-party Nintendo EAD (now EPD) titles.

Python bindings for 3.6+ are also available.

Features

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 1, 2, 3, and 4 are supported.
  • SARC (archive)
  • Yaz0 (compression algorithm)

oead also supports a recent Grezzo format that is used in Link's Awakening (Switch):

Getting started

To install the Python module, simply run:

pip install oead

This will download and install a precompiled version of oead for the following platforms:

  • Windows (x86-64 / 64-bit)
  • Recent Linux distributions (x86-64, glibc and musl)
  • macOS 10.14 / 10.15 (x86-64)

The following versions of Python are supported:

  • CPython 3.6 to 3.11
  • PyPy3.7 to 3.9

If you are using any other platform, you must build oead from source (refer to the next section).

Warning

Windows users must ensure that they have the latest Visual C++ 2019 Redistributable installed.

For more information, refer to the documentation.

Building from source

Building oead from source requires:

  • CMake 3.12+
  • A compiler that supports C++17
  • Everything needed to build libyaml

First, clone the repository then enter the oead directory and run git submodule update --init --recursive.

Building the Python module

  • To install the module, run pip install -e .. This requires the following Python modules to be installed: setuptools, wheel
  • If you just want to build the Python module from source without installing it, run python setup.py bdist_wheel.

C++ usage

Linking to the oead target is sufficient to use the library.

Contributing

This project is licensed under the GPLv2+ license.