-
Notifications
You must be signed in to change notification settings - Fork 1
Tutorial
The -v (or --verbose) option is used to enable verbosity. Useful for figuring out what's going wrong or why it seems like gcmtool isn't working right (ie- shows each file as it's being added or extracted).
the -l option (or --list) will list the filesystem of hte GCM. You can include extra options (such as +i (or --full-info) or +p (or --full-paths) to get even more information about the files). An example:
$ gcmtool --list --full-info d3-thug.iso
Filename: d3-thug.iso
System ID: G (Gamecube)
Game ID: TD
Region: E (USA/NTSC)
Maker Code: 52 (Activision)
Game Name: Tony Hawk's Underground
DOL offset: 125760
Apploader: 9280
ApploaderSize: 6452
FST: 3159456
File count: 2165
(2164) /
(0) anims/
(25) customparks/
19145 custom1.prk
15000 custom10.prk
15000 custom11.prk
15000 custom12.prk
15000 custom13.prk
15000 custom14.prk
15000 custom15.prk
15000 custom16.prk
15000 custom17.prk
15000 custom18.prk
15000 custom19.prk
The numbers that precede each file are the sizes, in bytes, for files, or the number of children for directories.
Now that you can view the filesystem of a GCM, you're ready to extract. You can extract the entire filesystem by typing:
$ gcmtool -e / . some_game.gcm
That will create a directory called "some_game.gcm.FILES" and put the filesystem in there. You can also specify a file or directory in the GCM to extract and where to put it.
There are several commands for extracting various portions of a GCM, for either backup purposes or to encapsulate your work on them:
-edh, --extract-disk-header [ +f <filename> ]
Extract the disk header (boot.bin)
-edhi, --extract-disk-header-info [ +f <filename> ]
Extract the disk header info (bi2.bin)
-eal, --extract-apploader [ +f <filename> ]
Extract the apploader (appldr.bin)
-ed, --extract-boot-dol [ +f <filename> ]
Extract the main executable DOL (boot.dol)
These commands take an optional +f parameter where you can specify a location to save them. If the parameter is omitted, it uses a default filename in your current, working directory.
See the yagcd documentation at link for detailed explanations of said sections.
You may think "Oh man, I can extract a game's DOL?!?! sweet!" but in actuality, it's not very useful. The DOL itself calls on files in the GCM's filesystem, so you can't just use PSUL to load the DOL and play your game. In fact, the game may even seem to start, but hang with a black screen.
#Injection
You can't inject a single file due to the sheer amount of data shifting that needs to be done, and there's really no reason to just put one in. Also, it's not like you don't have 2 minutes to spare whilst the thing rebuilds the entire filesystem, so suck it up.
To rebuild the filesystem use the -rfs argument:
GOTTA ADD THIS...
note by capz: what the hell?
You can inject several sections of a GCM with the following commands.
-idh, --inject-disk-header [ +f ]
Inject the disk header
-idhi, --inject-disk-header-info [ +f ]
Inject the disk header info
-id, --inject-boot-dol [ +f ]
Inject the main executable DOL
Currently, you can't inject the apploader due to limitations of the knowlege of GCM files (there's some data that comes after the apploader that may cause strange results if shifted).
Also, newly added to 0.2.4 is the ability to rebuild the filesystem of a GCM. It works by replacing the filesystem in its entirety.
$ gcmtool -rfs some_files my_game.gcm
Good for when you need to modify a large quantity of files, delete files, or add files. Also very useful for reducing the size of a GCM, since it doesn't write all of the zeros that are usually used as padding in retail games. Future versions of gcmtool may support adding the padding.