nod-rs ![Build Status] ![Latest Version] ![Api Rustdoc] ![Rust Version]

Library for traversing & reading GameCube and Wii disc images.

Based on the C++ library nod, but does not currently support authoring.

Currently supported file formats: - ISO - NFS (Wii U VC files, e.g. hif_000000.nfs)

CLI tool

This crate includes a CLI tool nodtool, which can be used to extract disc images to a specified directory:

shell nodtool extract /path/to/game.iso [outdir]

For Wii U VC titles, use content/hif_*.nfs:

shell nodtool extract /path/to/game/content/hif_000000.nfs [outdir]

Library example

Opening a disc image and reading a file: ```rust use nod::disc::{newdiscbase, PartHeader}; use nod::fst::NodeType; use nod::io::newdiscio; use std::io::Read;

let mut discio = newdiscio("path/to/file".asref())?; let discbase = newdiscbase(discio.asmut())?; let mut partition = discbase.getdatapartition(discio.asmut())?; let header = partition.readheader()?; if let Some(NodeType::File(node)) = header.findnode("/MP3/Worlds.txt") { let mut s = String::new(); partition.beginfilestream(node)?.readtostring(&mut s); println!(s); } ```

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.