/*************************************************************************** * _______ _______ _______ * * | ___ |____ | ___ | * * | | |_| / /| | |_| * * | |_____ / / | |_____ * * |_____ | / / |_____ | * * _ | | / / _ | | * * | |___| |/ /____| |___| | * * |_______|_______|_______| * * * * Wiimms SZS Tools * * * *************************************************************************** * * * This file is part of the SZS project. * * Visit https://szs.wiimm.de/ for project details and sources. * * * * Copyright (c) 2011-2024 by Dirk Clemens * * * *************************************************************************** * * * 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 #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_PLUS, false, false, false, false, false, 0, "plus", "chars", "If a name begins with a plus sign, then all characters up to the" " first space are recognized as a plus prefix. The first part consists" " of all the plus signs followed by any other characters. The first" " character of the second part is used to determine the sort value. If" " the second part is empty, then the last plus sign is used instead.\n" " The higher sorting value is now calculated from the number of plus" " signs in the first part, the more plus signs, the smaller the value." " The first character from the second part determines the lower value." " If it is in parameter CHARS then the position determines the value," " otherwise the ASCII value to which 500 is added." }, { OPT_SPLIT, false, false, false, false, false, 0, "split", "num", "Only one line with the standardized name is output. The components" " are divided into NUM (1-13) parts with predifined format strings." " The pipe sign (|) is used as a separator. An alternative output" " format can be defined with the --printf option. See" " https://szs.wiimm.de/opt/split for details." }, { OPT_PRINTF, false, false, false, false, false, 0, "printf", "format", "Add an output line with a formatted string. See" " https://szs.wiimm.de/opt/printf for details." }, { 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 , T and" " / or ranges like :, T: and" " :/. '' is a complete KCL flag in the range of" " 0..0xffff. '' are only the base types in the range of 0..0x1f." " If is present, it marks the relevant bits. For the T" " 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 '' 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_LE_MENU, false, false, false, false, false, 0, "le-menu", 0, "Patch language independent SZS files from directory .../Scene/UI/ to" " change the menu as required by LE-CODE to be able to select tracks" " from more than 8 cups." }, { OPT_9LAPS, false, false, false, false, false, 0, "9laps", 0, "Patch RACE*.szs files from directory .../Scene/UI/ to support 9 laps." " It is based on https://wiki.tockdom.com/wiki/Lap_Texture_Fix v1.03." }, { OPT_UI_SOURCE, false, false, false, false, false, 0, "ui-source", "dir", "This option affects options --le-menu and --9laps. If subfiles are to" " be exchanged in UI files, the files are first searched for in the" " specified directory. The internal files are only used if the file" " was not found." }, { OPT_TITLE_SCREEN, false, false, false, false, false, 0, "title-screen", "dir", "Specify a directory from which to search and replace title screens." " Title screens only appear in the file 'Title.szs' and there in the" " sub-directory './title/timg/'. If the replacement file is not found," " then search file 'title1.szs' to patch standard files or file" " 'title2.szs' to patch bokeboke files." }, { OPT_CUP_ICONS, false, false, false, false, false, 0, "cup-icons", "image", "Load given image, convert it to TPLx.CMPR and add the result as" " sub-files 'button/timg/ct_icons.tpl' and as" " 'control/timg/ct_icons.tpl' to files 'Channel.szs', 'MenuMulti.szs'" " and 'MenuSingle.szs'. Both sub-files are always linked, so that" " storage space is saved. The usual size for each single icon is" " 128x128." }, { OPT_NO_COPY, false, false, false, false, false, 0, "no-copy", 0, "Don't copy a file if it was not modified." }, { 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'-'v' (32 different 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:" " STANDARD (+/=, 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_NO_WILDCARDS, false, false, false, false, false, 0, "no-wildcards", 0, "Disable wildcard parsing and use each filename exactly as specified." }, { OPT_IN_ORDER, false, false, false, false, false, 0, "in-order", 0, "Process the input files in order of the command line and don't delete" " duplicates." }, { 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_ENDIAN, false, false, false, false, false, 0, "bmg-endian", "name", "Force an endian for new BMG files. Accepted values are BIG or BE for" " big endian, LITTLE or LE for little endian and AUTO for automatic" " detection (default).\n" " Mario Kart Wii uses big endian; the default if no other endian is" " defined." }, { OPT_BMG_ENCODING, false, false, false, false, false, 0, "bmg-encoding", "name", "Force an 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 tuples 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_FMODES, false, true, false, false, false, 0, "fmodes", "list", "--fmodes is a short cut for --feature-modes and declares an output" " filter. LIST is a keyword list. The keywords are: SECTION, VISUAL," " GAMEPLAY, BATTLE, RACING, TIMETRIAL, OFFLINE and ONLINE. A feature" " is only printed if *all* set keywords match.\n" " Each keyword can also be used with a minus as prefix to define a" " second condition. In this case the feature is excluded from printing" " if *any* set keywords match." }, { OPT_INSTALL, false, false, false, false, false, 0, "install", 0, "Manage configuration for an installation." }, { 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_ID_LIST, false, true, false, false, false, 0, "id-list", "file", "Set filename of a SHA1ID file." }, { OPT_REFERENCE, false, false, false, false, false, 0, "ref", "path", "Define a reference SZS." }, { 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_LTA, false, false, false, false, false, 0, "align-lta", "size", "Define an align value for the sub files in LTA archives. The value" " must be a power of 2 and the default value is 32 (0x20) This value" " is only relevant if creating LTA 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-lta=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_WLZ, false, false, false, false, false, 0, "wlz", 0, "Short cut for '--wu8 --lz': Create a WU8 archive, if possible, and" " set the compression method to LZ." }, { OPT_LFL, false, false, false, false, false, 0, "lfl", 0, "Create a LFL (LE-CODE File List) archive." }, { 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" " Do not use compression level >6 for LZMA if the file is intended" " for Mario Kart Wii, as too much memory is required for decoding.\n" "\n" " Option --norm takes precedence over --compr and sets the" " compression level for bzip2 to TRY2 (BEST) and for LZMA to 6.\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 C14095 are used." }, { OPT_LOAD_PREFIX, false, false, false, false, false, 0, "load-prefix", "file", "Read in a PREFIX file and replace the internal prefix database with" " the content. https://ct.wiimm.de/export/prefix is the authoritative" " source for this." }, { OPT_LOAD_CATEGORY, false, false, false, false, false, 0, "load-category", "file", "Read in a CATEGORY file and replace the internal category database" " with the content. https://ct.wiimm.de/export/category is the" " authoritative source for this." }, { 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 special 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, TINY-0 ..." " TINY-7, 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, TINY-0 .. TINY-7, INPLACE, SILENT and LOG. See" " https://szs.wiimm.de/opt/kmp for details." }, { OPT_N_LAPS, false, true, false, false, false, 0, "n-laps", "laps", "If LAPS is a number between 1 and 9, then ignore laps settings of" " option --kmp (1LAP..9LAPS) and patch KMP:STGI to this number of" " laps." }, { 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-files 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_FILES, false, false, false, false, false, 0, "patch-files", "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 NONE" " 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 LEX sections TEST and DEV1 and remove them 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 INDEX is 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-* and --lex-* options." }, { OPT_LEX_FEATURES, false, false, false, false, false, 0, "lex-features", 0, "Calculate LEX setion FEAT (features) by analysing the track file. If" " no features found, delete the section and the possibly empty" " sub-file course.lex. If features found, then insert the section or" " update an existing section. If necessary, the sub-file course.lex is" " created. This option is executed after all --lt-* options and after" " --lex-purge.\n" " CTGP uses the FEAT section to manage ghosts." }, { OPT_LEX_RM_FEAT, false, false, false, false, false, 0, "lex-rm-features", 0, "Remove LEX setion FEAT (features) if exists and the possibly empty" " sub-file course.lex. This option is ignored if --lex-features is" " set. It is executed after all --lt-* options and after --lex-purge." }, { OPT_CACHE, false, false, false, false, false, 0, "cache", "dir", "Define a directory for an SZS cache. If creating a YAZ0, BZ, BZIP2," " LZ or LZMA compressed file with standard compression (levels" " 9,9,9,6,6), 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. Option" " --remove-dest is set automatically to protect cache integrity.\n" " The idea behind the cache: Loading an SZS file and comparing the" " decompressed content is clearly faster than compressing the file.\n" " For legay reasons: If parameter DIR is a file, the filename 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_LOG_CACHE, false, false, false, false, false, 0, "log-cache", "file", "Define a file to log chache activities. Use '-' to log to stdout or" " stderr. The file is openend in append-mode." }, { OPT_PARALLEL, false, false, false, false, false, 0, "parallel", 0, "Tell the tool that it will be called multiple times in parallel." " Currently it only has an effect if --cache is enabled." }, { 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 (2 GiB for LTA); 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 config -ll' 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 YAZ0 like file" " format with BZIP2 compression)." }, { OPT_BZIP2, false, false, false, false, false, 0, "bzip2", 0, "If creating a compressed file, create a BZIP2 compatible file." }, { OPT_CYBZ, false, false, false, false, false, 0, "cybz", 0, "If creating a compressed file, force YBZ compression (YAZ0 file" " header, but BZIP2 compression), but don't change the payload." }, { OPT_YBZ, false, false, false, false, false, 0, "ybz", 0, "If creating a compressed file, force archive format U8 with YBZ" " compression (YAZ0 file header, but BZIP2 compression). Therefore it" " is a short cut for '--u8 --cybz'." }, { OPT_LZ, false, false, false, false, false, 0, "lz", 0, "If creating a compressed file, force LZ compression (a YAZ0 like file" " format with LZMA compression)." }, { OPT_LZMA, false, false, false, false, false, 0, "lzma", 0, "If creating a compressed file, create a LZMA compatible file." }, { OPT_CYLZ, false, false, false, false, false, 0, "cylz", 0, "If creating a compressed file, force YLZ compression (YAZ0 file" " header, but LZMA compression), but don't change the payload." }, { OPT_YLZ, false, false, false, false, false, 0, "ylz", 0, "If creating a compressed file, force archive format U8 with YLZ" " compression (YAZ0 file header, but LZMA compression). Therefore it" " is a short cut for '--u8 --cylz'." }, { 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" " value is 'res' for variables and 'res_' as prefix." }, { 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_CASE, false, false, false, false, false, 0, "case", "case", "CASE is one of LOWER, AUTO (default) or UPPER.If LOWER or UPPER are" " set, then the lower/upper case of the variable names is adjusted" " accordingly." }, { 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 == 243 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// alternate option infos /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t option_grp_SCRIPT_SECTIONS = { OPT_SECTIONS, false, false, false, false, false, 0, "sections", 0, "Dump info using configuration or section syntax. Use '--var name' as" " prefix." }; 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 (like --sections without section header). If set" " twice, append developing settings." }; static const InfoOption_t option_cmd_CONFIG_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "If printed as sections, exclude all comments. Otherwise suppress" " configuration search list." }; static const InfoOption_t option_cmd_CONFIG_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "If set, print the global search list too. If set twice, print the" " auto-add search list too. This option is ignored, if any script" " output is enabled." }; static const InfoOption_t option_cmd_WILDCARDS_SH = { OPT_SH, false, false, false, false, false, 0, "sh", 0, "Quote filenames for sh using '...'." }; static const InfoOption_t option_cmd_WILDCARDS_BASH = { OPT_BASH, false, false, false, false, false, 0, "bash", 0, "Ignore --sh and quote filenames for bash using $'...'. Use »eval" " var=($(wszst wildcards --bash ...))« to assign the result to a bash" " array." }; 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_UI_CHECK_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Print the result as technical list." }; 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_SCANCACHE_FAST = { OPT_FAST, false, false, false, false, false, 0, "fast", 0, "Scan 'cache-content.txt' and remove duplicates. Ignore option" " --purge." }; static const InfoOption_t option_cmd_SIZEOF_SORT = { OPT_SORT, false, false, false, false, false, 'S', "sort", "mode", "Define a sort mode. Keywords are: NONE (default), NAME end SIZE." }; static const InfoOption_t option_cmd_SIZEOF_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Limit output to SZS specific data." }; 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_IS_TEXTURE_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, "Append a colon and the filename after each status." }; static const InfoOption_t option_cmd_FEATURES_BRIEF = { OPT_BRIEF, false, false, false, false, false, 'B', "brief", 0, "Suppres comments at all. If set twice, suppress empty lines (for" " grouping) too. If set three times, omit inactive features (value 0)" " too." }; static const InfoOption_t option_cmd_FEATURES_LONG = { OPT_LONG, false, false, false, false, false, 'l', "long", 0, " If set, a comma-separated list of letters is added to the end of" " each feature. If set twice, the output is filled with minus signed" " to get an aligned string. The letters used are: S (section), V" " (visual impact), B (battle impact), R (racing impact), T (time trial" " impact), L (local=offline impact) and O (online impact)." }; static const InfoOption_t option_cmd_FEATURES_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_IS_ARENA_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_IS_ARENA_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_IS_ARENA_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_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", "V", 0 }, { CMD_HELP, "HELP", "H", 0 }, { CMD_HELP, "?", 0, 0 }, { CMD_CONFIG, "CONFIG", 0, 0 }, { CMD_INSTALL, "INSTALL", 0, 0 }, { CMD_ARGTEST, "ARGTEST", 0, 0 }, { CMD_EXPAND, "EXPAND", 0, 0 }, { CMD_WILDCARDS, "WILDCARDS", 0, 0 }, { CMD_TEST, "TEST", 0, 0 }, { CMD_COLORS, "COLORS", 0, 0 }, { CMD_ERROR, "ERROR", "ERR", 0 }, { CMD_FILETYPE, "FILETYPE", "FT", 0 }, { CMD_UI_CHECK, "UI-CHECK", "UC", 0 }, { CMD_UI_CHECK, "UICHECK", 0, 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_SIZEOF, "SIZEOF", 0, 0 }, { CMD_CODE, "_CODE", 0, 0 }, { CMD_RECODE, "_RECODE", 0, 0 }, { CMD_SUBFILE, "_SUBFILE", 0, 0 }, { CMD_TESTNORM, "_NORM", 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_SPLIT, "SPLIT", 0, 0 }, { CMD_IS_TEXTURE, "IS-TEXTURE", "ISTEXTURE", 0 }, { CMD_FEATURES, "FEATURES", 0, 0 }, { CMD_DISTRIBUTION, "DISTRIBUTION", "DIS", 0 }, { CMD_DISTRIBUTION, "DISTRIB", 0, 0 }, { CMD_DIFF, "DIFF", "CMP", 0 }, { CMD_CHECK, "CHECK", 0, 0 }, { CMD_SLOTS, "SLOTS", 0, 0 }, { CMD_STGI, "STGI", 0, 0 }, { CMD_IS_ARENA, "IS-ARENA", "ISARENA", 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[] = "VhzqvLYW:c: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 }, { "config", 1, 0, GO_CONFIG }, { "ydebug", 0, 0, GO_YDEBUG }, { "allow-all", 0, 0, GO_ALLOW_ALL }, { "allowall", 0, 0, GO_ALLOW_ALL }, { "compatible", 1, 0, GO_COMPATIBLE }, { "width", 1, 0, GO_WIDTH }, { "max-width", 1, 0, GO_MAX_WIDTH }, { "maxwidth", 1, 0, GO_MAX_WIDTH }, { "no-pager", 0, 0, GO_NO_PAGER }, { "nopager", 0, 0, GO_NO_PAGER }, { "zero", 0, 0, 'z' }, { "quiet", 0, 0, 'q' }, { "verbose", 0, 0, 'v' }, { "logging", 0, 0, 'L' }, { "log", 0, 0, 'L' }, { "extended-errors", 0, 0, 'Y' }, { "extendederrors", 0, 0, 'Y' }, { "xerr", 0, 0, 'Y' }, { "timing", 0, 0, GO_TIMING }, { "warn", 1, 0, 'W' }, { "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 }, { "le-04x", 0, 0, GO_LE_04X }, { "le04x", 0, 0, GO_LE_04X }, { "load-prefix", 1, 0, GO_LOAD_PREFIX }, { "loadprefix", 1, 0, GO_LOAD_PREFIX }, { "load-category", 1, 0, GO_LOAD_CATEGORY }, { "loadcategory", 1, 0, GO_LOAD_CATEGORY }, { "plus", 1, 0, GO_PLUS }, { "split", 1, 0, GO_SPLIT }, { "printf", 1, 0, GO_PRINTF }, { "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 }, { "n-laps", 1, 0, GO_N_LAPS }, { "nlaps", 1, 0, GO_N_LAPS }, { "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-files", 1, 0, GO_PATCH_FILES }, { "patchfiles", 1, 0, GO_PATCH_FILES }, { "pfiles", 1, 0, GO_PATCH_FILES }, { "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 }, { "lex-features", 0, 0, GO_LEX_FEATURES }, { "lexfeatures", 0, 0, GO_LEX_FEATURES }, { "lex-rm-features", 0, 0, GO_LEX_RM_FEAT }, { "lexrmfeatures", 0, 0, GO_LEX_RM_FEAT }, { "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 }, { "le-menu", 0, 0, GO_LE_MENU }, { "lemenu", 0, 0, GO_LE_MENU }, { "9laps", 0, 0, GO_9LAPS }, { "ui-source", 1, 0, GO_UI_SOURCE }, { "uisource", 1, 0, GO_UI_SOURCE }, { "title-screen", 1, 0, GO_TITLE_SCREEN }, { "titlescreen", 1, 0, GO_TITLE_SCREEN }, { "cup-icons", 1, 0, GO_CUP_ICONS }, { "cupicons", 1, 0, GO_CUP_ICONS }, { "no-copy", 0, 0, GO_NO_COPY }, { "nocopy", 0, 0, GO_NO_COPY }, { "cache", 1, 0, GO_CACHE }, { "cname", 1, 0, GO_CNAME }, { "log-cache", 1, 0, GO_LOG_CACHE }, { "logcache", 1, 0, GO_LOG_CACHE }, { "parallel", 0, 0, GO_PARALLEL }, { "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' }, { "no-wildcards", 0, 0, GO_NO_WILDCARDS }, { "nowildcards", 0, 0, GO_NO_WILDCARDS }, { "in-order", 0, 0, GO_IN_ORDER }, { "inorder", 0, 0, GO_IN_ORDER }, { "pipe", 0, 0, GO_PIPE }, { "delta", 0, 0, GO_DELTA }, { "diff", 0, 0, GO_DIFF }, { "epsilon", 1, 0, GO_EPSILON }, { "bmg-endian", 1, 0, GO_BMG_ENDIAN }, { "bmgendian", 1, 0, GO_BMG_ENDIAN }, { "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' }, { "order", 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 }, { "bzip2", 0, 0, GO_BZIP2 }, { "bz2", 0, 0, GO_BZIP2 }, { "cybz", 0, 0, GO_CYBZ }, { "ybz", 0, 0, GO_YBZ }, { "lz", 0, 0, GO_LZ }, { "lzma", 0, 0, GO_LZMA }, { "cylz", 0, 0, GO_CYLZ }, { "ylz", 0, 0, GO_YLZ }, { "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 }, { "case", 1, 0, GO_CASE }, { "fmodes", 1, 0, GO_FMODES }, { "feature-modes", 1, 0, GO_FMODES }, { "featuremodes", 1, 0, GO_FMODES }, { "install", 0, 0, GO_INSTALL }, { "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' }, { "id-list", 1, 0, GO_ID_LIST }, { "idlist", 1, 0, GO_ID_LIST }, { "ref", 1, 0, GO_REFERENCE }, { "reference", 1, 0, GO_REFERENCE }, { "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-lta", 1, 0, GO_ALIGN_LTA }, { "alignlta", 1, 0, GO_ALIGN_LTA }, { "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 }, { "wlz", 0, 0, GO_WLZ }, { "lfl", 0, 0, GO_LFL }, { "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 W */ OPT_WARN, /* 0x058 X */ OPT_EXPORT, /* 0x059 Y */ OPT_EXT_ERRORS, /* 0x05a */ 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, /* 0x07a z */ OPT_ZERO, /* 0x07b */ 0,0,0,0, 0, /* 0x080 */ OPT_XHELP, /* 0x081 */ OPT_CONFIG, /* 0x082 */ OPT_YDEBUG, /* 0x083 */ OPT_ALLOW_ALL, /* 0x084 */ OPT_COMPATIBLE, /* 0x085 */ OPT_WIDTH, /* 0x086 */ OPT_MAX_WIDTH, /* 0x087 */ OPT_NO_PAGER, /* 0x088 */ OPT_TIMING, /* 0x089 */ OPT_DE, /* 0x08a */ OPT_COLORS, /* 0x08b */ OPT_NO_COLORS, /* 0x08c */ OPT_CT_CODE, /* 0x08d */ OPT_LE_CODE, /* 0x08e */ OPT_LE_04X, /* 0x08f */ OPT_LOAD_PREFIX, /* 0x090 */ OPT_LOAD_CATEGORY, /* 0x091 */ OPT_PLUS, /* 0x092 */ OPT_SPLIT, /* 0x093 */ OPT_PRINTF, /* 0x094 */ OPT_CHDIR, /* 0x095 */ OPT_TOUCH, /* 0x096 */ OPT_AUTO, /* 0x097 */ OPT_SET_FLAGS, /* 0x098 */ OPT_SET_SCALE, /* 0x099 */ OPT_SET_ROT, /* 0x09a */ OPT_SET_X, /* 0x09b */ OPT_SET_Y, /* 0x09c */ OPT_SET_Z, /* 0x09d */ OPT_XCENTER, /* 0x09e */ OPT_YCENTER, /* 0x09f */ OPT_ZCENTER, /* 0x0a0 */ OPT_CENTER, /* 0x0a1 */ OPT_SCALE, /* 0x0a2 */ OPT_SHIFT, /* 0x0a3 */ OPT_XSS, /* 0x0a4 */ OPT_YSS, /* 0x0a5 */ OPT_ZSS, /* 0x0a6 */ OPT_ROT, /* 0x0a7 */ OPT_XROT, /* 0x0a8 */ OPT_YROT, /* 0x0a9 */ OPT_ZROT, /* 0x0aa */ OPT_YPOS, /* 0x0ab */ OPT_TRANSLATE, /* 0x0ac */ OPT_NULL, /* 0x0ad */ OPT_NEXT, /* 0x0ae */ OPT_ASCALE, /* 0x0af */ OPT_AROT, /* 0x0b0 */ OPT_TFORM_SCRIPT, /* 0x0b1 */ OPT_MINIMAP, /* 0x0b2 */ OPT_RM_GOBJ, /* 0x0b3 */ OPT_BATTLE, /* 0x0b4 */ OPT_EXPORT_FLAGS, /* 0x0b5 */ OPT_ROUTE_OPTIONS, /* 0x0b6 */ OPT_WIM0, /* 0x0b7 */ OPT_SLOT, /* 0x0b8 */ OPT_LOAD_KCL, /* 0x0b9 */ OPT_KCL, /* 0x0ba */ OPT_KCL_FLAG, /* 0x0bb */ OPT_KCL_SCRIPT, /* 0x0bc */ OPT_TRI_AREA, /* 0x0bd */ OPT_TRI_HEIGHT, /* 0x0be */ OPT_FLAG_FILE, /* 0x0bf */ OPT_XTRIDATA, /* 0x0c0 */ OPT_KMP, /* 0x0c1 */ OPT_N_LAPS, /* 0x0c2 */ OPT_SPEED_MOD, /* 0x0c3 */ OPT_KTPT2, /* 0x0c4 */ OPT_TFORM_KMP, /* 0x0c5 */ OPT_REPAIR_XPF, /* 0x0c6 */ OPT_GAMEMODES, /* 0x0c7 */ OPT_MDL, /* 0x0c8 */ OPT_PAT, /* 0x0c9 */ OPT_PATCH_FILES, /* 0x0ca */ OPT_KMG_LIMIT, /* 0x0cb */ OPT_KMG_COPY, /* 0x0cc */ OPT_LT_CLEAR, /* 0x0cd */ OPT_LT_ONLINE, /* 0x0ce */ OPT_LT_N_PLAYERS, /* 0x0cf */ OPT_LT_COND_BIT, /* 0x0d0 */ OPT_LT_GAME_MODE, /* 0x0d1 */ OPT_LT_ENGINE, /* 0x0d2 */ OPT_LT_RANDOM, /* 0x0d3 */ OPT_LEX_PURGE, /* 0x0d4 */ OPT_LEX_FEATURES, /* 0x0d5 */ OPT_LEX_RM_FEAT, /* 0x0d6 */ OPT_LOAD_BMG, /* 0x0d7 */ OPT_PATCH_BMG, /* 0x0d8 */ OPT_MACRO_BMG, /* 0x0d9 */ OPT_FILTER_BMG, /* 0x0da */ OPT_LE_MENU, /* 0x0db */ OPT_9LAPS, /* 0x0dc */ OPT_UI_SOURCE, /* 0x0dd */ OPT_TITLE_SCREEN, /* 0x0de */ OPT_CUP_ICONS, /* 0x0df */ OPT_NO_COPY, /* 0x0e0 */ OPT_CACHE, /* 0x0e1 */ OPT_CNAME, /* 0x0e2 */ OPT_LOG_CACHE, /* 0x0e3 */ OPT_PARALLEL, /* 0x0e4 */ OPT_ID, /* 0x0e5 */ OPT_BASE64, /* 0x0e6 */ OPT_DB64, /* 0x0e7 */ OPT_CODING, /* 0x0e8 */ OPT_VERIFY, /* 0x0e9 */ OPT_ROUND, /* 0x0ea */ OPT_NO_WILDCARDS, /* 0x0eb */ OPT_IN_ORDER, /* 0x0ec */ OPT_PIPE, /* 0x0ed */ OPT_DELTA, /* 0x0ee */ OPT_DIFF, /* 0x0ef */ OPT_EPSILON, /* 0x0f0 */ OPT_BMG_ENDIAN, /* 0x0f1 */ OPT_BMG_ENCODING, /* 0x0f2 */ OPT_BMG_INF_SIZE, /* 0x0f3 */ OPT_BMG_MID, /* 0x0f4 */ OPT_FORCE_ATTRIB, /* 0x0f5 */ OPT_DEF_ATTRIB, /* 0x0f6 */ OPT_NO_ATTRIB, /* 0x0f7 */ OPT_X_ESCAPES, /* 0x0f8 */ OPT_OLD_ESCAPES, /* 0x0f9 */ OPT_NO_BMG_COLORS, /* 0x0fa */ OPT_BMG_COLORS, /* 0x0fb */ OPT_NO_BMG_INLINE, /* 0x0fc */ OPT_AUTOADD_PATH, /* 0x0fd */ OPT_STRIP, /* 0x0fe */ OPT_UTF_8, /* 0x0ff */ OPT_NO_UTF_8, /* 0x100 */ OPT_FORCE, /* 0x101 */ OPT_REPAIR_MAGICS, /* 0x102 */ OPT_TINY, /* 0x103 */ OPT_YAZ0, /* 0x104 */ OPT_YAZ1, /* 0x105 */ OPT_XYZ, /* 0x106 */ OPT_BZ, /* 0x107 */ OPT_BZIP2, /* 0x108 */ OPT_CYBZ, /* 0x109 */ OPT_YBZ, /* 0x10a */ OPT_LZ, /* 0x10b */ OPT_LZMA, /* 0x10c */ OPT_CYLZ, /* 0x10d */ OPT_YLZ, /* 0x10e */ OPT_SH, /* 0x10f */ OPT_BASH, /* 0x110 */ OPT_JSON, /* 0x111 */ OPT_PHP, /* 0x112 */ OPT_MAKEDOC, /* 0x113 */ OPT_VAR, /* 0x114 */ OPT_ARRAY, /* 0x115 */ OPT_AVAR, /* 0x116 */ OPT_CASE, /* 0x117 */ OPT_FMODES, /* 0x118 */ OPT_INSTALL, /* 0x119 */ OPT_ANALYZE, /* 0x11a */ OPT_ANALYZE_MODE, /* 0x11b */ OPT_OLD, /* 0x11c */ OPT_STD, /* 0x11d */ OPT_NEW, /* 0x11e */ OPT_EXTRACT, /* 0x11f */ OPT_ID_LIST, /* 0x120 */ OPT_REFERENCE, /* 0x121 */ OPT_NUMBER, /* 0x122 */ OPT_REMOVE_SRC, /* 0x123 */ OPT_IGNORE_SETUP, /* 0x124 */ OPT_PURGE, /* 0x125 */ OPT_ALIGN_U8, /* 0x126 */ OPT_ALIGN_LTA, /* 0x127 */ OPT_ALIGN_PACK, /* 0x128 */ OPT_ALIGN_BRRES, /* 0x129 */ OPT_ALIGN_BREFF, /* 0x12a */ OPT_ALIGN_BREFT, /* 0x12b */ OPT_ALIGN, /* 0x12c */ OPT_ENCODE_ALL, /* 0x12d */ OPT_ENCODE_IMG, /* 0x12e */ OPT_NO_ENCODE, /* 0x12f */ OPT_NO_RECURSE, /* 0x130 */ OPT_AUTO_ADD, /* 0x131 */ OPT_NO_ECHO, /* 0x132 */ OPT_PT_DIR, /* 0x133 */ OPT_RM_AIPARAM, /* 0x134 */ OPT_U8, /* 0x135 */ OPT_SZS, /* 0x136 */ OPT_WU8, /* 0x137 */ OPT_XWU8, /* 0x138 */ OPT_WBZ, /* 0x139 */ OPT_WLZ, /* 0x13a */ OPT_LFL, /* 0x13b */ OPT_PACK, /* 0x13c */ OPT_BRRES, /* 0x13d */ OPT_BREFF, /* 0x13e */ OPT_BREFT, /* 0x13f */ OPT_NO_COMPRESS, /* 0x140 */ OPT_FAST, /* 0x141 */ OPT_LINKS, /* 0x142 */ OPT_BASEDIR, /* 0x143 */ OPT_DECODE, /* 0x144 */ OPT_MIPMAPS, /* 0x145 */ OPT_NO_MIPMAPS, /* 0x146 */ OPT_N_MIPMAPS, /* 0x147 */ OPT_MAX_MIPMAPS, /* 0x148 */ OPT_MIPMAP_SIZE, /* 0x149 */ OPT_FAST_MIPMAPS, /* 0x14a */ OPT_CMPR_DEFAULT, /* 0x14b */ OPT_CUT, /* 0x14c */ OPT_RAW, /* 0x14d */ OPT_SECTIONS, /* 0x14e */ 0,0,0,0, 0,0, }; // /////////////////////////////////////////////////////////////////////////////// /////////////// opt_allowed_cmd_* /////////////// /////////////////////////////////////////////////////////////////////////////// static u8 option_allowed_cmd_VERSION[149] = // 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,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,0, 0,0,0,0,0, 0,0,0,1 }; static u8 option_allowed_cmd_HELP[149] = // 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, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1 }; static u8 option_allowed_cmd_CONFIG[149] = // cmd #3 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,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,1 }; static u8 option_allowed_cmd_INSTALL[149] = // cmd #4 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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,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 }; static u8 option_allowed_cmd_ARGTEST[149] = // cmd #5 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 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_EXPAND[149] = // cmd #6 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 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_WILDCARDS[149] = // 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,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,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 }; static u8 option_allowed_cmd_TEST[149] = // cmd #8 { 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 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[149] = // 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,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,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_ERROR[149] = // 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,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,0, 0,0,0,0,0, 0,0,0,1 }; static u8 option_allowed_cmd_FILETYPE[149] = // 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,0,0,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,0, 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 }; static u8 option_allowed_cmd_UI_CHECK[149] = // 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,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,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 }; static u8 option_allowed_cmd_FILEATTRIB[149] = // cmd #13 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_BRSUB[149] = // 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,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,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 }; static u8 option_allowed_cmd_SYMBOLS[149] = // 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,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,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_FUNCTIONS[149] = // 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,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,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_CALCULATE[149] = // 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,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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[149] = // cmd #18 { 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,1,1,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,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,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_FLOAT[149] = // 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, 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,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_VR_CALC[149] = // 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,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,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_VR_RACE[149] = // 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,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, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_AUTOADD[149] = // 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,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, 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,0,0,0 }; static u8 option_allowed_cmd_TRACKS[149] = // 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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,1,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, 0,1,0,0 }; static u8 option_allowed_cmd_SCANCACHE[149] = // 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_EXPORT[149] = // 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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_SIZEOF[149] = // 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,0,0,0,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, 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 }; static u8 option_allowed_cmd_CODE[149] = // 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,0,0,0,0, 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,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 }; static u8 option_allowed_cmd_RECODE[149] = // 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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[149] = // 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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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,0,0,0 }; static u8 option_allowed_cmd_TESTNORM[149] = // 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,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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[149] = // 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,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,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, 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,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[149] = // 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,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,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, 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,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[149] = // 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,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,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, 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,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[149] = // 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,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,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, 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,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[149] = // 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,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,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, 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,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[149] = // 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,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,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, 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,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[149] = // 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,0,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, 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 }; static u8 option_allowed_cmd_ILIST[149] = // 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,1,1,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, 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,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[149] = // 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,0,0,0,0, 0,0,0,0,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,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,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,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[149] = // 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,0,0,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,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,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,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[149] = // 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,0,0,0, 0,0,0,0,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,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,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,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[149] = // 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,1,1,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, 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,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[149] = // cmd #43 { 0,0,0,0,0, 0,0,0,0,0, 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,1,0,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,0,0, 0,0,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,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[149] = // cmd #44 { 0,0,0,0,0, 0,0,0,0,0, 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,1,0,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,0,0, 0,0,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,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[149] = // 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,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,1,1,0,0, 0,0,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,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[149] = // 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,0,0, 1,1,1,1,1, 0,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,1,1,0,0, 0,0,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,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_ANALYZE[149] = // cmd #47 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,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,1,1, 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,0,0,1 }; static u8 option_allowed_cmd_SPLIT[149] = // cmd #48 { 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,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, 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,0,0,1 }; static u8 option_allowed_cmd_IS_TEXTURE[149] = // cmd #49 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,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, 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 }; static u8 option_allowed_cmd_FEATURES[149] = // cmd #50 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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, 1,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, 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,0,0,1 }; static u8 option_allowed_cmd_DISTRIBUTION[149] = // cmd #51 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,1, 1,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,1,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,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[149] = // cmd #52 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,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, 1,0,0,0,0, 0,0,0,0,0, 1,1,0,0 }; static u8 option_allowed_cmd_CHECK[149] = // cmd #53 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,0, 0,0,0,0,0, 0,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,1,1,0,0, 0,0,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,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[149] = // cmd #54 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,1,1,0,0, 0,0,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,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[149] = // cmd #55 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,0,0, 0,0,0,0,0, 0,0,0,0,0, 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 }; static u8 option_allowed_cmd_IS_ARENA[149] = // cmd #56 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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 }; static u8 option_allowed_cmd_NORMALIZE[149] = // cmd #57 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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, 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,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[149] = // cmd #58 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,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,1,0, 0,0,0,1,0, 0,1,1,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[149] = // cmd #59 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,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,1,0, 0,0,0,1,0, 0,1,1,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[149] = // cmd #60 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,1, 0,1,1,1,1, 1,1,1,1,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,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,1,0, 0,0,0,1,0, 0,1,1,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[149] = // cmd #61 { 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, 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, 0,0,0,0,0, 0,1,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,1,0,1,1, 0,0,1,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,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[149] = // cmd #62 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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, 1,1,1,1,1, 1,1,1,1,1, 0,0,1,1,1, 1,1,1,1,0, 0,0,0,1,0, 0,1,1,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[149] = // cmd #63 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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, 1,1,1,1,1, 1,1,1,1,1, 0,0,1,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, 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[149] = // cmd #64 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,1,1,0,0, 0,0,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,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,1,1, 1,1,1,1,1, 0,1,0,0 }; static u8 option_allowed_cmd_CREATE[149] = // cmd #65 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,1,1,0,0, 0,0,0,0,0, 1,1,1,1,1, 0,1,1,1,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,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[149] = // cmd #66 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,1,1,0,0, 0,0,1,0,0, 1,1,1,1,1, 0,1,1,1,1, 0,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,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[149] = // cmd #67 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 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, 0,0,0,1,1, 0,0,0,0,0, 1,1,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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_XDECODE[149] = // cmd #68 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 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, 0,0,0,1,1, 0,0,0,0,0, 1,1,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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_XEXPORT[149] = // cmd #69 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 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, 0,0,0,1,1, 0,0,0,0,0, 1,1,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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_XALL[149] = // cmd #70 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 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, 0,0,0,1,1, 0,0,0,0,0, 1,1,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, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 0,0,0,1,1, 1,1,1,0 }; static u8 option_allowed_cmd_XCOMMON[149] = // 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,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, 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,0,0,0 }; static u8 option_allowed_cmd_BINARY[149] = // 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,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, 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,0,0,0 }; static u8 option_allowed_cmd_TEXT[149] = // cmd #73 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,0, 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, 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,1,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_CAT[149] = // cmd #74 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,0, 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,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,1,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_BMG[149] = // cmd #75 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,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,0,0,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,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 }; static u8 option_allowed_cmd_KCL[149] = // cmd #76 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,0,0,0,1, 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,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_KMP[149] = // cmd #77 { 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,1,1,1,1, 1,1,1,1,1, 1,1,0,1,0, 0,1,1,1,1, 1,1,1,1,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,0,0,1,1, 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,0,0,0, 0,0,0,0,0, 0,0,0,0 }; static u8 option_allowed_cmd_LEX[149] = // cmd #78 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,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,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 }; static u8 option_allowed_cmd_INFO[149] = // cmd #79 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,0,0, 0,0,0,0,0, 0,0,0,0,0, 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 }; static u8 option_allowed_cmd_GHOST[149] = // cmd #80 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,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,0,0, 0,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,0,0,1 }; static u8 option_allowed_cmd_YAZDUMP[149] = // cmd #81 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 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, 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,0,0,0 }; static u8 option_allowed_cmd_VEHICLE[149] = // cmd #82 { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,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,1,0,0, 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,0,0,0 }; // /////////////////////////////////////////////////////////////////////////////// /////////////// InfoOption tabs /////////////// /////////////////////////////////////////////////////////////////////////////// static const InfoOption_t * option_tab_tool[] = { OptionInfo + OPT_VERSION, OptionInfo + OPT_HELP, OptionInfo + OPT_XHELP, OptionInfo + OPT_CONFIG, OptionInfo + OPT_ALLOW_ALL, OptionInfo + OPT_COMPATIBLE, OptionInfo + OPT_WIDTH, OptionInfo + OPT_MAX_WIDTH, OptionInfo + OPT_NO_PAGER, OptionInfo + OPT_ZERO, OptionInfo + OPT_QUIET, OptionInfo + OPT_VERBOSE, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, OptionInfo + OPT_WARN, OptionInfo + OPT_DE, OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_CT_CODE, OptionInfo + OPT_LE_CODE, OptionInfo + OPT_LE_04X, OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_CACHE, OptionInfo + OPT_CNAME, OptionInfo + OPT_LOG_CACHE, OptionInfo + OPT_PARALLEL, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, 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_CASE, 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, OptionInfo + OPT_MAX_WIDTH, 0 }; static const InfoOption_t * option_tab_cmd_CONFIG[] = { OptionInfo + OPT_CONFIG, OptionInfo + OPT_INSTALL, OptionInfo + OPT_AUTOADD_PATH, &option_cmd_CONFIG_BRIEF, &option_cmd_CONFIG_LONG, OptionInfo + OPT_NONE, // separator &option_grp_SCRIPT_SECTIONS, 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_CASE, 0 }; static const InfoOption_t * option_tab_cmd_INSTALL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 0 }; static const InfoOption_t * option_tab_cmd_ARGTEST[] = { 0 }; static const InfoOption_t * option_tab_cmd_EXPAND[] = { 0 }; static const InfoOption_t * option_tab_cmd_WILDCARDS[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, &option_cmd_WILDCARDS_SH, &option_cmd_WILDCARDS_BASH, 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[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, &option_cmd_FILETYPE_LONG, OptionInfo + OPT_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_UI_CHECK[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, &option_cmd_UI_CHECK_LONG, OptionInfo + OPT_NO_HEADER, 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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &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_LOG_CACHE, OptionInfo + OPT_PURGE, &option_cmd_SCANCACHE_FAST, 0 }; static const InfoOption_t * option_tab_cmd_EXPORT[] = { 0 }; static const InfoOption_t * option_tab_cmd_SIZEOF[] = { &option_cmd_SIZEOF_SORT, &option_cmd_SIZEOF_BRIEF, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 0 }; static const InfoOption_t * option_tab_cmd_CODE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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_TESTNORM[] = { 0 }; static const InfoOption_t * option_tab_cmd_LIST[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_LIST_L[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_LIST_LL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_LIST_LLL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_LIST_A[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_LIST_LA[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_ILIST_L[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_ILIST_LL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_ILIST_A[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_ILIST_LA[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_MEMORY[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_MEMORY_A[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, OptionInfo + OPT_SLOT, 0 }; static const InfoOption_t * option_tab_cmd_DUMP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_NORM, 0 }; static const InfoOption_t * option_tab_cmd_SHA1[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_RECURSE, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_ANALYZE_LONG, &option_cmd_ANALYZE_QUIET, OptionInfo + OPT_NONE, // separator &option_grp_SCRIPT_SECTIONS, 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_CASE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_ID_LIST, OptionInfo + OPT_REFERENCE, OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, 0 }; static const InfoOption_t * option_tab_cmd_SPLIT[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_LOAD_PREFIX, OptionInfo + OPT_LOAD_CATEGORY, OptionInfo + OPT_PLUS, OptionInfo + OPT_SPLIT, OptionInfo + OPT_PRINTF, OptionInfo + OPT_NONE, // separator &option_grp_SCRIPT_SECTIONS, 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_CASE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, 0 }; static const InfoOption_t * option_tab_cmd_IS_TEXTURE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_REFERENCE, OptionInfo + OPT_BATTLE, &option_cmd_IS_TEXTURE_LONG, 0 }; static const InfoOption_t * option_tab_cmd_FEATURES[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_FEATURES_BRIEF, &option_cmd_FEATURES_LONG, &option_cmd_FEATURES_QUIET, OptionInfo + OPT_NONE, // separator &option_grp_SCRIPT_SECTIONS, 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_CASE, OptionInfo + OPT_FMODES, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, 0 }; static const InfoOption_t * option_tab_cmd_DISTRIBUTION[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_CHECK_NO_CHECK, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_SLOTS[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_STGI[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, &option_cmd_STGI_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_IS_ARENA[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, &option_cmd_IS_ARENA_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COLORS, OptionInfo + OPT_NO_COLORS, OptionInfo + OPT_NO_HEADER, &option_cmd_IS_ARENA_BRIEF, &option_cmd_IS_ARENA_QUIET, 0 }; static const InfoOption_t * option_tab_cmd_NORMALIZE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_PATCH[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, OptionInfo + OPT_REMOVE_SRC, OptionInfo + OPT_NO_COPY, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_U8, OptionInfo + OPT_WU8, OptionInfo + OPT_YAZ0, OptionInfo + OPT_YAZ1, OptionInfo + OPT_BZ, OptionInfo + OPT_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPRESS, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_COPY[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, OptionInfo + OPT_REMOVE_SRC, OptionInfo + OPT_NO_COPY, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_U8, OptionInfo + OPT_WU8, OptionInfo + OPT_YAZ0, OptionInfo + OPT_YAZ1, OptionInfo + OPT_BZ, OptionInfo + OPT_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPRESS, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_DUPLICATE[] = { OptionInfo + OPT_GAMEMODES, OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, OptionInfo + OPT_REMOVE_SRC, OptionInfo + OPT_NO_COPY, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_U8, OptionInfo + OPT_WU8, OptionInfo + OPT_YAZ0, OptionInfo + OPT_YAZ1, OptionInfo + OPT_BZ, OptionInfo + OPT_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPRESS, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_MINIMAP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_MINIMAP_LONG, OptionInfo + OPT_REMOVE_DEST, OptionInfo + OPT_PRESERVE, OptionInfo + OPT_COMPRESS, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_COMPRESS, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_DECOMPRESS[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, OptionInfo + OPT_REMOVE_SRC, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_U8, OptionInfo + OPT_WU8, OptionInfo + OPT_NORM, OptionInfo + OPT_LINKS, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_ENCODE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_IGNORE_SETUP, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_CREATE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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_BZIP2, OptionInfo + OPT_CYBZ, OptionInfo + OPT_YBZ, OptionInfo + OPT_LZ, OptionInfo + OPT_LZMA, OptionInfo + OPT_CYLZ, OptionInfo + OPT_YLZ, OptionInfo + OPT_SZS, OptionInfo + OPT_WBZ, OptionInfo + OPT_WLZ, OptionInfo + OPT_LFL, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_PT_DIR, OptionInfo + OPT_LINKS, OptionInfo + OPT_RM_AIPARAM, OptionInfo + OPT_ALIGN_U8, OptionInfo + OPT_ALIGN_LTA, OptionInfo + OPT_ALIGN_PACK, OptionInfo + OPT_ALIGN_BRRES, OptionInfo + OPT_ALIGN_BREFF, OptionInfo + OPT_ALIGN_BREFT, OptionInfo + OPT_ALIGN, OptionInfo + OPT_LOGGING, OptionInfo + OPT_EXT_ERRORS, OptionInfo + OPT_TIMING, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_UPDATE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_SOURCE, 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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_EXTRACT[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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, &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_XDECODE[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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, &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_XEXPORT[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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, &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_XALL[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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, 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, &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_XCOMMON[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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_BINARY[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_KMG_LIMIT, OptionInfo + OPT_KMG_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, 0 }; static const InfoOption_t * option_tab_cmd_TEXT[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_ENDIAN, 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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator 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_ENDIAN, 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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_BMG_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_BMG_ENDIAN, 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_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_KMP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &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_FILES, 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_LEX_FEATURES, OptionInfo + OPT_LEX_RM_FEAT, OptionInfo + OPT_PATCH_BMG, OptionInfo + OPT_MACRO_BMG, OptionInfo + OPT_FILTER_BMG, OptionInfo + OPT_LE_MENU, OptionInfo + OPT_9LAPS, OptionInfo + OPT_UI_SOURCE, OptionInfo + OPT_TITLE_SCREEN, OptionInfo + OPT_CUP_ICONS, 0 }; static const InfoOption_t * option_tab_cmd_LEX[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_LEX_NO_HEADER, OptionInfo + OPT_BRIEF, OptionInfo + OPT_EXPORT, 0 }; static const InfoOption_t * option_tab_cmd_INFO[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, &option_cmd_INFO_NO_HEADER, 0 }; static const InfoOption_t * option_tab_cmd_GHOST[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, OptionInfo + OPT_NONE, // separator &option_cmd_GHOST_NO_HEADER, OptionInfo + OPT_NONE, // separator &option_grp_SCRIPT_SECTIONS, 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_CASE, OptionInfo + OPT_NONE, // separator OptionInfo + OPT_DEST, OptionInfo + OPT_DEST2, 0 }; static const InfoOption_t * option_tab_cmd_YAZDUMP[] = { OptionInfo + OPT_NO_WILDCARDS, OptionInfo + OPT_IN_ORDER, OptionInfo + OPT_IGNORE, 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_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, OptionInfo + OPT_DE, 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 and BREFT archives. Additonally, RARC" " archive can be extracted. It is also a wrapper to all other tools.", 0, 85, option_tab_tool, 0 }, { CMD_VERSION, false, false, false, "VERSION", "V", "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.", 2, option_tab_cmd_HELP, option_allowed_cmd_HELP }, { CMD_CONFIG, false, false, false, "CONFIG", 0, "wszst CONFIG [options]...", "Show all information about the search for the configuration file and" " its content. The command can also export the settings for scripts or" " can create or update configuration files.", 0, 15, option_tab_cmd_CONFIG, option_allowed_cmd_CONFIG }, { CMD_INSTALL, false, false, false, "INSTALL", 0, "wszst INSTALL [file]...", "Install files to the shared directory. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details. Use" " 'wszst CONFIG' to list related pathes.", 0, 3, option_tab_cmd_INSTALL, option_allowed_cmd_INSTALL }, { CMD_ARGTEST, false, false, false, "ARGTEST", 0, "wszst ARGTEST ...", "This debug command accepts all kinds of parameters and prints one" " line for each parameter. All tools know the ARGTEST command.", 0, 0, option_tab_cmd_ARGTEST, option_allowed_cmd_ARGTEST }, { CMD_EXPAND, false, false, false, "EXPAND", 0, "wszst EXPAND ...", "This debug command accepts (like ARGTEST) all kinds of parameters and" " prints one line for each parameter. After that, the parameter is" " treated as a filename with wildcards and all matching files are" " searched. All tools know the EXPAND command.", 0, 0, option_tab_cmd_EXPAND, option_allowed_cmd_EXPAND }, { CMD_WILDCARDS, false, false, false, "WILDCARDS", 0, "wszst WILDCARDS pattern...", " Each parameter is treated as a filename. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details. The special parameters '|+' and '|-' enable or disable the" " search for hidden directories and files (files beginning with a" " point) for the following parameters. Finally, one line is printed" " for each file name of the list.", 0, 5, option_tab_cmd_WILDCARDS, option_allowed_cmd_WILDCARDS }, { 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. All tools know the ERROR" " command.", 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. All tools know the" " FILETYPE command.", 0, 5, option_tab_cmd_FILETYPE, option_allowed_cmd_FILETYPE }, { CMD_UI_CHECK, false, false, false, "UI-CHECK", "UC", "wszst UI-CHECK file...", "Classify SZS files from directory .../Scene/UI/. For the analysis," " the filename is ignored and only the content is examined. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 5, option_tab_cmd_UI_CHECK, option_allowed_cmd_UI_CHECK }, { 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'). All tools know the" " FILEATTRIB command.", 0, 1, option_tab_cmd_FILEATTRIB, option_allowed_cmd_FILEATTRIB }, { CMD_BRSUB, false, false, false, "BRSUB", 0, "wszst BRSUB [source]...", " 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. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 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. Many" " tools know the SYMBOLS command.", 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. Many" " tools know the FUNCTIONS command.", 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." " Many tools know the CALCULATE command.", 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. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.\n" " 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, 10, 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, 4, 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_SIZEOF, true, false, false, "SIZEOF", 0, "wszst SIZEOF key...", "This hidden command prints a list with the size of data structures" " and variables.", 0, 5, option_tab_cmd_SIZEOF, option_allowed_cmd_SIZEOF }, { 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." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 3, 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_TESTNORM, true, false, false, "_NORM", 0, "wszst _NORM key...", "This hidden command tests the iteration of norming.", 0, 0, option_tab_cmd_TESTNORM, option_allowed_cmd_TESTNORM }, { CMD_LIST, false, false, true, "LIST", "LS", "wszst LIST [source]...", "List all sub files of SZS, U8, LTA, PACK, BRRES, BREFF, BREFT and" " RARC archives. If listing a directory, then a virtual SZS file is" " created (like CREATE does it) and listed. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 62, 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'. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 62, 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'. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 62, 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'. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 62, 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'. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 62, 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'. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 62, 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 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, LTA, 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 59, 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, 59, 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, 59, 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, 59, 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, 59, 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. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 61, 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, 61, 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 55, 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 and after patching. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 63, option_tab_cmd_SHA1, option_allowed_cmd_SHA1 }, { CMD_ANALYZE, false, false, false, "ANALYZE", "ANA", "wszst ANALYZE [source]...", "Analyse track files and LE-CODE binaries. Print the results in" " machine-readable form. The output format is selected by options." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 19, option_tab_cmd_ANALYZE, option_allowed_cmd_ANALYZE }, { CMD_SPLIT, false, false, false, "SPLIT", 0, "wszst SPLIT [source]...", "Analyse (file) names and split them into the different parts. Print" " the results in machine readable format. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 20, option_tab_cmd_SPLIT, option_allowed_cmd_SPLIT }, { CMD_IS_TEXTURE, false, false, false, "IS-TEXTURE", "ISTEXTURE", "wszst IS-TEXTURE --reference reference [source]...", "Test each source to see if it's a texture hack versus a reference" " file. For each source, one human and machine readable status line is" " printed. It is either »-1=err« on error, »1=yes« for a texture" " hack, or »0=no LIST« with a comma separated list of reasons." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.\n" " At the moment KCL, KMP (see notes) and LEX are checked. KMP section" " CAME has been intentionally left out. Section ENPT is only checked" " if KCL contains a least one face of type force-recalculation.", 0, 6, option_tab_cmd_IS_TEXTURE, option_allowed_cmd_IS_TEXTURE }, { CMD_FEATURES, false, false, false, "FEATURES", 0, "wszst FEATURES [source]...", "Analyse track files and create a feature list for each source in" " machine readable format. CTGP uses the feature lists to manage" " ghosts. See option --lex-features for details. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 19, option_tab_cmd_FEATURES, option_allowed_cmd_FEATURES }, { CMD_DISTRIBUTION, false, false, false, "DISTRIBUTION", "DIS", "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. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.\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.\n" " See »welect DISTRIBUTION« for a new and alternative implementation" " of this.", 0, 59, 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, LTA, 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. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 111, 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. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 107, 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 6, option_tab_cmd_STGI, option_allowed_cmd_STGI }, { CMD_IS_ARENA, false, false, false, "IS-ARENA", "ISARENA", "wszst IS_ARENA [source]...", "Analyse each track for its arena status and print a line with a" " status code and the track name. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details. 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, 8, option_tab_cmd_IS_ARENA, option_allowed_cmd_IS_ARENA }, { 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. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.\n" " 'wszst NORMALIZE' is the same as 'wszst PATCH --norm'.", 0, 93, 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 or if stored in another file. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 95, 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 no" " destination is defined by options --dest or --DEST, then the last" " parameter is used as destination. If more than 1 source is defined," " the destination must be either a directory or a destination filename" " with escapes. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details. Patching is also" " possible and option --overwrite is set implicitly.", 0, 95, 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, 96, 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. Wildcards and pipe characters are parsed," " see https://szs.wiimm.de/doc/wildcards for details.", 0, 49, 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'. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 94, 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'." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 78, 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." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 82, 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 or BREFT 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'." " Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 117, 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, LTA, 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/'. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 77, 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, LTA, PACK, BRRES, BREFF, BREFT and" " RARC archives. The default destination is '%P/%N.d/'. Wildcards and" " pipe characters are parsed, see https://szs.wiimm.de/doc/wildcards" " for details.", 0, 82, 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, LTA, PACK, BRRES, BREFF, BREFT and RARC" " archives and decodes all supported files. The default destination is" " '%P/%N.d/'. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 82, 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, LTA, PACK, BRRES, BREFF, BREFT and" " RARC archives and decodes all supported files with enabled export" " mode. The default destination is '%P/%N.d/'. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 82, 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, LTA, PACK, BRRES, BREFF, BREFT and RARC archives" " recursively and decodes all supported files. The default destination" " is '%P/%N.d/'. Wildcards and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 82, 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/'. Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 11, 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. Wildcards and pipe characters are" " parsed, see https://szs.wiimm.de/doc/wildcards for details.\n" " 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, 13, 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. Wildcards and pipe characters are parsed," " see https://szs.wiimm.de/doc/wildcards for details.\n" " 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, 34, 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, LTA, PACK, BRRES, BREFF," " BREFT and RARC archives. Wildcards, pipe characters and sub-files" " are parsed, see https://szs.wiimm.de/doc/wildcards for details. The" " output of all source files is concatenated and written to stdout.", 0, 24, 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'. Wildcards and pipe characters are parsed," " see https://szs.wiimm.de/doc/wildcards for details.", 0, 20, 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). Wildcards, pipe" " characters and sub-files are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.\n" " Automated dropping of bad KCL triangles is enabled if no other drop" " option is specified by option --kcl. Wildcards and pipe characters" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 59, 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). Wildcards, pipe" " characters and sub-files are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 60, 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). Wildcards and pipe" " characters are parsed, see https://szs.wiimm.de/doc/wildcards for" " details.", 0, 6, 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). Wildcards, pipe characters and sub-files" " are parsed, see https://szs.wiimm.de/doc/wildcards for details.", 0, 4, 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. Wildcards" " and pipe characters are parsed, see" " https://szs.wiimm.de/doc/wildcards for details.", 0, 16, option_tab_cmd_GHOST, option_allowed_cmd_GHOST }, { CMD_YAZDUMP, false, false, false, "YAZDUMP", "YD", "wszst YAZDUMP [szs]...", "Analyze YAZ compression and print a dump to stdout. Ignore files" " without YAZ compression. Wildcards and pipe characters are parsed," " see https://szs.wiimm.de/doc/wildcards for details.", 0, 11, option_tab_cmd_YAZDUMP, option_allowed_cmd_YAZDUMP }, { CMD_VEHICLE, true, false, true, "VEHICLE", 0, "wszst VEHICLE job ...", "Hidden vehicle settings command.", 0, 8, 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 /////////////// ///////////////////////////////////////////////////////////////////////////////