- C 55.1%
- C# 24.4%
- C++ 17.5%
- Python 2.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflows | ||
| .github.example/workflows | ||
| .vscode | ||
| assets | ||
| config | ||
| docs | ||
| external | ||
| include | ||
| src | ||
| tools | ||
| .flake8 | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| configure.py | ||
| LICENSE | ||
| README.example.md | ||
| README.md | ||
| THIRD_PARTY_NOTICES.md | ||
Kirby Air Ride Decompilation

A work-in-progress decompilation project for Kirby Air Ride using decomp-toolkit.
This repository does not contain game assets or original binaries. An existing copy of the game is required.
Supported Versions
GKYE01: USAGKYJ01: JapanGKYP01: Europe
Compiler Baseline
KAR uses CodeWarrior for GameCube 2.4.2 build 81, represented by the
GC/1.3.2 toolchain in the project config.
Source imported or cross-checked against doldecomp/kar keeps that project's
source flags (-cwd source, -I-, and -inline all) separate from the broader
game-code baseline. Dolphin SDK-shaped objects are also kept separate from game
objects and are configured with the SDK compiler slot (GC/1.0) because the SDK
code was not built with the same compiler as the KAR game code.
Observed game-code flags:
-O4,p -nodefaults -fp hard -Cpp_exceptions off -enum int -fp_contract on -inline auto
Setup
Place each extracted disc in orig/<GAMEID> with the original sys/main.dol
at orig/<GAMEID>/sys/main.dol.
In this local workspace, the orig entries may be directory junctions to the
already-extracted folders next to this project.
Configure one version:
python configure.py --version GKYE01
Swap GKYE01 for GKYJ01 or GKYP01 to configure another version.
Build or run initial analysis:
ninja
Experimental Wii-mode Loader
An opt-in KAR-specific Wii-mode compatibility build is available for testing MEM2-backed ARAM and a separate mod heap. It leaves the normal matching GameCube configuration unchanged:
python configure.py --version GKYE01 --non-matching --wii-mode
ninja
This produces the normal main.dol plus a standalone Wii-mode loader. Use
ninja wii-loader to build only the loader after configuring with the flag.
See docs/wii_mode_loader.md for the standalone and merged-disc build paths, memory layout, Dolphin launch instructions, and the mod allocation API. The source-built Wii disc boot stage has no Homebrew Channel dependency and is documented end to end in docs/wii_apploader.md.
The merged-disc workflow starts from the exact retail DOL for the selected
region. Before replacing sys/main.dol, preserve it as files/orig.dol and
pass that copy to the merged-DOL builder. It is a rebuild input, not a file read
at runtime, and must not be committed or redistributed. The current merged ISO
path deliberately rejects arbitrary rebuilt/relocated target DOLs; see the
guide for the reason, limitations, disc layout, licenses, and release checklist.
Project Layout
configure.py- Project generator and compiler/linker settings.config/<GAMEID>/config.yml- decomp-toolkit config for each version.config/<GAMEID>/symbols.txt- Symbols, generated by initial analysis.config/<GAMEID>/splits.txt- File splits, generated by initial analysis.orig/<GAMEID>- Local original game files, ignored by Git.src/andinclude/- Decompiled source and headers.THIRD_PARTY_NOTICES.md- Licenses for the MIT loader and GPLv2 apploader.
Notes
docs/kar_us_shiftability.mdrecords the currentGKYE01split heuristic, verification result, and the largest remaining anonymous text gaps.docs/kar_us_auto_text_audit.mdranks the remainingGKYE01auto text units.docs/kar_shiftability_checklist.mdtracks what still blocks version-shift confidence.docs/kar_data_split_notes.mdoutlines the conservative data-splitting path.tools/import_doldecomp_kar_symbols.pyimports conservative symbol upgrades from a localdoldecomp/karclone. By default it trusts SysDolphin, Dolphin SDK, and runtime/SDK labels with concrete addresses, while leaving asm-only game labels for manual review.- Source files mirrored from
doldecomp/karlive undersrc/sysdolphin,src/os, andsrc/Dolphin; mirrored headers live underinclude.