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
No edit summary
Line 1: Line 1:
{{#seo:
|title=Wii Homebrew Apps (Utilities) - GameBrew
|title_mode=append
|image=geckoloadermodwii.png
|image_alt=GeckoLoader
}}
{{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=JoshuaMKW
|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 powerful, command-line tool designed for Wii and GCN gamers. It provides an easy and convenient way to access an almost unlimited amount of code space, enabling users to run thousands of lines of Gecko code for every game on these platforms.
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.
 
Whether you're looking to enhance your gaming experience or unlock hidden features in your favorite games, GeckoLoader is the perfect tool for the job. With its intuitive and straightforward interface, you can easily and quickly apply custom codes to your games, bringing new levels of excitement and challenge to every play session.
 
So why wait? Start using GeckoLoader today and start unlocking the full potential of your Wii and GCN games.


==Installation==
==Installation==
Run the installer and choose to install GeckoLoader.
Run the installer and choose to install GeckoLoader.


==Screenshots==
==User guide==
https://dlhb.gamebrew.org/wiihomebrews/geckoloadermodwii-01.png
https://dlhb.gamebrew.org/wiihomebrews/geckoloadermodwii-02.png
 
== Usage ==
=== Codes ===
=== Codes ===
<code>GeckoLoader</code> supports 2 methods:
GeckoLoader supports 2 methods:
* GCT files (Raw codelist).
* Textual Codelist (Ocarina Manager or Dolphin Format txt files).


# GCT files (Raw codelist)
It also supports the ability to use a folder filled with GCT files and/or Textual codelists as input for multi codelist patching.
# Textual Codelist (Ocarina Manager or Dolphin Format txt files)
 
<code>GeckoLoader</code> also supports the ability to use a folder filled with GCT files and/or Textual codelists as input for multi codelist patching.


=== DOL ===
=== DOL ===
<code>GeckoLoader</code> 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 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.


<code>GeckoLoader</code> also supports patching the same <code>dol</code> file multiple times until the file becomes filled with section data.
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
# In command prompt, input <code>GeckoLoader -h</code> for help on syntax and options
* Run the command <code>GeckoLoader &lt;dol&gt; &lt;codelist&gt; &lt;options&gt;</code> filling in the variables as needed.
# Run the command <code>GeckoLoader &lt;dol&gt; &lt;codelist&gt; &lt;options&gt;</code> filling in the variables as needed


Or:
Or:
* Fill out the relevant data in the GUI.
* Click the &quot;RUN&quot; button.


# Fill out the relevant data in the GUI
Your new patched <code>dol</code> file will be in the folder <code>./geckoloader-build</code> by default.
# Click the &quot;RUN&quot; 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.'''


== Common Issues ==
'''The allocation was invalid'''<br>
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'''<br>
'''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'''<br>
'''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'''<br>
'''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.'''


'''Init address specified for GeckoLoader (x) clobbers existing dol sections'''<br>
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'''<br>
'''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'''<br>
'''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)
* 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
* Removed deprecated option LEGACY which continuously broke various loaders and was only a limitation.
* Fun code refactoring that most people will never see :)
* 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.
 
'''Make sure to give proper credit to myself (JoshuaMK) and this project when you utilize it in a mod! It's much appreciated'''


==External Links==
==External Links==
* Github - https://github.com/JoshuaMKW/GeckoLoader
* GitHub - https://github.com/JoshuaMKW/GeckoLoader

Revision as of 11:53, 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: