prevnext   » SZS: Wiimms SZS Toolset » wstrt: Wiimms StaticR Tool » wstrt patch

wstrt patch

Patch 'main.dol' and 'StaticR.rel' files of Mario Kart Wii. Wildcards and pipe characters are parsed. No backup is made.

Contents

1.   Syntax

wstrt PATCH [file]...

2.   Options

Options
Option Param Description
--no-wildcards Disable wildcard parsing and use each filename exactly as specified.
--in-order Process the input files in order of the command line and don't delete duplicates.
-i --ignore Ignore non existing source files without warning.
-d --dest path Define a destination path (directory/file). The destination - means: write to standard output.

The path may contain escape sequences: %Q is replaced by the fully qualified source name. %P and %F are replaced by the source path or by the filename. %N and %E are replaced by source filename without extension or by the source extension. Finally, %T is replaced by the default extension of the destination format.

A '?' direct behind '%' in %E and %T conversions avoid that the same extension is used twice in row.

-D --DEST path Like --dest, but create the directory path automatically.
-E --esc char Define an alternative escape character for destination files. The default is '%'. For Windows batch files it is a good choice to set '-E$'.
-o --overwrite Overwrite already existing files without warning and ignore option --number.
--number If a file already exist, append a number directly before the file extension to make the filename unique. If other numbered files already exist (ignoring case), use the maximum existing index+1. --num is a short cut.
-r --remove-dest Remove already existing files before creating it. If set, --overwrite is ignored. --rm-dest is a short cut.
-u --update Update only existing files and don't create new files. If set, --overwrite and --remove-dest are ignored.
-p --preserve Preserve file times (atime+mtime) while converting or copying files.
--clean-dol Remove additional DOL sections, reset entry point and VBI address, and try to restore other patches known by SZS tools. This is done after loading a DOL and before analysing and patching to allow re-patching.
-T --tracks tracks Define a new track order. A comma separated list in the format [a=]b or a:=b is expected. 'a' and 'b' are track names or slot numbers. 'a' is the destination slot and 'b' the assigned track. If 'a' is omitted, the next slot is used; this means [a=]b,c,d is possible.

Tracks will only be exchanged so that always all tracks are assigned. But if using ':=' the new slots are assigned without exchanging and the old values are lost.

-A --arenas arenas Define a new arena order. A comma separated list in the format [a=]b or a:=b is expected. 'a' and 'b' are arena names or slot numbers. 'a' is the destination slot and 'b' the assigned arena. If 'a' is omitted, the next slot is used; this means [a=]b,c,d is possible.

Arenas will only be exchanged so that always all arenas are assigned. But if using ':=' the new slots are assigned without exchanging and the old values are lost.

-R --region region If 'region' is an unsigned number, the region for online versus races and for battles is patched to the entered number. If the number is prefixed by the letter 't', a test mode is enabled and the places are patched with ascending numbers. You can patch StaticR.rel and main.dol.

Otherwise a keyword is expected. Official regions are: JAPAN(0), AMERICA(1), EUROPE(2), AUSTRALIA(OCEANIA,3), KOREA(4), TAIWAN(5) and CHINA(6). RESTORE restores the original Nintendo values and NONE disables region patching (default).

See https://wiimmfi.de/reg-list for other regions.

--vs-region region Same as --region, but only for online versus races.
--bt-region region Same as --region, but only for online battles.
--all-ranks [=mode] If set to ON (default without parameter), the server query to Nintendos servers is manipulated, so that the player will find all players in online races independent of their ranking points. Value RESTORE disables this feature and restores Nintendos original query. Value NONE disables this kind of patching (default).
--https mode Patch the https strings of REL and DOL files. 'mode' is one of the following keywords:

RESTORE restores the original URLs and domains.

HTTP replaces HTTPS requests by HTTP and sub-domain 'naswii.' by 'nas.'.

DOMAIN replace HTTPS requests by HTTP and the domain 'nintendowifi.net' by a domain specified by option --domain.

