Crate gc_gcm

Source
Expand description

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
  • Apploader parser
    • The second stage loader for the game
    • Primarily only useful for hardware accuracy purposes
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§

ApploaderHeader
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