nod
Library for traversing & reading Nintendo Optical Disc (GameCube and Wii) images.
Originally based on the C++ library nod, but does not currently support authoring.
Currently supported file formats:
- ISO (GCM)
- WIA / RVZ
- WBFS (+ NKit 2 lossless)
- CISO (+ NKit 2 lossless)
- NFS (Wii U VC)
- GCZ
CLI tool
This crate includes a command-line tool called nodtool
.
info
Displays information about a disc image.
nodtool info /path/to/game.iso
extract
Extracts the contents of a disc image to a directory.
nodtool extract /path/to/game.iso [outdir]
For Wii U VC titles, use content/hif_000000.nfs
:
nodtool extract /path/to/game/content/hif_000000.nfs [outdir]
convert
Converts any supported format to raw ISO.
nodtool convert /path/to/game.wia /path/to/game.iso
verify
Hashes the contents of a disc image and verifies it.
nodtool verify /path/to/game.iso
Library example
Opening a disc image and reading a file:
use Read;
// Open a disc image and the first data partition.
let disc = new
.expect;
let mut partition = disc.open_partition_kind
.expect;
// Read partition metadata and the file system table.
let meta = partition.meta
.expect;
let fst = meta.fst
.expect;
// Find a file by path and read it into a string.
if let Some = fst.find
Converting a disc image to raw ISO:
// Enable `rebuild_encryption` to ensure the output is a valid ISO.
let options = OpenOptions ;
let mut disc = new_with_options
.expect;
// Read directly from the open disc and write to the output file.
let mut out = create
.expect;
copy
.expect;
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.