Crate gc_gcm[][src]

A library for working with GCM/ISO files (raw bit-for-bit disk images) for the Nintendo GameCube.

Features:

  • GCM parser
    • Disk metadata (game_id, internal name, etc.)
    • Offsets to various sections of the GCM
  • GameCube filesystem parser
    • Raw access to filesystem structures
    • Iterate over directories in a high-level manner
    • Information about the storage of files, allowing extraction
  • DOL executable parser
    • The main executable for the game
    • Allows for extraction or loading into memory
    • Supports parsing extracted DOL files as well
use gc_gcm::GcmFile;

let iso = GcmFile::open("melee.iso").unwrap();

println!("Name of game: {:?}", iso.internal_name);
println!("Size of executable: {:x?}", iso.dol.raw_data.len());
println!(
    "Number of files: {}",
    iso.filesystem.files
        .iter()
        .filter(|entry| matches!(entry, gc_gcm::FsNode::File { .. }))
        .count()
);

Output:

Name of game: "Super Smash Bros Melee"
Size of executable: 4385e0
Number of files: 1209

Structs

DirEntry

An entry representing a directory within the image's filesystem

DolFile

A dol ("Dolphin") executable file, used as the main executable of the gamecube

DolHeader

The header of a dol executable, describing the 19 sections (including the bss) as well as the entrypoint of the executable.

File

A file within the filesystem, representing the range of the data backing within the GCM image itself

FileSystem

The parsed GCM filesystem

GameId

A 6-character ID for a game

GcmFile

A parsed GCM/ISO file

RootNode

The root node of the filesystem, under which all the other nodes fall

Enums

FsNode

A given parsed node in the filesystem

GcmError

An error resulting from parsing or opening a GcmFile