More actions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Infobox Wii Homebrews | {{Infobox Wii Homebrews | ||
|title=GeckoLoader | |title=GeckoLoader | ||
|image=geckoloadermodwii.png | |image=geckoloadermodwii.png | ||
|description=An easy way to have near unlimited code space, allowing thousands of lines of gecko code for every Wii/GCN game. | |description=An easy way to have near unlimited code space, allowing thousands of lines of gecko code for every Wii/GCN game. | ||
|author= | |author=JoshuaMK | ||
|lastupdated=2020/12/06 | |lastupdated=2020/12/06 | ||
|type=Utilities | |type=PC Utilities | ||
|version=7.1.0 | |version=7.1.0 | ||
|license=GPL-3.0 | |license=GPL-3.0 | ||
Line 18: | Line 12: | ||
|source=https://github.com/JoshuaMKW/GeckoLoader | |source=https://github.com/JoshuaMKW/GeckoLoader | ||
}} | }} | ||
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== | ==Installation== | ||
Run the installer and choose to install GeckoLoader. | Run the installer and choose to install GeckoLoader. | ||
== | ==User guide== | ||
=== Codes === | === 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 === | === DOL === | ||
GeckoLoader needs a valid <code>dol</code> file to patch with your codes. Simply supply the path to your <code>dol</code> file in either the GUI or the CLI. | |||
GeckoLoader also supports patching the same <code>dol</code> file multiple times until the file becomes filled with section data. | |||
=== Compilation === | === Compilation === | ||
Then you can do either: | Then you can do either: | ||
* In command prompt, input <code>GeckoLoader -h</code> for help on syntax and options | |||
* Run the command <code>GeckoLoader <dol> <codelist> <options></code> filling in the variables as needed. | |||
Or: | Or: | ||
* Fill out the relevant data in the GUI. | |||
* Click the "RUN" button. | |||
Your new patched <code>dol</code> file will be in the folder <code>./geckoloader-build</code> by default. | |||
=== Common Issues === | |||
'''The allocation was invalid.''' | |||
This means the manual allocation amount you've passed into GeckoLoader is not a hexidecimal number. | This means the manual allocation amount you've passed into GeckoLoader is not a hexidecimal number. | ||
'''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.''' | ||
This means the manual hook address you've passed into GeckoLoader is not a hexidecimal number. | 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''' | '''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. | |||
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. | 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''' | '''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. | 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''' | '''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. | |||
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== | ==Changelog== | ||
'''v7.1''' | '''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''' | '''v7.0''' | ||
* Fixed optimization error when parsing the C0 codetype | * 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 | * Brand new GUI with Dark Theme and Session open/save functionality to help get you back on track. | ||
* Various bugfixes | * Various bugfixes. | ||
'''v6.0.1''' | '''v6.0.1''' | ||
* Hotfix for hook data corruption | * Hotfix for hook data corruption. | ||
* Upgraded the installer | * Upgraded the installer. | ||
'''v6.0''' | '''v6.0''' | ||
* The codehandler can now be hooked to any address containing a valid instruction that is not a conditional non spr branch | * 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 | * 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 | * Option --codehook is renamed to --hookaddress. | ||
* Parsing for Gecko Code txt files has been improved | * Parsing for Gecko Code txt files has been improved. | ||
'''v5.1.1''' | '''v5.1.1''' | ||
* Refactored more code, and extended the argparse.ArgumentParser class for better error output | * Refactored more code, and extended the argparse.ArgumentParser class for better error output. | ||
* Upgraded splash and text color functions | * 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 | * Added option --check-update which is a simple and fast way to check for the existence of a new release. | ||
'''v5.0''' | '''v5.0''' | ||
* Added an installer to add GeckoLoader to the Windows PATH variable and store the files in the user's appdata | * Added an installer to add GeckoLoader to the Windows PATH variable and store the files in the user's appdata. | ||
* Refactored and overhauled code | * Refactored and overhauled code. | ||
* Add 2 new options (--protect, [-d, --dest]) | * Add 2 new options (--protect, [-d, --dest]). | ||
'''v4.5.1''' | '''v4.5.1''' | ||
*Removed debug print | *Removed debug print. | ||
'''v4.5''' | '''v4.5''' | ||
* Added support for dolphin formatted gecko txt files | * 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 | * 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''' | '''v4.4''' | ||
* Fix multiple bugs with legacy patching | * 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 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. | * 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. | ||
Line 128: | Line 126: | ||
'''v4.1''' | '''v4.1''' | ||
*Fixed an allocation bug | *Fixed an allocation bug. | ||
'''v4.0''' | '''v4.0''' | ||
* Added option --handler, which lets you choose between the "MINI" and "FULL" codehandler. If not specified it uses "FULL" | * 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 --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 --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) | * 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 most options, so they are more descriptive and strict. | ||
* Reformatted verbosity output slightly | * Reformatted verbosity output slightly. | ||
* Codehandler is now relocated to the heap when using the Arena, as opposed to the legacy space | * Codehandler is now relocated to the heap when using the Arena, as opposed to the legacy space. | ||
'''v3.0''' | '''v3.0''' | ||
* Fixed alignment bug | * Fixed alignment bug. | ||
* Updated to C++ | * Updated to C++. | ||
'''v2.3''' | '''v2.3''' | ||
* Various optimizations and fixes | * Various optimizations and fixes. | ||
'''v2.2''' | '''v2.2''' | ||
* Optimized loader more | * Optimized loader more. | ||
* Fixed typos in compiler | * Fixed typos in compiler. | ||
* Fixed fatal bug with codehandler if statements | * Fixed fatal bug with codehandler if statements. | ||
'''v2.0.2''' | '''v2.0.2''' | ||
Line 155: | Line 153: | ||
'''v2.0.1''' | '''v2.0.1''' | ||
* Converted the python script into a command line tool | * 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 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 --txtcodes (-tc), that lets you define what codes are included. ALL or ACTIVE settings are available. | ||
Line 161: | Line 159: | ||
* Added option --quiet (-q), that lets you suppress all output except error info. | * 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. | * Added option --alloc, that lets you define the size of the code allocation in hex. Autosizes if not used. | ||
* Colorized text output | * Colorized text output. | ||
'''v1.1''' | '''v1.1''' | ||
* Added auto size calculation option to main.exe | * Added auto size calculation option to main.exe. | ||
* Added support for all codetypes | * Added support for all codetypes. | ||
* GeckoLoader is now fully optimized | * GeckoLoader is now fully optimized. | ||
'''v1.0''' | '''v1.0''' | ||
* Initial release | * Initial release. | ||
== Credits == | == Credits == | ||
* Wiimm - Original idea and implementation this is based from | * Wiimm - Original idea and implementation this is based from. | ||
* Riidefi - Taught me C/C++, which this uses | * Riidefi - Taught me C/C++, which this uses. | ||
==External Links== | ==External Links== | ||
* | * GitHub - https://github.com/JoshuaMKW/GeckoLoader |
Revision as of 11:53, 18 February 2023
GeckoLoader | |
---|---|
File:Geckoloadermodwii.png | |
General | |
Author | JoshuaMK |
Type | PC Utilities |
Version | 7.1.0 |
License | GPL-3.0 |
Last Updated | 2020/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.