GeckoLoader

From Custom Mario Kart
Jump to navigation Jump to search
GeckoLoader
Author: JoshuaMK
Operating systems: All (Python 3.8),
Windows (x64 exe)
Software type: DOL editing tool
File formats: DOL, TXT, GCT
Version: v7.0
Date of latest version: 2020-11-07
Download: GeckoLoader

Overview

GeckoLoader is a program created by JoshuaMK. It is a quick and powerful way to inject Gecko codes into your game by patching them directly into a DOL file. The author initially made this as a fun project to figure out how Wiimms SZS Tools patches codes in-game. It was turned into a full project to enhance the idea for all games.

There are lots of options to customize the patch job, but it is best to use option -h to further learn how these options work.

Main Features

  • Works with all games, GameCube and Wii alike.
  • Codespace extension, which allows, on average, about 0x50000 bytes of space per game.^
  • Direct patching of RAM write type Gecko codes into the DOL itself, overwriting original values and removing the codes from the codelist.
  • Protection against user codes, by nullifying the codelist provided by loaders and programs such as Riivolution or Dolphin.^
  • Codelist encryption, to prevent people from snooping on your mod.^

^ Only when using the ARENA setting.

Version History

Version Date of release Information
v1.0 2020-04-12 First release
v1.1 2020-04-14
  • Added autosize calculation option.
  • Added support for all code types.
  • Fully optimized GeckoLoader.
v2.0.1 2020-04-17
  • Converted Python script into a command line tool.
  • Added a parser for Gecko text files made by Ocarina Manager and all tools following the same format.
  • Added option --txtcodes (-tc) that lets you define what codes are included. ALL or ACTIVE settings are available.
  • Added option --verbose (-v) that lets you define extra print info. Strongest setting is --verbose --verbose (-vv).
  • Added option --quiet (-q) that lets you suppress all output except error info.
  • Added option --alloc, that lets you define the size of the code allocation in hex; autosizes if not used.
  • Colorized text output.
v2.0.2 2020-04-18 Fixed compile error when using Gecko TXT files.
v2.2 2020-04-20
  • Further optimized loader.
  • Fixed typos in compiler.
  • Fixed fatal bug with "codehandler if" statements.
v2.3 2020-05-03 Various optimizations and fixes.
v3.0 2020-05-22
  • Fixed alignment bug.
  • Updated to C++.
v4.0 2020-06-03
  • Added option --handler, which lets you choose between the "MINI" and "FULL" codehandler. If not specified, it uses "FULL".
  • Added option --init (-i), which lets you choose where GeckoLoader initializes at. If not specified, it is auto-calculated.
  • Added option --movecodes (-m), which lets you choose if the codes are put in the legacy codehandler space or at the end of the ARENA. If not specified, it is auto-calculated what to use.
  • Added option --codehook, which lets you choose where the codehandler hooks to (this must be a BLR instruction). If not specified, it is auto-calculated where to hook (VIHook).
  • Reformatted most options to be more descriptive and strict.
  • Slightly reformatted verbosity output.
  • Codehandler is now relocated to the heap when using the ARENA as opposed to the legacy space.
v4.1 2020-06-04 Fixed an allocation bug.
v4.2 2020-06-26
  • Added option (-o, --optimize), which takes all RAM write type Gecko codes that are not within an "if" block and patches them directly into the DOL file. This is off by default.
  • Made GeckoLoader aware of unsafe addresses while assigning the init point, meaning it is now possible to stack multiple GeckoLoader patches in one DOL file (this assumes you are using the ARENA and you are designating unique addresses for the codehandler hook each time), and it also allows higher compatibility for other patchers like Wiimms StaticR Tool.
v4.4 2020-07-21
  • Fixed multiple bugs with legacy patching.
  • Added functionality to not patch in GeckoLoader and codehandler when the entire codelist is successfully pre-patched into the DOL file.
  • Added directory support.
v4.5 2020-07-22
  • Added support for Dolphin-formatted Gecko TXT files.
  • Improved temporary directory logic.
v4.5.1 2020-07-23 Removed debug print.
v5.0 2020-08-18
  • Added an installer to add GeckoLoader to the Windows PATH variable and store the files in the user's AppData.
  • Refactored and overhauled code.
  • Added --protect and [-d, --dest] options.
v5.1.1 2020-08-19
  • Refactored more code and extended the argparse.ArgumentParser class for better error output.
  • Upgraded splash and text color functions.
  • Added option --check-update, which is a simple and fast way to check for the existence of a new release.
v6.0 2020-08-26
  • The codehandler can now be hooked to any address containing a valid instruction that is not a conditional non-SPR branch.
  • There are now three different hooks to choose from ("VI", "GX" and "PAD"), which can be accessed via option --hooktype.
  • Renamed option --codehook to --hookaddress.
  • Improved parsing for Gecko code TXT files.
v6.01 2020-08-26
  • Fixed hook data corruption.
  • Upgraded installer.
v7.0 2020-11-07
  • Fixed optimization error when parsing the C0 code type.
  • Brand new GUI with dark theme and session open/save functionality.
  • Various bug fixes.
By the same author: JoshuaMK

Custom Tracks:
Keegs Road

Updates:
Bowser's ChallengeDongo Cave

Software:
GeckoLoader


YouTube Channel