GCNTools 1.0.0
dotnet add package GCNTools --version 1.0.0
NuGet\Install-Package GCNTools -Version 1.0.0
<PackageReference Include="GCNTools" Version="1.0.0" />
paket add GCNTools --version 1.0.0
#r "nuget: GCNTools, 1.0.0"
// Install GCNTools as a Cake Addin #addin nuget:?package=GCNTools&version=1.0.0 // Install GCNTools as a Cake Tool #tool nuget:?package=GCNTools&version=1.0.0
GCNTools
GCNTools is a simple, platform-agnostic C# .NET library for working with GameCube discs, including reading, extracting, and creating disc images.
This library is a byproduct of my work on Konga Launcher, a custom track manager for Donkey Konga 2 and 3. I needed a method for manipulating the user's copy of Donkey Konga and building a new disc image if they wanted to create a new version of the game with custom tracks.
Since Konga Launcher already required Dolphin to launch the game from the user's computer, I originally planned on leveraging Dolphin Tools to handle the disc images. However, I soon discovered that Dolphin Tools did not come by default with the Mac and Linux versions of Dolphin, which meant I needed to take a different approach.
Thanks to the community's documentation, I put together my implementation in reasonably short order. Since the work to make this library for Konga Launcher has already been done, I figured sharing it with the community wouldn't hurt. I'm not sure how much demand there is for this library. That said, I still wanted to share GCNTools in case anyone finds it useful. If this library helped you, I would love to hear about it!
In the future, I would like to build on GCNTools to include asynchronous support, validation, additional error handling, better tests, and more GameCube-related tasks, but I do not have any specific plans yet.
Features
- Read and extract GameCube disc images
- Create new disc images from extracted files
- Read and modify disc metadata (title, region, maker code, etc.)
- Handle game banners and multi-language banner metadata
Requirements
- .NET 8.0 or higher
Usage
Installation
GCNTools is available via NuGet. You can install it into your project with the following command:
dotnet add package GCNTools
Example
Extracting a disc image:
using GCNTools;
DiscImage myGameImage = new("C:/games/mygame.iso");
// Extract everything
myGameImage.ExtractToDirectory("C:/extractedgames/mygame", ExtractionType.ALL);
// Extract only system files (boot.bin, bi2.bin, apploader.img, etc.)
myGameImage.ExtractToDirectory("C:/extractedgames/mygame", ExtractionType.SYSTEM_DATA_ONLY);
// Extract only game files
myGameImage.ExtractToDirectory("C:/extractedgames/mygame", ExtractionType.FILES_ONLY);
Modifying a disc image's header information and saving the changes as a new file:
using GCNTools;
DiscImage myGameImage = new("C:/games/mygame.iso");
myGameImage.Title = "New Game";
myGameImage.Region = Region.NTSC_J;
myGameImage.SaveToFile("C:/games/mymodifiedgame.iso");
Creating a disc image from an already extracted disc image without instantiating an object:
using GCNTools;
DiscImage.CreateFile("C:/extractedgames/mygame", "C:/modifiedgames/mygame.iso");
License
The GCNTools repository and associated NuGet package are available under the MIT license. With this in mind, attribution is appreciated but not required or expected.
Contribution
Contributions and bug reports are always welcome. Please keep in mind this is a hobbyist project, so I may need time to review any pull requests, bug reports, or general feedback.
Acknowledgements
Thank you to the GameCube homebrew community for being an invaluable resource. Yet Another Gamecube Documentation was vital for making this library. Additionally, Swiss was used for testing the library.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 35 | 1/7/2025 |
Initial release