SAKE0 same as DOMAIN, but don't replace URLs with SAKE domain.

SAKE1 same as SAKE0, but replace HTTPS of SAKE domains.

--domain dom Define a domain for option --https. The default is 'wiimmfi.de'.
--wiimmfi Patch the files for the new custom server. It is a short cut for --https domain --domain wiimmfi.de.
--pb-mode mode Mode for the patched-by string: OFF disables modifications. RESET resets the string to stars. WIIMMFI defines it only, if patched for Wiimmfi. AUTO (default) defines it only, if patched. ALWAYS defines it always.
--wc24 Exclude 2 strings of file StaticR.rel from --wiimmfi and --domain patch to enable WC24 support.
--vs char Reset (str is empty) or replace the second character of 'vs' to create an own online world for versus races. The file StaticR.rel will be patched at 4 places.
--bt char Reset (str is empty) or replace the second character of 'bt' to create an own online world for battles. The file StaticR.rel will be patched at 4 places.
--cannon idx,p1,p2,p3,p4 Patch parameters for cannon with index IDX (0..2). Parameters P1..P4 are floating point numbers. Repeat this option for each cannon, that should be modified.
--meno Patch some 'MenuSingle' and 'MenuMulti' strings of file StaticR.rel for online usage to 'MenO*' (MenuOnline) to distinguish between offline and online races.
--add-lecode Add newest LE-CODE starter from 2023-12 to main.dol.
--add-old-lecode Add old LE-CODE starter from 2019-01 to main.dol.
--add-ctcode If source is an original main.dol file of MKWii, then append 2 sections (usually T2 and D8) with CT-CODE. The CTCODE is inserted after sections defined by --add-section and then only, if there are no address collisions.

If --ct-dir is used, then files named rmc[ejp]/boot_code.bin and boot_code.bin for T2, and rmc[ejp]/boot_data.bin and boot_data.bin for D8 are searched.

--ct-dir dir Define a search directory for CT-CODE parts and use the internal copies only, if no valid file is found. Each file is searched without and then with extension '.bz2'. For both cases bzip2 files are detected and decompressed. Only files with correct file type are accepted.

Use this option multiple times to define more than one search directory.

--move-d8 Move the CT-CODE section D8 to another place at the middle of binary. It is done automatically, if the original place overlaps other existing sections.
--add-section file Each option call adds the filename to an internal list. Each file must be of type GCT, GCT-TXT, GCH or WCH. All GCT files together are combined with an internal code handler to one section (like a GCH file). GCH and WCH define sections and patches. The defined sections are added and VBI hooks are optionally initialized. Use option --force to allow overlapped sections. Use option --verbose up to 2 times for a log.

If parameter FILE contains at least one wildcard (e.g. "*.GCT"), then FILE is used as search pattern and all found files are added. Quote FILE for this purpose.

If a single file is not found and the filename (not path) contains at least 1 '@' character, then all '@' characters of it are replaced by the region code (one of P,E,J,K) for a second try.

The intention of this option is to add a Gecko Code Handler and cheat codes to a main.dol for automatic execution.

--gct-move [=mode] If a section is of type gecko code handler + cheat code, then make the heap smaller and move the cheat codes before the FST section.

Parameter MODE is optional. If set, OFF disables and ON enables this feature. For mode AUTO (default) this feature is enabled, if the cheat codes are too large (end>0x80003000) or for internal conflicts.

--gct-addr address If --gct-move is active, a text section is created to manage the code handler. This section is only needed at start and is placed by default at address 0x802c0000 (part of BSS, good address for all 4 regions). This option changes the start address of the section. If address is 0 or invalid, then unused BSS space is searched.
--gct-space size Define the minimal space for the code part of --gct-move. This value is ignored, if it is smaller than the size of the cheat codes. This debug option was only implemented to test the memory allocation by --gct-move with large blocks.
--allow-user-gch [=mode] This option is only relevant, if main.dol is patched for wiimmfi.de. It is dedicated to custom distribution creators for test purposes. If enabled, a user can load an own instance of Gecko Code Handler and cheat codes and can use them online. If disabled, patching for online modus is disabled if an alternative Gecko Code Handler is detected.

