prevnext   » SZS: Wiimms SZS Toolset » wbmgt: Wiimms BMG Tool » wbmgt patch

wbmgt patch

Patch the entered files by using the patch list specified by option --patch-bmg. The coding of the source files is not changed. The default destination is '%P/%F'.

Use »wszst patch --patch-bmg ...« to patch BMG files within a SZS file.

Contents

1.   Syntax

wbmgt PATCH [source]...

2.   Options

Options
Option Param Description
-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 Create only files that do not exist. Already existing files are ignored without warning. If set, --overwrite and --remove-dest are ignored.
-p --preserve Preserve file times (atime+mtime) while converting or copying files.
-H --no-header Suppress the syntax information section in BMG text files.
-B --brief If set, the information header in decoded text files is suppressed (for historical reasons same as --no-header). If set at least twice, all comments are suppressed and the output is packed without empty lines. If set 3 times, the #BMG file indentification is also suppressed.
--inf-size size Defines the 'INF0' size of new BMG files between 4 and 1000. The first 4 bytes of a INF0 record is a pointer to the string and the remaining bytes the string attributes. However, maximal 20 attribute bytes are supported and additional bytes are assumed to be NULL. All BMG files of MKW have a size of 8.
--force-attrib attrib Forces, that all attributes are set to this vector.
--def-attrib attrib Define the default attributes for BMG files. If not set, the default attributes are estimated. On text output, strings with default attributes are printed without attribute vector. The usual default attribute for MKW is [1].
--no-attrib Suppress the output of any BMG attributes at text BMG files.
--x-escapes Use \x{} escapes instead of \z{} escapes.
--old-escapes To be compatible with v1.43 and earlier, print 1A escape sequences with total size of >12 bytes as single words using \x{}. Also don't use \x{} and \u{} with parameter lists.
-1 --single-line If set, don't print continuation lines for BMG text output. If set twice, print only single text lines and suppress attributes like option --no-attrib does it.
--no-bmg-colors If set, suppress the output of '\c{color}' escape sequences for colors definitions in BMG text output to be compatible with old versions of the tools.
--bmg-colors Force output of '\c{color}' escape sequences with names, even for foreign (not MKWii) BMG files.
--no-bmg-inline Print BMG values as separate line before the message definition to be compatible with versions until v1.39. The output for the standard value 0x01000000 is always suppressed. This was the default until v1.43. Since v1.44, --bmg-inline is the default.
--bmg-inline [DEPRECATED] Print BMG values between message name and the equal sign using the format '[...]'. The output for the standard value (usually 0x01000000) is always suppressed. Since v1.44, the inline mode is the default. It can be disabled by option --no-bmg-inline to be compatible with versions until v1.39.
-l --long Print long numeric message IDs instead of alternative message names like Txx, Uxx or Mxx.
-X --export Enable the export modus and create small and machine readable text files for easy post processing. The option works similar like -HBl11 for BMG text files.
-i --ignore Ignore non existing source files without warning.
-P --patch-bmg mode[=param] This option specifies a BMG patch mode. Some of the modes need a parameter or a file name of a BMG patch file (raw or text BMG), both separated by an equal sign. Modes with required file names are PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL and NOTEQUAL. A mode with text parameter is FORMAT. Standalone modes are ID, ID-ALL, UNICODE, RM-ESCAPES, RM-CUPS, CT-COPY, CT-FORCE-COPY and CT-FILL. Unique abbreviations are allowed.

If this option is used multiple times, all patch files will be processed in the entered order. --patch is a short cut.

--msg list If this option is set, the BMG messages are filtered by this list. Only enabled messages are exported to the ouput BMG file (binary or text).

