This is the source code for Skyward Sword Practice Codes. At its core, the project is written in Gecko for the cheat engine used by GameCube/Wii emulators/loaders, with some snippets written in the assembly (ASM) language of those systems. However, a higher-level language developed by bob-zsr is used to aid the coding.
The codes themselves and all help material are published at https://shoutplenty.uk/ss/pc.
(If this domain expires, there's also https://shoutplenty.netlify.app/ss/pc.)
I hope this becomes a more collaborative project. I'll review pull requests and discuss works on the Skyward Sword discord. I've done my best to document things in comments and in the docs folder, so jump in :P.
The project depends on Bob's Gecko compiler, which is currently a WIP. The modded version linked above will always work and be updated in tandem with this repo. The compiler repo should be extracted into a folder called /compiler
. It depends on pyiiasmh, an ASM encoder, required only to build ASM codes; it should be extracted into a folder called /pyiiasmh
. This itself requires Python 2 to be installed.
To run the compiler, run the command python compiler/main.py
from this repo's root folder. Add a word (after a space) to the command with the letters a,d,g (e.g. adg
) to specify what to compile:
- a: build the ASM codes (into
build-asm
); - d: build the result into Dolphin .ini format;
- g: build the result into .gct format for console game loaders.
It defaults to dg
if no such word is added.
The compiler builds all codes present in /src
, resolving all references to ASM files in /build-asm
(which may be stale if a
is not specified), with results stored in /build
. The Gecko syntax it accepts is specified in the readme of its repo, and is not standardised/versioned yet.
build | (generated by compiler). Stores resultant Gecko codes. |
build-asm | (generated by compiler). Stores generated ASM codes for inclusion. |
compiler | (provided by user). Compiler used to build the project (into the build folder). |
demo | examples not built by the project. |
docs | project documentation. |
pyiiasmh | (provided by user). Asm encoder used by assemble.sh. |
src | all Gecko codes to be built. |
src-asm | all ASM codes to be built and referenced by Gecko codes. |
context (Scaldera) | shoutplenty |
context (Sidehop CS Skip) | shoutplenty, dragonbane0 |
cutscene | shoutplenty |
spawn | shoutplenty, dragonbane0 |
Bob-zsr for his amazing Gecko compiler, which will hopefully be the cornerstone of many a successful Gecko codes project once it's finished.
Plus the whole Skyward Sword community for abridging info on memory locations (1 2 3 4 5), and MrCheeze in particular for reversing the cutscene scripting system.
And on whose shoulders this all stands...
- The team for Dolphin, the world's best console emulator project.
- aldelaro5 for Dolphin Memory Engine, on whose back all of 2019's Skyward Sword discoveries were made.
- Psychonauter & Noki Doki for creating + maintaining the Super Mario Sunshine Practice Code Generator, on which this infrastructure is based.
- Dan Salvato for the classic, Intro to Wii Game Modding.
- Vega for the indispensible in-depth Gecko and ASM tutorials at mkwii.com.
— shoutplenty (Pyorot)