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).
Features • Usage • Examples • Installation
!!! The project is currently very early stages of development. !!!
!!! All features are not implemented and backwards compatibility is not guaranteed. !!!
- DOL (Dolphin executable)
- REL (Relocatable module)
- GCM (GameCube master disc)
- CISO (Compact ISO)
- Yaz0 compression
- JIS X 0201 encoding
- Shift JIS encoding
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(())
}
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.
Picori is available on crates.io. Add the following to your Cargo.toml
:
[dependencies]
picori = "0.1.0"
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.
Picori is licensed under an MIT license. See LICENSE for more information.