The parameter is a list of message ids (short MID, 'Txx' or 'Uxx' or Mxx' or hex number) or message ranges (MID:MID) or one of the keywords NONE, PARAM, CUPS, TRACKS, ARENAS, CHAT, CTCODE, CTTRACKS or ALL. If an element is preceeded by a minus sign, it is removed from the filter list (disabled).

--align size Define an align value for the sub sections in the archive. The value must be a power of 2 and the default value is 32 (0x20)

3.   Description

4.   -P mode[=param]   |   --patch-bmg mode[=param]

This option specifies a BMG patch mode. Some of the modes need a parameter or a file name of a BMG patch file (raw or text BMG), both separated by an equal sign. Modes with required file names are PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL and NOTEQUAL. A mode with text parameter is FORMAT. Standalone modes are ID, ID-ALL, UNICODE, RM-ESCAPES, RM-CUPS, CT-COPY, CT-FORCE-COPY and CT-FILL. Unique abbreviations are allowed. If this option is used multiple times, all patch files will be processed in the entered order. --patch is a short cut.
For each appereance of this option, the mode and the patch file combination is appended to an internal patching list. All source files are patched by all files of this patching list in the entered order.

The mode describes how to patch the source file by the current patch file. wbmgt supports 8 patching modes with source files, abbreviations are allowed:

Patching Modes with source files
Mode Copy ... if
only
in
source
only
in
patch
source
!=
patch
source
==
patch
REPLACE source patch both
INSERT source patch source both
OVERWRITE source patch patch both
DELETE source
MASK source both
EQUAL both
NOT-EQUAL source
PRINT source print print

There are some more modes, that do not use any source file.

FORMAT=string acts like PRINT=file, but us the same format string for all printings. ID and ID-ALL insert the MID of each message to identifiy it while playing.

Modes RM-CUPS, CT-COPY, CT-FORCE-COPY and CT-FILL support CT-CODE.

4.1   REPLACE=file

The patch file will only replace strings that are already defined in the source. Other strings are ignored.

This is the standard usage.

4.2   INSERT=file

Insert only new strings into the source. Already existing strings are untouched.

4.3   OVERWRITE=file

All strings of the patch file will overwrite the string in the source file. Non exisintg strings are created.

4.4   DELETE=file

Remove strings from the source that are defined in the patch file. The content of the single string in the patch file is ignored.

4.5   MASK=file

Remove strings from the source that are not defined in the patch file. The content of the single string in the patch file is ignored.

4.6   EQUAL=file

Remove strings from the source that are not defined in the patch file or that are different. Leave equal strings only.

4.7   NOT-EQUAL=file

Remove strings from the source that are defined in the patch file and that are equal.

4.8   PRINT=file

The patch file will only change (not replace) strings that are already defined in the source. Other strings are ignored.

The new string is created like a printf function call. Is a escape sequence is found, it is replaced by its (calculated content). The format of escape sequences is one of:

'%' CONV_LETTER
'%' LEN CONV_LETTER
'%' BEGIN ':' END CONV_LETTER
An escape sequence starts always with a percent sign and ends with a conversion letter (CONV_LETTER). In between a length (LEN) or an index range (BEGIN:END) can be specified to select a sub string.

The following conversion letters are supported:

%s or %S
Copy the source string.
%i
Insert the hexadecimal message ID.
%I
Insert the hexadecimal message ID with at least 4 digits.
%n or %N
Insert the name of the source file. This helps to identify the relevant source SZS.
%m
Set a marker at the current place. This marker can be used by %M and %L.
%M
%#M works like %L, but don't insert anything to the output. If the line # is empty, then all characters behind the last marker set by %m are removed.
%l or %L
The source is split into lines at LF characters. The lines are numbered from 0 to N-1. %#l and also %#L selects line # and copies it to the destination. Non-existing lines are interpreted as blank lines.

%#L has an additional feature: If the line is empty, then all characters behind the last marker set by %m are removed.

4.9   FORMAT=string

Syntax: format=string

Mode FORMAT works like mode PRINT. The only difference is, that FORMAT defines exact one format strings which is used for every source string of the current message set.

4.10   ID

The mode ID is a standalone mode without filename.

Each defined and non empty message is prefixed by a letter representing the SZS filename (examples: T=Titel, E=Event, S=MenuSingle, ...) and the message id as hex number and a colon.

Example: 'Hello' of Event_E.szs becomes 'E1194:Hello'.

This mode helps to identify the messages while running the game.

4.11   ID-ALL

The mode ID-ALL is a standalone mode without filename.

Each defined message including empty messages is prefixed by a letter representing the SZS filename (examples: T=Titel, E=Event, S=MenuSingle, ...) and the message id as hex number and a colon.

Example: 'Hello' of Event_E.szs becomes 'E1194:Hello' and an empty message becomes 'E1200'.

4.12   RM-CUPS

The mode RM-CUPS is a standalone mode without filename and supports the CT-CODE extension of Wiimms SZS Tools.

All defined racing cup names in the MID range 23F0–23F7 are removed.

4.13   CT-COPY

The mode CT-COPY is a standalone mode without filename and supports the CT-CODE extension of Wiimms SZS Tools.

All defined track and arena name message are copied to the messages in the MID range 4000–4029, but only, if the destinaton message is not defined or empty.

4.14   CT-FORCE-COPY

The mode CT-FORCE-COPY is a standalone mode without filename and supports the CT-CODE extension of Wiimms SZS Tools.

All defined track and arena name message are copied to the messages in the MID range 4000–4029. Existing messages are overwritten.

4.15   CT-FILL

The mode CT-FILL is a standalone mode without filename and supports the CT-CODE extension of Wiimms SZS Tools.

All messages of MID range 4000–40ff, that are not defined or empty, will be defined and set to the message 'Slot xx', where xx is the right 2 letters of the message id. Additionally, message 4100 is set to '???', if not already defined or empty.

The definitions will only be done, if at least one track or arena name message is alrrady defined.

Command reference

»wbmgt cat«,   »wbmgt decode«,   »wbmgt diff«,   »wbmgt encode«,   »wbmgt list«,   »wbmgt mix«,   »wbmgt patch«,   »wctct bmg«,   »wctct cat«,   »wctct create«,   »wctct decode«,   »wctct dump«,   »wctct patch«,   »wctct tracks«,   »wszst check«,   »wszst compress«,   »wszst copy«,   »wszst create«,   »wszst decompress«,   »wszst encode«,   »wszst extract«,   »wszst kcl«,   »wszst kmp«,   »wszst normalize«,   »wszst patch«,   »wszst slots«,   »wszst update«,   »wszst xall«,   »wszst xdecode«,   »wszst xexport«.

5.   --msg list

If this option is set, the BMG messages are filtered by this list. Only enabled messages are exported to the ouput BMG file (binary or text). The parameter is a list of message ids (short MID, 'Txx' or 'Uxx' or Mxx' or hex number) or message ranges (MID:MID) or one of the keywords NONE, PARAM, CUPS, TRACKS, ARENAS, CHAT, CTCODE, CTTRACKS or ALL. If an element is preceeded by a minus sign, it is removed from the filter list (disabled).
This option activates an output filter. Only messages explicitly enabled will reach the output. All other messages are ignored for the output.

Filter Ranges
Name MID Range Description
NONE all Clear the filter at deny all messages.
ALL all Allow all messages.
PARAM 3FF0-3FFF A range to submit settings to other tools like mkw-ana.
CUPS 23F0-23F7
2489-248A
4200-423F
4300-43FF
Names of racing and battle cups. The last 2 ranges are only used, if CT-CODE is active.
TRACKS 2454-2473
2490-24AF
4000-401F
402a-40FF
Names of racing tracks. The last 2 ranges are only used, if CT-CODE is active.
ARENAS 24B8-24c1
24CC-24d5
4020-402B
Names of battle arenas. The last range is only used, if CT-CODE is active.
CHAT 1194-11f3 96 messages for the online chat.
CTCODE 4000-43FF All messages used by CT-CODE. It overlaps other ranges.
CTTRACKS 4000-40FF All racing track and battle arena names used by CT-CODE. It overlaps other ranges.