#game-cube #file-format #yaz0 #rel #compression #dol #rarc

picori

Picori is a library for decompilation, modding, and rom-hacking with focus on GameCube and Wii games

1 unstable release

0.1.0 Nov 6, 2022

#1718 in Parser implementations

MIT license

440KB
2.5K SLoC

Picori

crates.io docs.rs build coverage license

Picori (ピッコル) is a library for decompilation, modding, and rom-hacking with focus on GameCube and Wii games. It support parsing and building common file formats, e.g., Dolphin executables (DOLs).

FeaturesUsageExamplesInstallation

!!! The project is currently very early stages of development. !!!
!!! All features are not unimplemented and compatibility is not guaranteed. !!!

Features

  • DOL (Dolphin executable)
  • REL (Relocatable module)
  • GCM (GameCube master disc)
  • CISO (Compact ISO)
  • Yaz0 compression
  • JIS X 0201 encoding
  • Shift JIS encoding

Usage

Here is a simple example of how to use Picori to parse a DOL file and print the entry point.

use std::fs::File;
use picori::Result;
fn main() -> Result<()> {
    let mut file = File::open("main.dol")?;
    let dol = picori::Dol::from_binary(&mut file)?;
    println!("entry point: {:#08x}", dol.entry_point());
    Ok(())
}

Examples

The examples directory contains a few examples of how to use Picori.

  • dol_dump - Dump information about a .dol file.
  • rel_dump - Dump information about a .rel file.
  • gcm_dump - Dump information about a .gcm/.iso file.

Installation

Picori is available on crates.io. Add the following to your Cargo.toml:

[dependencies]
picori = "0.1.0"

Contributing

Contributions are welcome! If you would like to contribute, please open a pull request on GitHub. Please make sure that your code is formatted with rustfmt, and that it compiles without warnings or errors.

License

Picori is licensed under an MIT license. See LICENSE for more information.

Dependencies

~235–680KB
~16K SLoC