aboutsummaryrefslogtreecommitdiff
path: root/project/src/ui/ui-wszst.c
diff options
context:
space:
mode:
Diffstat (limited to 'project/src/ui/ui-wszst.c')
-rw-r--r--project/src/ui/ui-wszst.c7805
1 files changed, 7805 insertions, 0 deletions
diff --git a/project/src/ui/ui-wszst.c b/project/src/ui/ui-wszst.c
new file mode 100644
index 0000000..c4dc814
--- /dev/null
+++ b/project/src/ui/ui-wszst.c
@@ -0,0 +1,7805 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * 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-wszst.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_TOUCH, false, false, false, false, false, 0, "touch",
+ 0,
+ "Mark the minimap as modified to force a new calculation of the"
+ " translation and inverse matrices."
+ },
+
+ { OPT_AUTO, false, false, false, false, false, 0, "auto",
+ 0,
+ "Calculate the minimap translations automatically by using the minimum"
+ " and maximum vertex coordinates. The 'scale' and 'rotation' fields"
+ " are reset. This is done as first action before the SET, CENTER and"
+ " the other transformations."
+ },
+
+ { OPT_SET_FLAGS, false, false, false, false, false, 0, "set-flags",
+ "flag",
+ "Define the flag values (default 0x31f) of the minimap."
+ },
+
+ { OPT_SET_SCALE, false, false, false, false, false, 0, "set-scale",
+ "vector",
+ "Define the scale values (default 1.0) of the minimap. The parameter"
+ " is either a vector expression or a comma separated list of"
+ " coordinates ('x,z' or 'x,y,z')."
+ },
+
+ { OPT_SET_ROT, false, false, false, false, false, 0, "set-rot",
+ "vector",
+ "Define the rotation values (default 0.0) of the minimap. The"
+ " parameter is either a vector expression or a comma separated list of"
+ " coordinates ('x,z' or 'x,y,z')."
+ },
+
+ { OPT_SET_X, false, false, false, false, false, 0, "set-x",
+ "v1[,v2]",
+ "Define 2 values and sort them to define the minimum and maximum"
+ " x-coordinates of the minimap. If 'v2' is not entered, '-v1' is used"
+ " as second value."
+ },
+
+ { OPT_SET_Y, false, false, false, false, false, 0, "set-y",
+ "v1[,v2]",
+ "Define 2 values and sort them to define the minimum and maximum"
+ " y-coordinates of the minimap. If 'v2' is not entered, '-v1' is used"
+ " as second value."
+ },
+
+ { OPT_SET_Z, false, false, false, false, false, 0, "set-z",
+ "v1[,v2]",
+ "Define 2 values and sort them to define the minimum and maximum"
+ " z-coordinates of the minimap. If 'v2' is not entered, '-v1' is used"
+ " as second value."
+ },
+
+ { OPT_XCENTER, false, false, false, false, false, 0, "xcenter",
+ 0,
+ "Center the minimap in x-direction. This is done after AUTO and SET,"
+ " but before SCALE and SHIFT."
+ },
+
+ { OPT_YCENTER, false, false, false, false, false, 0, "ycenter",
+ 0,
+ "Center the minimap in y-direction. This is done after AUTO and SET,"
+ " but before SCALE and SHIFT."
+ },
+
+ { OPT_ZCENTER, false, false, false, false, false, 0, "zcenter",
+ 0,
+ "Center the minimap in z-direction. This is done after AUTO and SET,"
+ " but before SCALE and SHIFT."
+ },
+
+ { OPT_CENTER, false, false, false, false, false, 0, "center",
+ 0,
+ "Center the minimap in all 3 directions. This is a short cut for"
+ " '--xcenter --ycenter --zcenter'."
+ },
+
+ { OPT_SCALE, false, false, false, false, false, 0, "scale",
+ "vector[@origin]",
+ "Transform the data: Scale all coordinates and size values by 'vector'"
+ " relative to the point 'origin'. If the origin is not set, 0,0,0 is"
+ " used instead.\n"
+ " Negative values mirror the coordinates. Each parameter is either a"
+ " vector expression or a comma separated expression list of"
+ " coordinates ('x,z' or 'x,y,z').\n"
+ " Transformations are calculated in the order SCALE, SHIFT, ROTATE,"
+ " TRANSLATE."
+ },
+
+ { OPT_SHIFT, false, false, false, false, false, 0, "shift",
+ "vector",
+ "Transform the data: Add 'vector' to all coordinates. It's simlar to"
+ " --translate, but the addition is done before rotation. The parameter"
+ " is either a vector expression or a comma separated expression list"
+ " of coordinates ('x,z' or 'x,y,z').\n"
+ " Transformations are calculated in the order SCALE, SHIFT, ROTATE,"
+ " TRANSLATE."
+ },
+
+ { OPT_XSS, false, false, false, false, false, 0, "xss",
+ "x1old,x1new,x2old,x2new",
+ "--xss (x-scale-shift) calculates the X values of --scale and --shift,"
+ " so that old values are transformed to the new values. The parameters"
+ " are numbers or expression."
+ },
+
+ { OPT_YSS, false, false, false, false, false, 0, "yss",
+ "y1old,y1new,y2old,y2new",
+ "--yss (y-scale-shift) calculates the Y values of --scale and --shift,"
+ " so that old values are transformed to the new values. The parameters"
+ " are numbers or expression."
+ },
+
+ { OPT_ZSS, false, false, false, false, false, 0, "zss",
+ "z1old,z1new,z2old,z2new",
+ "--zss (z-scale-shift) calculates the Z values of --scale and --shift,"
+ " so that old values are transformed to the new values. The parameters"
+ " are numbers or expression."
+ },
+
+ { OPT_ROT, false, false, false, false, false, 0, "rot",
+ "degree[@origin]",
+ "Transform the data: Rotate all coordinates and rotation values by the"
+ " angle 'degree' (is a vector) around the 3 axes. All 3 axes goes"
+ " through the point 'origin'. If the origin is not set, 0,0,0 is used"
+ " instead.\n"
+ " Each parameter is either a vector expression or a comma separated"
+ " expression list of coordinates ('x,y,z').\n"
+ " Option --rot is an alternative for --xrot, --yrot and --zrot to"
+ " define all 3 rotations in one step. Transformations are calculated"
+ " in the order SCALE, SHIFT, X-ROTATE, Y-ROTATE, Z-ROTATE, TRANSLATE."
+ },
+
+ { OPT_XROT, false, false, false, false, false, 0, "xrot",
+ "degree[@origin]",
+ "Transform the data: Rotate all coordinates and rotation values by the"
+ " angle 'degree' around the x-axis, that goes through the point"
+ " 'origin'. If the origin is not set, 0,0,0 is used instead.\n"
+ " Each parameter is either a vector expression or a comma separated"
+ " expression list of coordinates ('y,z' or 'x,y,z').\n"
+ " Transformations are calculated in the order SCALE, SHIFT, X-ROTATE,"
+ " Y-ROTATE, Z-ROTATE, TRANSLATE."
+ },
+
+ { OPT_YROT, false, false, false, false, false, 0, "yrot",
+ "degree[@origin]",
+ "Transform the data: Rotate all coordinates and rotation values by the"
+ " angle 'degree' around the x-axis, that goes through the point"
+ " 'origin'. If the origin is not set, 0,0,0 is used instead. This is a"
+ " horizontal counterclockwise rotation and the old option name --hrot"
+ " can also used.\n"
+ " Each parameter is either a vector expression or a comma separated"
+ " expression list of coordinates ('x,z' or 'x,y,z').\n"
+ " Transformations are calculated in the order SCALE, SHIFT, X-ROTATE,"
+ " Y-ROTATE, Z-ROTATE, TRANSLATE."
+ },
+
+ { OPT_ZROT, false, false, false, false, false, 0, "zrot",
+ "degree[@origin]",
+ "Transform the data: Rotate all coordinates and rotation values by the"
+ " angle 'degree' around the z-axis, that goes through the point"
+ " 'origin'. If the origin is not set, 0,0,0 is used instead.\n"
+ " Each parameter is either a vector expression or a comma separated"
+ " expression list of coordinates ('x,y' or 'x,y,z').\n"
+ " Transformations are calculated in the order SCALE, SHIFT, X-ROTATE,"
+ " Y-ROTATE, Z-ROTATE, TRANSLATE."
+ },
+
+ { OPT_YPOS, false, false, false, false, false, 0, "ypos",
+ "pos",
+ "This option defines an Y position for KMP:CKPT transformations. It"
+ " has only impact to X and Z rotations (Options --xrot and --zrot). If"
+ " not set, the mean y of the active rotation origins are used."
+ },
+
+ { OPT_TRANSLATE, false, false, false, false, false, 0, "translate",
+ "vector",
+ "Transform the data: Add 'vector' to all coordinates. It's simlar to"
+ " --shift, but the addition is done after rotation. The parameter is"
+ " either a vector expression or a comma separated expression list of"
+ " coordinates ('x,z' or 'x,y,z'). --trans is a short cut.\n"
+ " Transformations are calculated in the order SCALE, SHIFT, ROTATE,"
+ " TRANSLATE."
+ },
+
+ { OPT_NULL, false, false, false, false, false, 0, "null",
+ 0,
+ "Create a neutral transformation without affecting the coordinates."
+ " The only influence is, that the dependent values (like maximum) are"
+ " re-calculated as if a transformation has taken place."
+ },
+
+ { OPT_NEXT, false, false, false, false, false, 0, "next",
+ 0,
+ "Close the current transformation step with all scaling, shifting,"
+ " rotation and translation options and open a new step with cleared"
+ " options. On transformation each step is logical done one by one. In"
+ " real, one total transformation matrix is calculated and used for"
+ " fast transformations.\n"
+ " If option --next is used, the ability for modifying the scale and"
+ " rotation vectors (not the positions) of different KMP sections is"
+ " nearly always lost. A warning is printed if this occurs."
+ },
+
+ { OPT_ASCALE, false, false, false, false, false, 0, "ascale",
+ "factor@dir",
+ "Transform the data and do an axis scale: Close the current"
+ " transformation step like --next and scale the data by 'factor' into"
+ " the direction given by the vector 'dir'. Store the resulting matrix"
+ " as single transformation step and open a new one.\n"
+ " This kind of transformation is EXPERIMENTAL!"
+ },
+
+ { OPT_AROT, false, false, false, false, false, 0, "arot",
+ "degree[@pos1]@pos2",
+ "Transform the data and do an axis rotation: Close the current"
+ " transformation step like --next and rotate the data by 'degree'"
+ " around the axis defined by the 2 points. If 'pos1' is not set, use"
+ " 0,0,0 instead. Store the resulting matrix as single transformation"
+ " step and open a new one.\n"
+ " This kind of transformation is EXPERIMENTAL!"
+ },
+
+ { OPT_TFORM_SCRIPT, false, false, false, false, false, 0, "tform-script",
+ "script",
+ "Load the script and execute it by the text parser.\n"
+ " Then for each coordinate (2D and 3D), call the macro TRANSFORM after"
+ " all other transformations. Call it without parameters and set"
+ " variable $I with a zero based index of all vertices, variable $D to"
+ " the dimension (2 or 3) and the variable $P to the vector of the"
+ " current vertex. If the macro returns a vector, it is the new"
+ " position.\n"
+ " For each file, macro BEGIN is called at the beginning and END after"
+ " processing all points, but only, if the macros are defined. For END,"
+ " variable $I is set to the number of processed vertices in the"
+ " current file.\n"
+ " Before each macro call, the private and local variables are cleared"
+ " and only global parameters are permanent. The zero based index is"
+ " cleared for each new source. The parameters of the macro calls are"
+ " defined in the local name space."
+ },
+
+ { OPT_MINIMAP, false, false, false, false, false, 0, "minimap",
+ 0,
+ "Fix the minimap position in the same way as 'wszst MINIMAP --auto'."
+ " All other minimap related options are ignored for the minimap"
+ " processing. See https://szs.wiimm.de/cmd/wszst/minimap for details."
+ },
+
+ { OPT_RM_GOBJ, false, false, false, false, false, 0, "rm-gobj",
+ "objlist",
+ "Remove objects from the KMP section GOBJ. Therefor a comma separated"
+ " object list with single values like 'a' or ranges like 'a:b' is"
+ " expected. 'a' and 'b' are numbers, object names (prefixed by 'o$')"
+ " or any other parser expressions."
+ },
+
+ { OPT_SLOT, false, false, false, false, false, 0, "slot",
+ "keyword",
+ "Patch a track file to run at the specified slot. KMP and KCL may be"
+ " modified. BRRES files may be added to or removed from SZS. The main"
+ " keywords are DAISY, DESERT, SHERBET, SHYGUY, STANDARD and MOST. Slot"
+ " numbers (except '42' and '4.2') and different other track names are"
+ " also accepted. For some conversions, the auto-add library is needed."
+ " See https://szs.wiimm.de/opt/slot for details."
+ },
+
+ { OPT_KCL_FLAG, false, false, false, false, false, 0, "kcl-flag",
+ "joblist",
+ "Modify the KCL flag of KCL files. A comma separated job list in the"
+ " format 'srclist=dest' is expected. 'srclist' is a plus sign"
+ " separated list with single values like <val>, T<type> and"
+ " <val>/<mask> or ranges like <val>:<val>, T<type>:<type> and"
+ " <val>:<val>/<mask>. '<val>' is a complete KCL flag in the range of"
+ " 0..0xffff. '<type>' are only the base types in the range of 0..0x1f."
+ " If <mask> is present, it marks the relevant bits. For the T<type>"
+ " variant, the mask is set to 0x1f.\n"
+ " All KCL flags of the source list are assigned to the new value"
+ " 'dest', but only the set bits of '<mask>' are modified. A later"
+ " definition overrides the previous one. See"
+ " https://szs.wiimm.de/opt/kcl-flag for details."
+ },
+
+ { OPT_KCL_SCRIPT, false, false, false, false, false, 0, "kcl-script",
+ "script",
+ "After reading a KCL source file and executing all transformations,"
+ " the text file 'script' is executed by the internal text parser. The"
+ " script should use the parser functions tri$*() to read and modify"
+ " the triangle positions and flags, or to add or remove complete"
+ " triangles.\n"
+ " If this option is used multiple times, each script is executed in"
+ " the entered order. See https://szs.wiimm.de/opt/kcl-script for"
+ " details."
+ },
+
+ { OPT_FLAG_FILE, false, false, false, false, false, 0, "flag-file",
+ "filename",
+ "Define a flag file if scanning an OBJ file (KCL processing). The file"
+ " name may contain %-escapes. Set it to an empty string to disable"
+ " flag files at all.\n"
+ " The tool search the flag file in the following order until found:"
+ " File defined by --flag-file; OBJ file name with replaced extension"
+ " ('a.obj' becomes 'a.flag'); OBJ file name with appended extension"
+ " ('a.obj' becomes 'a.obj.flag'). See"
+ " https://szs.wiimm.de/opt/flag-file for details."
+ },
+
+ { OPT_REPAIR_XPF, false, false, false, false, false, 0, "repair-xpflags",
+ "file",
+ "Load a KMP file and use it to repair the settings of the extended"
+ " presence flags, if they are destroyed by another KMP tool. --repxpf"
+ " is a short cut for this option."
+ },
+
+ { OPT_GAMEMODES, false, false, false, false, false, 0, "gamemodes",
+ "list",
+ "Filter the list of combinations. The parameter is a comma separated"
+ " list of keywords: AUTO: Add a automatic mode without conditions"
+ " first. STANDARD (or STD): Add standard modes. 1STANDARD (or 1STD):"
+ " Add standard modes first. BALLOON: Add balloon battle modes. COIN:"
+ " Add coin runners modes. BATTLE: Short cut for 'BALLOON,COIN'. VERSUS"
+ " (or VS): Add versus modes. ITEMRAIN: Add itemrain modes. RACE: Short"
+ " cut for 'VERSUS,ITEMRAIN'. ALL (default): Short cut for"
+ " 'STANDARD,BATTLE,RACE'. NO-MODES: Exclude 'ALL' and create auto"
+ " modes only. ENGINE: Include engine classes (default). NO-ENGINE:"
+ " Exclude engine classes. RANDOM: Include random modes (default)."
+ " NO-RANDOM: Exclude random modes. OFFLINE: Filter offline modes."
+ " ONLINE: Filter online modes. NO-TT: Exclude time trial. TT: Force a"
+ " time trial scenario, even if it is a duplicate. FULL: Don't"
+ " eliminate duplicates from list (up to 1573 modes). NSORT: Sort the"
+ " list by name. ISORT: Sort the list by index. DEBUG: Print a debug"
+ " info about this option."
+ },
+
+ { 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_ID, false, false, false, false, false, 0, "id",
+ 0,
+ "Print an ID with 8 characters instead of a SHA-1 sum with 40"
+ " characters. The SHA-1 sum is used to calculate the ID. The ID"
+ " consists of '0'-'9' and 'a'-'w' (32 characters)."
+ },
+
+ { OPT_BASE64, true, false, false, false, false, 0, "base64",
+ "[=mode]",
+ "Encode the the checksum string as BASE64 with 27 characters instead"
+ " of hex. If a parameter is set, it acts like --coding=mode."
+ },
+
+ { OPT_DB64, true, false, false, false, false, 0, "db64",
+ "[=mode]",
+ "Encode the the checksum string and some length as BASE64 with 32"
+ " characters instead of hex for database searches. This options"
+ " implies --coding=URL if no other coding is defined. If a parameter"
+ " is set, it acts like --coding=mode. Option --db64 has priority over"
+ " --base64."
+ },
+
+ { OPT_CODING, false, false, false, false, false, 0, "coding",
+ "mode",
+ "Define the coding of the non alphanumeric characters for BASE64:"
+ " STANDART (+/=, default), URL (-_=), STAR (-_*) or XML (.-*)."
+ },
+
+ { OPT_VERIFY, false, false, false, false, false, 0, "verify",
+ 0,
+ "Calculate the checksum and compare the filename and return exit"
+ " status (0=valid, 2=differ). The result is valid, if the checksum is"
+ " found with a leading and a following point or minus sign. If --quiet"
+ " is set, error messages are suppressed."
+ },
+
+ { 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 in long format. Multiple usage possible."
+ },
+
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress printing of header and footer."
+ },
+
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress information lines in decoded text files. This includes"
+ " syntax information (--no-header). If set twice, the output of"
+ " unneeded sections is also suppressed."
+ },
+
+ { OPT_PIPE, false, false, false, false, false, 0, "pipe",
+ 0,
+ "Use pipe sign instead of spaces to separate columns."
+ },
+
+ { OPT_DELTA, false, false, false, false, false, 0, "delta",
+ 0,
+ "Print only modified records or sections on text output. Supported"
+ " file formats until now: GEOHIT, ITEMSLOT, KMG and OBJFLOW. If set"
+ " twice, limit output to modified records (only relevant for"
+ " ITEMSLOT)."
+ },
+
+ { OPT_DIFF, false, false, false, false, false, 0, "diff",
+ 0,
+ "On text output, print only differences from original files. It's a"
+ " short cut for --no-header --brief --brief --delta --delta."
+ " Additional, the output is limited to data sections."
+ },
+
+ { OPT_EPSILON, false, true, false, false, false, 0, "epsilon",
+ "float",
+ "When comparing floating point numbers, 2 numbers are considered"
+ " identical if their difference is less than or equal to epsilon. The"
+ " default value is 0.01."
+ },
+
+ { 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 and suppress attributes like"
+ " option --no-attrib does it."
+ },
+
+ { 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 -HBB"
+ " for KMP and like -HBl1 for BMG text files."
+ },
+
+ { OPT_NO_PARAM, false, false, false, false, false, 'P', "no-param",
+ 0,
+ "Disable parameter support in decoded KMP text files."
+ },
+
+ { OPT_SORT, false, false, false, false, false, 'S', "sort",
+ "mode",
+ "Define a sort mode. Allowed keywords are: NONE (default), NAME,"
+ " OFFSET, U8, PACK, BRRES, BREFT and AUTO"
+ },
+
+ { OPT_TRANSFORM, false, false, false, false, true, 'x', "transform",
+ "list",
+ "Convert image formats. A comma separated list with terms is expected."
+ " A term have the syntax '[SRC=]DEST'. It means: convert SRC format"
+ " into DEST format. If SRC= is not set, the destination format is used"
+ " for all source formats. This makes only sense as last rule. If DEST"
+ " is empty no transformation is done for the source. Examples: 'TPL'"
+ " or 'GRAY' or 'BTI.IA8' or 'TPL.I4+I8=IA8,TEX=,CMPR'\n"
+ " SRC and DEST are tuple of file, image and palette formats and of 2"
+ " more attributes. All parts are optional and separated by points, the"
+ " order is irrelevant.\n"
+ " Allowed file formats are: TPL, TEX, BTI, BREFT-IMG (=BTIMG), PNG"
+ " (import). Allowed image formats are: I4, I8, IA4, IA8, RGB565"
+ " (=R565), RGB5A3 (=R3), RGBA32 (=R32), C4, C8, C14X2, CMPR. Allowed"
+ " palette formats are: P-IA8 (=P8), P-RGB565 (=P565), P-RGB5A3 (=P3)."
+ " Attributtes are PALETTE, NO-PALETTE, GRAY, COLOR, ALPHA and"
+ " NO-ALPHA.\n"
+ " All terms are managed as list. For each graphic the list is"
+ " iterated until the first SRC tuple of a term matches the graphic."
+ " Then the destination tuple is used for the transformation.\n"
+ " The command 'wimgt TEST' prints a clearly arranged readable table"
+ " as result of this option."
+ },
+
+ { OPT_STRIP, false, false, false, false, false, 0, "strip",
+ 0,
+ "If creating a PNG file, don't add comments about creator and source"
+ " formats."
+ },
+
+ { OPT_ANALYZE, false, true, false, false, true, 0, "analyze",
+ "outfile",
+ "Run in analyze mode and write results to the entered file."
+ },
+
+ { OPT_ANALYZE_MODE, false, true, false, false, false, 0, "analyze-mode",
+ "modelist",
+ "Comma separated list with objects to analyse. Objects are BRRES,"
+ " MDL0, PAT0, TEX0, BREFF, BREFT, TPL, KCL, KMP, GOBJ, KTPT, MKWANA"
+ " and ALL for all (=default). --ana-mode is a short cut."
+ },
+
+ { OPT_SOURCE, false, false, false, false, true, 's', "source",
+ "path",
+ "Define a secondary source path (directory/file).\n"
+ " The path may contain escape sequences: %Q is replaced by the fully"
+ " qualified primary source name. %P and %F are replaced by the primary"
+ " source path or by the filename. %N and %E are replaced by primary"
+ " source filename without extension or by the source extension."
+ " Finally, %T is replaced by the default extension of a virtual"
+ " 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/source for more details."
+ },
+
+ { 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_SRC, false, false, false, false, false, 0, "remove-src",
+ 0,
+ "Remove the source file after successful operation. --rm-src 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_IGNORE_SETUP, false, false, false, false, false, 0, "ignore-setup",
+ 0,
+ "Ignore hidden setup file 'wszst-setup.txt'. This file is used to"
+ " determine some default settings and to find out sub archives and"
+ " files to encode. Use this option only if you know what you do."
+ },
+
+ { OPT_PURGE, false, false, false, false, false, 0, "purge",
+ 0,
+ "Remove repeated files with same checksum."
+ },
+
+ { OPT_ALIGN_U8, false, false, false, false, false, 0, "align-u8",
+ "size",
+ "Define an align value for the sub files in U8 archives. The value"
+ " must be a power of 2 and the default value is 32 (0x20) This value"
+ " is only relevant if creating or normalizing U8 archives."
+ },
+
+ { OPT_ALIGN_PACK, false, false, false, false, false, 0, "align-pack",
+ "size",
+ "Define an align value for the sub files in PACK archives. The value"
+ " must be a power of 2 and the default value is 32 (0x20) This value"
+ " is only relevant if creating or normalizing OACK archives."
+ },
+
+ { OPT_ALIGN_BRRES, false, false, false, false, false, 0, "align-brres",
+ "size",
+ "Define an align value for the sub files in BRRES archives. The value"
+ " must be a power of 2 and the default value is 4 This value is only"
+ " relevant if creating or normalizing BRRES archives."
+ },
+
+ { OPT_ALIGN_BREFF, false, false, false, false, false, 0, "align-breff",
+ "size",
+ "Define an align value for the sub files in BREFF archives. The value"
+ " must be a power of 2 and the default value is 4 This value is only"
+ " relevant if creating or normalizing BREFF archives."
+ },
+
+ { OPT_ALIGN_BREFT, false, false, false, false, false, 0, "align-breft",
+ "size",
+ "Define an align value for the sub files in BREFT archives. The value"
+ " must be a power of 2 and the default value is 0x20 This value is"
+ " only relevant if creating or normalizing BREFT archives."
+ },
+
+ { OPT_ALIGN, false, false, false, false, false, 0, "align",
+ "size",
+ "Define an align value for the sub files in all archives. This is a"
+ " short cut for '--align-u8=size --align-pack=size --align-brres=size"
+ " --align-breff=size --align-breft=size'."
+ },
+
+ { OPT_ENCODE_ALL, false, false, false, false, false, 0, "encode-all",
+ 0,
+ "Encode all files. Normally a file is only encoded, if the source is"
+ " younger than the destination or the destination is missing. Only"
+ " files in the [encode] section of the file 'wszst-setup.txt' are"
+ " candidates for encoding. --eall is a short cut. Option --no-encode"
+ " takes precedence over --encode-all."
+ },
+
+ { OPT_ENCODE_IMG, false, false, false, false, false, 0, "encode-img",
+ 0,
+ "Encode all image files. Normally a image file is only encoded, if the"
+ " source is younger than the destination or the destination is"
+ " missing. Only files in the [encode] section of the file"
+ " 'wszst-setup.txt' are candidates for encoding. --eimg is a short"
+ " cut. If set, option --no-encode is ignored for images."
+ },
+
+ { OPT_NO_ENCODE, false, false, false, false, false, 0, "no-encode",
+ 0,
+ "Do not encode files before creating an archive. --noenc is a short"
+ " cut. Option --no-encode takes precedence over --encode-all, but"
+ " --encode-img takes precedence for images."
+ },
+
+ { OPT_NO_RECURSE, false, false, false, false, false, 0, "no-recurse",
+ 0,
+ "Do not create archives recursively. Normally files in the [create]"
+ " section of the file 'wszst-setup.txt' are created first. --norec is"
+ " a short cut."
+ },
+
+ { OPT_AUTO_ADD, false, false, false, false, false, 0, "auto-add",
+ 0,
+ "Analyze the KMP (if exist) and add missing BRRES, BREFF, BREFT, BRASD"
+ " and KCL files automatically, if the tool can find the files in any"
+ " sub directory named 'auto-add'. This sub directory is searched in"
+ " all directories of 'SEARCH_PATH'; use command 'wszst AUTOADD' to"
+ " view them. Command 'wszst AUTOADD' may also create an auto-add"
+ " database. --aadd is a short cut."
+ },
+
+ { 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_PT_DIR, true, false, false, false, false, 0, "pt-dir",
+ "[=mode]",
+ "Set one of the `point directory' modes REMOVE (=0), FORCE (=1) or"
+ " AUTO (default). If --pt-dir is used without parameter, then FORCE is"
+ " assumed.\n"
+ " This option is only relevant if creating an U8 archive. It decides,"
+ " if a special directory with name '.' will be added as base for all"
+ " other files."
+ },
+
+ { OPT_RM_AIPARAM, false, false, false, false, false, 0, "rm-aiparam",
+ 0,
+ "Remove the directory AIParam and all files from the archive. This"
+ " option has only impact, if creating a new archive or normalizing an"
+ " existing archive. --rmai is a short cut."
+ },
+
+ { OPT_U8, false, false, false, false, false, 0, "u8",
+ 0,
+ "Create an U8 archive, if possible. If the source is a WU8 archive,"
+ " convert it to an U8 archive. This is the default if the setup file"
+ " 'wszst-setup.txt' has no other definition. The default compression"
+ " mode is set to Yaz0 (see --yaz0)."
+ },
+
+ { OPT_SZS, false, false, false, false, false, 0, "szs",
+ 0,
+ "Short cut for '--u8 --yaz0': Create an U8 archive, if possible, and"
+ " set the compression method to Yaz0."
+ },
+
+ { OPT_WU8, false, false, false, false, false, 0, "wu8",
+ 0,
+ "Create a WU8 archive, if possible. If the source is an U8 archive,"
+ " convert it to a WU8 archive."
+ },
+
+ { OPT_XWU8, false, true, false, false, false, 0, "xwu8",
+ 0,
+ "Short cut for '--wu8 --xyz': Create a WU8 archive, if possible, and"
+ " set the compression method to XYZ."
+ },
+
+ { OPT_WBZ, false, false, false, false, false, 0, "wbz",
+ 0,
+ "Short cut for '--wu8 --bz': Create a WU8 archive, if possible, and"
+ " set the compression method to BZ."
+ },
+
+ { OPT_PACK, false, false, false, false, false, 0, "pack",
+ 0,
+ "Create a PACK archive."
+ },
+
+ { OPT_BRRES, false, false, false, false, false, 0, "brres",
+ 0,
+ "Create a BRRES archive."
+ },
+
+ { OPT_BREFF, false, false, false, false, false, 0, "breff",
+ 0,
+ "Create a BREFF archive."
+ },
+
+ { OPT_BREFT, false, false, false, false, false, 0, "breft",
+ 0,
+ "Create a BREFT archive."
+ },
+
+ { OPT_NO_COMPRESS, false, false, false, false, false, 0, "no-compress",
+ 0,
+ "Create an uncompressed file instead of a compressed SZS file. The"
+ " default destination changes to '%P/%N%T'. --noc is a short cut."
+ },
+
+ { OPT_COMPRESS, false, false, false, false, false, 'C', "compr",
+ "level",
+ "Define a compression level between 0..9: 0 (or NOCHUNKS) disables"
+ " finding chunks, 1 (or FAST) for the fastest standard compression and"
+ " 9 (or BEST) for the best (=default) compression. 10 (or ULTRA) and"
+ " 100-150 are special time-consuming compression modes. They are"
+ " dedicated to competitions with size limitations. The special value"
+ " UNCOMPRESSED acts like option --no-compress.\n"
+ " Because of many repeated data, the best bz-compression mode varies."
+ " Therefor the levels TRY2..TRY5 (or short T2..T5) are defined to find"
+ " the best compression mode with testing the first N modes of 9, 1, 8,"
+ " 2, 5. TRY2 is used for normalizing. For non bz-compression, TRY* are"
+ " the same as BEST.\n"
+ " Option --norm takes precedence over --compr and sets the"
+ " compression level to TRY2 (BEST).\n"
+ " For more modes and details type 'wszst -C list'. To force colorized"
+ " output type 'wszst -C clist'."
+ },
+
+ { OPT_FAST, false, false, false, false, false, 0, "fast",
+ 0,
+ "Short cut for --compr=fast: Set the fastest real compression. It also"
+ " overrides compression rates set by --norm or --compr."
+ },
+
+ { OPT_NORM, false, false, false, false, false, 'n', "norm",
+ 0,
+ "The uncompressed data will be normalized. See command NORMALIZE for"
+ " more details."
+ },
+
+ { OPT_LINKS, false, false, false, false, false, 0, "links",
+ 0,
+ "Support hardlinks while creating U8 and WU8 archives. Keep hardlinks"
+ " if normalizing U8 and WU8 archives. On extracting, search hardlinks"
+ " in every archive and try to create hardlinks at local file system."
+ },
+
+ { OPT_BASEDIR, false, false, false, false, true, 0, "basedir",
+ "directory",
+ "Extract only files from archives, that are below the DIRECTORY."
+ " Leading points and slashes and trailing slahes are removed from the"
+ " parameter. --bdir is short cut for --basedir."
+ },
+
+ { OPT_RECURSE, true, false, false, false, false, 'R', "recurse",
+ "[=level]",
+ "If a extracted file is a known and supported archive, than extract it"
+ " recursively until the entered level is reached. Level 0 (=NONE)"
+ " deactivates this. If --recurse is used without parameter, then"
+ " UNLIMITED is assumed.\n"
+ " -R does'nt accept a parameter and is a short cut for"
+ " --recurse=unlimited."
+ },
+
+ { OPT_EXT, false, false, false, false, false, 'e', "ext",
+ 0,
+ "For BRRES archives only: If a file is extracted, add a handy file"
+ " extension like '.mdl' to the file name. If set twice and a textual"
+ " file magic is available, use the file magic in lower case instead"
+ " like '.mdl0'."
+ },
+
+ { OPT_DECODE, false, false, false, false, false, 0, "decode",
+ 0,
+ "If a extracted file is known and can be decoded, do it. --dec is a"
+ " short cut."
+ },
+
+ { OPT_MIPMAPS, false, false, false, false, false, 0, "mipmaps",
+ 0,
+ "If reading a source, scan for mipmaps and load them too. For PNG"
+ " files, files named NAME.mm#.EXT with #=1.. are searched. This is the"
+ " default. --mm is a short cut."
+ },
+
+ { OPT_NO_MIPMAPS, false, false, false, false, false, 0, "no-mipmaps",
+ 0,
+ "If reading a source, ignore mipmaps. This disables not the creation"
+ " of mipmaps (see -n-mipmaps). --no-mm is a short cut."
+ },
+
+ { OPT_N_MIPMAPS, false, false, false, false, false, 0, "n-mipmaps",
+ "num",
+ "Force the number of mipmaps. Values between 0 and 20 are allowed."
+ " Value OFF (default) disables this option. If enabled, options"
+ " --max-mipmaps and --mipmap-size are ignored. The creation of mipmaps"
+ " stops if the width or the height of the mipmap becomes 0. --n-mm is"
+ " a short cut."
+ },
+
+ { OPT_MAX_MIPMAPS, false, false, false, false, false, 0, "max-mipmaps",
+ "num",
+ "Control the automatic mipmap creation. Values between 0 and 20 are"
+ " allowed and the default is 4. The mipmap creation for an image"
+ " stops, if the set number is reached. This option is ignored, if"
+ " --n-mipmaps is enabled. --max-mm is a short cut."
+ },
+
+ { OPT_MIPMAP_SIZE, false, false, false, false, false, 0, "mipmap-size",
+ "num",
+ "Define the minimal width and minimal height of a generated mipmap."
+ " Any value >0 is allowed. The default is 8. This option is ignored,"
+ " if --n-mipmaps is enabled. --mm-size is a short cut."
+ },
+
+ { OPT_FAST_MIPMAPS, false, false, false, false, false, 0, "fast-mipmaps",
+ 0,
+ "If resizing an image, use the old fast resize algorithm (default"
+ " until v1.64a) instead of the new smart one. Both algorithms differ"
+ " only, when creating a mipmap for images with odd width or odd"
+ " height. The old algorithm is faster (factor 2-4) than the default"
+ " algorithm, but the new algorithm creates better resized images. See"
+ " https://szs.wiimm.de/doc/img/resize for details. --fast-mm is a"
+ " short cut."
+ },
+
+ { OPT_CMPR_DEFAULT, false, false, false, false, false, 0, "cmpr-default",
+ "rgb1[,rgb2]",
+ "Define 2 colors for the case, that all 16 pixels of a CMPR block are"
+ " transparent. The default is to calculate an average color of all"
+ " transparent pixels. Before v2.04 white was used.\n"
+ " 2 RGB values (hex values with 6 digits each) are expected as"
+ " parameter. If optional RGB2 is missed, a copy of RGB1 is used. As"
+ " first step, both colors are converted to RGB565 colors C1 and C2 and"
+ " sorted, so that C1<C2 (mandatory for CMPR). If C1 and C2 are"
+ " identical, the least significant bit of green is cleared for C1 and"
+ " set for C2.\n"
+ " Use parameter '0' to force black, '-1' to force white, or '-' to"
+ " reset to auto calculation."
+ },
+
+ { OPT_CUT, false, false, false, false, false, 0, "cut",
+ 0,
+ "Cut different non archive files into smaller peaces (logical units"
+ " like headers, groups, sections) or list these peaces as single sub"
+ " files for a more detailed analysis. Supported file types are BMG,"
+ " BREFT-IMG, KMP, PAT, TEX, TPL, BRRES sub files and more."
+ },
+
+ { OPT_ALL, false, false, false, false, false, 'a', "all",
+ 0,
+ "Extract and decode all known and supported files recursively. This is"
+ " a short cut for '--recurse --decode --mipmaps'. If entered twice,"
+ " option --cut is included too."
+ },
+
+ { OPT_RAW, false, false, false, false, false, 0, "raw",
+ 0,
+ "Extract BRRES sub file in raw mode and do not adjust string pointers"
+ " and other offsets."
+ },
+
+ { 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 == 130
+
+ //----- 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_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_BATTLE, true, false, false, false, false, 0, "battle",
+ "[=mode]",
+ "MODE is either OFF, AUTO (default) or ON. Without value, ON is used.\n"
+ " If mode is ON, assume a battle arena and enable a spüecial battle"
+ " support. If mode is OFF, disable special battle arena support. If"
+ " mode is AUTO, analyse the KMP and estimate, if it is a battle"
+ " areana. Modes ON and OFF override KMP parameter BATTLE-MODE."
+ },
+
+ { OPT_EXPORT_FLAGS, true, false, false, false, false, 0, "export-flags",
+ "[=mode]",
+ "MODE is either OFF, AUTO (default) or ON. Without value, ON is used."
+ " --exflags is an alternative name for the option.\n"
+ " If mode is ON, this feature is forced: On creating a KMP text file,"
+ " the option EXPORT-FLAGS is always set to 1. On creating a binary KMP"
+ " file, the flags are always exported as lowest byte of the scale"
+ " factors or x-rotation.\n"
+ " If mode is OFF, this feature is totally disabled. If mode is not"
+ " AUTO, KMP parameter EXPORT-FLAGS is overridden."
+ },
+
+ { OPT_ROUTE_OPTIONS, true, false, false, false, false, 0, "route-options",
+ "[=mode]",
+ "MODE is either OFF, AUTO (default) or ON. Without value, ON is used.\n"
+ " On mode ON, the new commands $PREV and $NEXT are printed for each"
+ " group of KMP sections ENPT and ITPT. On mode AUTO, the command is"
+ " only printed, if any option is set or if parameter SHOW-OPTIONS is"
+ " >0. On mode OFF, this feature is totally disabled to create KMP text"
+ " files that are compatible with versions <1.60a.\n"
+ " This option exists only for a transition period. Its behaviour will"
+ " be changed in the future. --ropt is a short cut."
+ },
+
+ { OPT_WIM0, true, false, false, false, false, 0, "wim0",
+ "[=mode]",
+ "MODE is either OFF, AUTO (default) or ON. Without value, ON is used.\n"
+ " If mode is ON, a KMP section called WIM0 is added on binary KMP"
+ " creation. The sections contains information for Wiimms tools.\n"
+ " If mode is OFF, this feature is totally disabled. If mode is not"
+ " AUTO, KMP parameter KMP-WIM0 is overridden."
+ },
+
+ { OPT_LOAD_KCL, false, false, false, false, false, 0, "load-kcl",
+ "file",
+ "Load a KCL or OBJ file for reference issues."
+ },
+
+ { OPT_KCL, false, false, false, false, false, 0, "kcl",
+ "list",
+ "Set global options for KCL processing. Parameter 'list' is a comma"
+ " separated list of keywords. A minus sign before a keyword disables a"
+ " setting. Each occurrence of the option will only change entered"
+ " settings and all other settings are untouched.\n"
+ " Keyword DEFAULT resets the default settings and CLEAR disables all."
+ " Keywords SMALL, MEDIUM and CHARY select the default parameters for"
+ " the octree creation. The other allowed keywords are: FAST, NEW,"
+ " CENTER, ROUND, NORMALS, MTL, WIIMM, TRIANGLES, OUT-SWAP, G, USEMTL,"
+ " CLIP, IN-SWAP, AUTO, HEX4, HEX23, HEX, DROP-UNUSED, DROP-FIXED,"
+ " DROP-INVALID, DROP, RM-FACEDOWN, RM-FACEUP, FIX-ALL, CONV-FACEUP,"
+ " WEAK-WALLS, SORT, INPLACE, SILENT and LOG. See"
+ " https://szs.wiimm.de/opt/kcl for details."
+ },
+
+ { OPT_TRI_AREA, false, false, false, false, false, 0, "tri-area",
+ "EXPR",
+ "Define the minimal area size of KCL triangles. The intention is to"
+ " ignore triangles that are generally to small. EXPR is a floating"
+ " point number or expression. Triangles are invalidated if their area"
+ " size is smaller than EXPR. The test is executed after reading files,"
+ " after transformations, and after calculating normals and lengths."
+ " Values between 0.01 and 4.0 are recommended. The careful value 1.0"
+ " is used as default. Value 0 disables this filter functionality."
+ },
+
+ { OPT_TRI_HEIGHT, false, false, false, false, false, 0, "tri-height",
+ "EXPR",
+ "Define the minimal height of KCL triangles. The intention is to"
+ " ignore deformed triangles (very slim, but long). EXPR is a floating"
+ " point number or expression. Triangles are invalidated if at least 1"
+ " of the 3 heights is smaller than EXPR. The test is executed after"
+ " reading files, after transformations, and after calculating normals"
+ " and lengths. Values between 0.01 and 2.0 are recommended. The"
+ " careful value 1.0 is used as default. Value 0 disables this filter"
+ " functionality.\n"
+ " --tri-ht is an alternative name for the option."
+ },
+
+ { OPT_XTRIDATA, true, true, false, false, false, 0, "xtridata",
+ "[=level]",
+ "Enable extended KCL triangles tests. The default level is 1."
+ },
+
+ { OPT_KMP, false, false, false, false, false, 0, "kmp",
+ "list",
+ "Set global options for KMP processing. Parameter 'list' is a comma"
+ " separated list of keywords. A minus sign before a keyword disables a"
+ " setting. Each occurrence of the option will only change entered"
+ " settings and all other settings are untouched.\n"
+ " Keyword DEFAULT resets the default settings and CLEAR disables all."
+ " The other allowed keywords are: FORCE, NEW, RM-SPCITEM, LEFT, RIGHT,"
+ " WIDE, NARROW, FIX-CKPH, FIX-ENPH, FIX-ITPH, FIX-PH, FIX-CKNEXT,"
+ " FIX-CKJGPT, FIX-CK, FIX-ALL, MASK-PFLAGS, RM-LECODE, PURGE-GOBJ,"
+ " FULL-DEFOBJ, DUMP-CLASS, DUMP-ONEWAY, DUMP-ALL, 1LAP ... 9LAPS,"
+ " MAX-LAPS, RM-EMPTY, INPLACE, SILENT and LOG. See"
+ " https://szs.wiimm.de/opt/kmp for details."
+ },
+
+ { OPT_SPEED_MOD, false, false, false, false, false, 0, "speed-mod",
+ "factor",
+ "The speed modifier is a user extensions to change the basic speed of"
+ " all vehicles. The speed factor itself is stored into KMP:STGI"
+ " section of a track.\n"
+ " If --speed-mod is set to a value >0.0, then the last 2 bytes of"
+ " the STGI section are patched. The value 0.0 reset these 2 bytes and"
+ " deactivates the speed modifier."
+ },
+
+ { OPT_KTPT2, false, false, false, false, false, 0, "ktpt2",
+ "vector",
+ "Insert or replace a second KTPT. Use VECTOR as new position. VECTOR"
+ " is either X,Z or X,Y,Z or an expression. Set Y to 0 for an automatic"
+ " defined height.\n"
+ " If the first 4 characters of VECTOR are 'AUTO' (ignoring case),"
+ " then the position is calculated automatically and set to the"
+ " recommendation of command wkmpt KTPT.\n"
+ " The tool looks for the nearest lap counter (CKPT with mode 0) and"
+ " adjust the KTPT: The direction of the lap counter is copied and the"
+ " KTPT is moved to the lap counter line using the new direction.\n"
+ " LE-CODE uses the second KTPT to draw the finish line at another"
+ " place away from the start position."
+ },
+
+ { OPT_TFORM_KMP, false, false, false, false, false, 0, "tform-kmp",
+ "list",
+ "Select KMP sections and objects for a transformation. --tkmp is a"
+ " short cut. The option expects a comma separated list of keywords."
+ " Non ambiguous of keywords are allowed and minus signs within"
+ " keywords are optional (e.g. GOBJS). A minus sign before a keyword"
+ " disables transformation of the related section or object.\n"
+ " Sections are selected by the KMP section names AREA, CAME, CKPT,"
+ " CNPT, ENPT, GOBJ, ITPT, JGPT, KTPT, MSPT and POTI.\n"
+ " Objects are selected by the keywords AREA-POSITION, AREA-ROTATE,"
+ " AREA-SCALE, CAME-POSITION, CKPT-POSITION, CNPT-POSITION,"
+ " CNPT-ROTATE, ENPT-POSITION, ENPT-SCALE, GOBJ-POSITION, GOBJ-ROTATE,"
+ " GOBJ-SCALE, ITPT-POSITION, ITPT-SCALE, JGPT-POSITION, JGPT-ROTATE,"
+ " KTPT-POSITION, KTPT-ROTATE, MSPT-POSITION, MSPT-ROTATE and"
+ " POTI-POSITION.\n"
+ " The keywords NONE and ALL (default) complete the field."
+ },
+
+ { OPT_MDL, false, false, false, false, false, 0, "mdl",
+ "list",
+ "Set global options for MDL processing. To enable MDL patching, use"
+ " option --patch-file and select BRRES files for patching.\n"
+ " Parameter 'list' is a comma separated list of keywords. A minus"
+ " sign before a keyword disables a setting. Each occurrence of the"
+ " option will only change entered settings and all other settings are"
+ " untouched.\n"
+ " A MDL transformation (controlled by the transformation options) is"
+ " only done, if at least one of the keywords VECTOR or VERTEX is set.\n"
+ " Keyword DEFAULT resets the default settings (VERTEX) and CLEAR"
+ " disables all. The other allowed keywords are: VECTOR, MATRIX,"
+ " VERTEX, PARENT, CHILD and LOG. See https://szs.wiimm.de/opt/mdl for"
+ " details."
+ },
+
+ { OPT_PAT, false, false, false, false, false, 0, "pat",
+ "list",
+ "Set global options for PAT processing. Parameter 'list' is a comma"
+ " separated list of keywords. A minus sign before a keyword disables a"
+ " setting. Each occurrence of the option will only change entered"
+ " settings and all other settings are untouched.\n"
+ " Keyword DEFAULT resets the default settings and CLEAR disables all."
+ " The other allowed keywords are: AUTO, SIMPLE, COMPLEX, BOTH, SILENT"
+ " and LOG. See https://szs.wiimm.de/opt/pat for details."
+ },
+
+ { OPT_PATCH_FILE, false, false, false, false, false, 0, "patch-file",
+ "list",
+ "Define, which kind of KMP, KCL and BRRES/MDL files are objects for"
+ " patching. --pfile is a short cut.\n"
+ " Parameter 'list' is a comma separated list of keywords. A minus"
+ " sign before a keyword disables a setting. Each occurrence of the"
+ " option will only change entered settings and all other settings are"
+ " untouched.\n"
+ " Keyword DEFAULT resets the default settings (TRACK,LOG) and CLEAR"
+ " disables all. The other allowed keywords are: KMP, KCL, OTHER-KCL,"
+ " ALL-KCL, MODEL, MAP, VRCORN, OTHER-BRRES, ALL-BRRES, TRACK"
+ " (=KMP,KCL,MODEL,MAP,VRCORN), ALL, LOG and LOG-ALL. See"
+ " https://szs.wiimm.de/opt/patch for details."
+ },
+
+ { OPT_KMG_LIMIT, false, false, false, false, false, 0, "kmg-limit",
+ "seconds",
+ "Limit the run time for Ballon Battle and Coin Runners to the given"
+ " time in SECONDS. Smaller values are not changed. The limitation is"
+ " carried out after loading a binary file and before scanning a text"
+ " file. Value 0 disables this option."
+ },
+
+ { OPT_KMG_COPY, false, false, false, false, false, 0, "kmg-copy",
+ "id",
+ "Make all 10 slots of a KMG file equal after loading a binary file and"
+ " before scanning a text file. ID is either a slot index (0..9) or a"
+ " slot name (A11..A25) and declares the source slot. Value -1 disables"
+ " this option. If ID contains brackets [...], then it is analysed as"
+ " an arena name and the part between the brackets is searched for"
+ " attributes A11..A25."
+ },
+
+ { OPT_LT_CLEAR, false, false, false, false, false, 0, "lt-clear",
+ 0,
+ "Clear the LEX/TEST section and remove the section and course.lex if"
+ " empty. This option is executed before all other --lt-* options."
+ },
+
+ { OPT_LT_ONLINE, false, false, false, false, false, 0, "lt-online",
+ "mode",
+ "Set LEX/TEST parameter OFFLINE-ONLINE to this MODE. MODE is one of"
+ " AUTO (default), NEVER or ALWAYS. Only track.szs files are modified."
+ " If needed, file course.lex and section TEST are created or removed"
+ " if empty."
+ },
+
+ { OPT_LT_N_PLAYERS, false, false, false, false, false, 0, "lt-n-players",
+ "offline,online",
+ "Set LEX/TEST parameters N-OFFLINE and N-ONLINE to these integer"
+ " values. Only track.szs files are modified. If needed, file"
+ " course.lex and section TEST are created or removed if empty."
+ },
+
+ { OPT_LT_COND_BIT, false, false, false, false, false, 0, "lt-cond-bit",
+ "bitnum",
+ "Set LEX/TEST parameter COND-BIT to this integer value. Use -1 to"
+ " deactivate this COND-BIT. Only track.szs files are modified. If"
+ " needed, file course.lex and section TEST are created or removed if"
+ " empty."
+ },
+
+ { OPT_LT_GAME_MODE, false, false, false, false, false, 0, "lt-game-mode",
+ "mode",
+ "Set LEX/TEST parameter GAME-MODE to this MODE. MODE is one of AUTO"
+ " (default), BALLOON, COIN, VERSUS or ITEMRAIN. Only track.szs files"
+ " are modified. If needed, file course.lex and section TEST are"
+ " created or removed if empty."
+ },
+
+ { OPT_LT_ENGINE, false, false, false, false, false, 0, "lt-engine",
+ "mode",
+ "Set LEX/TEST parameter ENGINE to this MODE. MODE is one of AUTO"
+ " (default), BATTLE, 50CC, 100CC, 150CC, 200CC, 150M or 200M. Only"
+ " track.szs files are modified. If needed, file course.lex and section"
+ " TEST are created or removed if empty."
+ },
+
+ { OPT_LT_RANDOM, false, false, false, false, false, 0, "lt-random",
+ "index",
+ "Force a random scenario, if between 1 and 8. Value 0 enables auto"
+ " selection and -1 disables this option. Only track.szs files are"
+ " modified. If needed, file course.lex and section TEST are created or"
+ " removed if empty."
+ },
+
+ { OPT_LEX_PURGE, false, false, false, false, false, 0, "lex-purge",
+ 0,
+ "Delete LEX sections without any impact. Delete sub-file course.lex if"
+ " it no longer contains a section. This option is executed after all"
+ " --lt-* options."
+ },
+
+ { OPT_CACHE, false, false, false, false, false, 0, "cache",
+ "dir",
+ "Define a directory for a SZS cache.If creating a YAZ0 compressed file"
+ " with standard compression (level 9), the cache is searched for the"
+ " compressed version. File cache-content.txt is used as file list with"
+ " hash values. If the cache file is not found or the content differ,"
+ " the file is (re-)created and exit status 2=differ is returned.\n"
+ " Background: Loading a compressed SZS and content verification is"
+ " much faster than YAZ compression.\n"
+ " For legay reasons: If parameter DIR is a file, it is split into"
+ " directory and base name. The directory is used for the cache"
+ " directory and the base name for option --cname, but only if --cname"
+ " is not used."
+ },
+
+ { OPT_CNAME, false, false, false, false, false, 0, "cname",
+ "name",
+ "Name of the first cache file. This parameter overrides the generated"
+ " cache name. The name is used only once for the very first cache"
+ " candidate."
+ },
+
+ { 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, false, 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, false, 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_AUTOADD_PATH, false, false, false, false, false, 0, "autoadd-path",
+ "directory",
+ "Define an alternative directory as autoadd library. The default is,"
+ " that the sub-directory called './auto-add/' of all search paths are"
+ " used. Use 'wszst test -vvvv' for tests."
+ },
+
+ { 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_TINY, false, false, false, false, false, 0, "tiny",
+ "mode",
+ "Set tiny mode to a level between 0 and 7. See"
+ " https://szs.wiimm.de/opt/tiny for details."
+ },
+
+ { OPT_YAZ0, false, false, false, false, false, 0, "yaz0",
+ 0,
+ "If creating a compressed file, force Yaz0 compression. Yaz0"
+ " compression is the default, if no compression method is defined by"
+ " option or setup file."
+ },
+
+ { OPT_YAZ1, false, false, false, false, false, 0, "yaz1",
+ 0,
+ "If creating a compressed file, force Yaz1 compression. The difference"
+ " to Yaz0 is only the magic, which is set to 'Yaz1'."
+ },
+
+ { OPT_XYZ, false, false, false, false, false, 0, "xyz",
+ 0,
+ "If creating a compressed file, force XYZ compression (an experimental"
+ " Yaz0 variant)."
+ },
+
+ { OPT_BZ, false, false, false, false, false, 0, "bz",
+ 0,
+ "If creating a compressed file, force BZ compression (a BZIP2"
+ " variant)."
+ },
+
+ { OPT_SH, false, false, false, false, true, 0, "sh",
+ 0,
+ "Dump info using SH syntax. Use '--var name' as prefix."
+ },
+
+ { OPT_BASH, false, false, false, false, false, 0, "bash",
+ 0,
+ "Dump info using BASH syntax. Use '--var name' as prefix."
+ },
+
+ { OPT_JSON, false, false, false, false, false, 0, "json",
+ 0,
+ "Dump info using JSON syntax. Options --var and --array are ignored."
+ },
+
+ { OPT_PHP, false, false, false, false, false, 0, "php",
+ 0,
+ "Dump infos using PHP syntax. Use '--var name' as variable name of the"
+ " resulting object."
+ },
+
+ { OPT_MAKEDOC, false, false, false, false, false, 0, "makedoc",
+ 0,
+ "Dump infos using MakeDoc syntax. Use '--var name' as variable name of"
+ " the resulting map."
+ },
+
+ { OPT_VAR, false, false, false, false, false, 0, "var",
+ "varname",
+ "Use VARNAME as variable name or prefix on script output. The default"
+ " variabe name is 'res'."
+ },
+
+ { OPT_ARRAY, false, false, false, false, false, 0, "array",
+ 0,
+ "Use an array on script output if possible. If arrays are not"
+ " supported, then append a '_#' suffix with an zero based index to the"
+ " variable name defined by '--var name'. In this case, only one output"
+ " file is created."
+ },
+
+ { OPT_AVAR, false, false, false, false, false, 0, "avar",
+ "varname",
+ "Shortcut for: '--array --var name'"
+ },
+
+ { 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",
+ "dir",
+ "Create the directory and extract different objects in different"
+ " formats at the moment when they are seen. This is a development"
+ " helper option."
+ },
+
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 200
+
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// alternate option infos ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoOption_t option_grp_TEXTOUT_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in decoded text files."
+ };
+
+static const InfoOption_t option_grp_BMG_LONG =
+ { 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."
+ };
+
+static const InfoOption_t option_grp_ENCODE_ALL =
+ { OPT_ALL, false, false, false, false, false, 'a', "all",
+ 0,
+ " Encode all files. This is a short cut for --encode-all (and more"
+ " options in the future)."
+ };
+
+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_TEST_VERBOSE =
+ { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose",
+ 0,
+ "Print the matrices of transformations."
+ };
+
+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_BRSUB_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, print hints about unusual versions too. If set twice, print a"
+ " status line for each found BRRES sub file."
+ };
+
+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_MATRIX_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "If set once, suppress vector dumps for transformation steps and"
+ " ignore option --long. If set twice, suppress vector dump for final"
+ " transformation too."
+ };
+
+static const InfoOption_t option_cmd_MATRIX_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set once, print inverse matrix for the final transformation. If"
+ " set twice, print inverse matrix for all transformations."
+ };
+
+static const InfoOption_t option_cmd_MATRIX_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "Option --quiet is dedicated to automatic tests comparing the old and"
+ " new transformation algorithms. If set once, the tables are only"
+ " printed, if the results differ. If set twice, nothing is printed at"
+ " all and only the exit status will inform about the results."
+ };
+
+static const InfoOption_t option_cmd_VR_CALC_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress header and print only results for VR_winner-VR_looser."
+ };
+
+static const InfoOption_t option_cmd_VR_RACE_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print full matrix of delta values."
+ };
+
+static const InfoOption_t option_cmd_AUTOADD_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ " If set, suppress logging."
+ };
+
+static const InfoOption_t option_cmd_AUTOADD_VERBOSE =
+ { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose",
+ 0,
+ "If set, list all missed and invalid files of the current auto-add"
+ " archive after the adding operation. If set twice, then additionally"
+ " list all already existing files in the current auto-add archive."
+ };
+
+static const InfoOption_t option_cmd_AUTOADD_DEST =
+ { OPT_DEST, false, false, false, false, false, 'd', "dest",
+ "path",
+ "Define a destination directory as current auto-add archive. The"
+ " default is the standard auto-add path. Try AUTOADD without sources"
+ " to view the path."
+ };
+
+static const InfoOption_t option_cmd_AUTOADD_OVERWRITE =
+ { OPT_OVERWRITE, false, false, false, false, false, 'o', "overwrite",
+ 0,
+ "Overwrite already existing files instead of only adding new files to"
+ " the auto-add archive."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_VERBOSE =
+ { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose",
+ 0,
+ "Print an additonally hex status value as second column before the"
+ " file name. These values can be used to find a selection mask."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_ALL =
+ { OPT_ALL, false, false, false, false, false, 'a', "all",
+ 0,
+ "Print the '_d' files too. If set twice, print all files (same as"
+ " -all)."
+ };
+
+static const InfoOption_t option_cmd_TRACKS_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Print 5 non track files too. If set twice, print 4 more files with"
+ " old BRRES sub file formats too."
+ };
+
+static const InfoOption_t option_cmd_LIST_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, the size of each file is printed. If set twice, offset and"
+ " size are printed. If set three times, debugging mode is enabled."
+ };
+
+static const InfoOption_t option_cmd_NAME_REF_SORT =
+ { OPT_SORT, false, false, false, false, false, 'S', "sort",
+ "mode",
+ "Define the sort order of the reference. NONE (default) uses the order"
+ " of the string pool. BRRES orders in standard BRRES order by ASCCI"
+ " value and case sensitive. NAME similar to BRRES, but case"
+ " insensitive. OFFSET orders by the file offset of first usage."
+ };
+
+static const InfoOption_t option_cmd_NAME_REF_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "If set, suppress the offsets of the strings. This makes comparisons"
+ " after name changes easier. If set twice, suppress reference offsets"
+ " too. If set 3 times, suppress all offsets."
+ };
+
+static const InfoOption_t option_cmd_NAME_REF_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, a list ordered by NAME or BRRES (default) and a second list"
+ " ordered by OFFSET is printed. If set twice, a third list with order"
+ " NONE is appended."
+ };
+
+static const InfoOption_t option_cmd_ILIST_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, image width, height and size are printed. If set twice, a"
+ " block info and attribites are printed too."
+ };
+
+static const InfoOption_t option_cmd_MEMORY_DECODE =
+ { OPT_DECODE, false, false, false, false, false, 0, "decode",
+ 0,
+ "Decode binary files to find memory addresses of sections."
+ };
+
+static const InfoOption_t option_cmd_MEMORY_MIPMAPS =
+ { OPT_MIPMAPS, false, false, false, false, false, 0, "mipmaps",
+ 0,
+ "Analyze images and dump mipmap adresses too."
+ };
+
+static const InfoOption_t option_cmd_MEMORY_ALL =
+ { OPT_ALL, false, false, false, false, false, 'a', "all",
+ 0,
+ "A short cut for '--recurse --decode --mipmaps'. If entered twice,"
+ " option --cut is included too."
+ };
+
+static const InfoOption_t option_cmd_MEMORY_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, print absolute offsets too."
+ };
+
+static const InfoOption_t option_cmd_SHA1_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress output of the filename."
+ };
+
+static const InfoOption_t option_cmd_SHA1_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set and --db64 is not active, start the line with the length of"
+ " the decompressed source as decimal number (field width 9) separated"
+ " with a comma from the SHA1 checksum. If set twice, prefix each line"
+ " with the modification time in the format 'yyyy-mm-dd HH:MM:SS '.\n"
+ " If set and --db64 is active, then CKPT lap counter, STGI lap"
+ " counter, speed factor and slot info are inserted beteen checksum and"
+ " filename. All columns are separated by one or two spaces."
+ };
+
+static const InfoOption_t option_cmd_ANALYZE_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Append a list of special files with size, SHA1 and file name."
+ };
+
+static const InfoOption_t option_cmd_ANALYZE_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "Suppress logging of input and output files."
+ };
+
+static const InfoOption_t option_cmd_DISTRIBUTION_SOURCE =
+ { OPT_SOURCE, false, false, false, false, false, 's', "source",
+ "path",
+ "Define a text file for filename to slot translation. A »slot"
+ " filename« list is expected. Use this option multiple times to"
+ " define more than one source file. A definition of a later source"
+ " overwrites previous definitions. The file RESULT of the command line"
+ " is appended automatically as last entry, if exists and not already"
+ " included."
+ };
+
+static const InfoOption_t option_cmd_DIFF_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "If set once, only a summary status for each section is printed. If"
+ " set twice, only a total summary status is printed. If set three"
+ " times, the status is only reported as exit status."
+ };
+
+static const InfoOption_t option_cmd_CHECK_NO_CHECK =
+ { OPT_NO_CHECK, false, false, false, false, false, 'N', "no-check",
+ 0,
+ "Don't check the KCL and KMP files."
+ };
+
+static const InfoOption_t option_cmd_CHECK_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Print only warnings and suppress hints."
+ };
+
+static const InfoOption_t option_cmd_CHECK_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "Be verbose and print more statistics."
+ };
+
+static const InfoOption_t option_cmd_CHECK_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "Be quiet until the first warning or hint is found."
+ };
+
+static const InfoOption_t option_cmd_SLOTS_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Print the slot list in a compressed form without spaces."
+ };
+
+static const InfoOption_t option_cmd_STGI_IGNORE =
+ { OPT_IGNORE, false, false, false, false, false, 'i', "ignore",
+ 0,
+ "If set, ignore non existing source files and files without KMP"
+ " without warning. If set twice, ignore files with standard settings"
+ " too."
+ };
+
+static const InfoOption_t option_cmd_ISARENA_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "If set, suppress the output of header and filenames."
+ };
+
+static const InfoOption_t option_cmd_ISARENA_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "If set, print nothing and set only the exit status."
+ };
+
+static const InfoOption_t option_cmd_ISARENA_IGNORE =
+ { OPT_IGNORE, false, false, false, false, false, 'i', "ignore",
+ 0,
+ "If set, ignore non existing source files and files without KMP"
+ " without warning."
+ };
+
+static const InfoOption_t option_cmd_MINIMAP_LONG =
+ { OPT_LONG, false, false, false, false, false, 'l', "long",
+ 0,
+ "If set, print the matrices too. If set twice, print minimum and"
+ " maximum values too."
+ };
+
+static const InfoOption_t option_cmd_BMG_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in decoded text files."
+ };
+
+static const InfoOption_t option_cmd_KCL_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in decoded text files."
+ };
+
+static const InfoOption_t option_cmd_KMP_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in decoded text files."
+ };
+
+static const InfoOption_t option_cmd_LEX_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress the syntax information section in decoded text files."
+ };
+
+static const InfoOption_t option_cmd_INFO_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress output of the printed filename."
+ };
+
+static const InfoOption_t option_cmd_GHOST_NO_HEADER =
+ { OPT_NO_HEADER, false, false, false, false, false, 'H', "no-header",
+ 0,
+ "Suppress output of the printed filename."
+ };
+
+static const InfoOption_t option_cmd_VEHICLE_SOURCE =
+ { OPT_SOURCE, false, false, false, false, false, 's', "source",
+ "path",
+ "Load the file instead of using the internal base."
+ };
+
+static const InfoOption_t option_cmd_VEHICLE_DEST =
+ { OPT_DEST, false, false, false, false, false, 'd', "dest",
+ "path",
+ "Define a destination path (directory/file). The destination - means:"
+ " write to standard output."
+ };
+
+static const InfoOption_t option_cmd_VEHICLE_QUIET =
+ { OPT_QUIET, false, false, false, false, false, 'q', "quiet",
+ 0,
+ "Suppress logging."
+ };
+
+static const InfoOption_t option_cmd_VEHICLE_VERBOSE =
+ { OPT_VERBOSE, false, false, false, false, false, 'v', "verbose",
+ 0,
+ "Log patching."
+ };
+
+static const InfoOption_t option_cmd_VEHICLE_BRIEF =
+ { OPT_BRIEF, false, false, false, false, false, 'B', "brief",
+ 0,
+ "Suppress min/max counts on dumps."
+ };
+
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// 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_BRSUB, "BRSUB", 0, 0 },
+ { CMD_SYMBOLS, "SYMBOLS", 0, 0 },
+ { CMD_FUNCTIONS, "FUNCTIONS", 0, 0 },
+ { CMD_CALCULATE, "CALCULATE", 0, 0 },
+ { CMD_MATRIX, "MATRIX", 0, 0 },
+ { CMD_FLOAT, "FLOAT", 0, 0 },
+ { CMD_VR_CALC, "VR-CALC", "VRCALC", 0 },
+ { CMD_VR_RACE, "VR-RACE", "VRRACE", 0 },
+ { CMD_AUTOADD, "AUTOADD", 0, 0 },
+ { CMD_TRACKS, "TRACKS", 0, 0 },
+ { CMD_SCANCACHE, "SCANCACHE", 0, 0 },
+ { CMD_EXPORT, "_EXPORT", 0, 0 },
+ { CMD_CODE, "_CODE", 0, 0 },
+ { CMD_RECODE, "_RECODE", 0, 0 },
+ { CMD_SUBFILE, "_SUBFILE", 0, 0 },
+ { CMD_LIST, "LIST", "LS", 0 },
+ { CMD_LIST_L, "LIST-L", "LL", 0 },
+ { CMD_LIST_L, "LISTL", 0, 0 },
+ { CMD_LIST_LL, "LIST-LL", "LLL", 0 },
+ { CMD_LIST_LL, "LISTLL", 0, 0 },
+ { CMD_LIST_LLL, "LIST-LLL", "LLLL", 0 },
+ { CMD_LIST_LLL, "LISTLLL", 0, 0 },
+ { CMD_LIST_A, "LIST-A", "LA", 0 },
+ { CMD_LIST_A, "LISTA", 0, 0 },
+ { CMD_LIST_LA, "LIST-LA", "LLA", 0 },
+ { CMD_LIST_LA, "LISTLA", 0, 0 },
+ { CMD_NAME_REF, "NAME-REF", "NAMEREF", 0 },
+ { CMD_ILIST, "ILIST", "IL", 0 },
+ { CMD_ILIST_L, "ILIST-L", "ILL", 0 },
+ { CMD_ILIST_L, "ILISTL", 0, 0 },
+ { CMD_ILIST_LL, "ILIST-LL", "ILLL", 0 },
+ { CMD_ILIST_LL, "ILISTLL", 0, 0 },
+ { CMD_ILIST_A, "ILIST-A", "ILA", 0 },
+ { CMD_ILIST_LA, "ILIST-LA", "ILLA", 0 },
+ { CMD_ILIST_LA, "ILISTLA", 0, 0 },
+ { CMD_MEMORY, "MEMORY", "MEM", 0 },
+ { CMD_MEMORY_A, "MEMORY-A", "MEMA", 0 },
+ { CMD_DUMP, "DUMP", 0, 0 },
+ { CMD_SHA1, "SHA1", 0, 0 },
+ { CMD_ANALYZE, "ANALYZE", "ANA", 0 },
+ { CMD_ANALYZE, "ANALYSE", 0, 0 },
+ { CMD_DISTRIBUTION, "DISTRIBUTION", "DIST", 0 },
+ { CMD_DIFF, "DIFF", "CMP", 0 },
+ { CMD_CHECK, "CHECK", 0, 0 },
+ { CMD_SLOTS, "SLOTS", 0, 0 },
+ { CMD_STGI, "STGI", 0, 0 },
+ { CMD_ISARENA, "ISARENA", 0, 0 },
+ { CMD_NORMALIZE, "NORMALIZE", "NORM", 0 },
+ { CMD_PATCH, "PATCH", 0, 0 },
+ { CMD_COPY, "COPY", "CP", 0 },
+ { CMD_DUPLICATE, "DUPLICATE", "DUP", 0 },
+ { CMD_MINIMAP, "MINIMAP", 0, 0 },
+ { CMD_COMPRESS, "COMPRESS", "COM", 0 },
+ { CMD_DECOMPRESS, "DECOMPRESS", "DEC", 0 },
+ { CMD_ENCODE, "ENCODE", "E", 0 },
+ { CMD_CREATE, "CREATE", "C", 0 },
+ { CMD_UPDATE, "UPDATE", "U", 0 },
+ { CMD_EXTRACT, "EXTRACT", "X", 0 },
+ { CMD_XDECODE, "XDECODE", "XD", 0 },
+ { CMD_XEXPORT, "XEXPORT", "XX", 0 },
+ { CMD_XALL, "XALL", "XA", 0 },
+ { CMD_XCOMMON, "XCOMMON", 0, 0 },
+ { CMD_BINARY, "BINARY", "BIN", 0 },
+ { CMD_TEXT, "TEXT", "TXT", 0 },
+ { CMD_CAT, "CAT", 0, 0 },
+ { CMD_BMG, "BMG", 0, 0 },
+ { CMD_KCL, "KCL", 0, 0 },
+ { CMD_KMP, "KMP", 0, 0 },
+ { CMD_LEX, "LEX", 0, 0 },
+ { CMD_INFO, "INFO", 0, 0 },
+ { CMD_GHOST, "GHOSTS", 0, 0 },
+ { CMD_YAZDUMP, "YAZDUMP", "YD", 0 },
+ { CMD_VEHICLE, "VEHICLE", 0, 0 },
+
+ { CMD__N,0,0,0 }
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// OptionShort & OptionLong ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const char OptionShort[] = "VhqvLc:lHB1XPS:M:T:A:x:ts:d:D:E:orupiNC:nRea";
+
+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 },
+ { "chdir", 1, 0, GO_CHDIR },
+ { "const", 1, 0, 'c' },
+ { "touch", 0, 0, GO_TOUCH },
+ { "auto", 0, 0, GO_AUTO },
+ { "set-flags", 1, 0, GO_SET_FLAGS },
+ { "setflags", 1, 0, GO_SET_FLAGS },
+ { "set-scale", 1, 0, GO_SET_SCALE },
+ { "setscale", 1, 0, GO_SET_SCALE },
+ { "set-rot", 1, 0, GO_SET_ROT },
+ { "setrot", 1, 0, GO_SET_ROT },
+ { "set-x", 1, 0, GO_SET_X },
+ { "setx", 1, 0, GO_SET_X },
+ { "set-y", 1, 0, GO_SET_Y },
+ { "sety", 1, 0, GO_SET_Y },
+ { "set-z", 1, 0, GO_SET_Z },
+ { "setz", 1, 0, GO_SET_Z },
+ { "xcenter", 0, 0, GO_XCENTER },
+ { "ycenter", 0, 0, GO_YCENTER },
+ { "zcenter", 0, 0, GO_ZCENTER },
+ { "center", 0, 0, GO_CENTER },
+ { "scale", 1, 0, GO_SCALE },
+ { "shift", 1, 0, GO_SHIFT },
+ { "xss", 1, 0, GO_XSS },
+ { "yss", 1, 0, GO_YSS },
+ { "zss", 1, 0, GO_ZSS },
+ { "rot", 1, 0, GO_ROT },
+ { "xrot", 1, 0, GO_XROT },
+ { "yrot", 1, 0, GO_YROT },
+ { "hrot", 1, 0, GO_YROT },
+ { "zrot", 1, 0, GO_ZROT },
+ { "ypos", 1, 0, GO_YPOS },
+ { "translate", 1, 0, GO_TRANSLATE },
+ { "trans", 1, 0, GO_TRANSLATE },
+ { "null", 0, 0, GO_NULL },
+ { "next", 0, 0, GO_NEXT },
+ { "ascale", 1, 0, GO_ASCALE },
+ { "arot", 1, 0, GO_AROT },
+ { "tform-script", 1, 0, GO_TFORM_SCRIPT },
+ { "tformscript", 1, 0, GO_TFORM_SCRIPT },
+ { "minimap", 0, 0, GO_MINIMAP },
+ { "rm-gobj", 1, 0, GO_RM_GOBJ },
+ { "rmgobj", 1, 0, GO_RM_GOBJ },
+ { "battle", 2, 0, GO_BATTLE },
+ { "export-flags", 2, 0, GO_EXPORT_FLAGS },
+ { "exportflags", 2, 0, GO_EXPORT_FLAGS },
+ { "exflags", 2, 0, GO_EXPORT_FLAGS },
+ { "route-options", 2, 0, GO_ROUTE_OPTIONS },
+ { "routeoptions", 2, 0, GO_ROUTE_OPTIONS },
+ { "ropt", 2, 0, GO_ROUTE_OPTIONS },
+ { "wim0", 2, 0, GO_WIM0 },
+ { "slot", 1, 0, GO_SLOT },
+ { "load-kcl", 1, 0, GO_LOAD_KCL },
+ { "loadkcl", 1, 0, GO_LOAD_KCL },
+ { "kcl", 1, 0, GO_KCL },
+ { "kcl-flag", 1, 0, GO_KCL_FLAG },
+ { "kclflag", 1, 0, GO_KCL_FLAG },
+ { "kcl-script", 1, 0, GO_KCL_SCRIPT },
+ { "kclscript", 1, 0, GO_KCL_SCRIPT },
+ { "tri-area", 1, 0, GO_TRI_AREA },
+ { "triarea", 1, 0, GO_TRI_AREA },
+ { "tri-height", 1, 0, GO_TRI_HEIGHT },
+ { "triheight", 1, 0, GO_TRI_HEIGHT },
+ { "tri-ht", 1, 0, GO_TRI_HEIGHT },
+ { "triht", 1, 0, GO_TRI_HEIGHT },
+ { "flag-file", 1, 0, GO_FLAG_FILE },
+ { "flagfile", 1, 0, GO_FLAG_FILE },
+ { "xtridata", 2, 0, GO_XTRIDATA },
+ { "xtri", 2, 0, GO_XTRIDATA },
+ { "kmp", 1, 0, GO_KMP },
+ { "speed-mod", 1, 0, GO_SPEED_MOD },
+ { "speedmod", 1, 0, GO_SPEED_MOD },
+ { "ktpt2", 1, 0, GO_KTPT2 },
+ { "tform-kmp", 1, 0, GO_TFORM_KMP },
+ { "tformkmp", 1, 0, GO_TFORM_KMP },
+ { "tkmp", 1, 0, GO_TFORM_KMP },
+ { "repair-xpflags", 1, 0, GO_REPAIR_XPF },
+ { "repairxpflags", 1, 0, GO_REPAIR_XPF },
+ { "repxpf", 1, 0, GO_REPAIR_XPF },
+ { "gamemodes", 1, 0, GO_GAMEMODES },
+ { "gmodes", 1, 0, GO_GAMEMODES },
+ { "mdl", 1, 0, GO_MDL },
+ { "pat", 1, 0, GO_PAT },
+ { "patch-file", 1, 0, GO_PATCH_FILE },
+ { "patchfile", 1, 0, GO_PATCH_FILE },
+ { "pfile", 1, 0, GO_PATCH_FILE },
+ { "kmg-limit", 1, 0, GO_KMG_LIMIT },
+ { "kmglimit", 1, 0, GO_KMG_LIMIT },
+ { "kmg-copy", 1, 0, GO_KMG_COPY },
+ { "kmgcopy", 1, 0, GO_KMG_COPY },
+ { "lt-clear", 0, 0, GO_LT_CLEAR },
+ { "ltclear", 0, 0, GO_LT_CLEAR },
+ { "lt-online", 1, 0, GO_LT_ONLINE },
+ { "ltonline", 1, 0, GO_LT_ONLINE },
+ { "lt-n-players", 1, 0, GO_LT_N_PLAYERS },
+ { "lt-nplayers", 1, 0, GO_LT_N_PLAYERS },
+ { "ltnplayers", 1, 0, GO_LT_N_PLAYERS },
+ { "lt-cond-bit", 1, 0, GO_LT_COND_BIT },
+ { "lt-condbit", 1, 0, GO_LT_COND_BIT },
+ { "ltcondbit", 1, 0, GO_LT_COND_BIT },
+ { "lt-game-mode", 1, 0, GO_LT_GAME_MODE },
+ { "lt-gamemode", 1, 0, GO_LT_GAME_MODE },
+ { "ltgamemode", 1, 0, GO_LT_GAME_MODE },
+ { "lt-engine", 1, 0, GO_LT_ENGINE },
+ { "ltengine", 1, 0, GO_LT_ENGINE },
+ { "lt-random", 1, 0, GO_LT_RANDOM },
+ { "ltrandom", 1, 0, GO_LT_RANDOM },
+ { "lex-purge", 0, 0, GO_LEX_PURGE },
+ { "lexpurge", 0, 0, GO_LEX_PURGE },
+ { "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 },
+ { "msg", 1, 0, GO_FILTER_BMG },
+ { "cache", 1, 0, GO_CACHE },
+ { "cname", 1, 0, GO_CNAME },
+ { "id", 0, 0, GO_ID },
+ { "base64", 2, 0, GO_BASE64 },
+ { "db64", 2, 0, GO_DB64 },
+ { "coding", 1, 0, GO_CODING },
+ { "verify", 0, 0, GO_VERIFY },
+ { "round", 0, 0, GO_ROUND },
+ { "long", 0, 0, 'l' },
+ { "no-header", 0, 0, 'H' },
+ { "noheader", 0, 0, 'H' },
+ { "brief", 0, 0, 'B' },
+ { "pipe", 0, 0, GO_PIPE },
+ { "delta", 0, 0, GO_DELTA },
+ { "diff", 0, 0, GO_DIFF },
+ { "epsilon", 1, 0, GO_EPSILON },
+ { "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' },
+ { "sort", 1, 0, 'S' },
+ { "max-file-size", 1, 0, 'M' },
+ { "maxfilesize", 1, 0, 'M' },
+ { "tracks", 1, 0, 'T' },
+ { "arenas", 1, 0, 'A' },
+ { "autoadd-path", 1, 0, GO_AUTOADD_PATH },
+ { "autoaddpath", 1, 0, GO_AUTOADD_PATH },
+ { "transform", 1, 0, 'x' },
+ { "strip", 0, 0, GO_STRIP },
+ { "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 },
+ { "tiny", 1, 0, GO_TINY },
+ { "yaz0", 0, 0, GO_YAZ0 },
+ { "yaz1", 0, 0, GO_YAZ1 },
+ { "xyz", 0, 0, GO_XYZ },
+ { "bz", 0, 0, GO_BZ },
+ { "sh", 0, 0, GO_SH },
+ { "bash", 0, 0, GO_BASH },
+ { "json", 0, 0, GO_JSON },
+ { "php", 0, 0, GO_PHP },
+ { "makedoc", 0, 0, GO_MAKEDOC },
+ { "var", 1, 0, GO_VAR },
+ { "array", 0, 0, GO_ARRAY },
+ { "avar", 1, 0, GO_AVAR },
+ { "analyze", 1, 0, GO_ANALYZE },
+ { "analyse", 1, 0, GO_ANALYZE },
+ { "analyze-mode", 1, 0, GO_ANALYZE_MODE },
+ { "ana-mode", 1, 0, GO_ANALYZE_MODE },
+ { "anamode", 1, 0, GO_ANALYZE_MODE },
+ { "amd", 1, 0, GO_ANALYZE_MODE },
+ { "OLD", 0, 0, GO_OLD },
+ { "STD", 0, 0, GO_STD },
+ { "NEW", 0, 0, GO_NEW },
+ { "EXTRACT", 1, 0, GO_EXTRACT },
+ { "source", 1, 0, 's' },
+ { "src", 1, 0, 's' },
+ { "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-src", 0, 0, GO_REMOVE_SRC },
+ { "removesrc", 0, 0, GO_REMOVE_SRC },
+ { "rm-src", 0, 0, GO_REMOVE_SRC },
+ { "rmsrc", 0, 0, GO_REMOVE_SRC },
+ { "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' },
+ { "ignore-setup", 0, 0, GO_IGNORE_SETUP },
+ { "ignoresetup", 0, 0, GO_IGNORE_SETUP },
+ { "purge", 0, 0, GO_PURGE },
+ { "align-u8", 1, 0, GO_ALIGN_U8 },
+ { "alignu8", 1, 0, GO_ALIGN_U8 },
+ { "align-pack", 1, 0, GO_ALIGN_PACK },
+ { "alignpack", 1, 0, GO_ALIGN_PACK },
+ { "align-brres", 1, 0, GO_ALIGN_BRRES },
+ { "alignbrres", 1, 0, GO_ALIGN_BRRES },
+ { "align-breff", 1, 0, GO_ALIGN_BREFF },
+ { "alignbreff", 1, 0, GO_ALIGN_BREFF },
+ { "align-breft", 1, 0, GO_ALIGN_BREFT },
+ { "alignbreft", 1, 0, GO_ALIGN_BREFT },
+ { "align", 1, 0, GO_ALIGN },
+ { "encode-all", 0, 0, GO_ENCODE_ALL },
+ { "encodeall", 0, 0, GO_ENCODE_ALL },
+ { "eall", 0, 0, GO_ENCODE_ALL },
+ { "encode-img", 0, 0, GO_ENCODE_IMG },
+ { "encodeimg", 0, 0, GO_ENCODE_IMG },
+ { "eimg", 0, 0, GO_ENCODE_IMG },
+ { "no-encode", 0, 0, GO_NO_ENCODE },
+ { "noencode", 0, 0, GO_NO_ENCODE },
+ { "noenc", 0, 0, GO_NO_ENCODE },
+ { "no-recurse", 0, 0, GO_NO_RECURSE },
+ { "norecurse", 0, 0, GO_NO_RECURSE },
+ { "norec", 0, 0, GO_NO_RECURSE },
+ { "auto-add", 0, 0, GO_AUTO_ADD },
+ { "autoadd", 0, 0, GO_AUTO_ADD },
+ { "aadd", 0, 0, GO_AUTO_ADD },
+ { "no-echo", 0, 0, GO_NO_ECHO },
+ { "noecho", 0, 0, GO_NO_ECHO },
+ { "no-check", 0, 0, 'N' },
+ { "nocheck", 0, 0, 'N' },
+ { "pt-dir", 2, 0, GO_PT_DIR },
+ { "ptdir", 2, 0, GO_PT_DIR },
+ { "pdir", 2, 0, GO_PT_DIR },
+ { "rm-aiparam", 0, 0, GO_RM_AIPARAM },
+ { "rmaiparam", 0, 0, GO_RM_AIPARAM },
+ { "rmai", 0, 0, GO_RM_AIPARAM },
+ { "u8", 0, 0, GO_U8 },
+ { "szs", 0, 0, GO_SZS },
+ { "wu8", 0, 0, GO_WU8 },
+ { "xwu8", 0, 0, GO_XWU8 },
+ { "wbz", 0, 0, GO_WBZ },
+ { "pack", 0, 0, GO_PACK },
+ { "brres", 0, 0, GO_BRRES },
+ { "bres", 0, 0, GO_BRRES },
+ { "breff", 0, 0, GO_BREFF },
+ { "breft", 0, 0, GO_BREFT },
+ { "no-compress", 0, 0, GO_NO_COMPRESS },
+ { "nocompress", 0, 0, GO_NO_COMPRESS },
+ { "noc", 0, 0, GO_NO_COMPRESS },
+ { "compr", 1, 0, 'C' },
+ { "compress", 1, 0, 'C' },
+ { "fast", 0, 0, GO_FAST },
+ { "norm", 0, 0, 'n' },
+ { "links", 0, 0, GO_LINKS },
+ { "basedir", 1, 0, GO_BASEDIR },
+ { "bdir", 1, 0, GO_BASEDIR },
+ { "recurse", 2, 0, 'R' },
+ { "ext", 0, 0, 'e' },
+ { "decode", 0, 0, GO_DECODE },
+ { "dec", 0, 0, GO_DECODE },
+ { "mipmaps", 0, 0, GO_MIPMAPS },
+ { "mm", 0, 0, GO_MIPMAPS },
+ { "no-mipmaps", 0, 0, GO_NO_MIPMAPS },
+ { "nomipmaps", 0, 0, GO_NO_MIPMAPS },
+ { "no-mm", 0, 0, GO_NO_MIPMAPS },
+ { "nomm", 0, 0, GO_NO_MIPMAPS },
+ { "n-mipmaps", 1, 0, GO_N_MIPMAPS },
+ { "nmipmaps", 1, 0, GO_N_MIPMAPS },
+ { "n-mm", 1, 0, GO_N_MIPMAPS },
+ { "nmm", 1, 0, GO_N_MIPMAPS },
+ { "max-mipmaps", 1, 0, GO_MAX_MIPMAPS },
+ { "maxmipmaps", 1, 0, GO_MAX_MIPMAPS },
+ { "max-mm", 1, 0, GO_MAX_MIPMAPS },
+ { "maxmm", 1, 0, GO_MAX_MIPMAPS },
+ { "mipmap-size", 1, 0, GO_MIPMAP_SIZE },
+ { "mipmapsize", 1, 0, GO_MIPMAP_SIZE },
+ { "mm-size", 1, 0, GO_MIPMAP_SIZE },
+ { "mmsize", 1, 0, GO_MIPMAP_SIZE },
+ { "fast-mipmaps", 0, 0, GO_FAST_MIPMAPS },
+ { "fastmipmaps", 0, 0, GO_FAST_MIPMAPS },
+ { "fast-mm", 0, 0, GO_FAST_MIPMAPS },
+ { "fastmm", 0, 0, GO_FAST_MIPMAPS },
+ { "cmpr-default", 1, 0, GO_CMPR_DEFAULT },
+ { "cut", 0, 0, GO_CUT },
+ { "all", 0, 0, 'a' },
+ { "raw", 0, 0, GO_RAW },
+ { "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 C */ OPT_COMPRESS,
+ /* 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,
+ /* 0x052 R */ OPT_RECURSE,
+ /* 0x053 S */ OPT_SORT,
+ /* 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,
+ /* 0x061 a */ OPT_ALL,
+ /* 0x062 */ 0,
+ /* 0x063 c */ OPT_CONST,
+ /* 0x064 d */ OPT_DEST,
+ /* 0x065 e */ OPT_EXT,
+ /* 0x066 */ 0,0,
+ /* 0x068 h */ OPT_HELP,
+ /* 0x069 i */ OPT_IGNORE,
+ /* 0x06a */ 0,0,
+ /* 0x06c l */ OPT_LONG,
+ /* 0x06d */ 0,
+ /* 0x06e n */ OPT_NORM,
+ /* 0x06f o */ OPT_OVERWRITE,
+ /* 0x070 p */ OPT_PRESERVE,
+ /* 0x071 q */ OPT_QUIET,
+ /* 0x072 r */ OPT_REMOVE_DEST,
+ /* 0x073 s */ OPT_SOURCE,
+ /* 0x074 t */ OPT_TEST,
+ /* 0x075 u */ OPT_UPDATE,
+ /* 0x076 v */ OPT_VERBOSE,
+ /* 0x077 */ 0,
+ /* 0x078 x */ OPT_TRANSFORM,
+ /* 0x079 */ 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_CHDIR,
+ /* 0x08a */ OPT_TOUCH,
+ /* 0x08b */ OPT_AUTO,
+ /* 0x08c */ OPT_SET_FLAGS,
+ /* 0x08d */ OPT_SET_SCALE,
+ /* 0x08e */ OPT_SET_ROT,
+ /* 0x08f */ OPT_SET_X,
+ /* 0x090 */ OPT_SET_Y,
+ /* 0x091 */ OPT_SET_Z,
+ /* 0x092 */ OPT_XCENTER,
+ /* 0x093 */ OPT_YCENTER,
+ /* 0x094 */ OPT_ZCENTER,
+ /* 0x095 */ OPT_CENTER,
+ /* 0x096 */ OPT_SCALE,
+ /* 0x097 */ OPT_SHIFT,
+ /* 0x098 */ OPT_XSS,
+ /* 0x099 */ OPT_YSS,
+ /* 0x09a */ OPT_ZSS,
+ /* 0x09b */ OPT_ROT,
+ /* 0x09c */ OPT_XROT,
+ /* 0x09d */ OPT_YROT,
+ /* 0x09e */ OPT_ZROT,
+ /* 0x09f */ OPT_YPOS,
+ /* 0x0a0 */ OPT_TRANSLATE,
+ /* 0x0a1 */ OPT_NULL,
+ /* 0x0a2 */ OPT_NEXT,
+ /* 0x0a3 */ OPT_ASCALE,
+ /* 0x0a4 */ OPT_AROT,
+ /* 0x0a5 */ OPT_TFORM_SCRIPT,
+ /* 0x0a6 */ OPT_MINIMAP,
+ /* 0x0a7 */ OPT_RM_GOBJ,
+ /* 0x0a8 */ OPT_BATTLE,
+ /* 0x0a9 */ OPT_EXPORT_FLAGS,
+ /* 0x0aa */ OPT_ROUTE_OPTIONS,
+ /* 0x0ab */ OPT_WIM0,
+ /* 0x0ac */ OPT_SLOT,
+ /* 0x0ad */ OPT_LOAD_KCL,
+ /* 0x0ae */ OPT_KCL,
+ /* 0x0af */ OPT_KCL_FLAG,
+ /* 0x0b0 */ OPT_KCL_SCRIPT,
+ /* 0x0b1 */ OPT_TRI_AREA,
+ /* 0x0b2 */ OPT_TRI_HEIGHT,
+ /* 0x0b3 */ OPT_FLAG_FILE,
+ /* 0x0b4 */ OPT_XTRIDATA,
+ /* 0x0b5 */ OPT_KMP,
+ /* 0x0b6 */ OPT_SPEED_MOD,
+ /* 0x0b7 */ OPT_KTPT2,
+ /* 0x0b8 */ OPT_TFORM_KMP,
+ /* 0x0b9 */ OPT_REPAIR_XPF,
+ /* 0x0ba */ OPT_GAMEMODES,
+ /* 0x0bb */ OPT_MDL,
+ /* 0x0bc */ OPT_PAT,
+ /* 0x0bd */ OPT_PATCH_FILE,
+ /* 0x0be */ OPT_KMG_LIMIT,
+ /* 0x0bf */ OPT_KMG_COPY,
+ /* 0x0c0 */ OPT_LT_CLEAR,
+ /* 0x0c1 */ OPT_LT_ONLINE,
+ /* 0x0c2 */ OPT_LT_N_PLAYERS,
+ /* 0x0c3 */ OPT_LT_COND_BIT,
+ /* 0x0c4 */ OPT_LT_GAME_MODE,
+ /* 0x0c5 */ OPT_LT_ENGINE,
+ /* 0x0c6 */ OPT_LT_RANDOM,
+ /* 0x0c7 */ OPT_LEX_PURGE,
+ /* 0x0c8 */ OPT_LOAD_BMG,
+ /* 0x0c9 */ OPT_PATCH_BMG,
+ /* 0x0ca */ OPT_MACRO_BMG,
+ /* 0x0cb */ OPT_FILTER_BMG,
+ /* 0x0cc */ OPT_CACHE,
+ /* 0x0cd */ OPT_CNAME,
+ /* 0x0ce */ OPT_ID,
+ /* 0x0cf */ OPT_BASE64,
+ /* 0x0d0 */ OPT_DB64,
+ /* 0x0d1 */ OPT_CODING,
+ /* 0x0d2 */ OPT_VERIFY,
+ /* 0x0d3 */ OPT_ROUND,
+ /* 0x0d4 */ OPT_PIPE,
+ /* 0x0d5 */ OPT_DELTA,
+ /* 0x0d6 */ OPT_DIFF,
+ /* 0x0d7 */ OPT_EPSILON,
+ /* 0x0d8 */ OPT_BMG_ENCODING,
+ /* 0x0d9 */ OPT_BMG_INF_SIZE,
+ /* 0x0da */ OPT_BMG_MID,
+ /* 0x0db */ OPT_FORCE_ATTRIB,
+ /* 0x0dc */ OPT_DEF_ATTRIB,
+ /* 0x0dd */ OPT_NO_ATTRIB,
+ /* 0x0de */ OPT_X_ESCAPES,
+ /* 0x0df */ OPT_OLD_ESCAPES,
+ /* 0x0e0 */ OPT_NO_BMG_COLORS,
+ /* 0x0e1 */ OPT_BMG_COLORS,
+ /* 0x0e2 */ OPT_NO_BMG_INLINE,
+ /* 0x0e3 */ OPT_AUTOADD_PATH,
+ /* 0x0e4 */ OPT_STRIP,
+ /* 0x0e5 */ OPT_UTF_8,
+ /* 0x0e6 */ OPT_NO_UTF_8,
+ /* 0x0e7 */ OPT_FORCE,
+ /* 0x0e8 */ OPT_REPAIR_MAGICS,
+ /* 0x0e9 */ OPT_TINY,
+ /* 0x0ea */ OPT_YAZ0,
+ /* 0x0eb */ OPT_YAZ1,
+ /* 0x0ec */ OPT_XYZ,
+ /* 0x0ed */ OPT_BZ,
+ /* 0x0ee */ OPT_SH,
+ /* 0x0ef */ OPT_BASH,
+ /* 0x0f0 */ OPT_JSON,
+ /* 0x0f1 */ OPT_PHP,
+ /* 0x0f2 */ OPT_MAKEDOC,
+ /* 0x0f3 */ OPT_VAR,
+ /* 0x0f4 */ OPT_ARRAY,
+ /* 0x0f5 */ OPT_AVAR,
+ /* 0x0f6 */ OPT_ANALYZE,
+ /* 0x0f7 */ OPT_ANALYZE_MODE,
+ /* 0x0f8 */ OPT_OLD,
+ /* 0x0f9 */ OPT_STD,
+ /* 0x0fa */ OPT_NEW,
+ /* 0x0fb */ OPT_EXTRACT,
+ /* 0x0fc */ OPT_NUMBER,
+ /* 0x0fd */ OPT_REMOVE_SRC,
+ /* 0x0fe */ OPT_IGNORE_SETUP,
+ /* 0x0ff */ OPT_PURGE,
+ /* 0x100 */ OPT_ALIGN_U8,
+ /* 0x101 */ OPT_ALIGN_PACK,
+ /* 0x102 */ OPT_ALIGN_BRRES,
+ /* 0x103 */ OPT_ALIGN_BREFF,
+ /* 0x104 */ OPT_ALIGN_BREFT,
+ /* 0x105 */ OPT_ALIGN,
+ /* 0x106 */ OPT_ENCODE_ALL,
+ /* 0x107 */ OPT_ENCODE_IMG,
+ /* 0x108 */ OPT_NO_ENCODE,
+ /* 0x109 */ OPT_NO_RECURSE,
+ /* 0x10a */ OPT_AUTO_ADD,
+ /* 0x10b */ OPT_NO_ECHO,
+ /* 0x10c */ OPT_PT_DIR,
+ /* 0x10d */ OPT_RM_AIPARAM,
+ /* 0x10e */ OPT_U8,
+ /* 0x10f */ OPT_SZS,
+ /* 0x110 */ OPT_WU8,
+ /* 0x111 */ OPT_XWU8,
+ /* 0x112 */ OPT_WBZ,
+ /* 0x113 */ OPT_PACK,
+ /* 0x114 */ OPT_BRRES,
+ /* 0x115 */ OPT_BREFF,
+ /* 0x116 */ OPT_BREFT,
+ /* 0x117 */ OPT_NO_COMPRESS,
+ /* 0x118 */ OPT_FAST,
+ /* 0x119 */ OPT_LINKS,
+ /* 0x11a */ OPT_BASEDIR,
+ /* 0x11b */ OPT_DECODE,
+ /* 0x11c */ OPT_MIPMAPS,
+ /* 0x11d */ OPT_NO_MIPMAPS,
+ /* 0x11e */ OPT_N_MIPMAPS,
+ /* 0x11f */ OPT_MAX_MIPMAPS,
+ /* 0x120 */ OPT_MIPMAP_SIZE,
+ /* 0x121 */ OPT_FAST_MIPMAPS,
+ /* 0x122 */ OPT_CMPR_DEFAULT,
+ /* 0x123 */ OPT_CUT,
+ /* 0x124 */ OPT_RAW,
+ /* 0x125 */ OPT_SECTIONS,
+ /* 0x126 */ 0,0,0,0, 0,0,
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// opt_allowed_cmd_* ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static u8 option_allowed_cmd_VERSION[130] = // cmd #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,0, 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,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[130] = // 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,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,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[130] = // 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,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,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[130] = // 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,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,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[130] = // cmd #5
+{
+ 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,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,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[130] = // cmd #6
+{
+ 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,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,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[130] = // cmd #7
+{
+ 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,0,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,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,0,0
+};
+
+static u8 option_allowed_cmd_FILEATTRIB[130] = // cmd #8
+{
+ 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,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,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_BRSUB[130] = // cmd #9
+{
+ 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,0,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,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,0,0
+};
+
+static u8 option_allowed_cmd_SYMBOLS[130] = // cmd #10
+{
+ 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,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,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[130] = // 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,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,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[130] = // cmd #12
+{
+ 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,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,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_MATRIX[130] = // cmd #13
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,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[130] = // 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,0,0,0,0, 0,0,0,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,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_VR_CALC[130] = // cmd #15
+{
+ 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,0,0,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,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_VR_RACE[130] = // cmd #16
+{
+ 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,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,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_AUTOADD[130] = // cmd #17
+{
+ 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,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,1,0,0, 1,0,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, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_TRACKS[130] = // cmd #18
+{
+ 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,0, 0,0,0,0,0, 0,0,1,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,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,0
+};
+
+static u8 option_allowed_cmd_SCANCACHE[130] = // cmd #19
+{
+ 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,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,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[130] = // cmd #20
+{
+ 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,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,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_CODE[130] = // cmd #21
+{
+ 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,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,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_RECODE[130] = // cmd #22
+{
+ 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,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,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_SUBFILE[130] = // cmd #23
+{
+ 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,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,1,1,1,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,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_LIST[130] = // cmd #24
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_LIST_L[130] = // cmd #25
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_LIST_LL[130] = // cmd #26
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_LIST_LLL[130] = // cmd #27
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_LIST_A[130] = // cmd #28
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_LIST_LA[130] = // cmd #29
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,0,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_NAME_REF[130] = // cmd #30
+{
+ 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,0,1,0,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 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,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_ILIST[130] = // cmd #31
+{
+ 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,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_ILIST_L[130] = // cmd #32
+{
+ 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,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_ILIST_LL[130] = // cmd #33
+{
+ 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,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_ILIST_A[130] = // cmd #34
+{
+ 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,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_ILIST_LA[130] = // cmd #35
+{
+ 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,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_MEMORY[130] = // cmd #36
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,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,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_MEMORY_A[130] = // cmd #37
+{
+ 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,0,0, 0,0,0,0,0, 0,0,0,0,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,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,0,0
+};
+
+static u8 option_allowed_cmd_DUMP[130] = // cmd #38
+{
+ 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,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,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_SHA1[130] = // cmd #39
+{
+ 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,1,1,1, 1,0,1,0,1, 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,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_ANALYZE[130] = // cmd #40
+{
+ 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,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,1, 1,0,0,0,0, 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,0,0,0,0
+};
+
+static u8 option_allowed_cmd_DISTRIBUTION[130] = // cmd #41
+{
+ 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,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,1, 1,0,0,1,0, 0,0,0,0,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,1,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_DIFF[130] = // cmd #42
+{
+ 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,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,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,1,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0
+};
+
+static u8 option_allowed_cmd_CHECK[130] = // cmd #43
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,1,0,1, 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,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_SLOTS[130] = // cmd #44
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,0,1, 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,0, 0,0,0,1,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 0,0,0,0,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_STGI[130] = // cmd #45
+{
+ 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,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,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,0,0
+};
+
+static u8 option_allowed_cmd_ISARENA[130] = // cmd #46
+{
+ 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,0,0,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,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,0,0
+};
+
+static u8 option_allowed_cmd_NORMALIZE[130] = // cmd #47
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,0,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_PATCH[130] = // cmd #48
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_COPY[130] = // cmd #49
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_DUPLICATE[130] = // cmd #50
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_MINIMAP[130] = // cmd #51
+{
+ 0,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,0,
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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, 1,0,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,0,0,0,0, 0,0,0,0,0, 0,1,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_COMPRESS[130] = // cmd #52
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,1,1,1, 1,0,0,0,0, 0,1,1,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_DECOMPRESS[130] = // cmd #53
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,1,1,1,1, 1,1,1,1,0, 0,1,1,1,1,
+ 1,1,0,0,0, 0,1,0,0,1, 1,1,0,1,0, 0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_ENCODE[130] = // cmd #54
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,1, 0,1,1,1,1,
+ 1,1,1,1,1, 1,0,1,1,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,1,0,0
+};
+
+static u8 option_allowed_cmd_CREATE[130] = // cmd #55
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,0,0,0,1, 1,1,1,1,0, 1,1,1,0,1, 0,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,0,1, 0,0,0,0,1,
+ 1,1,1,1,1, 1,0,1,0,0
+};
+
+static u8 option_allowed_cmd_UPDATE[130] = // cmd #56
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,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,1, 1,0,0,1,1, 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,1,1,1, 1,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,0,0, 0,1,0,0,0,
+ 0,0,0,0,0, 0,0,1,0,0
+};
+
+static u8 option_allowed_cmd_EXTRACT[130] = // cmd #57
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,1, 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,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,1, 1,1,1,1,0
+};
+
+static u8 option_allowed_cmd_XDECODE[130] = // cmd #58
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,1, 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,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,1, 1,1,1,1,0
+};
+
+static u8 option_allowed_cmd_XEXPORT[130] = // cmd #59
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,1, 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,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,1, 1,1,1,1,0
+};
+
+static u8 option_allowed_cmd_XALL[130] = // cmd #60
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 0,1,1,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,1, 1,1,1,1,0, 1,1,1,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,1,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,1, 1,1,1,1,0
+};
+
+static u8 option_allowed_cmd_XCOMMON[130] = // cmd #61
+{
+ 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,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,1,1,1,0, 1,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, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_BINARY[130] = // cmd #62
+{
+ 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,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,1,1,1,0, 1,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, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_TEXT[130] = // cmd #63
+{
+ 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,0,1,1,1, 0,1,1,0,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,0,0, 0,0,0,0,1, 1,1,1,1,0, 1,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,1,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_CAT[130] = // cmd #64
+{
+ 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,0,1,1,1, 0,1,1,0,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,1,0,
+ 0,0,0,0,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_BMG[130] = // cmd #65
+{
+ 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,0,1,1,1, 0,0,0,0,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0,0
+};
+
+static u8 option_allowed_cmd_KCL[130] = // cmd #66
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 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
+};
+
+static u8 option_allowed_cmd_KMP[130] = // cmd #67
+{
+ 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,0, 1,0,0,1,1, 1,0,0,0,0, 0,0,0,1,1, 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,0,0,0,0, 0,0,0,1,0, 0,0,0,0,0,
+ 0,0,0,0,0, 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
+};
+
+static u8 option_allowed_cmd_LEX[130] = // cmd #68
+{
+ 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,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,0,0,0,0
+};
+
+static u8 option_allowed_cmd_INFO[130] = // cmd #69
+{
+ 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,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,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,0,0
+};
+
+static u8 option_allowed_cmd_GHOST[130] = // cmd #70
+{
+ 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,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,1, 1,0,0,0,0, 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,0,0,0,0
+};
+
+static u8 option_allowed_cmd_YAZDUMP[130] = // cmd #71
+{
+ 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,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,1,1,1,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,0, 0,0,0,0,0
+};
+
+static u8 option_allowed_cmd_VEHICLE[130] = // cmd #72
+{
+ 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,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,1,1, 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,0,
+ 0,0,0,0,0, 0,0,0,0,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_CHDIR,
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_BATTLE,
+ OptionInfo + OPT_EXPORT_FLAGS,
+ OptionInfo + OPT_ROUTE_OPTIONS,
+ OptionInfo + OPT_WIM0,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_KMG_LIMIT,
+ OptionInfo + OPT_KMG_COPY,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_CACHE,
+ OptionInfo + OPT_CNAME,
+ OptionInfo + OPT_MAX_FILE_SIZE,
+ OptionInfo + OPT_TRACKS,
+ OptionInfo + OPT_ARENAS,
+ OptionInfo + OPT_AUTOADD_PATH,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TEST,
+ OptionInfo + OPT_FORCE,
+ OptionInfo + OPT_REPAIR_MAGICS,
+ OptionInfo + OPT_TINY,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_XYZ,
+ OptionInfo + OPT_BZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_SH,
+ OptionInfo + OPT_BASH,
+ OptionInfo + OPT_JSON,
+ OptionInfo + OPT_PHP,
+ OptionInfo + OPT_MAKEDOC,
+ OptionInfo + OPT_VAR,
+ OptionInfo + OPT_ARRAY,
+ OptionInfo + OPT_AVAR,
+
+ 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[] =
+{
+ &option_cmd_TEST_VERBOSE,
+
+ 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_NO_HEADER,
+ OptionInfo + OPT_IGNORE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FILEATTRIB[] =
+{
+ OptionInfo + OPT_NO_HEADER,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_BRSUB[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_BRSUB_LONG,
+
+ 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_MATRIX[] =
+{
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+
+ OptionInfo + OPT_NONE, // separator
+
+ &option_cmd_MATRIX_BRIEF,
+ &option_cmd_MATRIX_LONG,
+ &option_cmd_MATRIX_QUIET,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_FLOAT[] =
+{
+ OptionInfo + OPT_ROUND,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_VR_CALC[] =
+{
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_VR_CALC_BRIEF,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_VR_RACE[] =
+{
+ &option_cmd_VR_RACE_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_AUTOADD[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_AUTOADD_QUIET,
+ &option_cmd_AUTOADD_VERBOSE,
+ &option_cmd_AUTOADD_DEST,
+ OptionInfo + OPT_DEST2,
+ &option_cmd_AUTOADD_OVERWRITE,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_PRESERVE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_TRACKS[] =
+{
+ &option_cmd_TRACKS_VERBOSE,
+ &option_cmd_TRACKS_ALL,
+ &option_cmd_TRACKS_LONG,
+ OptionInfo + OPT_PIPE,
+ OptionInfo + OPT_LOAD_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_SCANCACHE[] =
+{
+ OptionInfo + OPT_CACHE,
+ OptionInfo + OPT_PURGE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_EXPORT[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CODE[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_RECODE[] =
+{
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_SUBFILE[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST_L[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST_LL[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST_LLL[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST_A[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LIST_LA[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ &option_cmd_LIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_NAME_REF[] =
+{
+ &option_cmd_NAME_REF_SORT,
+ &option_cmd_NAME_REF_BRIEF,
+ &option_cmd_NAME_REF_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ILIST[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ &option_cmd_ILIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ILIST_L[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ &option_cmd_ILIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ILIST_LL[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ &option_cmd_ILIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ILIST_A[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ &option_cmd_ILIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ILIST_LA[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ &option_cmd_ILIST_LONG,
+ OptionInfo + OPT_SORT,
+ OptionInfo + OPT_NO_HEADER,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_MEMORY[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ &option_cmd_MEMORY_DECODE,
+ &option_cmd_MEMORY_MIPMAPS,
+ OptionInfo + OPT_CUT,
+ &option_cmd_MEMORY_ALL,
+ &option_cmd_MEMORY_LONG,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_MEMORY_A[] =
+{
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ &option_cmd_MEMORY_DECODE,
+ &option_cmd_MEMORY_MIPMAPS,
+ OptionInfo + OPT_CUT,
+ &option_cmd_MEMORY_ALL,
+ &option_cmd_MEMORY_LONG,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_SLOT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DUMP[] =
+{
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_SHA1[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_ID,
+ OptionInfo + OPT_BASE64,
+ OptionInfo + OPT_DB64,
+ OptionInfo + OPT_CODING,
+ OptionInfo + OPT_VERIFY,
+ &option_cmd_SHA1_BRIEF,
+ &option_cmd_SHA1_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ANALYZE[] =
+{
+ &option_cmd_ANALYZE_LONG,
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_ANALYZE_QUIET,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_SH,
+ OptionInfo + OPT_BASH,
+ OptionInfo + OPT_JSON,
+ OptionInfo + OPT_PHP,
+ OptionInfo + OPT_MAKEDOC,
+ OptionInfo + OPT_VAR,
+ OptionInfo + OPT_ARRAY,
+ OptionInfo + OPT_AVAR,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_BASE64,
+ OptionInfo + OPT_DB64,
+ OptionInfo + OPT_CODING,
+ &option_cmd_DISTRIBUTION_SOURCE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DIFF[] =
+{
+ &option_cmd_DIFF_QUIET,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_ESC,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CHECK[] =
+{
+ &option_cmd_CHECK_NO_CHECK,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COLORS,
+ OptionInfo + OPT_NO_COLORS,
+ &option_cmd_CHECK_BRIEF,
+ &option_cmd_CHECK_LONG,
+ &option_cmd_CHECK_QUIET,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_SLOTS[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_SLOTS_BRIEF,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_STGI[] =
+{
+ OptionInfo + OPT_COLORS,
+ OptionInfo + OPT_NO_COLORS,
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_STGI_IGNORE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ISARENA[] =
+{
+ OptionInfo + OPT_COLORS,
+ OptionInfo + OPT_NO_COLORS,
+ OptionInfo + OPT_NO_HEADER,
+ &option_cmd_ISARENA_BRIEF,
+ &option_cmd_ISARENA_QUIET,
+ &option_cmd_ISARENA_IGNORE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_NORMALIZE[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_PATCH[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_COPY[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DUPLICATE[] =
+{
+ OptionInfo + OPT_GAMEMODES,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_MINIMAP[] =
+{
+ &option_cmd_MINIMAP_LONG,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_TOUCH,
+ OptionInfo + OPT_AUTO,
+ OptionInfo + OPT_SET_FLAGS,
+ OptionInfo + OPT_SET_SCALE,
+ OptionInfo + OPT_SET_ROT,
+ OptionInfo + OPT_SET_X,
+ OptionInfo + OPT_SET_Y,
+ OptionInfo + OPT_SET_Z,
+ OptionInfo + OPT_XCENTER,
+ OptionInfo + OPT_YCENTER,
+ OptionInfo + OPT_ZCENTER,
+ OptionInfo + OPT_CENTER,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_COMPRESS[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_DECOMPRESS[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_REMOVE_SRC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_NORM,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_AUTO_ADD,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_ENCODE[] =
+{
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CREATE[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_IGNORE_SETUP,
+ OptionInfo + OPT_U8,
+ OptionInfo + OPT_WU8,
+ OptionInfo + OPT_PACK,
+ OptionInfo + OPT_BRRES,
+ OptionInfo + OPT_BREFF,
+ OptionInfo + OPT_BREFT,
+ OptionInfo + OPT_YAZ0,
+ OptionInfo + OPT_YAZ1,
+ OptionInfo + OPT_BZ,
+ OptionInfo + OPT_SZS,
+ OptionInfo + OPT_WBZ,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PT_DIR,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_RM_AIPARAM,
+ OptionInfo + OPT_ALIGN_U8,
+ OptionInfo + OPT_ALIGN_PACK,
+ OptionInfo + OPT_ALIGN_BRRES,
+ OptionInfo + OPT_ALIGN_BREFF,
+ OptionInfo + OPT_ALIGN_BREFT,
+ OptionInfo + OPT_ALIGN,
+ OptionInfo + OPT_LOGGING,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ &option_grp_ENCODE_ALL,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_AUTO_ADD,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_N_MIPMAPS,
+ OptionInfo + OPT_MAX_MIPMAPS,
+ OptionInfo + OPT_MIPMAP_SIZE,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_NO_COMPRESS,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_FAST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_UPDATE[] =
+{
+ OptionInfo + OPT_SOURCE,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_NO_COMPRESS,
+ OptionInfo + OPT_COMPRESS,
+ OptionInfo + OPT_FAST,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_ENCODE_ALL,
+ OptionInfo + OPT_ENCODE_IMG,
+ OptionInfo + OPT_NO_ENCODE,
+ OptionInfo + OPT_NO_RECURSE,
+ OptionInfo + OPT_NO_ECHO,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_TRANSFORM,
+ OptionInfo + OPT_STRIP,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_EXTRACT[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_BASEDIR,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_DECODE,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_IGNORE,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_RAW,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_XDECODE[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_BASEDIR,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_DECODE,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_IGNORE,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_RAW,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_XEXPORT[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_BASEDIR,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_DECODE,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_IGNORE,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_RAW,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_XALL[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_BASEDIR,
+ OptionInfo + OPT_RECURSE,
+ OptionInfo + OPT_EXT,
+ OptionInfo + OPT_LINKS,
+ OptionInfo + OPT_DECODE,
+ OptionInfo + OPT_MIPMAPS,
+ OptionInfo + OPT_NO_MIPMAPS,
+ OptionInfo + OPT_FAST_MIPMAPS,
+ OptionInfo + OPT_CMPR_DEFAULT,
+ OptionInfo + OPT_CUT,
+ OptionInfo + OPT_ALL,
+ OptionInfo + OPT_IGNORE,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+ OptionInfo + OPT_RAW,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_XCOMMON[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+ OptionInfo + OPT_IGNORE,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_BINARY[] =
+{
+ OptionInfo + OPT_KMG_LIMIT,
+ OptionInfo + OPT_KMG_COPY,
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_TEXT[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_DECODE,
+ OptionInfo + OPT_KMG_LIMIT,
+ OptionInfo + OPT_KMG_COPY,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ 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_grp_BMG_LONG,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_CAT[] =
+{
+ OptionInfo + OPT_IGNORE,
+ OptionInfo + OPT_DECODE,
+ &option_grp_TEXTOUT_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_DELTA,
+ OptionInfo + OPT_DIFF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ 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_grp_BMG_LONG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_BMG[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_BMG_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ 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_grp_BMG_LONG,
+ OptionInfo + OPT_EXPORT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_KCL[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_KCL_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_KMP[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_KMP_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+ OptionInfo + OPT_NO_PARAM,
+ OptionInfo + OPT_NO_CHECK,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_CONST,
+ OptionInfo + OPT_SCALE,
+ OptionInfo + OPT_SHIFT,
+ OptionInfo + OPT_XSS,
+ OptionInfo + OPT_YSS,
+ OptionInfo + OPT_ZSS,
+ OptionInfo + OPT_ROT,
+ OptionInfo + OPT_XROT,
+ OptionInfo + OPT_YROT,
+ OptionInfo + OPT_ZROT,
+ OptionInfo + OPT_YPOS,
+ OptionInfo + OPT_TRANSLATE,
+ OptionInfo + OPT_NULL,
+ OptionInfo + OPT_NEXT,
+ OptionInfo + OPT_ASCALE,
+ OptionInfo + OPT_AROT,
+ OptionInfo + OPT_TFORM_SCRIPT,
+ OptionInfo + OPT_RM_GOBJ,
+ OptionInfo + OPT_SLOT,
+ OptionInfo + OPT_LOAD_KCL,
+ OptionInfo + OPT_KCL,
+ OptionInfo + OPT_KCL_FLAG,
+ OptionInfo + OPT_KCL_SCRIPT,
+ OptionInfo + OPT_TRI_AREA,
+ OptionInfo + OPT_TRI_HEIGHT,
+ OptionInfo + OPT_KMP,
+ OptionInfo + OPT_SPEED_MOD,
+ OptionInfo + OPT_KTPT2,
+ OptionInfo + OPT_TFORM_KMP,
+ OptionInfo + OPT_REPAIR_XPF,
+ OptionInfo + OPT_MDL,
+ OptionInfo + OPT_MINIMAP,
+ OptionInfo + OPT_PAT,
+ OptionInfo + OPT_PATCH_FILE,
+ OptionInfo + OPT_LT_CLEAR,
+ OptionInfo + OPT_LT_ONLINE,
+ OptionInfo + OPT_LT_N_PLAYERS,
+ OptionInfo + OPT_LT_COND_BIT,
+ OptionInfo + OPT_LT_GAME_MODE,
+ OptionInfo + OPT_LT_ENGINE,
+ OptionInfo + OPT_LT_RANDOM,
+ OptionInfo + OPT_LEX_PURGE,
+ OptionInfo + OPT_PATCH_BMG,
+ OptionInfo + OPT_MACRO_BMG,
+ OptionInfo + OPT_FILTER_BMG,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_LEX[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_LEX_NO_HEADER,
+ OptionInfo + OPT_BRIEF,
+ OptionInfo + OPT_EXPORT,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_INFO[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_INFO_NO_HEADER,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_GHOST[] =
+{
+ OptionInfo + OPT_IGNORE,
+ &option_cmd_GHOST_NO_HEADER,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_SH,
+ OptionInfo + OPT_BASH,
+ OptionInfo + OPT_JSON,
+ OptionInfo + OPT_PHP,
+ OptionInfo + OPT_MAKEDOC,
+ OptionInfo + OPT_VAR,
+ OptionInfo + OPT_ARRAY,
+ OptionInfo + OPT_AVAR,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_YAZDUMP[] =
+{
+ OptionInfo + OPT_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_ESC,
+
+ OptionInfo + OPT_NONE, // separator
+
+ OptionInfo + OPT_PRESERVE,
+ OptionInfo + OPT_UPDATE,
+ OptionInfo + OPT_OVERWRITE,
+ OptionInfo + OPT_NUMBER,
+ OptionInfo + OPT_REMOVE_DEST,
+
+ 0
+};
+
+static const InfoOption_t * option_tab_cmd_VEHICLE[] =
+{
+ &option_cmd_VEHICLE_SOURCE,
+ &option_cmd_VEHICLE_DEST,
+ OptionInfo + OPT_DEST2,
+ OptionInfo + OPT_OVERWRITE,
+ &option_cmd_VEHICLE_QUIET,
+ &option_cmd_VEHICLE_VERBOSE,
+ &option_cmd_VEHICLE_BRIEF,
+
+ 0
+};
+
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// InfoCommand ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const InfoCommand_t CommandInfo[CMD__N+1] =
+{
+ { 0,
+ false,
+ false,
+ false,
+ "wszst",
+ 0,
+ "wszst [option]... command [option|parameter|file]...",
+ "Wiimms SZS Tool : List, compare, (de-)compress, extract and create"
+ " SZS, U8, PACK, BRRES, BREFF, BREFT and RARC archives. It is also a"
+ " wrapper to all other tools.",
+ 0,
+ 63,
+ option_tab_tool,
+ 0
+ },
+
+ { CMD_VERSION,
+ false,
+ false,
+ false,
+ "VERSION",
+ 0,
+ "wszst 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",
+ "wszst HELP [--width=wd] OPT|OPTION [option]...\n"
+ "wszst HELP [--width=wd] CMD|COMMAND ...\n"
+ "wszst HELP [--width=wd] command ...\n"
+ "wszst HELP [--width=wd] ...",
+ "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,
+ "wszst 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,
+ "wszst 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,
+ 1,
+ option_tab_cmd_TEST,
+ option_allowed_cmd_TEST
+ },
+
+ { CMD_COLORS,
+ false,
+ false,
+ false,
+ "COLORS",
+ 0,
+ "wszst 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",
+ "wszst 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",
+ "wszst FILETYPE file...",
+ "Scan the header of the entered files and print file type and path for"
+ " each file as list.",
+ 0,
+ 3,
+ option_tab_cmd_FILETYPE,
+ option_allowed_cmd_FILETYPE
+ },
+
+ { CMD_FILEATTRIB,
+ false,
+ false,
+ false,
+ "FILEATTRIB",
+ "FA",
+ "wszst 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_BRSUB,
+ false,
+ false,
+ false,
+ "BRSUB",
+ 0,
+ "wszst BRSUB [file]...",
+ " If no file is defined, print a table with known BRRES sub files"
+ " consisting of file format, version, number of sections and warn"
+ " level. Otherwise analyse the version numbers of each BRRES sub file"
+ " of each source and print warnings about invalid versions.",
+ 0,
+ 3,
+ option_tab_cmd_BRSUB,
+ option_allowed_cmd_BRSUB
+ },
+
+ { CMD_SYMBOLS,
+ false,
+ false,
+ false,
+ "SYMBOLS",
+ 0,
+ "wszst SYMBOLS",
+ "Print predefined symbols of text parser to standard output.",
+ 0,
+ 1,
+ option_tab_cmd_SYMBOLS,
+ option_allowed_cmd_SYMBOLS
+ },
+
+ { CMD_FUNCTIONS,
+ false,
+ false,
+ false,
+ "FUNCTIONS",
+ 0,
+ "wszst FUNCTIONS [key]...",
+ "Print a list with all parser functions. If one or more keys 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,
+ "wszst CALCULATE expression...",
+ "Calculate each expression and print the result to standard output.",
+ 0,
+ 1,
+ option_tab_cmd_CALCULATE,
+ option_allowed_cmd_CALCULATE
+ },
+
+ { CMD_MATRIX,
+ false,
+ false,
+ false,
+ "MATRIX",
+ 0,
+ "wszst MATRIX [patch-option]... [vector]...",
+ "Use the transformation options as base and calculate and print the"
+ " related vectors and the transformation matrices. Then do a forward"
+ " and backward transformation for each vector parameter using the"
+ " matrices and print the results.",
+ "Use the transformation options as base and calculate and print the"
+ " related vectors and the transformation matrices. Then do a forward"
+ " and backward transformation for each vector parameter using the"
+ " matrices and print the results. The transformations are done with 4"
+ " different methods to confirm the algorithms. Only the main results"
+ " and results, which differ, are printed.\n"
+ " Normally, the exit status is OK (null). If at least one old"
+ " transformation returns different results for the different"
+ " algorithms, then status DIFFER (not null) is returned.",
+ 20,
+ option_tab_cmd_MATRIX,
+ option_allowed_cmd_MATRIX
+ },
+
+ { CMD_FLOAT,
+ false,
+ false,
+ false,
+ "FLOAT",
+ 0,
+ "wszst 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_VR_CALC,
+ false,
+ false,
+ false,
+ "VR-CALC",
+ "VRCALC",
+ "wszst VR-CALC delta...",
+ " Calculate a VR increment for each given delta value"
+ " (=VR_winner-VR_loser). Print results as table.",
+ 0,
+ 2,
+ option_tab_cmd_VR_CALC,
+ option_allowed_cmd_VR_CALC
+ },
+
+ { CMD_VR_RACE,
+ false,
+ false,
+ false,
+ "VR-RACE",
+ "VRRACE",
+ "wszst VR-RACE vr1 vr2...",
+ "Print a table with VR calculations for a race. Each VR is the current"
+ " rating of a player. The vr-list is well ordered: The first VR is"
+ " for the winner and the last VR for the looser. Up to 30 VR values"
+ " will be accpeted. Each VR can be preceeded by \"NUM*\" to define a"
+ " repeat factor.",
+ 0,
+ 1,
+ option_tab_cmd_VR_RACE,
+ option_allowed_cmd_VR_RACE
+ },
+
+ { CMD_AUTOADD,
+ false,
+ false,
+ false,
+ "AUTOADD",
+ 0,
+ "wszst AUTOADD [source]...",
+ "Manage the auto-add library. Primarily add files to the main auto-add"
+ " archive for future use of option --auto-add or to convert WU8 files."
+ " If SOURCE is a directory, all standard track and arena file names"
+ " are searched for the missed auto-add files. Without source files,"
+ " the status of the auto-add archive is printed.\n"
+ " Try 'wszst AUTOADD ./path_to/Race/Course/' to add all supported"
+ " files.",
+ 0,
+ 8,
+ option_tab_cmd_AUTOADD,
+ option_allowed_cmd_AUTOADD
+ },
+
+ { CMD_TRACKS,
+ false,
+ false,
+ false,
+ "TRACKS",
+ 0,
+ "wszst TRACKS [selection_mask]",
+ "Print a list of all known track SZS files of Mario Kart internal"
+ " directory './Race/Course'. These files are 32 standard track files"
+ " and 10 arena files. The first column shows an unique ID of exact 3"
+ " upper case characters or digits. For '_d' files, a 'd' is appended."
+ " The second column shows the internal file name. Use BMG files to"
+ " print real names as third column.",
+ 0,
+ 5,
+ option_tab_cmd_TRACKS,
+ option_allowed_cmd_TRACKS
+ },
+
+ { CMD_SCANCACHE,
+ false,
+ false,
+ false,
+ "SCANCACHE",
+ 0,
+ "wszst SCANCACHE directory\n"
+ "wszst SCANCACHE --cache directory",
+ "Scan the cache directory for SZS files and re-build the checksum"
+ " table. Store the result as file 'cache-content.txt' in the same"
+ " directory. The file is used by option --cache to optimize file"
+ " access.",
+ 0,
+ 2,
+ option_tab_cmd_SCANCACHE,
+ option_allowed_cmd_SCANCACHE
+ },
+
+ { 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_CODE,
+ true,
+ false,
+ false,
+ "_CODE",
+ 0,
+ "wszst _CODE [files]",
+ "All bytes of all input files are xor'ed with 0xDC and copied to"
+ " stdout. If no source file is given, standard input is read.",
+ 0,
+ 0,
+ option_tab_cmd_CODE,
+ option_allowed_cmd_CODE
+ },
+
+ { CMD_RECODE,
+ true,
+ false,
+ false,
+ "_RECODE",
+ 0,
+ "wszst _RECODE mode [files]",
+ "All bytes of all input files are interpreted as 1 file and re-coded."
+ " MODE defines the re-code mode. If no source file is given, standard"
+ " input is read.",
+ 0,
+ 0,
+ option_tab_cmd_RECODE,
+ option_allowed_cmd_RECODE
+ },
+
+ { CMD_SUBFILE,
+ true,
+ false,
+ false,
+ "_SUBFILE",
+ 0,
+ "wszst _SUBFILE [files]",
+ "Test sub-file system.",
+ 0,
+ 8,
+ option_tab_cmd_SUBFILE,
+ option_allowed_cmd_SUBFILE
+ },
+
+ { CMD_LIST,
+ false,
+ false,
+ true,
+ "LIST",
+ "LS",
+ "wszst LIST [source]...",
+ "List all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC"
+ " archives. If listing a directory, then a virtual SZS file is created"
+ " (like CREATE does it) and listed.",
+ 0,
+ 48,
+ option_tab_cmd_LIST,
+ option_allowed_cmd_LIST
+ },
+
+ { CMD_LIST_L,
+ false,
+ false,
+ false,
+ "LIST-L",
+ "LL",
+ "wszst LIST-L [source]...",
+ "List all sub files with size. 'LIST-L' and 'LL' are short cuts for"
+ " 'LIST --long'.",
+ 0,
+ 48,
+ option_tab_cmd_LIST_L,
+ option_allowed_cmd_LIST_L
+ },
+
+ { CMD_LIST_LL,
+ false,
+ false,
+ false,
+ "LIST-LL",
+ "LLL",
+ "wszst LIST-LL [source]...",
+ "List all sub files with offset and size. 'LIST-LL' and 'LLL' are"
+ " short cuts for 'LIST --long --long'.",
+ 0,
+ 48,
+ option_tab_cmd_LIST_LL,
+ option_allowed_cmd_LIST_LL
+ },
+
+ { CMD_LIST_LLL,
+ false,
+ false,
+ false,
+ "LIST-LLL",
+ "LLLL",
+ "wszst LIST-LLL [source]...",
+ "List all sub files with offset and size in debugging mode. 'LIST-LLL'"
+ " and 'LLLL' are short cuts for 'LIST --long --long --long'.",
+ 0,
+ 48,
+ option_tab_cmd_LIST_LLL,
+ option_allowed_cmd_LIST_LLL
+ },
+
+ { CMD_LIST_A,
+ false,
+ false,
+ false,
+ "LIST-A",
+ "LA",
+ "wszst LIST-A [source]...",
+ "List recursive all sub files with size. 'LIST-A' and 'LA' are short"
+ " cuts for 'LIST --long --all --all'.",
+ 0,
+ 48,
+ option_tab_cmd_LIST_A,
+ option_allowed_cmd_LIST_A
+ },
+
+ { CMD_LIST_LA,
+ false,
+ false,
+ false,
+ "LIST-LA",
+ "LLA",
+ "wszst LIST-LA [source]...",
+ "List recursive all sub files with offset and size. 'LIST-LA' and"
+ " 'LLA' are short cuts for 'LIST --long --long --all --all'.",
+ 0,
+ 48,
+ option_tab_cmd_LIST_LA,
+ option_allowed_cmd_LIST_LA
+ },
+
+ { CMD_NAME_REF,
+ false,
+ false,
+ false,
+ "NAME-REF",
+ "NAMEREF",
+ "wszst NAME-REF [source]...",
+ "For each BRRES file or subfile, create a name based cross reference"
+ " and print the result as list ordered by names in BRRES order. For U8"
+ " archives (e.g. track SZS files), sub file course_model.brres is"
+ " analysed.",
+ 0,
+ 3,
+ option_tab_cmd_NAME_REF,
+ option_allowed_cmd_NAME_REF
+ },
+
+ { CMD_ILIST,
+ false,
+ false,
+ true,
+ "ILIST",
+ "IL",
+ "wszst ILIST [source]...",
+ "List the images files of all sub files of SZS, U8, PACK, BRRES,"
+ " BREFF, BREFT and RARC archives; non image files are ignored. If"
+ " listing a directory, then a virtual SZS file is created (like CREATE"
+ " does it) and listed.",
+ 0,
+ 45,
+ option_tab_cmd_ILIST,
+ option_allowed_cmd_ILIST
+ },
+
+ { CMD_ILIST_L,
+ false,
+ false,
+ false,
+ "ILIST-L",
+ "ILL",
+ "wit ILIST-L [source]...",
+ "List all image files with geometry data. 'ILIST-L' and 'ILL' are"
+ " short cuts for 'ILIST --long'.",
+ 0,
+ 45,
+ option_tab_cmd_ILIST_L,
+ option_allowed_cmd_ILIST_L
+ },
+
+ { CMD_ILIST_LL,
+ false,
+ false,
+ false,
+ "ILIST-LL",
+ "ILLL",
+ "wit ILIST-LL [source]...",
+ "List all sub files with advanced geometry data. 'ILIST-LL' and 'ILLL'"
+ " are short cuts for 'ILIST --long --long'.",
+ 0,
+ 45,
+ option_tab_cmd_ILIST_LL,
+ option_allowed_cmd_ILIST_LL
+ },
+
+ { CMD_ILIST_A,
+ false,
+ false,
+ false,
+ "ILIST-A",
+ "ILA",
+ "wszst ILIST-A [source]...",
+ "List recursive all image files. 'ILIST-A' and 'ILA' are short cuts"
+ " for 'ILIST --all'.",
+ 0,
+ 45,
+ option_tab_cmd_ILIST_A,
+ option_allowed_cmd_ILIST_A
+ },
+
+ { CMD_ILIST_LA,
+ false,
+ false,
+ false,
+ "ILIST-LA",
+ "ILLA",
+ "wit ILIST-LA [source]...",
+ "List recursive all image files with geometry data. 'ILIST-LA' and"
+ " 'ILLA' are short cuts for 'ILIST --long --all'.",
+ 0,
+ 45,
+ option_tab_cmd_ILIST_LA,
+ option_allowed_cmd_ILIST_LA
+ },
+
+ { CMD_MEMORY,
+ false,
+ false,
+ true,
+ "MEMORY",
+ "MEM",
+ "wszst MEMORY [source]...",
+ "Dump a memory map of each source file. Virtual images (extracted"
+ " directories) are also supported.",
+ 0,
+ 47,
+ option_tab_cmd_MEMORY,
+ option_allowed_cmd_MEMORY
+ },
+
+ { CMD_MEMORY_A,
+ false,
+ false,
+ false,
+ "MEMORY-A",
+ "MEMA",
+ "wszst MEMORY-A [source]...",
+ "Dump recursive a memory map of each source file. 'MEMORY-A' and"
+ " 'MEMA' are short cuts for 'MEMORY --all --all'.",
+ 0,
+ 47,
+ option_tab_cmd_MEMORY_A,
+ option_allowed_cmd_MEMORY_A
+ },
+
+ { CMD_DUMP,
+ false,
+ false,
+ false,
+ "DUMP",
+ 0,
+ "wszst DUMP [source]...",
+ "Dump the internal structure of a BRRES files, compressed or not."
+ " Other archives are ignored. The main goal is to verify string"
+ " relocation. Virtual images (extracted directories) are also"
+ " supported.",
+ 0,
+ 41,
+ option_tab_cmd_DUMP,
+ option_allowed_cmd_DUMP
+ },
+
+ { CMD_SHA1,
+ false,
+ false,
+ true,
+ "SHA1",
+ 0,
+ "wszst SHA1 [source]...",
+ "Print a SHA1 checksum for each source. The checksum is calculated by"
+ " using the uncompressed data.",
+ 0,
+ 48,
+ option_tab_cmd_SHA1,
+ option_allowed_cmd_SHA1
+ },
+
+ { CMD_ANALYZE,
+ false,
+ false,
+ false,
+ "ANALYZE",
+ "ANA",
+ "wszst ANALYZE [source]...",
+ "Analyse track files and print results in machine readable format.",
+ 0,
+ 13,
+ option_tab_cmd_ANALYZE,
+ option_allowed_cmd_ANALYZE
+ },
+
+ { CMD_DISTRIBUTION,
+ false,
+ false,
+ false,
+ "DISTRIBUTION",
+ "DIST",
+ "wszst DISTRIBUTION result source...\n"
+ "wszst DISTRIBUTION directory [source]...",
+ "Load each SOURCE (SZS, WBZ, U8 or WU8) and calculate a checksum of"
+ " the uncompressed data. If SOURCE is a directory, scan it for SZS,"
+ " WBZ, U8 and WU8 files. If a source directory starts with \"arena\","
+ " all tracks of the directory are assumed to be battle arenas. Finally"
+ " print the results into file RESULT.\n"
+ " The default name for RESULT is \"distribution.txt\". Extension .txt"
+ " is appended to the filename if not defined. If RESULT is a"
+ " directory, it is used as first source too.\n"
+ " If file RESULT exists, it is automatically added as last source to"
+ " the list of option --source, but only if not already added. On"
+ " scanning of file result, parameters are scanned too.",
+ 0,
+ 45,
+ option_tab_cmd_DISTRIBUTION,
+ option_allowed_cmd_DISTRIBUTION
+ },
+
+ { CMD_DIFF,
+ false,
+ false,
+ true,
+ "DIFF",
+ "CMP",
+ "wszst DIFF source1 source2\n"
+ "wszst DIFF source... --dest dest",
+ "Compare two or more sources (each SZS, U8, PACK, BRRES, BREFF, BREFT,"
+ " RARC or directory) on file level and report mismatches for each sub"
+ " file. If option --dest is set, then each source file is compared"
+ " with a file in the destination.",
+ 0,
+ 6,
+ option_tab_cmd_DIFF,
+ option_allowed_cmd_DIFF
+ },
+
+ { CMD_CHECK,
+ false,
+ false,
+ true,
+ "CHECK",
+ 0,
+ "wszst CHECK [source]...",
+ "Make a validity check for track files: Try to read KCL and KMP (and"
+ " check both) and find unknown, modified, needed and unneeded files."
+ " Also analyse cannons and make slot proposals. This command uses an"
+ " internal object and file database. The source can be a SZS, U8, WU8"
+ " or WBZ file, or an U8 like directory.",
+ 0,
+ 90,
+ option_tab_cmd_CHECK,
+ option_allowed_cmd_CHECK
+ },
+
+ { CMD_SLOTS,
+ false,
+ false,
+ false,
+ "SLOTS",
+ 0,
+ "wszst SLOTS [source]...",
+ "Try to find out the slots, that will run a track. Each source can be"
+ " a SZS, U8, WU8 or WBZ file, or an U8 like directory. For each source"
+ " one status line is printed. The status line contains either a"
+ " positive or a negative slot list, whatever is shorter. For battle"
+ " arenas, the keyword ARENA is printed.",
+ 0,
+ 86,
+ option_tab_cmd_SLOTS,
+ option_allowed_cmd_SLOTS
+ },
+
+ { CMD_STGI,
+ false,
+ false,
+ false,
+ "STGI",
+ 0,
+ "wszst STGI [source]...",
+ "Find the first KMP:STGI of each file and print an analysis of it as"
+ " single line statistic. Additional the number of lap counter check"
+ " points ('LC') is printed. Track and KMP (binary and text) files are"
+ " accepted as input.",
+ 0,
+ 4,
+ option_tab_cmd_STGI,
+ option_allowed_cmd_STGI
+ },
+
+ { CMD_ISARENA,
+ false,
+ false,
+ false,
+ "ISARENA",
+ 0,
+ "wszst ISARENA [source]...",
+ "Analyse each track for its arena status and print a line with a"
+ " status code and the track name. The status code is: »-RACE« for a"
+ " racing track, »?MAYBE« for likely an arena, »+ARENA« for an"
+ " arena, »+DISPATCH« for an arena with dispatch points or any error"
+ " hint beginning with an »!«. So the very first character (one of"
+ " »!-?+«) can be used to distinguish the status class.\n"
+ " The exit status is >2 on error, 2 (DIFFER), if at least one file is"
+ " a racing track, or 0 (OK), if all sources are arenas.",
+ 0,
+ 6,
+ option_tab_cmd_ISARENA,
+ option_allowed_cmd_ISARENA
+ },
+
+ { CMD_NORMALIZE,
+ false,
+ false,
+ false,
+ "NORMALIZE",
+ "NORM",
+ "wszst NORMALIZE [source]...",
+ "Normalize an U8 archive, compressed or not: The files are sorted in"
+ " `Nintendo like' order and unused data holes are removed. If"
+ " directory '.' is available it becomes the root directory for all"
+ " others. Compressed sources are compressed again with maximum"
+ " compression (level 9). The destination is only written if any data"
+ " changed.\n"
+ " 'wszst NORMALIZE' is the same as 'wszst PATCH --norm'.",
+ 0,
+ 74,
+ option_tab_cmd_NORMALIZE,
+ option_allowed_cmd_NORMALIZE
+ },
+
+ { CMD_PATCH,
+ false,
+ false,
+ false,
+ "PATCH",
+ 0,
+ "wszst PATCH [source]...",
+ "Patch an U8 archive, compressed or not: Load the archive, apply all"
+ " patching and transforming options and store the file again."
+ " Compressed sources are compressed again. The destination is only"
+ " written if any data changed.",
+ 0,
+ 75,
+ option_tab_cmd_PATCH,
+ option_allowed_cmd_PATCH
+ },
+
+ { CMD_COPY,
+ false,
+ false,
+ false,
+ "COPY",
+ "CP",
+ "wszst COPY source dest\n"
+ "wszst COPY source... [-d|-D] dest",
+ "COPY is an alternative command for copying and patching files. It"
+ " uses the same internal procedure as command PATCH, but has another"
+ " command line syntax.\n"
+ " The command copies all source files to the destination. If more than"
+ " 1 source is defined, the destination must be either a directory or a"
+ " destination filename with escapes. Patching is also possible and"
+ " option --overwrite is set implicitly.",
+ 0,
+ 75,
+ option_tab_cmd_COPY,
+ option_allowed_cmd_COPY
+ },
+
+ { CMD_DUPLICATE,
+ false,
+ false,
+ false,
+ "DUPLICATE",
+ "DUP",
+ "wszst DUPLICATE source [-d|-D] dest",
+ "The command reads a single track file and duplicates it several times"
+ " to DEST. Therefor it analyzes the presence flags combinations with"
+ " and without extension support and creates one file for each relevant"
+ " scenario. A LEX section TEST will be inserted to force the execution"
+ " mode for offline tests.\n"
+ " The destination filename (not directory part) is searched for the"
+ " first occurance of '@'. If not found, the place before the last"
+ " point is used. At this place an identification string is inserted.\n"
+ " Depending on option --gamemodes up to 1573 files will be created."
+ " So the use of option --fast is recommended to speed up the process."
+ " Use command 'wkmpt GAMEMODES' to list all variants and to check them"
+ " beforehand.",
+ 0,
+ 76,
+ option_tab_cmd_DUPLICATE,
+ option_allowed_cmd_DUPLICATE
+ },
+
+ { CMD_MINIMAP,
+ false,
+ false,
+ false,
+ "MINIMAP",
+ 0,
+ "wszst MINIMAP [source]...",
+ "Print minimap data (more exact: the visual field of the minimap) of a"
+ " SZS, U8, BRRES or MDL file. If patching options are used, modify the"
+ " data and write back the file using its original file format. Only"
+ " the translation vector is modified and new translation and inverse"
+ " matrices are calculated.",
+ 0,
+ 46,
+ option_tab_cmd_MINIMAP,
+ option_allowed_cmd_MINIMAP
+ },
+
+ { CMD_COMPRESS,
+ false,
+ false,
+ false,
+ "COMPRESS",
+ "COM",
+ "wszst COMPRESS [source]...",
+ "Compress and create a SZS archives. If the source is already"
+ " compressed, then decompress and compress it again. The default"
+ " destination is '%P/%N.szs'.",
+ 0,
+ 75,
+ option_tab_cmd_COMPRESS,
+ option_allowed_cmd_COMPRESS
+ },
+
+ { CMD_DECOMPRESS,
+ false,
+ false,
+ false,
+ "DECOMPRESS",
+ "DEC",
+ "wszst DECOMPRESS [szs]...",
+ "Decompress SZS files. The default destination is '%P/%N.u8'.",
+ 0,
+ 68,
+ option_tab_cmd_DECOMPRESS,
+ option_allowed_cmd_DECOMPRESS
+ },
+
+ { CMD_ENCODE,
+ false,
+ false,
+ false,
+ "ENCODE",
+ "E",
+ "wszst ENCODE [source_dir]...",
+ " Create and/or encode sub files if necessary. It works like command"
+ " CREATE, but without creating a new first level archive file.",
+ 0,
+ 69,
+ option_tab_cmd_ENCODE,
+ option_allowed_cmd_ENCODE
+ },
+
+ { CMD_CREATE,
+ false,
+ false,
+ false,
+ "CREATE",
+ "C",
+ "wszst CREATE [source_dir]...",
+ "Create SZS, U8, PACK, BRRES, BREFF, BREFT or RARC archives by adding"
+ " all not hidden files of the directory structure. Create and/or"
+ " encode sub files if necessary. The default destination is '%P/%N%T'.",
+ 0,
+ 95,
+ option_tab_cmd_CREATE,
+ option_allowed_cmd_CREATE
+ },
+
+ { CMD_UPDATE,
+ false,
+ false,
+ false,
+ "UPDATE",
+ "U",
+ "wszst UPDATE [source]... [--source=] [--dest=]",
+ "Update an existing SZS, U8, PACK, BRRES, BREFF, BREFT and"
+ " RARCarchive. This is done in similar way as the EXTRACT command, but"
+ " instead of extracting, source files are searched in a prior"
+ " extracted archive. Only files with the same size are updated. The"
+ " secondary source is used to find the source sub files. The default"
+ " secondary source is '%P/%N.d/'.",
+ 0,
+ 68,
+ option_tab_cmd_UPDATE,
+ option_allowed_cmd_UPDATE
+ },
+
+ { CMD_EXTRACT,
+ false,
+ false,
+ false,
+ "EXTRACT",
+ "X",
+ "wszst EXTRACT [source]...",
+ "Extract all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC"
+ " archives. The default destination is '%P/%N.d/'.",
+ 0,
+ 73,
+ option_tab_cmd_EXTRACT,
+ option_allowed_cmd_EXTRACT
+ },
+
+ { CMD_XDECODE,
+ false,
+ false,
+ false,
+ "XDECODE",
+ "XD",
+ "wszst XDECODE [source]...",
+ "Command XDECODE is a short cut for 'EXTRACT --decode'. It extract all"
+ " sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC archives"
+ " and decodes all supported files. The default destination is"
+ " '%P/%N.d/'.",
+ 0,
+ 73,
+ option_tab_cmd_XDECODE,
+ option_allowed_cmd_XDECODE
+ },
+
+ { CMD_XEXPORT,
+ false,
+ false,
+ false,
+ "XEXPORT",
+ "XX",
+ "wszst XEXPORT [source]...",
+ "Command XEXPORT is a short cut for 'EXTRACT --decode --export'. It"
+ " extract all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC"
+ " archives and decodes all supported files with enabled export mode."
+ " The default destination is '%P/%N.d/'.",
+ 0,
+ 73,
+ option_tab_cmd_XEXPORT,
+ option_allowed_cmd_XEXPORT
+ },
+
+ { CMD_XALL,
+ false,
+ false,
+ false,
+ "XALL",
+ "XA",
+ "wszst XALL [source]...",
+ "Command XALL is a short cut for 'EXTRACT --all'. It extract all sub"
+ " files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC archives"
+ " recursively and decodes all supported files. The default destination"
+ " is '%P/%N.d/'.",
+ 0,
+ 73,
+ option_tab_cmd_XALL,
+ option_allowed_cmd_XALL
+ },
+
+ { CMD_XCOMMON,
+ false,
+ false,
+ false,
+ "XCOMMON",
+ 0,
+ "wszst XCOMMON [source]...",
+ "Command XCOMMON is a short cut for 'EXTRACT --basedir=common'. Scan"
+ " archives and extract files from archives, that are below directory"
+ " 'common'. The default destination is '%P/%N.d/'.",
+ 0,
+ 9,
+ option_tab_cmd_XCOMMON,
+ option_allowed_cmd_XCOMMON
+ },
+
+ { CMD_BINARY,
+ false,
+ false,
+ true,
+ "BINARY",
+ "BIN",
+ "wszst BINARY [source]...",
+ "Read each source file (binary or text, but never archives) and write"
+ " the content as binary file. The file extension of the new file"
+ " depends on the file type, but is usually .bin. Currently supported"
+ " file formats are BMG, GEOHIT, ITEMSLOT, KCL, KMG, KMP, LEX, OBJFLOW,"
+ " PAT and the related text formats.",
+ 0,
+ 11,
+ option_tab_cmd_BINARY,
+ option_allowed_cmd_BINARY
+ },
+
+ { CMD_TEXT,
+ false,
+ false,
+ false,
+ "TEXT",
+ "TXT",
+ "wszst TEXT [source]...",
+ "Read each source file (binary or text, but never archives) and write"
+ " the content as text file. The file extension of the new file is"
+ " usually .txt. Currently supported file formats are BMG, GEOHIT,"
+ " ITEMSLOT, KCL, KMG, KMP, LEX, OBJFLOW, PAT and the related text"
+ " formats.",
+ 0,
+ 31,
+ option_tab_cmd_TEXT,
+ option_allowed_cmd_TEXT
+ },
+
+ { CMD_CAT,
+ false,
+ false,
+ false,
+ "CAT",
+ 0,
+ "wszst CAT [source/subfile]...",
+ "Extract one or more sub files of SZS, U8, PACK, BRRES, BREFF, BREFT"
+ " and RARC archives. The output of all source files is concatenated"
+ " and written to stdout.",
+ 0,
+ 21,
+ option_tab_cmd_CAT,
+ option_allowed_cmd_CAT
+ },
+
+ { CMD_BMG,
+ false,
+ false,
+ false,
+ "BMG",
+ 0,
+ "wszst BMG [source]...",
+ "For each archive all BMG sub files are searched and, if found,"
+ " decoded and printed as combined BMG text file. The command works"
+ " exactly like 'wbmgt MIX'.",
+ 0,
+ 17,
+ option_tab_cmd_BMG,
+ option_allowed_cmd_BMG
+ },
+
+ { CMD_KCL,
+ false,
+ false,
+ false,
+ "KCL",
+ 0,
+ "wszst KCL [source]...",
+ "For each archive the KCL sub file course.kcl is searched and, if"
+ " found, decoded and printed (copied to stdout).\n"
+ " Automated dropping of bad KCL triangles is enabled if no other drop"
+ " option is specified by option --kcl.",
+ 0,
+ 50,
+ option_tab_cmd_KCL,
+ option_allowed_cmd_KCL
+ },
+
+ { CMD_KMP,
+ false,
+ false,
+ false,
+ "KMP",
+ 0,
+ "wszst KMP [source]...",
+ "For each archive the KMP sub file course.kmp is searched and, if"
+ " found, decoded and printed (copied to stdout).",
+ 0,
+ 51,
+ option_tab_cmd_KMP,
+ option_allowed_cmd_KMP
+ },
+
+ { CMD_LEX,
+ false,
+ false,
+ false,
+ "LEX",
+ 0,
+ "wszst LEX [source]...",
+ "For each archive the LEX sub file course.lex is searched and, if"
+ " found, decoded and printed (copied to stdout).",
+ 0,
+ 4,
+ option_tab_cmd_LEX,
+ option_allowed_cmd_LEX
+ },
+
+ { CMD_INFO,
+ false,
+ false,
+ false,
+ "INFO",
+ 0,
+ "wszst INFO [source]...",
+ "For each archive a file named info.txt and, if not found, credits.txt"
+ " is searched, ignoring case. The first found file of each archive is"
+ " printed (copied to stdout).",
+ 0,
+ 2,
+ option_tab_cmd_INFO,
+ option_allowed_cmd_INFO
+ },
+
+ { CMD_GHOST,
+ true,
+ false,
+ false,
+ "GHOSTS",
+ 0,
+ "wszst GHOST [source]...",
+ "Analyse each file and print a summary about the ghost data.",
+ 0,
+ 12,
+ option_tab_cmd_GHOST,
+ option_allowed_cmd_GHOST
+ },
+
+ { CMD_YAZDUMP,
+ false,
+ false,
+ false,
+ "YAZDUMP",
+ "YD",
+ "wszst YAZDUMP [szs]...",
+ "Analyze YAZ compression print a dump to stdout. Ignore files without"
+ " YAZ compression.",
+ 0,
+ 8,
+ option_tab_cmd_YAZDUMP,
+ option_allowed_cmd_YAZDUMP
+ },
+
+ { CMD_VEHICLE,
+ true,
+ false,
+ true,
+ "VEHICLE",
+ 0,
+ "wszst VEHICLE job ...",
+ "Hidden vehicle settings command.",
+ 0,
+ 7,
+ option_tab_cmd_VEHICLE,
+ option_allowed_cmd_VEHICLE
+ },
+
+ {0,0,0,0,0,0,0,0,0,0,0,0}
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// InfoUI ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+const InfoUI_t InfoUI_wszst =
+{
+ "wszst",
+ CMD__N,
+ CommandTab,
+ CommandInfo,
+ OPT__N_SPECIFIC,
+ OPT__N_TOTAL,
+ OptionInfo,
+ OptionUsed,
+ OptionIndex,
+ OptionShort,
+ OptionLong
+};
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// END ///////////////
+///////////////////////////////////////////////////////////////////////////////
+