aboutsummaryrefslogtreecommitdiff
path: root/project/src/ui/ui-wctct.c
diff options
context:
space:
mode:
Diffstat (limited to 'project/src/ui/ui-wctct.c')
-rw-r--r--project/src/ui/ui-wctct.c1952
1 files changed, 1952 insertions, 0 deletions
diff --git a/project/src/ui/ui-wctct.c b/project/src/ui/ui-wctct.c
new file mode 100644
index 0000000..cd7f2d6
--- /dev/null
+++ b/project/src/ui/ui-wctct.c
@@ -0,0 +1,1952 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * *
+ ***************************************************************************
+ * *
+ * This file is part of the SZS project. *
+ * Visit https://szs.wiimm.de/ for project details and sources. *
+ * *
+ * Copyright (c) 2011-2020 by Dirk Clemens <wiimm@wiimm.de> *
+ * *
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
+ * *
+ ***************************************************************************
+ * *
+ * >>> This file is automatically generated by './src/gen-ui.c'. <<< *
+ * >>> Do not edit this file! <<< *
+ * *
+ ***************************************************************************/
+
+#include <getopt.h>
+#include "ui-wctct.h"
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// OptionInfo[] ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
+{
+ {0,0,0,0,0,0,0,0,0,0}, // OPT_NONE,
+
+ //----- command specific options -----
+
+ { OPT_ROUND, false, false, false, false, false, 0, "round",
+ 0,
+ "Print additional lines with rounded values (to 3 and 2 bytes for"
+ " floats and 7 and 6 bytes for doubles)."
+ },
+
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print long numeric message IDs instead of alternative message names"
+ " like Txx, Uxx or Mxx."
+ },
+
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in BMG text files."
+ },
+
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress cross reference comments."
+ },
+
+ { OPT_RAW, false, false, false, false, false, 0, "raw",
+ 0,
+ "Print BMG messages as UTF-8 text without escape sequences."
+ },
+
+ { OPT_BMG_ENCODING, false, false, false, false, false, 0, "bmg-encoding",
+ "name",
+ "Force a BMG encoding for new BMG files. Accepted encoding names are:"
+ " CP-1252, UTF-16BE (or UTF-16), SHIFT-JIS, UTF-8 and AUTO for"
+ " automatic detection (default). Same keywords without minus signs are"
+ " accepted too.\n"
+ " Mario Kart Wii uses encoding UTF-16BE; the default if no other"
+ " encoding is defined."
+ },
+
+ { OPT_BMG_INF_SIZE, false, false, false, false, false, 0, "bmg-inf-size",
+ "size",
+ "Defines the 'INF1' size of new BMG files between 4 and 1000. The"
+ " first 4 bytes of a INF1 record is an offset into the string pool and"
+ " the remaining bytes the attributes. Maximal 40 attribute bytes are"
+ " supported and additional bytes are assumed to be NULL. All BMG files"
+ " of MKW have a size of 8."
+ },
+
+ { OPT_BMG_MID, true, false, false, false, false, 0, "bmg-mid",
+ "[mode]",
+ "Control the creation of BMG section MID1. Suppress the creation, if"
+ " mode is OFF. Force the creation, if mode is ON. On mode AUTO"
+ " (default), the source is analysed for the decision."
+ },
+
+ { OPT_FORCE_ATTRIB, false, false, false, false, false, 0, "force-attrib",
+ "attrib",
+ "Forces, that all attributes are set to this vector. See"
+ " https://szs.wiimm.de/doc/bmg/attrib for the syntax."
+ },
+
+ { OPT_DEF_ATTRIB, false, false, false, false, false, 0, "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]. See https://szs.wiimm.de/doc/bmg/attrib"
+ " for the syntax."
+ },
+
+ { OPT_NO_ATTRIB, false, false, false, false, false, 0, "no-attrib",
+ 0,
+ "Suppress the output of any BMG attributes if creating BMG text files."
+ },
+
+ { OPT_X_ESCAPES, false, false, false, false, false, 0, "x-escapes",
+ 0,
+ "Use \\x{} escapes instead of \\z{} escapes."
+ },
+
+ { OPT_OLD_ESCAPES, false, false, false, false, false, 0, "old-escapes",
+ 0,
+ "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."
+ },
+
+ { OPT_SINGLE_LINE, false, false, false, false, false, '1', "single-line",
+ 0,
+ "If set, don't print continuation lines for BMG text output. If set"
+ " twice, print only single text lines but not value lines."
+ },
+
+ { OPT_NO_BMG_COLORS, false, false, false, false, false, 0, "no-bmg-colors",
+ 0,
+ "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."
+ },
+
+ { OPT_BMG_COLORS, false, false, false, false, false, 0, "bmg-colors",
+ 0,
+ "Force output of '\\c{color}' escape sequences with names, even for"
+ " foreign (not MKWii) BMG files."
+ },
+
+ { OPT_NO_BMG_INLINE, false, false, false, false, false, 0, "no-bmg-inline",
+ 0,
+ "Print BMG attributes 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."
+ },
+
+ { OPT_EXPORT, false, false, false, false, false, 'X', "export",
+ 0,
+ "Enable the export mode and create small and machine readable text"
+ " files for easy post processing. The option works similar like -HB"
+ " for CT-CODE output."
+ },
+
+ { OPT_NO_PARAM, false, false, false, false, false, 'P', "no-param",
+ 0,
+ "Disable parameter support in decoded KMP text files."
+ },
+
+ { OPT_NO_ECHO, false, false, false, false, false, 0, "no-echo",
+ 0,
+ "Suppress output of @ECHO commands while scanning text files."
+ },
+
+ { OPT_NO_CHECK, false, false, false, false, false, 'N', "no-check",
+ 0,
+ "Do not make plausibility checks for KCL and KMP files."
+ },
+
+ { OPT_LIST, false, false, false, false, true, 0, "list",
+ 0,
+ "Cancel all previous --rel and --full and enter LIST mode (default)"
+ " for text output.\n"
+ " In LIST mode only a track list is generated. On scanning the tracks"
+ " are automatically distributed to the cups. This makes rearanging"
+ " very simple."
+ },
+
+ { OPT_REF, false, false, false, false, false, 0, "ref",
+ 0,
+ "Cancel all previous --list and --full and enter REFERENCE mode for"
+ " text output.\n"
+ " In REFERENCE mode all tracks and cups are printed separately. After"
+ " scanning the cup and track layout is the same as the original code"
+ " file."
+ },
+
+ { OPT_FULL, false, false, false, false, false, 0, "full",
+ 0,
+ "Cancel all previous --list and --rel and enter FULL mode for text"
+ " output.\n"
+ " FULL mode is a combination of LIST and REF modes."
+ },
+
+ { OPT_HEX, false, false, false, false, false, 0, "hex",
+ 0,
+ "Normally and if available, names are printed for music and property"
+ " slots. If this option is set, hex numbers are printed always."
+ },
+
+ { OPT_IMAGES, false, false, false, false, false, 0, "images",
+ "dir",
+ "If creating a CT-CODE BRRES or SZS file, then search the 8 strap"
+ " images in the specified directory. The images are searched with"
+ " extensions .png, .tex, .tex0 and without extension in this order"
+ " until a valid image is found. All images will be resized to the"
+ " correct width and height and converted to format TEX.RGB565 without"
+ " mipmaps. If no valid image is found, a hard coded default image is"
+ " used."
+ },
+
+ { OPT_LOAD_BMG, false, false, false, false, false, 0, "load-bmg",
+ "file",
+ "Load immediately the file to fill an internal message pool. The"
+ " option can be used multiple times to fill the message pool by"
+ " different sources. A later message overrides the previous message.\n"
+ " The internal message pool is patched by all --patch-bmg options."
+ },
+
+ { OPT_PATCH_BMG, false, false, false, false, false, 0, "patch-bmg",
+ "mode[cond][=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."
+ " Modes with text parameter are FORMAT, REGEXP and RM-REGEXP. "
+ " Standalone modes are ID, ID-ALL, UNICODE, RM-ESCAPES, RM-CUPS,"
+ " CT-COPY, CT-FORCE-COPY, CT-FILL, LE-COPY, LE-FORCE-COPY, LE-FILL,"
+ " X-COPY, X-FORCE-COPY and X-FILL. Unique abbreviations are allowed.\n"
+ " The optional condition COND is either '?MID' or '!MID'. In case of"
+ " '?MID', the patch is only applied if the message id MID already"
+ " exists. In case of '!MID', the patch is only applied if the message"
+ " id MID does not exists.\n"
+ " If this option is used multiple times, all patch files will be"
+ " processed in the entered order. Read"
+ " https://szs.wiimm.de/opt/patch-bmg for more details."
+ },
+
+ { OPT_MACRO_BMG, false, false, false, false, false, 0, "macro-bmg",
+ "file",
+ "Load a BMG file and add the messages to the macro library; already"
+ " existing entries are replaced. The macro library is accessed by"
+ " escape sequence \\m{MID} as fallback, if the active file has not"
+ " already defined the message MID by itself."
+ },
+
+ { OPT_FILTER_BMG, false, false, false, false, false, 0, "filter-bmg",
+ "list",
+ "If this option is set, the BMG messages are filtered by this list."
+ " Only enabled messages are exported to the output BMG file (binary or"
+ " text).\n"
+ " 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, IDENT (=ID), PARAM, CUPS, TRACKS, ARENAS, CHAT,"
+ " CTCODE (=CT), CTUPS, CTTRACKS, CTARENAS, CTREFS, LECODE (=LE),"
+ " LEUPS, LETRACKS, LEARENAS, LEREFS, XCODE (=X), XUPS, XTRACKS,"
+ " XARENAS, XREFS, ALLCODE, ALLUPS, ALLTRACKS, ALLARENAS, ALLREFS,"
+ " GENERIC or ALL. If an element is preceded by a minus sign, it is"
+ " removed from the filter list (disabled).\n"
+ " With v2.01a, this option was renamed from --msg to the more"
+ " meaningful name --filter-bmg. The old name is still available.\n"
+ " Read https://szs.wiimm.de/opt/filter-bmg for more details."
+ },
+
+ { OPT_PATCH_NAMES, false, false, false, false, false, 0, "patch-names",
+ 0,
+ "If set, the names of the CUP1 and CSR1 sections are patched by the"
+ " loaded BMG files directly after loading the source files."
+ },
+
+ { OPT_ORDER_BY, false, false, false, false, false, 0, "order-by",
+ "bmg",
+ "Load the BMG file and filter track names. Then before creating output"
+ " files, re-distribute the tracks of the additonal cups (9-) to the"
+ " same cups by the order of the read track names. Tracks without BMG"
+ " reference are placed at the end of all tracks. This option modifes"
+ " only the track order of the cups, but will not change any name."
+ },
+
+ { OPT_ORDER_ALL, false, false, false, false, false, 0, "order-all",
+ 0,
+ "Used together with option --order-by: Re-distribute the tracks of all"
+ " cups beginning with Mushroom Cup."
+ },
+
+ { OPT_DYNAMIC, false, true, false, false, false, 0, "dynamic",
+ 0,
+ "Enable dynamic length calculation for the CTGP_CODE part. The"
+ " surrounding TEX and BRRES files are also adjusted. The usage of this"
+ " option is EXPERIMENTAL."
+ },
+
+ { OPT_WRITE_TRACKS, false, false, false, false, true, 0, "write-tracks",
+ "file",
+ "Create a machine readable file reflecting the racing track"
+ " distribution to the cups. One line of format 'IDX|MID|NAME' is"
+ " written for each track. --wtracks is a short cut."
+ },
+
+ { OPT_DEST, false, false, false, false, false, 'd', "dest",
+ "path",
+ "Define a destination path (directory/file). The destination - means:"
+ " write to standard output.\n"
+ " 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.\n"
+ " A '?' direct behind '%' in %E and %T conversions avoid that the"
+ " same extension is used twice in row. Read"
+ " https://szs.wiimm.de/opt/dest for more details."
+ },
+
+ { OPT_DEST2, false, false, false, false, false, 'D', "DEST",
+ "path",
+ "Like --dest, but create the directory path automatically."
+ },
+
+ { OPT_ESC, false, false, false, false, false, '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$'."
+ },
+
+ { OPT_OVERWRITE, false, false, false, false, false, 'o', "overwrite",
+ 0,
+ "Overwrite already existing files without warning and ignore option"
+ " --number."
+ },
+
+ { OPT_NUMBER, false, false, false, false, false, 0, "number",
+ 0,
+ "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."
+ },
+
+ { OPT_REMOVE_DEST, false, false, false, false, false, 'r', "remove-dest",
+ 0,
+ "Remove already existing files before creating it. If set, --overwrite"
+ " is ignored. --rm-dest is a short cut."
+ },
+
+ { OPT_UPDATE, false, false, false, false, false, 'u', "update",
+ 0,
+ "Update only existing files and don't create new files. If set,"
+ " --overwrite and --remove-dest are ignored."
+ },
+
+ { OPT_PRESERVE, false, false, false, false, false, 'p', "preserve",
+ 0,
+ "Preserve file times (atime+mtime) while converting or copying files."
+ },
+
+ { OPT_IGNORE, false, false, false, false, false, 'i', "ignore",
+ 0,
+ "Ignore non existing source files without warning."
+ },
+
+ { OPT_SECTIONS, false, false, false, false, true, 0, "sections",
+ 0,
+ "Print in machine readable sections and parameter lines."
+ },
+
+ {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 46
+
+ //----- global options -----
+
+ { OPT_VERSION, false, false, false, false, false, 'V', "version",
+ 0,
+ "Stop parsing the command line, print a version info and exit."
+ },
+
+ { OPT_HELP, false, false, false, false, false, 'h', "help",
+ 0,
+ "Stop parsing the command line, print a help message and exit."
+ },
+
+ { OPT_XHELP, false, false, false, false, false, 0, "xhelp",
+ 0,
+ "Stop parsing the command line and print a help message with all"
+ " commands included. Exit after printing."
+ },
+
+ { OPT_ALLOW_ALL, false, false, false, false, false, 0, "allow-all",
+ 0,
+ "Usually commands accept only options with impact to the command. All"
+ " other options fire a syntax error. But if --allow-all is set, all"
+ " commands accept all options.\n"
+ " This makes changing the command of a long command line without"
+ " removing useless options easier. It also helps to override wrong"
+ " option permissions."
+ },
+
+ { OPT_COMPATIBLE, false, false, false, false, false, 0, "compatible",
+ "vers",
+ "The option expects a version number (format '#.##' or 'v#.##') or a"
+ " revision number (format 'r#') as parameter. If set, the tools try to"
+ " create BMG and KMP text files, that are compatible to the entered"
+ " version of the tools. This may override other legacy options."
+ },
+
+ { OPT_WIDTH, false, false, false, true, false, 0, "width",
+ "width",
+ "Define the terminal width (number of columns) for help and some other"
+ " messages and disable the automatic detection of the terminal width."
+ },
+
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "Be quiet and print only error messages. Multiple usage is possible."
+ " The impact is command dependent. In general: If set three times,"
+ " different file format warnings are suppressed."
+ },
+
+ { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose",
+ 0,
+ "Be verbose and print more progress information. Multiple usage is"
+ " possible. The impact is command dependent."
+ },
+
+ { OPT_LOGGING, false, false, false, false, false, 'L', "logging",
+ 0,
+ "This debug option enables the logging of internal lists and maps."
+ },
+
+ { OPT_DE, false, false, false, false, false, 0, "de",
+ 0,
+ "Use german track and arena names."
+ },
+
+ { OPT_COLORS, true, false, false, true, false, 0, "colors",
+ "[=modus]",
+ "Define the modus for colored text output. Allowed keywords are: OFF"
+ " or NO-COLORS to disable colors, AUTO (default) for automatic"
+ " detection, ON for automatic detection but never OFF, 8-COLORS and"
+ " 256-COLORS to force 8 or 256 color support. Without parameter, ON is"
+ " used.\n"
+ " AUTO will enable colorized output only for terminals. AUTO and ON"
+ " use environment variable TERM to find the correct color modus.\n"
+ " If a command is prefixed by 'C-', then --color=ON is used"
+ " implicitly as default."
+ },
+
+ { OPT_NO_COLORS, false, false, false, true, false, 0, "no-colors",
+ 0,
+ "Deactive colorized text. This is the default, if an output file is"
+ " not a terminal."
+ },
+
+ { OPT_CT_CODE, false, false, false, false, false, 0, "ct-code",
+ 0,
+ "Enable CT-CODE support. See https://szs.wiimm.de/opt/ctcode for"
+ " details."
+ },
+
+ { OPT_LE_CODE, true, false, false, false, false, 0, "le-code",
+ "[=param]",
+ "Enable LE-CODE and CT-CODE support. The optional parameter is"
+ " deprecated and ignored. See https://szs.wiimm.de/opt/lecode for"
+ " details."
+ },
+
+ { OPT_OLD_SPINY, false, false, false, false, false, 0, "old-spiny",
+ 0,
+ "Disable the new feature to hold a Spiny Shell at the tail."
+ " https://szs.wiimm.de/opt/ctcode for details."
+ },
+
+ { OPT_CRS1, false, false, false, false, false, 0, "crs1",
+ "value",
+ "Store this value into all 8 members of the property array of the CRS1"
+ " header if reading a CT-TEXT. The default value is 0x800."
+ },
+
+ { OPT_CHDIR, false, false, false, false, false, 0, "chdir",
+ "dir",
+ "Set a new working directory for all following options, for all"
+ " parameters and for the command execution. This option can be used"
+ " multiple times, but for parameter parsing and for command execution"
+ " only the last usage is relevant. Nevertheless, '@param' values are"
+ " scanned while reading the command line."
+ },
+
+ { OPT_CONST, false, false, false, false, false, 'c', "const",
+ "list",
+ "Define constant values, that are used by the internal encoders and by"
+ " the numeric options as predefined global variables. This option"
+ " allows a conditional encoding of text files. It can be used multiple"
+ " times for multiple definitions.\n"
+ " The parameter is a comma separated list of terms and a term is"
+ " 'name=expression'. The expression is calculated by the text parser."
+ },
+
+ { OPT_MAX_FILE_SIZE, false, false, false, false, false, 'M', "max-file-size",
+ "size",
+ "This security option defines the maximum file size for input files;"
+ " larger files are ignored with a warning. The default unit is MiB and"
+ " the default size is 100 MiB; that should be enough for standard"
+ " usage."
+ },
+
+ { OPT_TRACKS, false, true, false, false, false, '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.\n"
+ " 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."
+ },
+
+ { OPT_ARENAS, false, true, false, false, false, '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.\n"
+ " 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."
+ },
+
+ { OPT_UTF_8, false, true, false, false, true, 0, "utf-8",
+ 0,
+ "Enables UTF-8 support for filenames (default)."
+ },
+
+ { OPT_NO_UTF_8, false, true, false, false, false, 0, "no-utf-8",
+ 0,
+ "Disables UTF-8 support for filenames."
+ },
+
+ { OPT_TEST, false, false, false, false, true, 't', "test",
+ 0,
+ "Run in test mode, modify nothing.\n"
+ ">>> USE THIS OPTION IF UNSURE! <<<"
+ },
+
+ { OPT_FORCE, false, false, false, false, false, 0, "force",
+ 0,
+ "The tools analyse input files and reject files with invalid data"
+ " structures. If --force is set, little repairable issues are ignored"
+ " and a warning is printed.\n"
+ "Option '--kmp force' does the same, but only for KMP files.\n"
+ ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<"
+ },
+
+ { OPT_REPAIR_MAGICS, true, false, false, false, false, 0, "repair-magics",
+ "[=mode]",
+ "Control the reparing of missing or wrong magics of files and"
+ " sub-files by analysing file path and file extension. MODE is one of"
+ " OFF (default), ANALYZE or REPAIR (default, if set without mode). OFF"
+ " disables this feature, ANALYZE enables it for analysis only, and"
+ " REPAIR repairs all magics while reading the files. Keyword FNAME can"
+ " be appended (separated by a comma) to give filename scanning the"
+ " highest priority.\n"
+ ">>> THE RESULT MAY BE INVALID OUTPUT FILES! <<<"
+ },
+
+ { OPT_OLD, false, true, false, false, false, 0, "OLD",
+ 0,
+ "Developer option: Cancel --NEW and use old implementation if"
+ " available."
+ },
+
+ { OPT_STD, false, true, false, false, false, 0, "STD",
+ 0,
+ "Developer option: Cancel --OLD and --NEW and use standard"
+ " implementation (default)."
+ },
+
+ { OPT_NEW, false, true, false, false, false, 0, "NEW",
+ 0,
+ "Developer option: Cancel --OLD and use new implementation if"
+ " available."
+ },
+
+ { OPT_EXTRACT, false, true, false, false, false, 0, "EXTRACT",
+ 0,
+ "Create the directory and extract different objects in different"
+ " formats at the moment when they are seen. This is a development"
+ " helper option."
+ },
+
+ { OPT_CT_DIR, false, false, false, false, true, 0, "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.\n"
+ " wctct will search in the sub directory 'rmc[pujk]/' for files"
+ " 'mod1.bin', 'mod2.bin', 'ovr1.bin' and 'bad1code.bin'.\n"
+ " Use this option multiple times to define more than one search"
+ " directory."
+ },
+
+ { OPT_CT_LOG, true, false, false, false, false, 0, "ct-log",
+ "[=level]",
+ "Define a log level for option --ct-dir. Without parameter, the"
+ " current level is increased. Allowed keywords are: 0=0FF, 1=SUCCESS,"
+ " 2=FOUND, 3=ALL"
+ },
+
+ { OPT_ALLOW_SLOTS, false, false, false, false, false, 0, "allow-slots",
+ "list",
+ "Allow and disallow slots for automatic slot assigning. A comma"
+ " separated list of slots (A), slot ranges (A:B) or keywords is"
+ " expected. If preceded by a minus sign, the slots are disabled. The"
+ " keywords are: TRACKS (slots 0:0x1f), ARENAS (0x20:0x29) and SPECIAL"
+ " (0x36:0x3a). CTCODE is an abbreviation for ARENAS,SPECIAL.\n"
+ " The default is to enable slot ranges 0x00:0x1f, 0x2a:0x35,"
+ " 0x3b:0x41 and 0x44:0xfe."
+ },
+
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 79
+
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// alternate option infos ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoOption_t option_grp_TEXTOPT_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in CTC text files."
+ };
+
+static const InfoOption_t option_cmd_VERSION_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Print only the version number, revision and system. If set twice,"
+ " print only the version number."
+ };
+
+static const InfoOption_t option_cmd_VERSION_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print in long format. Ignored if option --sections is set."
+ };
+
+static const InfoOption_t option_cmd_COLORS_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print also a list of all colored text types. If set twice, include"
+ " alternative names. If set three times, include raw color names."
+ };
+
+static const InfoOption_t option_cmd_COLORS_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Ignore option --long and print a single status line about current"
+ " color settings."
+ };
+
+static const InfoOption_t option_cmd_ERROR_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print message text instead of message name."
+ };
+
+static const InfoOption_t option_cmd_ERROR_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Print message number instead of message name."
+ };
+
+static const InfoOption_t option_cmd_FILETYPE_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print an additional column with the decompressed file type and"
+ " version. If entered twice, a validation status column is added."
+ };
+
+static const InfoOption_t option_cmd_FUNCTIONS_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress the output of the description and print only function type"
+ " and syntax."
+ };
+
+static const InfoOption_t option_cmd_FUNCTIONS_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Usually only the function syntax is compared to the keywords. But if"
+ " --long is set, the descriptions are compared too."
+ };
+
+static const InfoOption_t option_cmd_DUMP_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print headers as hexdump."
+ };
+
+static const InfoOption_t option_cmd_BMG_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Filter the message by tracks, that are used a racing track. If set"
+ " twice, suppress also tracks created by the 'N' command of CT-TEXT"
+ " files. If set 3 times, suppress always the output of first 32"
+ " tracks."
+ };
+
+static const InfoOption_t option_cmd_BMG_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Normally, only the track and arena names are exported. The message id"
+ " (MID) range is 4000-40FF. If set, cup names are exported too as MID"
+ " 4200-423F. If set twice, cup/track relations are also exported as"
+ " MID 4300-43FF."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the table header."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress the output of the music and property slots."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Include the first 32 standard tracks into the output. If set twice,"
+ " also include the battle arenas."
+ };
+
+static const InfoOption_t option_cmd_CREATE_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "BMG: Filter the message by tracks, that are used a racing track. If"
+ " set twice, suppress also tracks created by the 'N' command of"
+ " CT-TEXT files. If set 3 times, suppress always the output of first"
+ " 32 tracks."
+ };
+
+static const InfoOption_t option_cmd_CREATE_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "BMG: Normally, only the track and arena names are exported. The"
+ " message id (MID) range is 4000-40FF. If set, cup names are exported"
+ " too as MID 4200-423F. If set twice, cup/track relations are also"
+ " exported as MID 4300-43FF."
+ };
+
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// CommandTab[] ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const KeywordTab_t CommandTab[] =
+{
+ { CMD_VERSION, "VERSION", 0, 0 },
+ { CMD_HELP, "HELP", "H", 0 },
+ { CMD_HELP, "?", 0, 0 },
+ { CMD_ARGTEST, "ARGTEST", 0, 0 },
+ { CMD_TEST, "TEST", 0, 0 },
+ { CMD_COLORS, "COLORS", 0, 0 },
+ { CMD_ERROR, "ERROR", "ERR", 0 },
+ { CMD_FILETYPE, "FILETYPE", "FT", 0 },
+ { CMD_FILEATTRIB, "FILEATTRIB", "FA", 0 },
+ { CMD_SYMBOLS, "SYMBOLS", 0, 0 },
+ { CMD_FUNCTIONS, "FUNCTIONS", 0, 0 },
+ { CMD_CALCULATE, "CALCULATE", 0, 0 },
+ { CMD_FLOAT, "FLOAT", 0, 0 },
+ { CMD_EXPORT, "_EXPORT", 0, 0 },
+ { CMD_RAWDUMP, "_RAWDUMP", 0, 0 },
+ { CMD_DUMP, "D", "DUMP", 0 },
+ { CMD_CAT, "CAT", 0, 0 },
+ { CMD_BMG, "BMG", 0, 0 },
+ { CMD_TRACKS, "TRACKS", 0, 0 },
+ { CMD_DECODE, "DECODE", "DEC", 0 },
+ { CMD_CREATE, "CREATE", "C", 0 },
+ { CMD_PATCH, "PATCH", "P", 0 },
+
+ { CMD__N,0,0,0 }
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// OptionShort & OptionLong ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const char OptionShort[] = "VhqvLc:lHB1XPNM:T:A:td:D:E:orupi";
+
+static const struct option OptionLong[] =
+{
+ { "version", 0, 0, 'V' },
+ { "help", 0, 0, 'h' },
+ { "xhelp", 0, 0, GO_XHELP },
+ { "allow-all", 0, 0, GO_ALLOW_ALL },
+ { "allowall", 0, 0, GO_ALLOW_ALL },
+ { "compatible", 1, 0, GO_COMPATIBLE },
+ { "width", 1, 0, GO_WIDTH },
+ { "quiet", 0, 0, 'q' },
+ { "verbose", 0, 0, 'v' },
+ { "logging", 0, 0, 'L' },
+ { "de", 0, 0, GO_DE },
+ { "colors", 2, 0, GO_COLORS },
+ { "no-colors", 0, 0, GO_NO_COLORS },
+ { "nocolors", 0, 0, GO_NO_COLORS },
+ { "ct-code", 0, 0, GO_CT_CODE },
+ { "ctcode", 0, 0, GO_CT_CODE },
+ { "le-code", 2, 0, GO_LE_CODE },
+ { "lecode", 2, 0, GO_LE_CODE },
+ { "old-spiny", 0, 0, GO_OLD_SPINY },
+ { "oldspiny", 0, 0, GO_OLD_SPINY },
+ { "crs1", 1, 0, GO_CRS1 },
+ { "chdir", 1, 0, GO_CHDIR },
+ { "const", 1, 0, 'c' },
+ { "round", 0, 0, GO_ROUND },
+ { "long", 0, 0, 'l' },
+ { "no-header", 0, 0, 'H' },
+ { "noheader", 0, 0, 'H' },
+ { "brief", 0, 0, 'B' },
+ { "raw", 0, 0, GO_RAW },
+ { "bmg-encoding", 1, 0, GO_BMG_ENCODING },
+ { "bmgencoding", 1, 0, GO_BMG_ENCODING },
+ { "bmg-inf-size", 1, 0, GO_BMG_INF_SIZE },
+ { "bmginfsize", 1, 0, GO_BMG_INF_SIZE },
+ { "bmg-mid", 2, 0, GO_BMG_MID },
+ { "bmgmid", 2, 0, GO_BMG_MID },
+ { "force-attrib", 1, 0, GO_FORCE_ATTRIB },
+ { "forceattrib", 1, 0, GO_FORCE_ATTRIB },
+ { "def-attrib", 1, 0, GO_DEF_ATTRIB },
+ { "defattrib", 1, 0, GO_DEF_ATTRIB },
+ { "no-attrib", 0, 0, GO_NO_ATTRIB },
+ { "noattrib", 0, 0, GO_NO_ATTRIB },
+ { "x-escapes", 0, 0, GO_X_ESCAPES },
+ { "xescapes", 0, 0, GO_X_ESCAPES },
+ { "old-escapes", 0, 0, GO_OLD_ESCAPES },
+ { "oldescapes", 0, 0, GO_OLD_ESCAPES },
+ { "single-line", 0, 0, '1' },
+ { "singleline", 0, 0, '1' },
+ { "no-bmg-colors", 0, 0, GO_NO_BMG_COLORS },
+ { "nobmgcolors", 0, 0, GO_NO_BMG_COLORS },
+ { "bmg-colors", 0, 0, GO_BMG_COLORS },
+ { "bmgcolors", 0, 0, GO_BMG_COLORS },
+ { "no-bmg-inline", 0, 0, GO_NO_BMG_INLINE },
+ { "nobmginline", 0, 0, GO_NO_BMG_INLINE },
+ { "export", 0, 0, 'X' },
+ { "no-param", 0, 0, 'P' },
+ { "noparam", 0, 0, 'P' },
+ { "no-echo", 0, 0, GO_NO_ECHO },
+ { "noecho", 0, 0, GO_NO_ECHO },
+ { "no-check", 0, 0, 'N' },
+ { "nocheck", 0, 0, 'N' },
+ { "max-file-size", 1, 0, 'M' },
+ { "maxfilesize", 1, 0, 'M' },
+ { "tracks", 1, 0, 'T' },
+ { "arenas", 1, 0, 'A' },
+ { "utf-8", 0, 0, GO_UTF_8 },
+ { "utf8", 0, 0, GO_UTF_8 },
+ { "no-utf-8", 0, 0, GO_NO_UTF_8 },
+ { "no-utf8", 0, 0, GO_NO_UTF_8 },
+ { "noutf8", 0, 0, GO_NO_UTF_8 },
+ { "test", 0, 0, 't' },
+ { "force", 0, 0, GO_FORCE },
+ { "repair-magics", 2, 0, GO_REPAIR_MAGICS },
+ { "repairmagics", 2, 0, GO_REPAIR_MAGICS },
+ { "OLD", 0, 0, GO_OLD },
+ { "STD", 0, 0, GO_STD },
+ { "NEW", 0, 0, GO_NEW },
+ { "EXTRACT", 0, 0, GO_EXTRACT },
+ { "list", 0, 0, GO_LIST },
+ { "ref", 0, 0, GO_REF },
+ { "full", 0, 0, GO_FULL },
+ { "hex", 0, 0, GO_HEX },
+ { "ct-dir", 1, 0, GO_CT_DIR },
+ { "ctdir", 1, 0, GO_CT_DIR },
+ { "ct-log", 2, 0, GO_CT_LOG },
+ { "ctlog", 2, 0, GO_CT_LOG },
+ { "allow-slots", 1, 0, GO_ALLOW_SLOTS },
+ { "allowslots", 1, 0, GO_ALLOW_SLOTS },
+ { "images", 1, 0, GO_IMAGES },
+ { "load-bmg", 1, 0, GO_LOAD_BMG },
+ { "loadbmg", 1, 0, GO_LOAD_BMG },
+ { "patch-bmg", 1, 0, GO_PATCH_BMG },
+ { "patchbmg", 1, 0, GO_PATCH_BMG },
+ { "pb", 1, 0, GO_PATCH_BMG },
+ { "macro-bmg", 1, 0, GO_MACRO_BMG },
+ { "macrobmg", 1, 0, GO_MACRO_BMG },
+ { "mb", 1, 0, GO_MACRO_BMG },
+ { "filter-bmg", 1, 0, GO_FILTER_BMG },
+ { "filterbmg", 1, 0, GO_FILTER_BMG },
+ { "fb", 1, 0, GO_FILTER_BMG },
+ { "patch-names", 0, 0, GO_PATCH_NAMES },
+ { "patchnames", 0, 0, GO_PATCH_NAMES },
+ { "order-by", 1, 0, GO_ORDER_BY },
+ { "orderby", 1, 0, GO_ORDER_BY },
+ { "order", 1, 0, GO_ORDER_BY },
+ { "order-all", 0, 0, GO_ORDER_ALL },
+ { "orderall", 0, 0, GO_ORDER_ALL },
+ { "dynamic", 0, 0, GO_DYNAMIC },
+ { "write-tracks", 1, 0, GO_WRITE_TRACKS },
+ { "writetracks", 1, 0, GO_WRITE_TRACKS },
+ { "wtracks", 1, 0, GO_WRITE_TRACKS },
+ { "dest", 1, 0, 'd' },
+ { "DEST", 1, 0, 'D' },
+ { "esc", 1, 0, 'E' },
+ { "overwrite", 0, 0, 'o' },
+ { "number", 0, 0, GO_NUMBER },
+ { "num", 0, 0, GO_NUMBER },
+ { "remove-dest", 0, 0, 'r' },
+ { "removedest", 0, 0, 'r' },
+ { "rm-dest", 0, 0, 'r' },
+ { "rmdest", 0, 0, 'r' },
+ { "remove", 0, 0, 'r' },
+ { "update", 0, 0, 'u' },
+ { "preserve", 0, 0, 'p' },
+ { "ignore", 0, 0, 'i' },
+ { "sections", 0, 0, GO_SECTIONS },
+
+ {0,0,0,0}
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// OptionUsed & OptionIndex ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static u8 OptionUsed[OPT__N_TOTAL+1] = {0};
+
+static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
+{
+ /* 0x000 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x010 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x020 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x030 */ 0,
+ /* 0x031 1 */ OPT_SINGLE_LINE,
+ /* 0x032 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x041 A */ OPT_ARENAS,
+ /* 0x042 B */ OPT_BRIEF,
+ /* 0x043 */ 0,
+ /* 0x044 D */ OPT_DEST2,
+ /* 0x045 E */ OPT_ESC,
+ /* 0x046 */ 0,0,
+ /* 0x048 H */ OPT_NO_HEADER,
+ /* 0x049 */ 0,0,0,
+ /* 0x04c L */ OPT_LOGGING,
+ /* 0x04d M */ OPT_MAX_FILE_SIZE,
+ /* 0x04e N */ OPT_NO_CHECK,
+ /* 0x04f */ 0,
+ /* 0x050 P */ OPT_NO_PARAM,
+ /* 0x051 */ 0,0,0,
+ /* 0x054 T */ OPT_TRACKS,
+ /* 0x055 */ 0,
+ /* 0x056 V */ OPT_VERSION,
+ /* 0x057 */ 0,
+ /* 0x058 X */ OPT_EXPORT,
+ /* 0x059 */ 0,0,0,0, 0,0,0,0, 0,0,
+ /* 0x063 c */ OPT_CONST,
+ /* 0x064 d */ OPT_DEST,
+ /* 0x065 */ 0,0,0,
+ /* 0x068 h */ OPT_HELP,
+ /* 0x069 i */ OPT_IGNORE,
+ /* 0x06a */ 0,0,
+ /* 0x06c l */ OPT_LONG,
+ /* 0x06d */ 0,0,
+ /* 0x06f o */ OPT_OVERWRITE,
+ /* 0x070 p */ OPT_PRESERVE,
+ /* 0x071 q */ OPT_QUIET,
+ /* 0x072 r */ OPT_REMOVE_DEST,
+ /* 0x073 */ 0,
+ /* 0x074 t */ OPT_TEST,
+ /* 0x075 u */ OPT_UPDATE,
+ /* 0x076 v */ OPT_VERBOSE,
+ /* 0x077 */ 0,0,0,0, 0,0,0,0, 0,
+ /* 0x080 */ OPT_XHELP,
+ /* 0x081 */ OPT_ALLOW_ALL,
+ /* 0x082 */ OPT_COMPATIBLE,
+ /* 0x083 */ OPT_WIDTH,
+ /* 0x084 */ OPT_DE,
+ /* 0x085 */ OPT_COLORS,
+ /* 0x086 */ OPT_NO_COLORS,
+ /* 0x087 */ OPT_CT_CODE,
+ /* 0x088 */ OPT_LE_CODE,
+ /* 0x089 */ OPT_OLD_SPINY,
+ /* 0x08a */ OPT_CRS1,
+ /* 0x08b */ OPT_CHDIR,
+ /* 0x08c */ OPT_ROUND,
+ /* 0x08d */ OPT_RAW,
+ /* 0x08e */ OPT_BMG_ENCODING,
+ /* 0x08f */ OPT_BMG_INF_SIZE,
+ /* 0x090 */ OPT_BMG_MID,
+ /* 0x091 */ OPT_FORCE_ATTRIB,
+ /* 0x092 */ OPT_DEF_ATTRIB,
+ /* 0x093 */ OPT_NO_ATTRIB,
+ /* 0x094 */ OPT_X_ESCAPES,
+ /* 0x095 */ OPT_OLD_ESCAPES,
+ /* 0x096 */ OPT_NO_BMG_COLORS,
+ /* 0x097 */ OPT_BMG_COLORS,
+ /* 0x098 */ OPT_NO_BMG_INLINE,
+ /* 0x099 */ OPT_NO_ECHO,
+ /* 0x09a */ OPT_UTF_8,
+ /* 0x09b */ OPT_NO_UTF_8,
+ /* 0x09c */ OPT_FORCE,
+ /* 0x09d */ OPT_REPAIR_MAGICS,
+ /* 0x09e */ OPT_OLD,
+ /* 0x09f */ OPT_STD,
+ /* 0x0a0 */ OPT_NEW,
+ /* 0x0a1 */ OPT_EXTRACT,
+ /* 0x0a2 */ OPT_LIST,
+ /* 0x0a3 */ OPT_REF,
+ /* 0x0a4 */ OPT_FULL,
+ /* 0x0a5 */ OPT_HEX,
+ /* 0x0a6 */ OPT_CT_DIR,
+ /* 0x0a7 */ OPT_CT_LOG,
+ /* 0x0a8 */ OPT_ALLOW_SLOTS,
+ /* 0x0a9 */ OPT_IMAGES,
+ /* 0x0aa */ OPT_LOAD_BMG,
+ /* 0x0ab */ OPT_PATCH_BMG,
+ /* 0x0ac */ OPT_MACRO_BMG,
+ /* 0x0ad */ OPT_FILTER_BMG,
+ /* 0x0ae */ OPT_PATCH_NAMES,
+ /* 0x0af */ OPT_ORDER_BY,
+ /* 0x0b0 */ OPT_ORDER_ALL,
+ /* 0x0b1 */ OPT_DYNAMIC,
+ /* 0x0b2 */ OPT_WRITE_TRACKS,
+ /* 0x0b3 */ OPT_NUMBER,
+ /* 0x0b4 */ OPT_SECTIONS,
+ /* 0x0b5 */ 0,0,0,0, 0,0,0,0, 0,0,0,
+ /* 0x0c0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x0d0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x120 */ 0,0,0,0, 0,0,0,0, 0,0,0,0,
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// opt_allowed_cmd_* ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static u8 option_allowed_cmd_VERSION[46] = // cmd #1
+{
+ 0,0,1,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+};
+
+static u8 option_allowed_cmd_HELP[46] = // cmd #2
+{
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+};
+
+static u8 option_allowed_cmd_ARGTEST[46] = // cmd #3
+{
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+};
+
+static u8 option_allowed_cmd_TEST[46] = // cmd #4
+{
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1
+};
+
+static u8 option_allowed_cmd_COLORS[46] = // cmd #5
+{
+ 0,0,1,0,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_ERROR[46] = // cmd #6
+{
+ 0,0,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1
+};
+
+static u8 option_allowed_cmd_FILETYPE[46] = // cmd #7
+{
+ 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0
+};
+
+static u8 option_allowed_cmd_FILEATTRIB[46] = // cmd #8
+{
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_SYMBOLS[46] = // cmd #9
+{
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_FUNCTIONS[46] = // cmd #10
+{
+ 0,0,1,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_CALCULATE[46] = // cmd #11
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_FLOAT[46] = // cmd #12
+{
+ 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_EXPORT[46] = // cmd #13
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_RAWDUMP[46] = // cmd #14
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_DUMP[46] = // cmd #15
+{
+ 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,1,
+ 1,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 0
+};
+
+static u8 option_allowed_cmd_CAT[46] = // cmd #16
+{
+ 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,1,1,1,1, 1,0,1,1,1,
+ 1,1,1,1,0, 1,0,0,0,0, 0,0,0,0,1, 0
+};
+
+static u8 option_allowed_cmd_BMG[46] = // cmd #17
+{
+ 0,0,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,0, 1,1,1,1,1, 1,0,1,1,1,
+ 1,1,1,1,0, 1,0,0,0,0, 0,0,0,0,1, 0
+};
+
+static u8 option_allowed_cmd_TRACKS[46] = // cmd #18
+{
+ 0,0,1,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,1,1,1,1, 1,0,1,1,1,
+ 1,1,1,1,0, 1,0,0,0,0, 0,0,0,0,1, 0
+};
+
+static u8 option_allowed_cmd_DECODE[46] = // cmd #19
+{
+ 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 1,1,1,1,1, 1,0,1,1,1,
+ 1,1,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 0
+};
+
+static u8 option_allowed_cmd_CREATE[46] = // cmd #20
+{
+ 0,0,1,1,1, 0,1,1,1,1, 1,1,1,1,1, 1,1,1,1,0, 1,1,0,0,0, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0
+};
+
+static u8 option_allowed_cmd_PATCH[46] = // cmd #21
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,1,1,1,
+ 1,1,1,1,0, 1,1,1,1,1, 1,1,1,1,1, 0
+};
+
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// InfoOption tabs ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoOption_t * option_tab_tool[] =
+{
+ OptionInfo + OPT_VERSION,
+ OptionInfo + OPT_HELP,
+ OptionInfo + OPT_XHELP,
+ OptionInfo + OPT_ALLOW_ALL,
+ OptionInfo + OPT_COMPATIBLE,
+ OptionInfo + OPT_WIDTH,
+ OptionInfo + OPT_QUIET,
+ OptionInfo + OPT_VERBOSE,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_DE,
+ OptionInfo + OPT_COLORS,
+ OptionInfo + OPT_NO_COLORS,
+ OptionInfo + OPT_CT_CODE,
+ OptionInfo + OPT_LE_CODE,
+ OptionInfo + OPT_OLD_SPINY,
+ OptionInfo + OPT_CRS1,
+ OptionInfo + OPT_CHDIR,
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_MAX_FILE_SIZE,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TEST,
+ OptionInfo + OPT_FORCE,
+ OptionInfo + OPT_REPAIR_MAGICS,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CT_DIR,
+ OptionInfo + OPT_CT_LOG,
+ OptionInfo + OPT_ALLOW_SLOTS,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_VERSION[] =
+{
+ &option_cmd_VERSION_BRIEF,
+ OptionInfo + OPT_SECTIONS,
+ &option_cmd_VERSION_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_HELP[] =
+{
+ OptionInfo + OPT_WIDTH,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ARGTEST[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_TEST[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_COLORS[] =
+{
+ OptionInfo + OPT_COLORS,
+ OptionInfo + OPT_NO_COLORS,
+ &option_cmd_COLORS_LONG,
+ &option_cmd_COLORS_BRIEF,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ERROR[] =
+{
+ OptionInfo + OPT_SECTIONS,
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_ERROR_LONG,
+ &option_cmd_ERROR_BRIEF,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FILETYPE[] =
+{
+ &option_cmd_FILETYPE_LONG,
+ OptionInfo + OPT_IGNORE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FILEATTRIB[] =
+{
+ OptionInfo + OPT_NO_HEADER,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_SYMBOLS[] =
+{
+ OptionInfo + OPT_NO_HEADER,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FUNCTIONS[] =
+{
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_FUNCTIONS_BRIEF,
+ &option_cmd_FUNCTIONS_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CALCULATE[] =
+{
+ OptionInfo + OPT_CONST,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FLOAT[] =
+{
+ OptionInfo + OPT_ROUND,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_EXPORT[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_RAWDUMP[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DUMP[] =
+{
+ &option_cmd_DUMP_LONG,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CAT[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_LIST,
+ OptionInfo + OPT_REF,
+ OptionInfo + OPT_FULL,
+ OptionInfo + OPT_HEX,
+ &option_grp_TEXTOPT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_BMG[] =
+{
+ &option_cmd_BMG_BRIEF,
+ &option_cmd_BMG_LONG,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_LIST,
+ OptionInfo + OPT_REF,
+ OptionInfo + OPT_FULL,
+ OptionInfo + OPT_HEX,
+ &option_grp_TEXTOPT_NO_HEADER,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_BMG_ENCODING,
+ OptionInfo + OPT_BMG_INF_SIZE,
+ OptionInfo + OPT_BMG_MID,
+ OptionInfo + OPT_FORCE_ATTRIB,
+ OptionInfo + OPT_DEF_ATTRIB,
+ OptionInfo + OPT_NO_ATTRIB,
+ OptionInfo + OPT_X_ESCAPES,
+ OptionInfo + OPT_OLD_ESCAPES,
+ OptionInfo + OPT_SINGLE_LINE,
+ OptionInfo + OPT_NO_BMG_COLORS,
+ OptionInfo + OPT_BMG_COLORS,
+ OptionInfo + OPT_NO_BMG_INLINE,
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_TRACKS[] =
+{
+ &option_cmd_TRACKS_NO_HEADER,
+ &option_cmd_TRACKS_BRIEF,
+ &option_cmd_TRACKS_LONG,
+ OptionInfo + OPT_RAW,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_LIST,
+ OptionInfo + OPT_REF,
+ OptionInfo + OPT_FULL,
+ OptionInfo + OPT_HEX,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DECODE[] =
+{
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_LIST,
+ OptionInfo + OPT_REF,
+ OptionInfo + OPT_FULL,
+ OptionInfo + OPT_HEX,
+ &option_grp_TEXTOPT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CREATE[] =
+{
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_HEX,
+ &option_grp_TEXTOPT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_BMG_ENCODING,
+ OptionInfo + OPT_BMG_INF_SIZE,
+ OptionInfo + OPT_BMG_MID,
+ OptionInfo + OPT_FORCE_ATTRIB,
+ OptionInfo + OPT_DEF_ATTRIB,
+ OptionInfo + OPT_NO_ATTRIB,
+ OptionInfo + OPT_X_ESCAPES,
+ OptionInfo + OPT_OLD_ESCAPES,
+ OptionInfo + OPT_SINGLE_LINE,
+ OptionInfo + OPT_NO_BMG_COLORS,
+ OptionInfo + OPT_BMG_COLORS,
+ OptionInfo + OPT_NO_BMG_INLINE,
+ &option_cmd_CREATE_LONG,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_CT_DIR,
+ OptionInfo + OPT_CT_LOG,
+ OptionInfo + OPT_ALLOW_SLOTS,
+ OptionInfo + OPT_IMAGES,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_PATCH[] =
+{
+ OptionInfo + OPT_WRITE_TRACKS,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_LOAD_BMG,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+ OptionInfo + OPT_PATCH_NAMES,
+ OptionInfo + OPT_ORDER_BY,
+ OptionInfo + OPT_ORDER_ALL,
+
+ 0
+};
+
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// InfoCommand ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoCommand_t CommandInfo[CMD__N+1] =
+{
+ { 0,
+ false,
+ false,
+ false,
+ "wctct",
+ 0,
+ "wctct [option]... command [option|parameter|file]...",
+ "Wiimms CT-CODE Tool : Manage the CT-CODE extension. BRRES, TEX0,"
+ " CT-CODE, CT-TEXT and LE-BIN files are accepted as input.",
+ 0,
+ 25,
+ option_tab_tool,
+ 0
+ },
+
+ { CMD_VERSION,
+ false,
+ false,
+ false,
+ "VERSION",
+ 0,
+ "wctct VERSION [ignored]...",
+ "Print program name and version and exit.",
+ 0,
+ 3,
+ option_tab_cmd_VERSION,
+ option_allowed_cmd_VERSION
+ },
+
+ { CMD_HELP,
+ false,
+ false,
+ false,
+ "HELP",
+ "H",
+ "wctct HELP [--width=wd] OPT|OPTION ...\n"
+ "wctct HELP [--width=wd] CMD|COMMAND [ignored]...\n"
+ "wctct HELP [--width=wd] command [-b] [ignored]...\n"
+ "wctct HELP [--width=wd] [ignored]...",
+ "Print help for commands and options.",
+ "Print help for commands and options.\n"
+ " The first variant (with keyword OPT or OPTION) prints a list of all"
+ " global and command specific options. If at least one option is set,"
+ " only info about the declared options are printed. The second variant"
+ " (with keyword CMD or COMMAND) prints an overview about all commands."
+ " The third variant (with a valid command name) prints details about"
+ " the declared command. The fourth variant prints an overview about"
+ " all commands and all global options.",
+ 1,
+ option_tab_cmd_HELP,
+ option_allowed_cmd_HELP
+ },
+
+ { CMD_ARGTEST,
+ false,
+ false,
+ false,
+ "ARGTEST",
+ 0,
+ "wctct ARGTEST ...",
+ "This debug command accepts all kinds of parameters and prints one"
+ " line for each parameter.",
+ 0,
+ 0,
+ option_tab_cmd_ARGTEST,
+ option_allowed_cmd_ARGTEST
+ },
+
+ { CMD_TEST,
+ false,
+ false,
+ false,
+ "TEST",
+ 0,
+ "wctct TEST [options]... [ignored]...",
+ "This debugging command accepts all options and parameters and prints"
+ " a list of the internal option values. The command is designed to"
+ " test the option parameters. The non option parameters are completely"
+ " ignored.",
+ 0,
+ 0,
+ option_tab_cmd_TEST,
+ option_allowed_cmd_TEST
+ },
+
+ { CMD_COLORS,
+ false,
+ false,
+ false,
+ "COLORS",
+ 0,
+ "wctct COLORS",
+ "Ignore all parameters and print colored text for testing.",
+ 0,
+ 4,
+ option_tab_cmd_COLORS,
+ option_allowed_cmd_COLORS
+ },
+
+ { CMD_ERROR,
+ false,
+ false,
+ false,
+ "ERROR",
+ "ERR",
+ "wctct ERROR [error_code]",
+ "Translate an exit code to a message name. If no exit code is entered,"
+ " print a table with all error messages.",
+ 0,
+ 4,
+ option_tab_cmd_ERROR,
+ option_allowed_cmd_ERROR
+ },
+
+ { CMD_FILETYPE,
+ false,
+ false,
+ false,
+ "FILETYPE",
+ "FT",
+ "wctct FILETYPE file...",
+ "Scan the header of the entered files and print file type and path for"
+ " each file as list.",
+ 0,
+ 2,
+ option_tab_cmd_FILETYPE,
+ option_allowed_cmd_FILETYPE
+ },
+
+ { CMD_FILEATTRIB,
+ false,
+ false,
+ false,
+ "FILEATTRIB",
+ "FA",
+ "wctct FILEATTRIB [keyword]...",
+ "Print a table with attributes for all known file types. If at least"
+ " one keyword is entered, only matching file types are printed. A"
+ " keyword is either a file type (like 'BRRES' or 'BMG') or one of the"
+ " printed keywords (like 'ARCHIVE' or 'EXTRACT').",
+ 0,
+ 1,
+ option_tab_cmd_FILEATTRIB,
+ option_allowed_cmd_FILEATTRIB
+ },
+
+ { CMD_SYMBOLS,
+ false,
+ false,
+ false,
+ "SYMBOLS",
+ 0,
+ "wctct SYMBOLS",
+ "Print predefined symbols of text parser to standard output. The"
+ " CT-CODE specific symbols are included.",
+ 0,
+ 1,
+ option_tab_cmd_SYMBOLS,
+ option_allowed_cmd_SYMBOLS
+ },
+
+ { CMD_FUNCTIONS,
+ false,
+ false,
+ false,
+ "FUNCTIONS",
+ 0,
+ "wctct FUNCTIONS [key]...",
+ "Print a list with all parser functions including the CT-CODE specific"
+ " functions. If one key ore more key entered, then only functions that"
+ " match at least one key are printed.",
+ 0,
+ 3,
+ option_tab_cmd_FUNCTIONS,
+ option_allowed_cmd_FUNCTIONS
+ },
+
+ { CMD_CALCULATE,
+ false,
+ false,
+ false,
+ "CALCULATE",
+ 0,
+ "wctct CALCULATE expression...",
+ "Calculate each expression and print the result to standard output.",
+ 0,
+ 1,
+ option_tab_cmd_CALCULATE,
+ option_allowed_cmd_CALCULATE
+ },
+
+ { CMD_FLOAT,
+ false,
+ false,
+ false,
+ "FLOAT",
+ 0,
+ "wctct FLOAT number...",
+ "This commands helps to convert hex values into floating point numbers"
+ " and vice versa. For each non empty parameter, a line with 4 bytes"
+ " hex and a float, 8 bytes hex and a double float, and the parameter"
+ " itself is printed. If a parameter begins with 'x' or '0x', it is a"
+ " hex string, otherwise it is a floating point number.\n"
+ " The special parameters \"+\" and \"-\" mean: Increment or decrement"
+ " the previous value by the smallest possible value. Use different"
+ " increments for floats and doubles.\n"
+ " All conversions are done using big endian.",
+ 0,
+ 1,
+ option_tab_cmd_FLOAT,
+ option_allowed_cmd_FLOAT
+ },
+
+ { CMD_EXPORT,
+ true,
+ false,
+ false,
+ "_EXPORT",
+ 0,
+ "wszst _EXPORT key...",
+ "This hidden command exports some definitions to standard output. Use"
+ " keyword HELP to get a list of possible keywords.",
+ 0,
+ 0,
+ option_tab_cmd_EXPORT,
+ option_allowed_cmd_EXPORT
+ },
+
+ { CMD_RAWDUMP,
+ true,
+ false,
+ false,
+ "_RAWDUMP",
+ 0,
+ "wszst _RAWDUMP [-d|-D] destdir",
+ "This hidden command creates the destination directory and create"
+ " several files as copy of internal data.",
+ 0,
+ 2,
+ option_tab_cmd_RAWDUMP,
+ option_allowed_cmd_RAWDUMP
+ },
+
+ { CMD_DUMP,
+ false,
+ false,
+ true,
+ "D",
+ "DUMP",
+ "wctct DUMP [source]...",
+ "Print an information dump for the CT-CODE of each source file. BRRES,"
+ " TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input.",
+ 0,
+ 8,
+ option_tab_cmd_DUMP,
+ option_allowed_cmd_DUMP
+ },
+
+ { CMD_CAT,
+ false,
+ false,
+ false,
+ "CAT",
+ 0,
+ "wctct CAT [source]...",
+ "Read the source files and print the CT-CODE part them as decoded text"
+ " files to standard output. The output of all source files is"
+ " concatenated. BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted"
+ " as input.",
+ 0,
+ 18,
+ option_tab_cmd_CAT,
+ option_allowed_cmd_CAT
+ },
+
+ { CMD_BMG,
+ false,
+ false,
+ false,
+ "BMG",
+ 0,
+ "wctct BMG [source]...",
+ "Read the source files and print a BMG message listing to standard"
+ " output. BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as"
+ " input.",
+ 0,
+ 31,
+ option_tab_cmd_BMG,
+ option_allowed_cmd_BMG
+ },
+
+ { CMD_TRACKS,
+ false,
+ false,
+ false,
+ "TRACKS",
+ 0,
+ "wctct TRACKS [source]...",
+ "Read the source files and print a track listing to standard output."
+ " BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input.",
+ 0,
+ 20,
+ option_tab_cmd_TRACKS,
+ option_allowed_cmd_TRACKS
+ },
+
+ { CMD_DECODE,
+ false,
+ false,
+ false,
+ "DECODE",
+ "DEC",
+ "wctct DECODE [source]...",
+ "Read the source files and decode them to CT-TEXT files. The default"
+ " destination is '%P/%N.txt'. BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN"
+ " are accepted as input.",
+ 0,
+ 26,
+ option_tab_cmd_DECODE,
+ option_allowed_cmd_DECODE
+ },
+
+ { CMD_CREATE,
+ false,
+ false,
+ false,
+ "CREATE",
+ "C",
+ "wctct CREATE keyword [source]...",
+ "Read the source files, scan the CT-CODE part and create an output"
+ " file controlled by the keyword. BRRES, TEX0, CT-CODE, CT-TEXT and"
+ " LE-BIN files are accepted as input. Possible keywords are: CUP1,"
+ " CRS1, r-MOD1, r-MOD2, r-OVR1, r-BAD1CODE, r-BAD1DATA (=r-CODE),"
+ " r-TEX0, r-BRRES, r-SZS, BMG, TRACKS, LIST, REF and FULL. 'r' defines"
+ " the region and is one of EU, RMCP, US, RMCE, JP, RMCJ, KO or RMCK.\n"
+ " The Korean support needs external CT-CODE files. Use option"
+ " --ct-dir to define at least one search path.",
+ 0,
+ 40,
+ option_tab_cmd_CREATE,
+ option_allowed_cmd_CREATE
+ },
+
+ { CMD_PATCH,
+ false,
+ false,
+ false,
+ "PATCH",
+ "P",
+ "wctct PATCH [source]...",
+ "Read each source file, find and scan the CT-CODE part and patch it."
+ " BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input.",
+ 0,
+ 18,
+ option_tab_cmd_PATCH,
+ option_allowed_cmd_PATCH
+ },
+
+ {0,0,0,0,0,0,0,0,0,0,0,0}
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// InfoUI ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+const InfoUI_t InfoUI_wctct =
+{
+ "wctct",
+ CMD__N,
+ CommandTab,
+ CommandInfo,
+ OPT__N_SPECIFIC,
+ OPT__N_TOTAL,
+ OptionInfo,
+ OptionUsed,
+ OptionIndex,
+ OptionShort,
+ OptionLong
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// END ///////////////
+///////////////////////////////////////////////////////////////////////////////
+