1.03 consists of a loader, located in src/loader, which is built into a Melee
save file using dansalvato's Melee GCI Compiler, and the mod itself, located in
src/mod.
The loader is executed upon entering Name Entry using the standard nametag
buffer overflow exploit. The loader then copies itself out of the nametag
region and reads the 103Code save (output as ssbm-1.03-$(MODVERSION).gci)
containing the mod from the memory card into main memory. 103Code contains a
full copy of 1.03 for Melee NTSC 1.02 and diffs against this copy for other game
versions, which the loader will apply if necessary. The loader then executes the
mod entry point and makes Melee load an alternate save file that won't trigger
the nametag overflow.
1.03 uses this two-stage loading process because its main binary is too large to fit in a Melee save file.
You need to have devkitPro
installed, and the environment variable DEVKITPRO must be set to your
devkitPro install path.
You need at least Python 3.6.
You need to install the pypng Python library.
- Example:
pip install pypng
All submodules in the 1.03 repo must be cloned.
- Example:
git submodule update --init --recursive
Invoke make with VERSION set to one of 102, 101, 100, or PAL. This
indicates the target Melee version.
NOPAL may be specified to exclude PAL, 20XX, and UnclePunch support from the
build. This helps 1.03 fit on 4Mb memory cards.
TOURNAMENT may be specified to exclude non-Z jump Controls options.
BETA may be specified to include a version watermark on the character select
screen.
MODVERSION may be specified to add a suffix to the output gci filenames.
MODVERSION may imply other build options.
- If
MODVERSIONcontains "a" followed by a digit, hyphen, or EOL at the start or after a hyphen,NOPALis implied. -
- Example:
MODVERSION=a3.4
- Example:
- If
MODVERSIONcontains "TE" followed by a digit, hyphen, or EOL at the start or after a hyphen,TOURNAMENTis implied. -
- Example:
MODVERSION=te
- Example:
- If
MODVERSIONcontains "beta" or "rc" followed by a digit, hyphen, or EOL at the start or after a hyphen,BETAis implied. -
- Example:
MODVERSION=b3.4-beta1
- Example:
USERDEFS may be specified to supply additional preprocessor macros. Additional
functionality may be added using the following macros:
CYAN_CSS_READY- Recolor the "Ready to fight!" banner to cyanOLD_CSS_TOGGLES- Allow CSS toggles for 1.03 controls like the first version of 1.03POLL_DEBUG- Show debug information on the game's input poll/fetch timing and latencyPOLL_DEBUG_VERBOSE- Show additional poll debug infoUCF_ROTATOR- Reinstate the UCF toggle in the additional rules menuLGL_ROTATOR- Reinstate the LGL rotator in the rules menuATL_ROTATOR- Reinstate the AGL rotator in the rules menuFULL_SSS_ROTATOR- Reinstate the FD/PS and None options for Stage ModsLGL_LEGACY- Use the old 40/45/50 LGL for 6/7/8 minutes behavior.
Example make command:
make -j8 USERDEFS=OLD_CSS_TOGGLES VERSION=PAL MODVERSION=b3.4
NTSC 1.02 must be built before any other versions, as all other versions are stored as a diff against the 1.02 build. If the 1.02 version is rebuilt, all other versions must also be rebuilt to be valid.