Parameter MODE is optional. If set, OFF disables and ON enables this feature. For mode AUTO (default) it depends on other options.

--force Accept overlapped sections.

>>> THE RESULT IS MOST LIKELY INVALID! <<<

3.   Patching StaticR.rel

If this tools appeared, it can only analyze and patch the StaticR.rel files of Mario Kart Wii.

The following table shows the options to patch a StaticR.rel file:

Options
Option Param Description
-T --tracks tracks Define a new track order. A comma separated list in the format [a=]b or a:=b is expected. 'a' and 'b' are track names or slot numbers. 'a' is the destination slot and 'b' the assigned track. If 'a' is omitted, the next slot is used; this means [a=]b,c,d is possible.

Tracks will only be exchanged so that always all tracks are assigned. But if using ':=' the new slots are assigned without exchanging and the old values are lost.

-A --arenas arenas Define a new arena order. A comma separated list in the format [a=]b or a:=b is expected. 'a' and 'b' are arena names or slot numbers. 'a' is the destination slot and 'b' the assigned arena. If 'a' is omitted, the next slot is used; this means [a=]b,c,d is possible.

Arenas will only be exchanged so that always all arenas are assigned. But if using ':=' the new slots are assigned without exchanging and the old values are lost.

-R --region region If 'region' is an unsigned number, the region for online versus races and for battles is patched to the entered number. If the number is prefixed by the letter 't', a test mode is enabled and the places are patched with ascending numbers. You can patch StaticR.rel and main.dol.

Otherwise a keyword is expected. Official regions are: JAPAN(0), AMERICA(1), EUROPE(2), AUSTRALIA(OCEANIA,3), KOREA(4), TAIWAN(5) and CHINA(6). RESTORE restores the original Nintendo values and NONE disables region patching (default).

See https://wiimmfi.de/reg-list for other regions.

--all-ranks [=mode] If set to ON (default without parameter), the server query to Nintendos servers is manipulated, so that the player will find all players in online races independent of their ranking points. Value RESTORE disables this feature and restores Nintendos original query. Value NONE disables this kind of patching (default).

4.   Patching main.dol

End 2013, analysing of DOL files and patching of main.dol of Mario Kart Wii were added.

The following table shows the option to patch a main.dol file:

Options
Option Param Description
--add-ctcode If source is an original main.dol file of MKWii, then append 2 sections (usually T2 and D8) with CT-CODE. The CTCODE is inserted after sections defined by --add-section and then only, if there are no address collisions.

If --ct-dir is used, then files named rmc[ejp]/boot_code.bin and boot_code.bin for T2, and rmc[ejp]/boot_data.bin and boot_data.bin for D8 are searched.

--ct-dir dir Define a search directory for CT-CODE parts and use the internal copies only, if no valid file is found. Each file is searched without and then with extension '.bz2'. For both cases bzip2 files are detected and decompressed. Only files with correct file type are accepted.

Use this option multiple times to define more than one search directory.

--add-section file Each option call adds the filename to an internal list. Each file must be of type GCT, GCT-TXT, GCH or WCH. All GCT files together are combined with an internal code handler to one section (like a GCH file). GCH and WCH define sections and patches. The defined sections are added and VBI hooks are optionally initialized. Use option --force to allow overlapped sections. Use option --verbose up to 2 times for a log.

If parameter FILE contains at least one wildcard (e.g. "*.GCT"), then FILE is used as search pattern and all found files are added. Quote FILE for this purpose.

If a single file is not found and the filename (not path) contains at least 1 '@' character, then all '@' characters of it are replaced by the region code (one of P,E,J,K) for a second try.

The intention of this option is to add a Gecko Code Handler and cheat codes to a main.dol for automatic execution.