Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

GeckoLoader Wii: Difference between revisions

From GameBrew
No edit summary
Line 48: Line 48:
'''The codehandler hook address was beyond bounds.'''
'''The codehandler hook address was beyond bounds.'''


This means the manual hook address you've passed into GeckoLoader is beyond valid range. Values from 0x80000000 to 0x817FFFFF (inclusive) are allowed.
This means the manual hook address you've passed into GeckoLoader is beyond valid range.  
 
Values from 0x80000000 to 0x817FFFFF (inclusive) are allowed.


'''The codehandler hook address was invalid.'''
'''The codehandler hook address was invalid.'''

Revision as of 11:54, 18 February 2023

GeckoLoader
File:Geckoloadermodwii.png
General
AuthorJoshuaMK
TypePC Utilities
Version7.1.0
LicenseGPL-3.0
Last Updated2020/12/06
Links
Download
Website
Source

GeckoLoader is a command line tool, providing an easy way to have near unlimited code space, allowing thousands of lines of gecko code for every Wii/GCN game.

Installation

Run the installer and choose to install GeckoLoader.

User guide

Codes

GeckoLoader supports 2 methods:

  • GCT files (Raw codelist).
  • Textual Codelist (Ocarina Manager or Dolphin Format txt files).

It also supports the ability to use a folder filled with GCT files and/or Textual codelists as input for multi codelist patching.

DOL

GeckoLoader needs a valid dol file to patch with your codes. Simply supply the path to your dol file in either the GUI or the CLI.

GeckoLoader also supports patching the same dol file multiple times until the file becomes filled with section data.

Compilation

Then you can do either:

  • In command prompt, input GeckoLoader -h for help on syntax and options
  • Run the command GeckoLoader <dol> <codelist> <options> filling in the variables as needed.

Or:

  • Fill out the relevant data in the GUI.
  • Click the "RUN" button.

Your new patched dol file will be in the folder ./geckoloader-build by default.

Common Issues

The allocation was invalid.

This means the manual allocation amount you've passed into GeckoLoader is not a hexidecimal number.

The codehandler hook address was beyond bounds.

This means the manual hook address you've passed into GeckoLoader is beyond valid range.

Values from 0x80000000 to 0x817FFFFF (inclusive) are allowed.

The codehandler hook address was invalid.

This means the manual hook address you've passed into GeckoLoader is not a hexidecimal number.

There are no unused sections left for GeckoLoader to use.

This means you've used up all of the remaining text/data sections, and GeckoLoader can't make space for itself.

Try using a fresh DOL if this has been patched many times. Otherwise you're out of luck.

Init address specified for GeckoLoader (x) clobbers existing dol sections.

This means the address you specified manually for GeckoLoader to initialize at is about to mutilate your game and thus, try a safer address instead.

Failed to find a hook address.

This means it couldn't find a known location to hook to. This can be resolved by trying different hooktypes, or manually specifying a hook address.

Allocated codespace was smaller than the given codelist.

This means you manually specified an allocation size that happens to be smaller than the codelist's minimum space requirements.

Give it some more room to work with or let it automatically decide the allocation amount.

Screenshots

geckoloadermodwii3.png geckoloadermodwii4.png

Changelog

v7.1

  • Fixed error caused by overflowing the lower 16 bits of the target address (Happened with NTSC-U MKW dol).
  • Removed deprecated option LEGACY which continuously broke various loaders and was only a limitation.
  • Fun code refactoring that most people will never see.

v7.0

  • Fixed optimization error when parsing the C0 codetype.
  • Brand new GUI with Dark Theme and Session open/save functionality to help get you back on track.
  • Various bugfixes.

v6.0.1

  • Hotfix for hook data corruption.
  • Upgraded the installer.

v6.0

  • The codehandler can now be hooked to any address containing a valid instruction that is not a conditional non spr branch.
  • There are now 3 different hooks to choose from ["VI", "GX", "PAD"] which can be accessed via option --hooktype.
  • Option --codehook is renamed to --hookaddress.
  • Parsing for Gecko Code txt files has been improved.

v5.1.1

  • 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.

v5.0

  • Added an installer to add GeckoLoader to the Windows PATH variable and store the files in the user's appdata.
  • Refactored and overhauled code.
  • Add 2 new options (--protect, [-d, --dest]).

v4.5.1

  • Removed debug print.

v4.5

  • Added support for dolphin formatted gecko txt files.
  • Improved on the temporary directory logic, it now creates a directory containing six random characters plus a "-GeckoLoader" extension for temporary file storage.

v4.4

  • Fix multiple bugs with legacy patching.
  • Added functionality to not patch in GeckoLoader + codehandler when the entire codelist is successfully pre patched into the dol.
  • Added directory support. Pass the name of a directory as the gecko codes and it will parse through all the files in the folder, patching them into the dol file.

v4.2

  • Added option (-o, --optimize), which takes all ram write type gecko codes that aren't within an if block, and patches them directly into the dol file, removing them from the codelist to save space. 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 (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 WSTRT.

v4.1

  • Fixed an allocation bug.

v4.0

  • 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 (MUST BE A BLR INSTRUCTION). If not specified it is auto calculated where to hook (VIHook).
  • Reformatted most options, so they are more descriptive and strict.
  • Reformatted verbosity output slightly.
  • Codehandler is now relocated to the heap when using the Arena, as opposed to the legacy space.

v3.0

  • Fixed alignment bug.
  • Updated to C++.

v2.3

  • Various optimizations and fixes.

v2.2

  • Optimized loader more.
  • Fixed typos in compiler.
  • Fixed fatal bug with codehandler if statements.

v2.0.2

  • Fixed compile error when using gecko txt files.

v2.0.1

  • Converted the 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.

v1.1

  • Added auto size calculation option to main.exe.
  • Added support for all codetypes.
  • GeckoLoader is now fully optimized.

v1.0

  • Initial release.

Credits

  • Wiimm - Original idea and implementation this is based from.
  • Riidefi - Taught me C/C++, which this uses.

External Links

Advertising: