aboutsummaryrefslogtreecommitdiff
path: root/project/src/ui/tab-wszst.inc
diff options
context:
space:
mode:
Diffstat (limited to 'project/src/ui/tab-wszst.inc')
-rw-r--r--project/src/ui/tab-wszst.inc3238
1 files changed, 3238 insertions, 0 deletions
diff --git a/project/src/ui/tab-wszst.inc b/project/src/ui/tab-wszst.inc
new file mode 100644
index 0000000..4dcea57
--- /dev/null
+++ b/project/src/ui/tab-wszst.inc
@@ -0,0 +1,3238 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * https://szs.wiimm.de/ *
+ * *
+ ***************************************************************************
+ * *
+ * This file is part of the SZS project. *
+ * Visit https://szs.wiimm.de/ for project details and sources. *
+ * *
+ * Copyright (c) 2011-2020 by Dirk Clemens <wiimm@wiimm.de> *
+ * *
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
+ * *
+ ***************************************************************************/
+
+//
+/////////////////////////////////////////////////////////////////////////////
+///////////// wszst /////////////
+/////////////////////////////////////////////////////////////////////////////
+
+ { T_DEF_TOOL, "wszst", 0,
+ "wszst [option]... command [option|parameter|@file]...",
+ WSZST_LONG " :"
+ " List, compare, (de-)compress, extract and create"
+ " " ARCHIVES_AND " archives."
+ " It is also a wrapper to all other tools." },
+
+ //
+ //---------- list of all wszst commands ----------
+
+ { T_DEF_CMD, "VERSION", "VERSION",
+ "wszst VERSION [ignored]...",
+ "Print program name and version and exit." },
+
+ { T_DEF_CMD, "HELP", "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."
+ "\f" // <-------- separator: before built-in help & below full help
+ "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." },
+
+ { T_DEF_CMD, "ARGTEST", "ARGTEST",
+ "wszst ARGTEST ...",
+ "This debug command accepts all kinds of parameters"
+ " and prints one line for each parameter." },
+
+ { T_DEF_CMD, "TEST", "TEST",
+ "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." },
+
+ { T_DEF_CMD, "COLORS", "COLORS",
+ "wszst COLORS",
+ "Ignore all parameters and print colored text for testing." },
+
+ { T_DEF_CMD, "ERROR", "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." },
+
+ { T_DEF_CMD, "FILETYPE", "FILETYPE|FT",
+ "wszst FILETYPE file...",
+ "Scan the header of the entered files and print file type"
+ " and path for each file as list." },
+
+ { T_DEF_CMD, "FILEATTRIB", "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')." },
+
+ { T_DEF_CMD, "BRSUB", "BRSUB",
+ "wszst BRSUB [file]...",
+ " If no file is defined, print a table with known BRRES"
+ " sub files consisting of"
+ " file format, version, number of sections and warn level."
+ " Otherwise analyse the version numbers of each BRRES sub file"
+ " of each source and print warnings about invalid versions." },
+
+ { T_DEF_CMD, "SYMBOLS", "SYMBOLS",
+ "wszst SYMBOLS",
+ "Print predefined symbols of text parser to standard output." },
+
+ { T_DEF_CMD, "FUNCTIONS", "FUNCTIONS",
+ "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." },
+
+ { T_DEF_CMD, "CALCULATE", "CALCULATE",
+ "wszst CALCULATE expression...",
+ "Calculate each expression and print the result to standard output." },
+
+ { T_DEF_CMD, "MATRIX", "MATRIX",
+ "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."
+ "\f" // <-------- separator: before built-in help & below full help
+ "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." },
+
+ { T_DEF_CMD, "FLOAT", "FLOAT",
+ "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." },
+
+ { T_DEF_CMD, "VR_CALC", "VR-CALC|VRCALC",
+ "wszst VR-CALC delta...",
+ " Calculate a VR increment for each given delta value"
+ " (@=VR_winner-VR_loser@). Print results as table." },
+
+ { T_DEF_CMD, "VR_RACE", "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." },
+
+ { T_DEF_CMD, "AUTOADD", "AUTOADD",
+ "wszst AUTOADD [source]...",
+ "Manage the auto-add library."
+ " Primarily add files to the main auto-add archive for future"
+ " use of option {--auto-add} or to convert WU8 files."
+ " If @SOURCE@ is a directory, all standard track and arena"
+ " file names are searched for the missed auto-add files."
+ " Without source files, the status of the auto-add archive is printed."
+ "\n "
+ " Try {wszst AUTOADD ./path_to/Race/Course/}"
+ " to add all supported files." },
+
+ { T_DEF_CMD, "TRACKS", "TRACKS",
+ "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." },
+
+ { T_DEF_CMD, "SCANCACHE", "SCANCACHE",
+ "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." },
+
+ { H_DEF_CMD, "EXPORT", "_EXPORT",
+ "wszst _EXPORT key...",
+ "This hidden command exports some definitions to standard output."
+ " Use keyword @HELP@ to get a list of possible keywords." },
+
+ { H_DEF_CMD, "CODE", "_CODE",
+ "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." },
+
+ { H_DEF_CMD, "RECODE", "_RECODE",
+ "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." },
+
+ { H_DEF_CMD, "SUBFILE", "_SUBFILE",
+ "wszst _SUBFILE [files]",
+ "Test sub-file system." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "LIST", "LIST|LS",
+ "wszst LIST [source]...",
+ "List all sub files of " ARCHIVES_AND " archives."
+ " If listing a directory, then a virtual SZS file"
+ " is created (like CREATE does it) and listed." },
+
+ { T_DEF_CMD, "LIST_L", "LIST-L|LL|LISTL",
+ "wszst LIST-L [source]...",
+ "List all sub files with size."
+ " 'LIST-L' and 'LL' are short cuts for {LIST --long}." },
+
+ { T_DEF_CMD, "LIST_LL", "LIST-LL|LLL|LISTLL",
+ "wszst LIST-LL [source]...",
+ "List all sub files with offset and size."
+ " 'LIST-LL' and 'LLL' are short cuts for {LIST --long --long}." },
+
+ { T_DEF_CMD, "LIST_LLL", "LIST-LLL|LLLL|LISTLLL",
+ "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}." },
+
+ { T_DEF_CMD, "LIST_A", "LIST-A|LA|LISTA",
+ "wszst LIST-A [source]...",
+ "List recursive all sub files with size."
+ " 'LIST-A' and 'LA' are short cuts for {LIST --long --all --all}." },
+
+ { T_DEF_CMD, "LIST_LA", "LIST-LA|LLA|LISTLA",
+ "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}." },
+
+ { T_DEF_CMD, "NAME_REF", "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." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "ILIST", "ILIST|IL",
+ "wszst ILIST [source]...",
+ "List the images files of all sub files of " ARCHIVES_AND
+ " archives; non image files are ignored."
+ " If listing a directory, then a virtual SZS file"
+ " is created (like CREATE does it) and listed." },
+
+ { T_DEF_CMD, "ILIST_L", "ILIST-L|ILL|ILISTL",
+ "wit ILIST-L [source]...",
+ "List all image files with geometry data."
+ " 'ILIST-L' and 'ILL' are short cuts for {ILIST --long}." },
+
+ { T_DEF_CMD, "ILIST_LL", "ILIST-LL|ILLL|ILISTLL",
+ "wit ILIST-LL [source]...",
+ "List all sub files with advanced geometry data."
+ " 'ILIST-LL' and 'ILLL' are short cuts for {ILIST --long --long}." },
+
+ { T_DEF_CMD, "ILIST_A", "ILIST-A|ILA",
+ "wszst ILIST-A [source]...",
+ "List recursive all image files."
+ " 'ILIST-A' and 'ILA' are short cuts for {ILIST --all}." },
+
+ { T_DEF_CMD, "ILIST_LA", "ILIST-LA|ILLA|ILISTLA",
+ "wit ILIST-LA [source]...",
+ "List recursive all image files with geometry data."
+ " 'ILIST-LA' and 'ILLA' are short cuts for {ILIST --long --all}." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "MEMORY", "MEMORY|MEM",
+ "wszst MEMORY [source]...",
+ "Dump a memory map of each source file."
+ " Virtual images (extracted directories) are also supported." },
+
+ { T_DEF_CMD, "MEMORY_A", "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}." },
+
+ { T_DEF_CMD, "DUMP", "DUMP",
+ "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." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "SHA1", "SHA1",
+ "wszst SHA1 [source]...",
+ "Print a SHA1 checksum for each source."
+ " The checksum is calculated by using the uncompressed data." },
+
+ { T_DEF_CMD, "ANALYZE", "ANALYZE|ANA|ANALYSE",
+ "wszst ANALYZE [source]...",
+ "Analyse track files and print results in machine readable format." },
+
+ { T_DEF_CMD, "DISTRIBUTION", "DISTRIBUTION|DIST",
+ "wszst DISTRIBUTION result source...\n"
+ "wszst DISTRIBUTION directory [source]...",
+ "Load each @SOURCE@ (SZS, WBZ, U8 or WU8) and calculate a checksum"
+ " of the uncompressed data."
+ " If @SOURCE@ is a directory, scan it for SZS, WBZ, U8 and WU8 files."
+ " If a source directory starts with \"arena\","
+ " all tracks of the directory are assumed to be battle arenas."
+ " Finally print the results into file @RESULT@."
+ "\n "
+ " The default name for @RESULT@ is \"distribution.txt\"."
+ " Extension .txt is appended to the filename if not defined."
+ " If @RESULT@ is a directory, it is used as first source too."
+ "\n "
+ " If file @RESULT@ exists, it is automatically added as last source"
+ " to the list of option --source, but only if not already added."
+ " On scanning of file @result@, parameters are scanned too." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "DIFF", "DIFF|CMP",
+ "wszst DIFF source1 source2\n"
+ "wszst DIFF source... --dest dest",
+ "Compare two or more sources (each " ARCHIVES_COMMA " 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." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "CHECK", "CHECK",
+ "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." },
+
+ { T_DEF_CMD, "SLOTS", "SLOTS",
+ "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." },
+
+ { T_DEF_CMD, "STGI", "STGI",
+ "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." },
+
+ { T_DEF_CMD, "ISARENA", "ISARENA",
+ "wszst ISARENA [source]...",
+ "Analyse each track for its arena status and print a line with"
+ " a status code and the track name."
+ " The status code is: »-RACE« for a racing track,"
+ " »?MAYBE« for likely an arena, »+ARENA« for an arena,"
+ " »+DISPATCH« for an arena with dispatch points"
+ " or any error hint beginning with an »!«."
+ " So the very first character (one of »!-?+«)"
+ " can be used to distinguish the status class."
+ "\n "
+ " The exit status is >2 on error,"
+ " 2 (DIFFER), if at least one file is a racing track,"
+ " or 0 (OK), if all sources are arenas." },
+
+ { T_DEF_CMD, "NORMALIZE", "NORMALIZE|NORM",
+ "wszst NORMALIZE [source]...",
+ "Normalize an U8 archive, compressed or not:"
+ " The files are sorted in `Nintendo like' order"
+ " and unused data holes are removed."
+ " If directory '.' is available it becomes the root directory"
+ " for all others. Compressed sources are compressed again with"
+ " maximum compression (level 9)."
+ " The destination is only written if any data changed."
+ "\n "
+ " {wszst NORMALIZE} is the same as {wszst PATCH --norm}." },
+
+ { T_DEF_CMD, "PATCH", "PATCH",
+ "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." },
+
+ { T_DEF_CMD, "COPY", "COPY|CP",
+ "wszst COPY source dest\n"
+ "wszst COPY source... [-d|-D] dest",
+ "COPY is an alternative command for copying and patching files."
+ " It uses the same internal procedure as command PATCH,"
+ " but has another command line syntax."
+ "\n "
+ "The command copies all source files to the destination."
+ " If more than 1 source is defined, the destination must be"
+ " either a directory or a destination filename with escapes."
+ " Patching is also possible and option --overwrite is set implicitly." },
+
+ { T_DEF_CMD, "DUPLICATE", "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 " MAX_GAMEMODES
+ " 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." },
+
+ { T_DEF_CMD, "MINIMAP", "MINIMAP",
+ "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." },
+
+ { T_DEF_CMD, "COMPRESS", "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'@." },
+
+ { T_DEF_CMD, "DECOMPRESS", "DECOMPRESS|DEC",
+ "wszst DECOMPRESS [szs]...",
+ "Decompress SZS files."
+ " The default destination is @'%P/%N.u8'@." },
+
+ { T_DEF_CMD, "ENCODE", "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." },
+
+ { T_DEF_CMD, "CREATE", "CREATE|C",
+ "wszst CREATE [source_dir]...",
+ "Create " ARCHIVES_OR " 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'@." },
+
+ { T_DEF_CMD, "UPDATE", "UPDATE|U",
+ "wszst UPDATE [source]... [--source=] [--dest=]",
+ "Update an existing " ARCHIVES_AND "archive."
+ " 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/'@." },
+
+ { T_DEF_CMD, "EXTRACT", "EXTRACT|X",
+ "wszst EXTRACT [source]...",
+ "Extract all sub files of " ARCHIVES_AND " archives."
+ " The default destination is @'%P/%N.d/'@." },
+
+ { T_DEF_CMD, "XDECODE", "XDECODE|XD",
+ "wszst XDECODE [source]...",
+ "Command @XDECODE@ is a short cut for {EXTRACT --decode}."
+ " It extract all sub files of " ARCHIVES_AND " archives"
+ " and decodes all supported files."
+ " The default destination is @'%P/%N.d/'@." },
+
+ { T_DEF_CMD, "XEXPORT", "XEXPORT|XX",
+ "wszst XEXPORT [source]...",
+ "Command @XEXPORT@ is a short cut for {EXTRACT --decode --export}."
+ " It extract all sub files of " ARCHIVES_AND " archives"
+ " and decodes all supported files with enabled export mode."
+ " The default destination is @'%P/%N.d/'@." },
+
+ { T_DEF_CMD, "XALL", "XALL|XA",
+ "wszst XALL [source]...",
+ "Command @XALL@ is a short cut for {EXTRACT --all}."
+ " It extract all sub files of " ARCHIVES_AND " archives"
+ " recursively and decodes all supported files."
+ " The default destination is @'%P/%N.d/'@." },
+
+ { T_DEF_CMD, "XCOMMON", "XCOMMON",
+ "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/'@." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { T_DEF_CMD, "BINARY", "BINARY|BIN",
+ "wszst BINARY [source]...",
+ "Read each source file (binary or text, but never archives)"
+ " and write the content as binary file."
+ " The file extension of the new file depends on the file type,"
+ " but is usually @.bin@."
+ " Currently supported file formats are @BMG@, @GEOHIT@, @ITEMSLOT@,"
+ " @KCL@, @KMG@, @KMP@, @LEX@, @OBJFLOW@, @PAT@"
+ " and the related text formats." },
+
+ { T_DEF_CMD, "TEXT", "TEXT|TXT",
+ "wszst TEXT [source]...",
+ "Read each source file (binary or text, but never archives)"
+ " and write the content as text file."
+ " The file extension of the new file is usually @.txt@."
+ " Currently supported file formats are @BMG@, @GEOHIT@, @ITEMSLOT@,"
+ " @KCL@, @KMG@, @KMP@, @LEX@, @OBJFLOW@, @PAT@"
+ " and the related text formats." },
+
+ { T_DEF_CMD, "CAT", "CAT",
+ "wszst CAT [source/subfile]...",
+ "Extract one or more sub files of " ARCHIVES_AND " archives."
+ " The output of all source files is concatenated and written to stdout." },
+
+ { T_DEF_CMD, "BMG", "BMG",
+ "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}." },
+
+ { T_DEF_CMD, "KCL", "KCL",
+ "wszst KCL [source]...",
+ "For each archive the KCL sub file @course.kcl@ is searched"
+ " and, if found, decoded and printed (copied to stdout)."
+ "\n "
+ " Automated dropping of bad KCL triangles is enabled"
+ " if no other drop option is specified by option {--kcl}." },
+
+ { T_DEF_CMD, "KMP", "KMP",
+ "wszst KMP [source]...",
+ "For each archive the KMP sub file @course.kmp@ is searched"
+ " and, if found, decoded and printed (copied to stdout)." },
+
+ { T_DEF_CMD, "LEX", "LEX",
+ "wszst LEX [source]...",
+ "For each archive the LEX sub file @course.lex@ is searched"
+ " and, if found, decoded and printed (copied to stdout)." },
+
+ { T_DEF_CMD, "INFO", "INFO",
+ "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)." },
+
+ { H_DEF_CMD, "GHOST", "GHOSTS",
+ "wszst GHOST [source]...",
+ "Analyse each file and print a summary about the ghost data." },
+
+ { T_DEF_CMD, "YAZDUMP", "YAZDUMP|YD",
+ "wszst YAZDUMP [szs]...",
+ "Analyze YAZ compression print a dump to stdout."
+ " Ignore files without YAZ compression." },
+
+ { T_SEP_CMD, 0,0,0,0 }, //----- separator -----
+
+ { H_DEF_CMD, "VEHICLE", "VEHICLE",
+ "wszst VEHICLE job ...",
+ "Hidden vehicle settings command." },
+
+ //
+ //---------- list of all wszst options ----------
+
+ { T_OPT_S, "VERSION", "V|version",
+ 0,
+ "Stop parsing the command line, print a version info and exit." },
+
+ { T_OPT_S, "HELP", "h|help",
+ 0,
+ "Stop parsing the command line, print a help message and exit." },
+
+ { T_OPT_S, "XHELP", "xhelp",
+ 0,
+ "Stop parsing the command line and print a help message"
+ " with all commands included. Exit after printing." },
+
+ { T_OPT_G, "ALLOW_ALL", "allow-all|allowall",
+ 0,
+ "Usually commands accept only options with impact to the command."
+ " All other options fire a syntax error."
+ " But if @--allow-all@ is set, all commands accept all options."
+ "\n "
+ " This makes changing the command of a long command line"
+ " without removing useless options easier."
+ " It also helps to override wrong option permissions." },
+
+ { T_OPT_GP, "COMPATIBLE", "compatible",
+ "vers",
+ "The option expects a version number (format @'#.##'@ or @'v#.##'@)"
+ " or a revision number (format @'r#'@) as parameter."
+ " If set, the tools try to create BMG and KMP text files,"
+ " that are compatible to the entered version of the tools."
+ " This may override other legacy options." },
+
+ { T_OPT_GP|F_IGNORE,
+ "WIDTH", "width",
+ "width",
+ "Define the terminal width (number of columns)"
+ " for help and some other messages"
+ " and disable the automatic detection of the terminal width." },
+
+ { T_OPT_GM, "QUIET", "q|quiet",
+ 0,
+ "Be quiet and print only error messages."
+ " Multiple usage is possible."
+ " The impact is command dependent."
+ " In general: If set three times,"
+ " different file format warnings are suppressed." },
+
+ { T_OPT_GM, "VERBOSE", "v|verbose",
+ 0,
+ "Be verbose and print more progress information."
+ " Multiple usage is possible."
+ " The impact is command dependent." },
+
+ { T_OPT_GM, "LOGGING", "L|logging",
+ 0,
+ "This debug option enables the logging of internal lists and maps." },
+
+ { T_OPT_G, "DE", "de",
+ 0,
+ "Use german track and arena names." },
+
+ { T_OPT_GO|F_IGNORE,
+ "COLORS", "colors",
+ "[=modus]",
+ "Define the modus for colored text output."
+ " Allowed keywords are:"
+ " @OFF@ or @NO-COLORS@ to disable colors,"
+ " @AUTO@ (default) for automatic detection,"
+ " @ON@ for automatic detection but never @OFF@,"
+ " @8-COLORS@ and @256-COLORS@ to force 8 or 256 color support."
+ " Without parameter, @ON@ is used."
+ "\n "
+ " @AUTO@ will enable colorized output only for terminals."
+ " @AUTO@ and @ON@ use environment variable @TERM@"
+ " to find the correct color modus."
+ "\n "
+ " If a command is prefixed by @'C-'@,"
+ " then @--color=ON@ is used implicitly as default." },
+
+ { T_OPT_G|F_IGNORE,
+ "NO_COLORS", "no-colors|nocolors",
+ 0,
+ "Deactive colorized text."
+ " This is the default, if an output file is not a terminal." },
+
+ { T_OPT_G, "CT_CODE", "ct-code|ctcode",
+ 0,
+ "Enable CT-CODE support."
+ "\1 See https://szs.wiimm.de/opt/ctcode for details." },
+
+ { T_OPT_GO, "LE_CODE", "le-code|lecode",
+ "[=param]",
+ "Enable LE-CODE and CT-CODE support."
+ " The optional parameter is deprecated and ignored."
+ "\1 See https://szs.wiimm.de/opt/lecode for details." },
+
+ { T_OPT_GMP, "CHDIR", "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." },
+
+ { T_OPT_GMP, "CONST", "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." },
+
+ { T_OPT_C, "TOUCH", "touch",
+ 0,
+ "Mark the minimap as modified to force a new calculation"
+ " of the translation and inverse matrices." },
+
+ { T_OPT_C, "AUTO", "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." },
+
+ { T_OPT_CP, "SET_FLAGS", "set-flags|setflags",
+ "flag",
+ "Define the flag values (default 0x31f) of the minimap." },
+
+ { T_OPT_CP, "SET_SCALE", "set-scale|setscale",
+ "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')." },
+
+ { T_OPT_CP, "SET_ROT", "set-rot|setrot",
+ "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')." },
+
+ { T_OPT_CP, "SET_X", "set-x|setx",
+ "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." },
+
+ { T_OPT_CP, "SET_Y", "set-y|sety",
+ "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." },
+
+ { T_OPT_CP, "SET_Z", "set-z|setz",
+ "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." },
+
+ { T_OPT_C, "XCENTER", "xcenter",
+ 0,
+ "Center the minimap in x-direction."
+ " This is done after AUTO and SET, but before SCALE and SHIFT." },
+
+ { T_OPT_C, "YCENTER", "ycenter",
+ 0,
+ "Center the minimap in y-direction."
+ " This is done after AUTO and SET, but before SCALE and SHIFT." },
+
+ { T_OPT_C, "ZCENTER", "zcenter",
+ 0,
+ "Center the minimap in z-direction."
+ " This is done after AUTO and SET, but before SCALE and SHIFT." },
+
+ { T_OPT_C, "CENTER", "center",
+ 0,
+ "Center the minimap in all 3 directions."
+ " This is a short cut for {--xcenter --ycenter --zcenter}." },
+
+ { T_OPT_CP, "SCALE", "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." },
+
+ { T_OPT_CP, "SHIFT", "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." },
+
+ { T_OPT_CP, "XSS", "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." },
+
+ { T_OPT_CP, "YSS", "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." },
+
+ { T_OPT_CP, "ZSS", "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." },
+
+ { T_OPT_CP, "ROT", "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." },
+
+ { T_OPT_CP, "XROT", "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." },
+
+ { T_OPT_CP, "YROT", "yrot|hrot",
+ "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." },
+
+ { T_OPT_CP, "ZROT", "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." },
+
+ { T_OPT_CP, "YPOS", "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." },
+
+ { T_OPT_CP, "TRANSLATE", "translate|trans",
+ "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." },
+
+ { T_OPT_C, "NULL", "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." },
+
+ { T_OPT_C, "NEXT", "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." },
+
+ { T_OPT_CP, "ASCALE", "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!" },
+
+ { T_OPT_CP, "AROT", "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!" },
+
+ { T_OPT_CP, "TFORM_SCRIPT", "tform-script|tformscript",
+ "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." },
+
+ { T_OPT_C, "MINIMAP", "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."
+ "\1 See https://szs.wiimm.de/cmd/wszst/minimap for details." },
+
+ { T_OPT_CP, "RM_GOBJ", "rm-gobj|rmgobj",
+ "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." },
+
+ { T_OPT_GO, "BATTLE", "battle",
+ "[=mode]",
+ "@MODE@ is either @OFF@, @AUTO@ (default) or @ON@."
+ " Without value, @ON@ is used."
+ "\n "
+ " If mode is @ON@, assume a battle arena and enable a spüecial battle support."
+ " If mode is @OFF@, disable special battle arena support."
+ " If mode is @AUTO@, analyse the KMP and estimate, if it is a battle areana."
+ " Modes @ON@ and @OFF@ override KMP parameter @BATTLE-MODE@." },
+
+ { T_OPT_GO, "EXPORT_FLAGS", "export-flags|exportflags|exflags",
+ "[=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." },
+
+ // 2018-08: may be [[obsolete]] in 1 year
+ { T_OPT_GO, "ROUTE_OPTIONS", "route-options|routeoptions|ropt",
+ "[=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."
+ },
+
+ { T_OPT_GO, "WIM0", "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." },
+
+ { T_OPT_CP, "SLOT", "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."
+ "\1 See https://szs.wiimm.de/opt/slot for details." },
+
+ { T_OPT_GP, "LOAD_KCL", "load-kcl|loadkcl",
+ "file",
+ "Load a KCL or OBJ file for reference issues." },
+
+ { T_OPT_GP, "KCL", "kcl",
+ "list",
+ "Set global options for KCL processing."
+ " Parameter @'list'@ is a comma separated list of keywords."
+ " A minus sign before a keyword disables a setting."
+ " Each occurrence of the option will only change entered settings"
+ " and all other settings are untouched."
+ "\n "
+ " Keyword @DEFAULT@ resets the default settings"
+ " and @CLEAR@ disables all."
+ " Keywords @SMALL, MEDIUM@ and @CHARY@ select"
+ " the default parameters for the octree creation."
+ " The other allowed keywords are:"
+ " @FAST, NEW, CENTER, ROUND, NORMALS, MTL,"
+ " WIIMM, TRIANGLES, OUT-SWAP, G, USEMTL, CLIP, IN-SWAP, AUTO, HEX4,"
+ " HEX23, HEX, DROP-UNUSED, DROP-FIXED, DROP-INVALID, DROP,"
+ " RM-FACEDOWN, RM-FACEUP, FIX-ALL,"
+ " CONV-FACEUP, WEAK-WALLS, SORT, INPLACE, SILENT@ and @LOG@."
+ "\1 See https://szs.wiimm.de/opt/kcl for details." },
+
+ { T_OPT_CP, "KCL_FLAG", "kcl-flag|kclflag",
+ "joblist",
+ "Modify the KCL flag of KCL files."
+ " A comma separated job list in the format @'srclist=dest'@"
+ " is expected. @'srclist'@ is a plus sign separated list"
+ " with single values like @<val>@, @T<type>@ and @<val>/<mask>@"
+ " or ranges like @<val>:<val>@, @T<type>:<type>@"
+ " and @<val>:<val>/<mask>@."
+ " @'<val>'@ is a complete KCL flag in the range of @0..0xffff@."
+ " @'<type>'@ are only the base types in the range of @0..0x1f@."
+ " If @<mask>@ is present, it marks the relevant bits."
+ " For the @T<type>@ variant, the mask is set to @0x1f@."
+ "\n "
+ " All KCL flags of the source list are assigned to the new value @'dest'@,"
+ " but only the set bits of @'<mask>'@ are modified."
+ " A later definition overrides the previous one."
+ "\1 See https://szs.wiimm.de/opt/kcl-flag for details." },
+
+ { T_OPT_CP, "KCL_SCRIPT", "kcl-script|kclscript",
+ "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."
+ "\1 See https://szs.wiimm.de/opt/kcl-script for details." },
+
+ { T_OPT_GP, "TRI_AREA", "tri-area|triarea",
+ "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." },
+
+ { T_OPT_GP, "TRI_HEIGHT", "tri-height|triheight|tri-ht|triht",
+ "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." },
+
+ { T_OPT_CP, "FLAG_FILE", "flag-file|flagfile",
+ "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')."
+ "\1 See https://szs.wiimm.de/opt/flag-file for details." },
+
+ { H_OPT_GO, "XTRIDATA", "xtridata|xtri",
+ "[=level]",
+ "Enable extended KCL triangles tests. The default level is 1." },
+
+ { T_OPT_GP, "KMP", "kmp",
+ "list",
+ "Set global options for KMP processing."
+ " Parameter @'list'@ is a comma separated list of keywords."
+ " A minus sign before a keyword disables a setting."
+ " Each occurrence of the option will only change entered settings"
+ " and all other settings are untouched."
+ "\n "
+ " Keyword @DEFAULT@ resets the default settings"
+ " and @CLEAR@ disables all."
+ " The other allowed keywords are:"
+ " @FORCE, NEW, RM-SPCITEM, LEFT, RIGHT, WIDE, NARROW,"
+ " FIX-CKPH, FIX-ENPH, FIX-ITPH, FIX-PH,"
+ " FIX-CKNEXT, FIX-CKJGPT, FIX-CK, FIX-ALL,"
+ " MASK-PFLAGS, RM-LECODE, PURGE-GOBJ, FULL-DEFOBJ,"
+ " DUMP-CLASS, DUMP-ONEWAY, DUMP-ALL,"
+ " 1LAP ... 9LAPS, MAX-LAPS, RM-EMPTY,"
+ " INPLACE, SILENT@ and @LOG@."
+ "\1 See https://szs.wiimm.de/opt/kmp for details." },
+
+ { T_OPT_GP, "SPEED_MOD", "speed-mod|speedmod",
+ "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." },
+
+ { T_OPT_GP, "KTPT2", "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." },
+
+ { T_OPT_GP, "TFORM_KMP", "tform-kmp|tformkmp|tkmp",
+ "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." },
+
+ { T_OPT_CP, "REPAIR_XPF", "repair-xpflags|repairxpflags|repxpf",
+ "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." },
+
+ { T_OPT_CP, "GAMEMODES", "gamemodes|gmodes",
+ "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 "
+ MAX_GAMEMODES " modes)."
+ " @NSORT@: Sort the list by name."
+ " @ISORT@: Sort the list by index."
+ " @DEBUG@: Print a debug info about this option."
+ },
+
+ { T_OPT_GP, "MDL", "mdl",
+ "list",
+ "Set global options for MDL processing."
+ " To enable MDL patching, use option {--patch-file}"
+ " and select BRRES files for patching."
+ "\n "
+ " Parameter @'list'@ is a comma separated list of keywords."
+ " A minus sign before a keyword disables a setting."
+ " Each occurrence of the option will only change entered settings"
+ " and all other settings are untouched."
+ "\n "
+ " A MDL transformation (controlled by the transformation options)"
+ " is only done, if at least one of the keywords"
+ " @VECTOR@ or @VERTEX@ is set."
+ "\n "
+ " Keyword @DEFAULT@ resets the default settings (@VERTEX@)"
+ " and @CLEAR@ disables all."
+ " The other allowed keywords are: @VECTOR, MATRIX,"
+ " VERTEX, PARENT, CHILD@ and @LOG@."
+ "\1 See https://szs.wiimm.de/opt/mdl for details." },
+
+ { T_OPT_GP, "PAT", "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@."
+ "\1 See https://szs.wiimm.de/opt/pat for details." },
+
+ { T_OPT_GP, "PATCH_FILE", "patch-file|patchfile|pfile",
+ "list",
+ "Define, which kind of KMP, KCL and BRRES/MDL files are objects"
+ " for patching. @--pfile@ is a short cut."
+ "\n "
+ " Parameter @'list'@ is a comma separated list of keywords."
+ " A minus sign before a keyword disables a setting."
+ " Each occurrence of the option will only change entered settings"
+ " and all other settings are untouched."
+ "\n "
+ " Keyword @DEFAULT@ resets the default settings (@TRACK,LOG@)"
+ " and @CLEAR@ disables all."
+ " The other allowed keywords are:"
+ " @KMP, KCL, OTHER-KCL, ALL-KCL, MODEL, MAP, VRCORN,"
+ " OTHER-BRRES, ALL-BRRES, TRACK (=KMP,KCL,MODEL,MAP,VRCORN),"
+ " ALL, LOG@ and @LOG-ALL@."
+ "\1 See https://szs.wiimm.de/opt/patch for details." },
+
+ { T_OPT_GP, "KMG_LIMIT", "kmg-limit|kmglimit",
+ "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." },
+
+ { T_OPT_GP, "KMG_COPY", "kmg-copy|kmgcopy",
+ "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." },
+
+// { H_OPT_GP, "KMG_AUTO_COPY","kmg-auto-copy|kmgautocopy",
+// 0,
+// "Analyze the attributes of the source file name to find attributes"
+// " from @a21@ to @a25@. If found, use is as slot name ..." },
+
+ { T_OPT_G, "LT_CLEAR", "lt-clear|ltclear",
+ 0,
+ "Clear the LEX/TEST section and remove the section and course.lex if empty."
+ " This option is executed before all other --lt-* options." },
+
+ { T_OPT_GP, "LT_ONLINE", "lt-online|ltonline",
+ "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." },
+
+ { T_OPT_GP, "LT_N_PLAYERS", "lt-n-players|lt-nplayers|ltnplayers",
+ "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." },
+
+ { T_OPT_GP, "LT_COND_BIT", "lt-cond-bit|lt-condbit|ltcondbit",
+ "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." },
+
+ { T_OPT_GP, "LT_GAME_MODE", "lt-game-mode|lt-gamemode|ltgamemode",
+ "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." },
+
+ { T_OPT_GP, "LT_ENGINE", "lt-engine|ltengine",
+ "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." },
+
+ { T_OPT_GP, "LT_RANDOM", "lt-random|ltrandom",
+ "index",
+ "Force a random scenario, if between 1 and 8."
+ " Value 0 enables auto selection and -1 disables this option."
+ " Only track.szs files are modified."
+ " If needed, file course.lex and section TEST"
+ " are created or removed if empty." },
+
+ { T_OPT_G, "LEX_PURGE", "lex-purge|lexpurge",
+ 0,
+ "Delete LEX sections without any impact."
+ " Delete sub-file course.lex if it no longer contains a section."
+ " This option is executed after all --lt-* options." },
+
+ { T_OPT_CMP, "LOAD_BMG", "load-bmg|loadbmg",
+ "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." },
+
+ { T_OPT_CMP, "PATCH_BMG", "patch-bmg|patchbmg|pb",
+ "mode[cond][=param]",
+ PATCH_BMG_TEXT("") },
+
+ { T_OPT_CMP, "MACRO_BMG", "macro-bmg|macrobmg|mb",
+ "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." },
+
+ { T_OPT_CMP, "FILTER_BMG", "filter-bmg|filterbmg|fb|msg",
+ "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."
+ "\1\n Read https://szs.wiimm.de/opt/filter-bmg for more details." },
+
+ { T_OPT_GP, "CACHE", "cache",
+ "dir",
+ "Define a directory for a SZS cache."
+ "If creating a YAZ0 compressed file with standard compression (level 9),"
+ " the cache is searched for the compressed version."
+ " File cache-content.txt is used as file list with hash values."
+ " If the cache file is not found or the content differ,"
+ " the file is (re-)created and exit status 2=differ is returned."
+ "\n "
+ " Background: Loading a compressed SZS and content verification"
+ " is much faster than YAZ compression."
+ "\n "
+ " For legay reasons:"
+ " If parameter DIR is a file, it is split into directory and base name."
+ " The directory is used for the cache directory and the base name"
+ " for option {--cname}, but only if {--cname} is not used." },
+
+ { T_OPT_GP, "CNAME", "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." },
+
+ { T_OPT_C, "ID", "id",
+ 0,
+ "Print an ID with 8 characters instead of a SHA-1 sum with"
+ " 40 characters. The SHA-1 sum is used to calculate the ID."
+ " The ID consists of '0'-'9' and 'a'-'w' (32 characters)." },
+
+ { T_OPT_CO, "BASE64", "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}." },
+
+ { T_OPT_CO, "DB64", "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}." },
+
+ { T_OPT_CP, "CODING", "coding",
+ "mode",
+ "Define the coding of the non alphanumeric characters for BASE64:"
+ " STANDART (+/=, default), URL (-_=), STAR (-_*) or XML (.-*)." },
+
+ { T_OPT_C, "VERIFY", "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." },
+
+ { T_OPT_C, "ROUND", "round",
+ 0,
+ "Print additional lines with rounded values"
+ " (to 3 and 2 bytes for floats and 7 and 6 bytes for doubles)."},
+
+ { T_OPT_CM, "LONG", "l|long",
+ 0, "Print in long format. Multiple usage possible." },
+
+// { T_OPT_CM, "FULL", "full",
+// 0,
+// "Print full lists instead of partial lists." },
+
+ { T_OPT_C, "NO_HEADER", "H|no-header|noheader",
+ 0,
+ "Suppress printing of header and footer." },
+
+ { T_OPT_C, "BRIEF", "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." },
+
+ { T_OPT_CM, "PIPE", "pipe",
+ 0, "Use pipe sign instead of spaces to separate columns." },
+
+ { T_OPT_C, "DELTA", "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@)." },
+
+ { T_OPT_C, "DIFF", "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." },
+
+ { H_OPT_CP, "EPSILON", "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 @" CONVERT_TO_STRING(DEF_EPSILON_POS) "@." },
+
+ { T_OPT_CP, "BMG_ENCODING", "bmg-encoding|bmgencoding",
+ "name",
+ "Force a BMG encoding for new BMG files."
+ " Accepted encoding names are: @CP-1252@, @UTF-16BE@ (or @UTF-16@),"
+ " @SHIFT-JIS@, @UTF-8@ and @AUTO@ for automatic detection (default)."
+ " Same keywords without minus signs are accepted too."
+ "\n "
+ " Mario Kart Wii uses encoding @UTF-16BE@;"
+ " the default if no other encoding is defined." },
+
+ { T_OPT_CP, "BMG_INF_SIZE", "bmg-inf-size|bmginfsize",
+ "size",
+ "Defines the 'INF1' size of new BMG files between 4 and "
+ UI_TO_TEXT(BMG_INF_LIMIT) "."
+ " The first 4 bytes of a INF1 record is an offset into the"
+ " string pool and the remaining bytes the attributes."
+ " Maximal " UI_TO_TEXT(BMG_ATTRIB_SIZE)
+ " attribute bytes are supported and additional bytes are"
+ " assumed to be NULL. All BMG files of MKW have a size of 8." },
+
+ { T_OPT_CO, "BMG_MID", "bmg-mid|bmgmid",
+ "[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." },
+
+ { T_OPT_CP, "FORCE_ATTRIB", "force-attrib|forceattrib",
+ "attrib",
+ "Forces, that all attributes are set to this vector."
+ "\1 See https://szs.wiimm.de/doc/bmg/attrib for the syntax." },
+
+ { T_OPT_CP, "DEF_ATTRIB", "def-attrib|defattrib",
+ "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]@."
+ "\1 See https://szs.wiimm.de/doc/bmg/attrib for the syntax." },
+
+ { T_OPT_C, "NO_ATTRIB", "no-attrib|noattrib",
+ 0,
+ "Suppress the output of any BMG attributes if creating BMG text files." },
+
+ { T_OPT_C, "X_ESCAPES", "x-escapes|xescapes",
+ 0,
+ "Use \\x{{} escapes instead of \\z{{} escapes." },
+
+ { T_OPT_C, "OLD_ESCAPES", "old-escapes|oldescapes",
+ 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." },
+
+ { T_OPT_C, "SINGLE_LINE", "1|single-line|singleline",
+ 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." },
+
+ { T_OPT_C, "NO_BMG_COLORS","no-bmg-colors|nobmgcolors",
+ 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." },
+
+ { T_OPT_C, "BMG_COLORS", "bmg-colors|bmgcolors",
+ 0,
+ "Force output of '\\c{{color}' escape sequences with names,"
+ " even for foreign (not MKWii) BMG files." },
+
+ { T_OPT_C, "NO_BMG_INLINE","no-bmg-inline|nobmginline",
+ 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." },
+
+ { T_OPT_C, "EXPORT", "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." },
+
+ { T_OPT_C, "NO_PARAM", "P|no-param|noparam",
+ 0,
+ "Disable parameter support in decoded KMP text files." },
+
+ { T_OPT_CP, "SORT", "S|sort",
+ "mode",
+ "Define a sort mode. Allowed keywords are:"
+ " @NONE@ (default), @NAME, OFFSET, U8, PACK, BRRES, BREFT@ and @AUTO@" },
+
+ { T_OPT_GP, "MAX_FILE_SIZE","M|max-file-size|maxfilesize",
+ "size",
+ "This security option defines the maximum file size"
+ " for input files; larger files are ignored with a warning."
+ " The default unit is MiB and the default size is 100 MiB;"
+ " that should be enough for standard usage." },
+
+ { T_OPT_GP, "TRACKS", "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." },
+
+ { T_OPT_GP, "ARENAS", "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." },
+
+ { T_OPT_GP, "AUTOADD_PATH", "autoadd-path|autoaddpath",
+ "directory",
+ "Define an alternative directory as autoadd library."
+ " The default is, that the sub-directory called './auto-add/'"
+ " of all search paths are used."
+ " Use {wszst test -vvvv} for tests." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_CP, "TRANSFORM", "x|transform",
+ "list",
+ "Convert image formats."
+ " A comma separated list with terms is expected."
+ " A term have the syntax @'[SRC=]DEST'@."
+ " It means: convert @SRC@ format into @DEST@ format."
+ " If @SRC=@ is not set, the destination format is used"
+ " for all source formats. This makes only sense as last rule."
+ " If @DEST@ is empty no transformation is done for the source."
+ " Examples: '@TPL@' or '@GRAY@' or '@BTI.IA8@' or '@TPL.I4+I8=IA8,TEX=,CMPR@'"
+ "\n "
+ " @SRC@ and @DEST@ are tuple of file, image and palette formats"
+ " and of 2 more attributes. All parts are optional and separated"
+ " by points, the order is irrelevant."
+ "\n "
+ " Allowed file formats are: @TPL, TEX, BTI, BREFT-IMG (=BTIMG),"
+ " PNG@ (import)."
+ " Allowed image formats are: @I4, I8, IA4, IA8, RGB565 (=R565),"
+ " RGB5A3 (=R3), RGBA32 (=R32), C4, C8, C14X2, CMPR@."
+ " Allowed palette formats are: @P-IA8 (=P8), P-RGB565 (=P565),"
+ " P-RGB5A3 (=P3)@."
+ " Attributtes are @PALETTE@, @NO-PALETTE@, @GRAY@, @COLOR@,"
+ " @ALPHA@ and @NO-ALPHA@."
+ "\n "
+ " All terms are managed as list."
+ " For each graphic the list is iterated until the first SRC tuple"
+ " of a term matches the graphic."
+ " Then the destination tuple is used for the transformation."
+ "\n "
+ " The command {wimgt TEST} prints a clearly arranged readable table"
+ " as result of this option." },
+
+ { T_OPT_C, "STRIP", "strip",
+ 0,
+ "If creating a PNG file,"
+ " don't add comments about creator and source formats." },
+
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { H_OPT_G, "UTF_8", "utf-8|utf8",
+ 0,
+ "Enables UTF-8 support for filenames (default)." },
+
+ { H_OPT_G, "NO_UTF_8", "no-utf-8|no-utf8|noutf8",
+ 0,
+ "Disables UTF-8 support for filenames." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_GM, "TEST", "t|test",
+ 0,
+ "Run in test mode, modify nothing."
+ "\n"
+ ">>> USE THIS OPTION IF UNSURE! <<<" },
+
+ { T_OPT_GM, "FORCE", "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! <<<" },
+
+ { T_OPT_GO, "REPAIR_MAGICS", "repair-magics|repairmagics",
+ "[=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! <<<" },
+
+ { T_OPT_GP, "TINY", "tiny",
+ "mode",
+ "Set tiny mode to a level between 0 and 7."
+ "\1 See https://szs.wiimm.de/opt/tiny for details." },
+
+ { T_OPT_G, "YAZ0", "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." },
+
+ { T_OPT_G, "YAZ1", "yaz1",
+ 0,
+ "If creating a compressed file, force Yaz1 compression."
+ " The difference to Yaz0 is only the magic,"
+ " which is set to 'Yaz1'." },
+
+ { T_OPT_G, "XYZ", "xyz",
+ 0,
+ "If creating a compressed file,"
+ " force XYZ compression (an experimental Yaz0 variant)." },
+
+ { T_OPT_G, "BZ", "bz",
+ 0,
+ "If creating a compressed file,"
+ " force BZ compression (a BZIP2 variant)." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_G, "SH", "sh",
+ 0,
+ "Dump info using SH syntax."
+ " Use {--var name} as prefix." },
+
+ { T_OPT_G, "BASH", "bash",
+ 0,
+ "Dump info using BASH syntax."
+ " Use {--var name} as prefix." },
+
+ { T_OPT_G, "JSON", "json",
+ 0,
+ "Dump info using JSON syntax."
+ " Options {--var} and {--array} are ignored." },
+
+ { T_OPT_G, "PHP", "php",
+ 0,
+ "Dump infos using PHP syntax."
+ " Use {--var name} as variable name of the resulting object." },
+
+ { T_OPT_G, "MAKEDOC", "makedoc",
+ 0,
+ "Dump infos using MakeDoc syntax."
+ " Use {--var name} as variable name of the resulting map." },
+
+ { T_OPT_GP, "VAR", "var",
+ "varname",
+ "Use @VARNAME@ as variable name or prefix on script output."
+ " The default variabe name is 'res'." },
+
+ { T_OPT_G, "ARRAY", "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." },
+
+ { T_OPT_GP, "AVAR", "avar",
+ "varname",
+ "Shortcut for: {--array --var name}" },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { H_OPT_CP, "ANALYZE", "analyze|analyse",
+ "outfile",
+ "Run in analyze mode and write results to the entered file." },
+
+ { H_OPT_CP, "ANALYZE_MODE", "analyze-mode|ana-mode|anamode|amd",
+ "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." },
+
+ #if OPT_OLD_NEW
+ { H_OPT_GM, "OLD", "OLD",
+ 0,
+ "Developer option:"
+ " Cancel --NEW and use old implementation if available." },
+
+ { H_OPT_GM, "STD", "STD",
+ 0,
+ "Developer option: Cancel --OLD and --NEW"
+ " and use standard implementation (default)." },
+
+ { H_OPT_GM, "NEW", "NEW",
+ 0,
+ "Developer option:"
+ " Cancel --OLD and use new implementation if available." },
+ #endif
+
+ { H_OPT_GP, "EXTRACT", "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." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_CP, "SOURCE", "s|source|src",
+ "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."
+ "\1 Read https://szs.wiimm.de/opt/source for more details." },
+
+
+ { T_OPT_CP, "DEST", "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."
+ "\1 Read https://szs.wiimm.de/opt/dest for more details." },
+
+ { T_OPT_CP, "DEST2", "D|DEST",
+ "path",
+ "Like {--dest}, but create the directory path automatically." },
+
+ { T_OPT_CP, "ESC", "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$$'@." },
+
+ { T_OPT_C, "OVERWRITE", "o|overwrite",
+ 0,
+ "Overwrite already existing files without warning"
+ " and ignore option {--number}." },
+
+ { T_OPT_C, "NUMBER", "number|num",
+ 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." },
+
+ { T_OPT_C, "REMOVE_SRC", "remove-src|removesrc|rm-src|rmsrc",
+ 0,
+ "Remove the source file after successful operation."
+ " @--rm-src@ is a short cut." },
+
+ { T_OPT_C, "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove",
+ 0,
+ "Remove already existing files before creating it."
+ " If set, {--overwrite} is ignored."
+ " @--rm-dest@ is a short cut." },
+
+ { T_OPT_C, "UPDATE", "u|update",
+ 0,
+ "Update only existing files and don't create new files."
+ " If set, {--overwrite} and {--remove-dest} are ignored." },
+
+ { T_OPT_C, "PRESERVE", "p|preserve",
+ 0,
+ "Preserve file times (atime+mtime) while converting or copying files." },
+
+ { T_OPT_C, "IGNORE", "i|ignore",
+ 0,
+ "Ignore non existing source files without warning." },
+
+ { T_OPT_C, "IGNORE_SETUP", "ignore-setup|ignoresetup",
+ 0,
+ "Ignore hidden setup file '@" SZS_SETUP_FILE "@'."
+ " 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." },
+
+ { T_OPT_C, "PURGE", "purge",
+ 0,
+ "Remove repeated files with same checksum." },
+
+ { T_OPT_CP, "ALIGN_U8", "align-u8|alignu8",
+ "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." },
+
+ { T_OPT_CP, "ALIGN_PACK", "align-pack|alignpack",
+ "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." },
+
+ { T_OPT_CP, "ALIGN_BRRES", "align-brres|alignbrres",
+ "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." },
+
+ { T_OPT_CP, "ALIGN_BREFF", "align-breff|alignbreff",
+ "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." },
+
+ { T_OPT_CP, "ALIGN_BREFT", "align-breft|alignbreft",
+ "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." },
+
+ { T_OPT_CP, "ALIGN", "align",
+ "size",
+ "Define an align value for the sub files in all archives."
+ " This is a short cut for"
+ " {--align-u8=size --align-pack=size"
+ " --align-brres=size --align-breff=size --align-breft=size}." },
+
+ { T_OPT_C, "ENCODE_ALL", "encode-all|encodeall|eall",
+ 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 '@" SZS_SETUP_FILE "@'"
+ " are candidates for encoding."
+ " @--eall@ is a short cut."
+ " Option {--no-encode} takes precedence over {--encode-all}." },
+
+ { T_OPT_C, "ENCODE_IMG", "encode-img|encodeimg|eimg",
+ 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 '@" SZS_SETUP_FILE "@'"
+ " are candidates for encoding."
+ " @--eimg@ is a short cut."
+ " If set, option {--no-encode} is ignored for images." },
+
+ { T_OPT_C, "NO_ENCODE", "no-encode|noencode|noenc",
+ 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." },
+
+ { T_OPT_C, "NO_RECURSE", "no-recurse|norecurse|norec",
+ 0,
+ "Do not create archives recursively."
+ " Normally files in the @[create]@ section of the file"
+ " '@" SZS_SETUP_FILE "@' are created first."
+ " @--norec@ is a short cut." },
+
+ { T_OPT_C, "AUTO_ADD", "auto-add|autoadd|aadd",
+ 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." },
+
+ { T_OPT_C, "NO_ECHO", "no-echo|noecho",
+ 0,
+ "Suppress output of @@ECHO commands while scanning text files." },
+
+ { T_OPT_C, "NO_CHECK", "N|no-check|nocheck",
+ 0,
+ "Do not make plausibility checks for KCL and KMP files." },
+
+ { T_OPT_CO, "PT_DIR", "pt-dir|ptdir|pdir",
+ "[=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." },
+
+ { T_OPT_C, "RM_AIPARAM", "rm-aiparam|rmaiparam|rmai",
+ 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." },
+
+ { T_OPT_C, "U8", "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 '@" SZS_SETUP_FILE "@'"
+ " has no other definition."
+ " The default compression mode is set to Yaz0 (see {--yaz0})." },
+
+ { T_OPT_C, "SZS", "szs",
+ 0,
+ "Short cut for {--u8 --yaz0}:"
+ " Create an U8 archive, if possible,"
+ " and set the compression method to Yaz0." },
+
+ { T_OPT_C, "WU8", "wu8",
+ 0,
+ "Create a WU8 archive, if possible."
+ " If the source is an U8 archive, convert it to a WU8 archive." },
+
+ { H_OPT_C, "XWU8", "xwu8",
+ 0,
+ "Short cut for {--wu8 --xyz}:"
+ " Create a WU8 archive, if possible,"
+ " and set the compression method to XYZ." },
+
+ { T_OPT_C, "WBZ", "wbz",
+ 0,
+ "Short cut for {--wu8 --bz}:"
+ " Create a WU8 archive, if possible,"
+ " and set the compression method to BZ." },
+
+ { T_OPT_C, "PACK", "pack",
+ 0,
+ "Create a PACK archive." },
+
+ { T_OPT_C, "BRRES", "brres|bres",
+ 0,
+ "Create a BRRES archive." },
+
+ { T_OPT_C, "BREFF", "breff",
+ 0,
+ "Create a BREFF archive." },
+
+ { T_OPT_C, "BREFT", "breft",
+ 0,
+ "Create a BREFT archive." },
+
+ { T_OPT_C, "NO_COMPRESS", "no-compress|nocompress|noc",
+ 0,
+ "Create an uncompressed file instead of a compressed SZS file."
+ " The default destination changes to @'%P/%N%T'@."
+ " @--noc@ is a short cut." },
+
+ { T_OPT_CP, "COMPRESS", "C|compr|compress",
+ "level",
+ "Define a compression level between @0..9@:"
+ " @0@ (or @NOCHUNKS@) disables finding chunks,"
+ " @1@ (or @FAST@) for the fastest standard compression and"
+ " @9@ (or @BEST@) for the best (=default) compression."
+ " @10@ (or @ULTRA@) and @100-150@ are special time-consuming"
+ " compression modes."
+ " They are dedicated to competitions with size limitations."
+ " The special value @UNCOMPRESSED@ acts like option {--no-compress}."
+ "\n "
+ " Because of many repeated data, the best bz-compression mode varies."
+ " Therefor the levels @TRY2..TRY5@ (or short @T2..T5@) are defined"
+ " to find the best compression mode with testing the first"
+ " N modes of 9, 1, 8, 2, 5. @TRY2@ is used for normalizing."
+ " For non bz-compression, @TRY*@ are the same as @BEST@."
+ "\n "
+ " Option {--norm} takes precedence over {--compr}"
+ " and sets the compression level to @TRY2@ (@BEST@)."
+ "\n "
+ " For more modes and details type {wszst -C list}."
+ " To force colorized output type {wszst -C clist}." },
+
+ { T_OPT_C, "FAST", "fast",
+ 0,
+ "Short cut for {--compr=fast}: Set the fastest real compression."
+ " It also overrides compression rates set by {--norm} or {--compr}." },
+
+ { T_OPT_C, "NORM", "n|norm",
+ 0,
+ "The uncompressed data will be normalized."
+ " See command {NORMALIZE} for more details." },
+
+ { T_OPT_C, "LINKS", "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." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_CP, "BASEDIR", "basedir|bdir",
+ "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." },
+
+ { T_OPT_CO, "RECURSE", "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}." },
+
+ { T_OPT_C, "EXT", "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'." },
+
+ { T_OPT_C, "DECODE", "decode|dec",
+ 0,
+ "If a extracted file is known and can be decoded, do it."
+ " @--dec@ is a short cut." },
+
+ { T_OPT_C, "MIPMAPS", "mipmaps|mm",
+ 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." },
+
+ { T_OPT_C, "NO_MIPMAPS", "no-mipmaps|nomipmaps|no-mm|nomm",
+ 0,
+ "If reading a source, ignore mipmaps."
+ " This disables not the creation of mipmaps (see {-n-mipmaps})."
+ " @--no-mm@ is a short cut." },
+
+ { T_OPT_CP, "N_MIPMAPS", "n-mipmaps|nmipmaps|n-mm|nmm",
+ "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." },
+
+ { T_OPT_CP, "MAX_MIPMAPS", "max-mipmaps|maxmipmaps|max-mm|maxmm",
+ "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." },
+
+ { T_OPT_CP, "MIPMAP_SIZE", "mipmap-size|mipmapsize|mm-size|mmsize",
+ "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." },
+
+ { T_OPT_C, "FAST_MIPMAPS", "fast-mipmaps|fastmipmaps|fast-mm|fastmm",
+ 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."
+ "\1 See https://szs.wiimm.de/doc/img/resize for details."
+ "\3 @--fast-mm@ is a short cut." },
+
+ { T_OPT_CP, "CMPR_DEFAULT", "cmpr-default",
+ "rgb1[,rgb2]",
+ "Define 2 colors for the case, that all 16 pixels of a CMPR block"
+ " are transparent. The default is to calculate an average color"
+ " of all transparent pixels. Before v2.04 white was used."
+ "\n "
+ " 2 RGB values (hex values with 6 digits each) are expected as parameter."
+ " If optional @RGB2@ is missed, a copy of @RGB1@ is used."
+ " As first step, both colors are converted to RGB565 colors @C1@ and @C2@"
+ " and sorted, so that @C1<C2@ (mandatory for CMPR)."
+ " If @C1@ and @C2@ are identical, the least significant bit of green"
+ " is cleared for @C1@ and set for @C2@."
+ "\n "
+ " Use parameter '@0@' to force black, '@-1@' to force white,"
+ " or '@-@' to reset to auto calculation." },
+
+ { T_OPT_C, "CUT", "cut",
+ 0,
+ "Cut different non archive files into smaller peaces"
+ " (logical units like headers, groups, sections) or list these"
+ " peaces as single sub files for a more detailed analysis."
+ " Supported file types are @BMG, BREFT-IMG, KMP, PAT, TEX, TPL,"
+ " BRRES@ sub files and more." },
+
+ { T_OPT_CM, "ALL", "a|all",
+ 0,
+ "Extract and decode all known and supported files recursively."
+ " This is a short cut for {--recurse --decode --mipmaps}."
+ " If entered twice, option {--cut} is included too." },
+
+ { T_OPT_C, "RAW", "raw",
+ 0,
+ "Extract BRRES sub file in raw mode and do not adjust"
+ " string pointers and other offsets." },
+
+ { T_SEP_OPT, 0,0,0,0 }, //----- separator -----
+
+ { T_OPT_C, "SECTIONS", "sections",
+ 0,
+ "Print in machine readable sections and parameter lines." },
+ //"\1 Read https://szs.wiimm.de/opt/sections for more details." },
+
+ //
+ //---------- wszst GROUP TRANSFORM ----------
+
+ { T_GRP_BEG, "TRANSFORM", 0,0,0 },
+
+ { T_COPT, "CONST", 0,0,0 },
+ { T_COPT, "SCALE", 0,0,0 },
+ { T_COPT, "SHIFT", 0,0,0 },
+ { T_COPT, "XSS", 0,0,0 },
+ { T_COPT, "YSS", 0,0,0 },
+ { T_COPT, "ZSS", 0,0,0 },
+ { T_COPT, "ROT", 0,0,0 },
+ { T_COPT, "XROT", 0,0,0 },
+ { T_COPT, "YROT", 0,0,0 },
+ { T_COPT, "ZROT", 0,0,0 },
+ { T_COPT, "YPOS", 0,0,0 },
+ { T_COPT, "TRANSLATE", 0,0,0 },
+ { T_COPT, "NULL", 0,0,0 },
+ { T_COPT, "NEXT", 0,0,0 },
+ { T_COPT, "ASCALE", 0,0,0 },
+ { T_COPT, "AROT", 0,0,0 },
+ { T_COPT, "TFORM_SCRIPT", 0,0,0 },
+
+ //---------- wszst GROUP TRANSFORM2 ----------
+
+ { T_GRP_BEG, "TRANSFORM2", 0,0,0 },
+
+ { T_COPY_GRP, "TRANSFORM", 0,0,0 },
+ { T_COPT, "RM_GOBJ", 0,0,0 },
+ { T_COPT, "SLOT", 0,0,0 },
+ { T_COPT, "LOAD_KCL", 0,0,0 },
+ { T_COPT, "KCL", 0,0,0 },
+ { T_COPT, "KCL_FLAG", 0,0,0 },
+ { T_COPT, "KCL_SCRIPT", 0,0,0 },
+ { T_COPT, "TRI_AREA", 0,0,0 },
+ { T_COPT, "TRI_HEIGHT", 0,0,0 },
+ { T_COPT, "KMP", 0,0,0 },
+ { T_COPT, "SPEED_MOD", 0,0,0 },
+ { T_COPT, "KTPT2", 0,0,0 },
+ { T_COPT, "TFORM_KMP", 0,0,0 },
+ { T_COPT, "REPAIR_XPF", 0,0,0 },
+ { T_COPT, "MDL", 0,0,0 },
+ { T_COPT, "MINIMAP", 0,0,0 },
+ { T_COPT, "PAT", 0,0,0 },
+ { T_COPT, "PATCH_FILE", 0,0,0 },
+ { T_COPT, "LT_CLEAR", 0,0,0 },
+ { T_COPT, "LT_ONLINE", 0,0,0 },
+ { T_COPT, "LT_N_PLAYERS", 0,0,0 },
+ { T_COPT, "LT_COND_BIT", 0,0,0 },
+ { T_COPT, "LT_GAME_MODE", 0,0,0 },
+ { T_COPT, "LT_ENGINE", 0,0,0 },
+ { T_COPT, "LT_RANDOM", 0,0,0 },
+ { T_COPT, "LEX_PURGE", 0,0,0 },
+ { T_COPT, "PATCH_BMG", 0,0,0 },
+ { T_COPT, "MACRO_BMG", 0,0,0 },
+ { T_COPT, "FILTER_BMG", 0,0,0 },
+
+ //---------- wszst GROUP DEST ----------
+
+ { T_GRP_BEG, "DEST", 0,0,0 },
+
+ { T_COPT, "DEST", 0,0,0 },
+ { T_COPT, "DEST2", 0,0,0 },
+ { T_COPT, "ESC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "PRESERVE", 0,0,0 },
+ { T_COPT, "UPDATE", 0,0,0 },
+ { T_COPT, "OVERWRITE", 0,0,0 },
+ { T_COPT, "NUMBER", 0,0,0 },
+ { T_COPT, "REMOVE_DEST", 0,0,0 },
+
+ //---------- wszst GROUP FFORMAT1 ----------
+
+ { T_GRP_BEG, "FFORMAT1", 0,0,0 },
+
+ { T_COPT, "U8", 0,0,0 },
+ { T_COPT, "WU8", 0,0,0 },
+ { T_COPT, "YAZ0", 0,0,0 },
+ { T_COPT, "YAZ1", 0,0,0 },
+ { H_COPT, "XYZ", 0,0,0 },
+ { T_COPT, "BZ", 0,0,0 },
+ { T_COPT, "SZS", 0,0,0 },
+ { H_COPT, "XWU8", 0,0,0 },
+ { T_COPT, "WBZ", 0,0,0 },
+
+ //---------- wszst GROUP FFORMAT2 ----------
+
+ { T_GRP_BEG, "FFORMAT2", 0,0,0 },
+
+ { T_COPT, "U8", 0,0,0 },
+ { T_COPT, "WU8", 0,0,0 },
+ { T_COPT, "PACK", 0,0,0 },
+ { T_COPT, "BRRES", 0,0,0 },
+ { T_COPT, "BREFF", 0,0,0 },
+ { T_COPT, "BREFT", 0,0,0 },
+ { T_COPT, "YAZ0", 0,0,0 },
+ { T_COPT, "YAZ1", 0,0,0 },
+ { H_COPT, "XYZ", 0,0,0 },
+ { T_COPT, "BZ", 0,0,0 },
+ { T_COPT, "SZS", 0,0,0 },
+ { H_COPT, "XWU8", 0,0,0 },
+ { T_COPT, "WBZ", 0,0,0 },
+
+ //
+ //---------- wszst GROUP SCRIPT ----------
+
+ { T_GRP_BEG, "SCRIPT", 0,0,0 },
+
+ { T_COPT, "SH", 0,0,0 },
+ { T_COPT, "BASH", 0,0,0 },
+ { T_COPT, "JSON", 0,0,0 },
+ { T_COPT, "PHP", 0,0,0 },
+ { T_COPT, "MAKEDOC", 0,0,0 },
+ { T_COPT, "VAR", 0,0,0 },
+ { T_COPT, "ARRAY", 0,0,0 },
+ { T_COPT, "AVAR", 0,0,0 },
+
+ //---------- wszst GROUP ALIGN ----------
+
+ { T_GRP_BEG, "ALIGN", 0,0,0 },
+
+ { T_COPT, "ALIGN_U8", 0,0,0 },
+ { T_COPT, "ALIGN_PACK", 0,0,0 },
+ { T_COPT, "ALIGN_BRRES", 0,0,0 },
+ { T_COPT, "ALIGN_BREFF", 0,0,0 },
+ { T_COPT, "ALIGN_BREFT", 0,0,0 },
+ { T_COPT, "ALIGN", 0,0,0 },
+
+ //---------- wszst GROUP TEXTOUT ----------
+
+ { T_GRP_BEG, "TEXTOUT", 0,0,0 },
+
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0, NO_HEAD_SYNTAX },
+ { T_COPT, "BRIEF", 0,0,0 },
+ { T_COPT, "DELTA", 0,0,0 },
+ { T_COPT, "DIFF", 0,0,0 },
+ { T_COPT, "EXPORT", 0,0,0 },
+ { T_COPT, "NO_PARAM", 0,0,0 },
+
+ //---------- wszst GROUP BMG ----------
+
+ { T_GRP_BEG, "BMG", 0,0,0 },
+
+ { T_COPT, "BMG_ENCODING", 0,0,0 },
+ { T_COPT, "BMG_INF_SIZE", 0,0,0 },
+ { T_COPT, "BMG_MID", 0,0,0 },
+ { T_COPT, "FORCE_ATTRIB", 0,0,0 },
+ { T_COPT, "DEF_ATTRIB", 0,0,0 },
+ { T_COPT, "NO_ATTRIB", 0,0,0 },
+ { T_COPT, "X_ESCAPES", 0,0,0 },
+ { T_COPT, "OLD_ESCAPES", 0,0,0 },
+ { T_COPT, "SINGLE_LINE", 0,0,0 },
+ { T_COPT, "NO_BMG_COLORS",0,0,0 },
+ { T_COPT, "BMG_COLORS", 0,0,0 },
+ { T_COPT, "NO_BMG_INLINE",0,0,0 },
+ { T_COPT, "LONG", 0,0, BMG_LONG_TEXT },
+ { T_COPT, "EXPORT", 0,0,0 },
+
+ //---------- wszst GROUP ENCODE ----------
+
+ { T_GRP_BEG, "ENCODE", 0,0,0 },
+
+ { T_COPT, "ENCODE_ALL", 0,0,0 },
+ { T_COPT, "ENCODE_IMG", 0,0,0 },
+ { T_COPT, "ALL", 0,0,
+ " Encode all files."
+ " This is a short cut for {--encode-all}"
+ " (and more options in the future)." },
+ { T_COPT, "NO_ENCODE", 0,0,0 },
+ { T_COPT, "NO_RECURSE", 0,0,0 },
+ { T_COPT, "NO_ECHO", 0,0,0 },
+ { T_COPT, "NO_CHECK", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "TRANSFORM", 0,0,0 },
+ { T_COPT, "STRIP", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+
+ //---------- wszst GROUP CREATE ----------
+
+ { T_GRP_BEG, "CREATE", 0,0,0 },
+
+ { T_COPT, "IGNORE_SETUP", 0,0,0 },
+ { T_COPY_GRP, "FFORMAT2", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "PT_DIR", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPT, "RM_AIPARAM", 0,0,0 },
+ { T_COPY_GRP, "ALIGN", 0,0,0 },
+ { T_COPT, "LOGGING", 0,0,0 },
+ { T_COPY_GRP, "ENCODE", 0,0,0 },
+ { T_COPT, "AUTO_ADD", 0,0,0 },
+ { T_COPT, "MIPMAPS", 0,0,0 },
+ { T_COPT, "NO_MIPMAPS", 0,0,0 },
+ { T_COPT, "N_MIPMAPS", 0,0,0 },
+ { T_COPT, "MAX_MIPMAPS", 0,0,0 },
+ { T_COPT, "MIPMAP_SIZE", 0,0,0 },
+ { T_COPT, "FAST_MIPMAPS", 0,0,0 },
+ { T_COPT, "CMPR_DEFAULT", 0,0,0 },
+
+ //---------- wszst GROUP NORM ----------
+
+ { T_GRP_BEG, "NORM", 0,0,0 },
+
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPY_GRP, "ALIGN", 0,0,0 },
+ { T_COPT, "PT_DIR", 0,0,0 },
+ { T_COPT, "RM_AIPARAM", 0,0,0 },
+ { T_COPT, "AUTO_ADD", 0,0,0 },
+
+ //---------- wszst GROUP EXTRACT ----------
+
+ { T_GRP_BEG, "EXTRACT", 0,0,0 },
+
+ { T_COPT, "BASEDIR", 0,0,0 },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "EXT", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPT, "DECODE", 0,0,0 },
+ { T_COPT, "MIPMAPS", 0,0,0 },
+ { T_COPT, "NO_MIPMAPS", 0,0,0 },
+ { T_COPT, "FAST_MIPMAPS", 0,0,0 },
+ { T_COPT, "CMPR_DEFAULT", 0,0,0 },
+ { T_COPT, "CUT", 0,0,0 },
+ { T_COPT, "ALL", 0,0,0 },
+ { T_COPY_GRP, "TEXTOUT", 0,0,0 },
+ { T_COPT, "NO_CHECK", 0,0,0 },
+ { T_COPT, "RAW", 0,0,0 },
+
+
+ //
+ //---------- COMMAND wszst VERSION ----------
+
+ { T_CMD_BEG, "VERSION", 0,0,0 },
+
+ { T_COPT, "BRIEF", 0,0,
+ "Print only the version number, revision and system."
+ " If set twice, print only the version number." },
+ { T_COPT, "SECTIONS", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "Print in long format. Ignored if option {--sections} is set." },
+
+ //---------- COMMAND wszst HELP ----------
+
+ { T_CMD_BEG, "HELP", 0,0,0 },
+
+ { T_COPT, "WIDTH", 0,0,0 },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wszst ARGTEST ----------
+
+ { T_CMD_BEG, "ARGTEST", 0,0,0 },
+
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wszst TEST ----------
+
+ { T_CMD_BEG, "TEST", 0,0,0 },
+
+ { T_COPT, "VERBOSE", 0,0,
+ "Print the matrices of transformations." },
+ { T_ALL_OPT, 0, 0,0,0 },
+
+ //---------- COMMAND wszst COLORS ----------
+
+ { T_CMD_BEG, "COLORS", 0,0,0 },
+
+ { T_COPT, "COLORS", 0,0,0 },
+ { T_COPT, "NO_COLORS", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "Print also a list of all colored text types."
+ " If set twice, include alternative names."
+ " If set three times, include raw color names." },
+ { T_COPT, "BRIEF", 0,0,
+ "Ignore option --long and print a single status line about current color settings." },
+
+ //---------- COMMAND wszst ERROR ----------
+
+ { T_CMD_BEG, "ERROR", 0,0,0 },
+
+ { T_COPT, "SECTIONS", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "Print message text instead of message name." },
+ { T_COPT, "BRIEF", 0,0,
+ "Print message number instead of message name." },
+
+ //---------- COMMAND wszst FILETYPE ----------
+
+ { T_CMD_BEG, "FILETYPE", 0,0,0 },
+
+ { T_COPT, "LONG", 0,0,
+ "Print an additional column with the decompressed file type and version."
+ " If entered twice, a validation status column is added." },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+
+ //---------- COMMAND wszst FILEATTRIB ----------
+
+ { T_CMD_BEG, "FILEATTRIB", 0,0,0 },
+
+ { T_COPT, "NO_HEADER", 0,0,0 },
+
+ //---------- COMMAND wszst BRSUB ----------
+
+ { T_CMD_BEG, "BRSUB", 0,0,0 },
+
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "If set, print hints about unusual versions too."
+ " If set twice, print a status line for each found BRRES sub file." },
+
+ //---------- COMMAND wszst SYMBOLS ----------
+
+ { T_CMD_BEG, "SYMBOLS", 0,0,0 },
+
+ { T_COPT, "NO_HEADER", 0,0,0 },
+
+ //---------- COMMAND wszst FUNCTIONS ----------
+
+ { T_CMD_BEG, "FUNCTIONS", 0,0,0 },
+
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0, FUNCTION_BRIEF },
+ { T_COPT, "LONG", 0,0, FUNCTION_LONG },
+
+ //---------- COMMAND wszst CALCULATE ----------
+
+ { T_CMD_BEG, "CALCULATE", 0,0,0 },
+
+ { T_COPT, "CONST", 0,0,0 },
+
+ //---------- COMMAND wszst MATRIX ----------
+
+ { T_CMD_BEG, "MATRIX", 0,0,0 },
+
+ { T_COPY_GRP, "TRANSFORM", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "If set once, suppress vector dumps for transformation steps"
+ " and ignore option --long."
+ " If set twice, suppress vector dump for final transformation too." },
+ { T_COPT, "LONG", 0,0,
+ "If set once, print inverse matrix for the final transformation."
+ " If set twice, print inverse matrix for all transformations." },
+ { T_COPT, "QUIET", 0,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." },
+
+ //---------- COMMAND wszst FLOAT ----------
+
+ { T_CMD_BEG, "FLOAT", 0,0,0 },
+ { T_COPT, "ROUND", 0,0,0 },
+
+ //---------- COMMAND wszst VR_CALC ----------
+
+ { T_CMD_BEG, "VR_CALC", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "Suppress header and print only results for @VR_winner-VR_looser@." },
+
+ //---------- COMMAND wszst VR_RACE ----------
+
+ { T_CMD_BEG, "VR_RACE", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "Print full matrix of delta values." },
+
+ //---------- COMMAND wszst AUTOADD ----------
+
+ { T_CMD_BEG, "AUTOADD", 0,0,0 },
+
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "QUIET", 0,0,
+ " If set, suppress logging." },
+ { T_COPT, "VERBOSE", 0,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." },
+ { T_COPT, "DEST", 0,0,
+ "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." },
+ { T_COPT, "DEST2", 0,0,0 },
+ { T_COPT, "OVERWRITE", 0,0,
+ "Overwrite already existing files instead"
+ " of only adding new files to the auto-add archive." },
+ { T_COPT, "REMOVE_DEST", 0,0,0 },
+ { T_COPT, "PRESERVE", 0,0,0 },
+
+ //---------- COMMAND wszst TRACKS ----------
+
+ { T_CMD_BEG, "TRACKS", 0,0,0 },
+
+ { T_COPT, "VERBOSE", 0,0,
+ "Print an additonally hex status value as second column before the file name."
+ " These values can be used to find a selection mask." },
+ { T_COPT, "ALL", 0,0,
+ "Print the '_d' files too."
+ " If set twice, print all files (same as -all)." },
+ { T_COPT, "LONG", 0,0,
+ "Print 5 non track files too."
+ " If set twice, print 4 more files with old BRRES sub file formats too." },
+ { T_COPT, "PIPE", 0,0,0 },
+ { T_COPT, "LOAD_BMG", 0,0,0 },
+
+ //---------- COMMAND wszst SCANCACHE ----------
+
+ { T_CMD_BEG, "SCANCACHE", 0,0,0 },
+ { T_COPT, "CACHE", 0,0,0 },
+ { T_COPT, "PURGE", 0,0,0 },
+
+ //---------- COMMAND wszst _EXPORT ----------
+
+ { T_CMD_BEG, "EXPORT", 0,0,0 },
+
+ //---------- COMMAND wszst _CODE ----------
+
+ { T_CMD_BEG, "CODE", 0,0,0 },
+
+ //---------- COMMAND wszst _RECODE ----------
+
+ { T_CMD_BEG, "RECODE", 0,0,0 },
+
+ //---------- COMMAND wszst _SUBFILE ----------
+
+ { T_CMD_BEG, "SUBFILE", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+
+ //---------- COMMAND wszst LIST ----------
+
+ { T_CMD_BEG, "LIST", 0,0,0 },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "EXT", 0,0,0 },
+ { T_COPT, "CUT", 0,0,0 },
+ { T_COPT, "ALL", 0,0,0 },
+ { T_COPT_M, "LONG", 0,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." },
+ { T_COPT, "SORT", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPT, "RM_AIPARAM", 0,0,0 },
+ { T_COPT, "SLOT", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-L ----------
+
+ { T_CMD_BEG, "LIST_L", 0,0,0 },
+ { T_COPY_CMD, "LIST", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-LL ----------
+
+ { T_CMD_BEG, "LIST_LL", 0,0,0 },
+ { T_COPY_CMD, "LIST_L", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-LLL ----------
+
+ { T_CMD_BEG, "LIST_LLL", 0,0,0 },
+ { T_COPY_CMD, "LIST_LL", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-A ----------
+
+ { T_CMD_BEG, "LIST_A", 0,0,0 },
+ { T_COPY_CMD, "LIST_L", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-LLA ----------
+
+ { T_CMD_BEG, "LIST_LA", 0,0,0 },
+ { T_COPY_CMD, "LIST_A", 0,0,0 },
+
+ //---------- COMMAND wszst LIST-LLA ----------
+
+ { T_CMD_BEG, "NAME_REF", 0,0,0 },
+ { T_COPT, "SORT", 0,0,
+ "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." },
+ { T_COPT, "BRIEF", 0,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." },
+ { T_COPT, "LONG", 0,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." },
+
+ //---------- COMMAND wszst ILIST ----------
+
+ { T_CMD_BEG, "ILIST", 0,0,0 },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "ALL", 0,0,0 },
+ { T_COPT_M, "LONG", 0,0,
+ "If set, image width, height and size are printed."
+ " If set twice, a block info and attribites are printed too." },
+ { T_COPT, "SORT", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+
+ //---------- COMMAND wszst ILIST-L ----------
+
+ { T_CMD_BEG, "ILIST_L", 0,0,0 },
+ { T_COPY_CMD, "ILIST", 0,0,0 },
+
+ //---------- COMMAND wszst ILIST-LL ----------
+
+ { T_CMD_BEG, "ILIST_LL", 0,0,0 },
+ { T_COPY_CMD, "ILIST_L", 0,0,0 },
+
+ //---------- COMMAND wszst ILIST-A ----------
+
+ { T_CMD_BEG, "ILIST_A", 0,0,0 },
+ { T_COPY_CMD, "ILIST", 0,0,0 },
+
+ //---------- COMMAND wszst ILIST-LA ----------
+
+ { T_CMD_BEG, "ILIST_LA", 0,0,0 },
+ { T_COPY_CMD, "ILIST_A", 0,0,0 },
+
+ //---------- COMMAND wszst MEMORY ----------
+
+ { T_CMD_BEG, "MEMORY", 0,0,0 },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "EXT", 0,0,0 },
+ { T_COPT, "DECODE", 0,0,
+ "Decode binary files to find memory addresses of sections." },
+ { T_COPT, "MIPMAPS", 0,0,
+ "Analyze images and dump mipmap adresses too." },
+ { T_COPT, "CUT", 0,0,0 },
+ { T_COPT, "ALL", 0,0,
+ "A short cut for {--recurse --decode --mipmaps}."
+ " If entered twice, option --cut is included too." },
+ { T_COPT_M, "LONG", 0,0,
+ "If set, print absolute offsets too." },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPT, "RM_AIPARAM", 0,0,0 },
+ { T_COPT, "SLOT", 0,0,0 },
+
+ //---------- COMMAND wszst MEMORY-A ----------
+
+ { T_CMD_BEG, "MEMORY_A", 0,0,0 },
+ { T_COPY_CMD, "MEMORY", 0,0,0 },
+
+ //---------- COMMAND wszst DUMP ----------
+
+ { T_CMD_BEG, "DUMP", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+
+ //---------- COMMAND wszst SHA1 ----------
+
+ { T_CMD_BEG, "SHA1", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "ID", 0,0,0 },
+ { T_COPT, "BASE64", 0,0,0 },
+ { T_COPT, "DB64", 0,0,0 },
+ { T_COPT, "CODING", 0,0,0 },
+ { T_COPT, "VERIFY", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "Suppress output of the filename." },
+ { T_COPT, "LONG", 0,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." },
+
+ //---------- COMMAND wszst ANALYZE ----------
+
+ { T_CMD_BEG, "ANALYZE", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "Append a list of special files with size, SHA1 and file name." },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "QUIET", 0,0,
+ "Suppress logging of input and output files." },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "SCRIPT", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "DEST", 0,0,0 },
+ { T_COPT, "DEST2", 0,0,0 },
+
+ //---------- COMMAND wszst DISTRIBUTION ----------
+
+ { T_CMD_BEG, "DISTRIBUTION", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NORM", 0,0,0 },
+ { T_COPT, "LINKS", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "BASE64", 0,0,0 },
+ { T_COPT, "DB64", 0,0,0 },
+ { T_COPT, "CODING", 0,0,0 },
+ { T_COPT, "SOURCE", 0,0,
+ "Define a text file for filename to slot translation."
+// " The file is either a BMG file, or a CT-CODE file,"
+// " or a plain text file with a »slot filename« list."
+ " 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." },
+
+ //---------- COMMAND wszst DIFF ----------
+
+ { T_CMD_BEG, "DIFF", 0,0,0 },
+ { T_COPT, "QUIET", 0,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." },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "CUT", 0,0,0 },
+ { T_COPT, "ALL", 0,0,0 },
+ { T_COPT, "DEST", 0,0,0 },
+ { T_COPT, "ESC", 0,0,0 },
+
+ //---------- COMMAND wszst CHECK ----------
+
+ { T_CMD_BEG, "CHECK", 0,0,0 },
+ { T_COPT, "NO_CHECK", 0,0,
+ "Don't check the KCL and KMP files." },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "COLORS", 0,0,0 },
+ { T_COPT, "NO_COLORS", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "Print only warnings and suppress hints." },
+ { T_COPT, "LONG", 0,0,
+ "Be verbose and print more statistics." },
+ { T_COPT, "QUIET", 0,0,
+ "Be quiet until the first warning or hint is found." },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst SLOTS ----------
+
+ { T_CMD_BEG, "SLOTS", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "Print the slot list in a compressed form without spaces." },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst STGI ----------
+
+ { T_CMD_BEG, "STGI", 0,0,0 },
+ { T_COPT, "COLORS", 0,0,0 },
+ { T_COPT, "NO_COLORS", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,
+ "If set, ignore non existing source files"
+ " and files without KMP without warning."
+ " If set twice, ignore files with standard settings too." },
+
+ //---------- COMMAND wszst ISARENA ----------
+
+ { T_CMD_BEG, "ISARENA", 0,0,0 },
+ { T_COPT, "COLORS", 0,0,0 },
+ { T_COPT, "NO_COLORS", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,0 },
+ { T_COPT, "BRIEF", 0,0,
+ "If set, suppress the output of header and filenames." },
+ { T_COPT, "QUIET", 0,0,
+ "If set, print nothing and set only the exit status." },
+ { T_COPT, "IGNORE", 0,0,
+ "If set, ignore non existing source files"
+ " and files without KMP without warning." },
+
+ //---------- COMMAND wszst NORMALIZE ----------
+
+ { T_CMD_BEG, "NORMALIZE", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "REMOVE_SRC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "FFORMAT1", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPY_GRP, "NORM", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst PATCH ----------
+
+ { T_CMD_BEG, "PATCH", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "REMOVE_SRC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "FFORMAT1", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "COMPRESS", 0,0,0 },
+ { T_COPY_GRP, "NORM", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst COPY ----------
+
+ { T_CMD_BEG, "COPY", 0,0,0 },
+ { T_COPY_CMD, "PATCH", 0,0,0 },
+
+ //---------- COMMAND wszst DUPLICATE ----------
+
+ { T_CMD_BEG, "DUPLICATE", 0,0,0 },
+ { T_COPT, "GAMEMODES", 0,0,0 },
+ { T_COPY_CMD, "PATCH", 0,0,0 },
+
+ //---------- COMMAND wszst MINIMAP ----------
+
+ { T_CMD_BEG, "MINIMAP", 0,0,0 },
+ { T_COPT, "LONG", 0,0,
+ "If set, print the matrices too."
+ " If set twice, print minimum and maximum values too." },
+ { T_COPT, "REMOVE_DEST", 0,0,0 },
+ { T_COPT, "PRESERVE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "COMPRESS", 0,0,0 },
+ { T_COPY_GRP, "NORM", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "CONST", 0,0,0 },
+ { T_COPT, "TOUCH", 0,0,0 },
+ { T_COPT, "AUTO", 0,0,0 },
+ { T_COPT, "SET_FLAGS", 0,0,0 },
+ { T_COPT, "SET_SCALE", 0,0,0 },
+ { T_COPT, "SET_ROT", 0,0,0 },
+ { T_COPT, "SET_X", 0,0,0 },
+ { T_COPT, "SET_Y", 0,0,0 },
+ { T_COPT, "SET_Z", 0,0,0 },
+ { T_COPT, "XCENTER", 0,0,0 },
+ { T_COPT, "YCENTER", 0,0,0 },
+ { T_COPT, "ZCENTER", 0,0,0 },
+ { T_COPT, "CENTER", 0,0,0 },
+ { T_COPY_GRP, "TRANSFORM", 0,0,0 },
+
+ //---------- COMMAND wszst COMPRESS ----------
+
+ { T_CMD_BEG, "COMPRESS", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "REMOVE_SRC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "FFORMAT1", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "COMPRESS", 0,0,0 },
+ { T_COPY_GRP, "NORM", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst DECOMPRESS ----------
+
+ { T_CMD_BEG, "DECOMPRESS", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "REMOVE_SRC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "U8", 0,0,0 },
+ { T_COPT, "WU8", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPY_GRP, "NORM", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst ENCODE ----------
+
+ { T_CMD_BEG, "ENCODE", 0,0,0 },
+ { T_COPT, "IGNORE_SETUP", 0,0,0 },
+ { T_COPY_GRP, "ALIGN", 0,0,0 },
+ { T_COPT, "LOGGING", 0,0,0 },
+ { T_COPY_GRP, "ENCODE", 0,0,0 },
+ { T_COPT, "MIPMAPS", 0,0,0 },
+ { T_COPT, "NO_MIPMAPS", 0,0,0 },
+ { T_COPT, "N_MIPMAPS", 0,0,0 },
+ { T_COPT, "MAX_MIPMAPS", 0,0,0 },
+ { T_COPT, "MIPMAP_SIZE", 0,0,0 },
+ { T_COPT, "FAST_MIPMAPS", 0,0,0 },
+ { T_COPT, "CMPR_DEFAULT", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst CREATE ----------
+
+ { T_CMD_BEG, "CREATE", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPY_GRP, "CREATE", 0,0,0 },
+ { T_COPT, "NO_COMPRESS", 0,0,0 },
+ { T_COPT, "COMPRESS", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst UPDATE ----------
+
+ { T_CMD_BEG, "UPDATE", 0,0,0 },
+ { T_COPT, "SOURCE", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "ESC", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "NO_COMPRESS", 0,0,0 },
+ { T_COPT, "COMPRESS", 0,0,0 },
+ { T_COPT, "FAST", 0,0,0 },
+ { T_COPT, "RECURSE", 0,0,0 },
+ { T_COPT, "ALL", 0,0,0 },
+ { T_COPY_GRP, "ENCODE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst EXTRACT ----------
+
+ { T_CMD_BEG, "EXTRACT", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPY_GRP, "EXTRACT", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { H_COPT, "ANALYZE", 0,0,0 },
+ { H_COPT, "ANALYZE_MODE", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst XDECODE ----------
+
+ { T_CMD_BEG, "XDECODE", 0,0,0 },
+ { T_COPY_CMD, "EXTRACT", 0,0,0 },
+
+ //---------- COMMAND wszst XEXPORT ----------
+
+ { T_CMD_BEG, "XEXPORT", 0,0,0 },
+ { T_COPY_CMD, "EXTRACT", 0,0,0 },
+
+ //---------- COMMAND wszst XALL ----------
+
+ { T_CMD_BEG, "XALL", 0,0,0 },
+ { T_COPY_CMD, "EXTRACT", 0,0,0 },
+
+ //---------- COMMAND wszst XCOMMON ----------
+
+ { T_CMD_BEG, "XCOMMON", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+
+ //---------- COMMAND wszst BINARY ----------
+
+ { T_CMD_BEG, "BINARY", 0,0,0 },
+ { T_COPT, "KMG_LIMIT", 0,0,0 },
+ { T_COPT, "KMG_COPY", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+
+ //---------- COMMAND wszst TEXT ----------
+
+ { T_CMD_BEG, "TEXT", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "DECODE", 0,0,0 },
+ { T_COPT, "KMG_LIMIT", 0,0,0 },
+ { T_COPT, "KMG_COPY", 0,0,0 },
+ { T_COPY_GRP, "TEXTOUT", 0,0,0 },
+ { T_COPY_GRP, "BMG", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+
+ //---------- COMMAND wszst CAT ----------
+
+ { T_CMD_BEG, "CAT", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "DECODE", 0,0,0 },
+ { T_COPY_GRP, "TEXTOUT", 0,0,0 },
+ { T_COPY_GRP, "BMG", 0,0,0 },
+
+ //---------- COMMAND wszst BMG ----------
+
+ { T_CMD_BEG, "BMG", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0, NO_HEAD_SYNTAX },
+ { T_COPT, "BRIEF", 0,0,0 },
+ { T_COPY_GRP, "BMG", 0,0,0 },
+
+ //---------- COMMAND wszst KCL ----------
+
+ { T_CMD_BEG, "KCL", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0, NO_HEAD_SYNTAX },
+ { T_COPT, "BRIEF", 0,0,0 },
+ { T_COPT, "NO_PARAM", 0,0,0 },
+ { T_COPT, "NO_CHECK", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst KMP ----------
+
+ { T_CMD_BEG, "KMP", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0, NO_HEAD_SYNTAX },
+ { T_COPT, "BRIEF", 0,0,0 },
+ { T_COPT, "EXPORT", 0,0,0 },
+ { T_COPT, "NO_PARAM", 0,0,0 },
+ { T_COPT, "NO_CHECK", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "TRANSFORM2", 0,0,0 },
+
+ //---------- COMMAND wszst LEX ----------
+
+ { T_CMD_BEG, "LEX", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0, NO_HEAD_SYNTAX },
+ { T_COPT, "BRIEF", 0,0,0 },
+ { T_COPT, "EXPORT", 0,0,0 },
+
+ //---------- COMMAND wszst INFO ----------
+
+ { T_CMD_BEG, "INFO", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,
+ "Suppress output of the printed filename." },
+
+ //---------- COMMAND wszst GHOST ----------
+
+ { T_CMD_BEG, "GHOST", 0,0,0 },
+ { T_COPT, "IGNORE", 0,0,0 },
+ { T_COPT, "NO_HEADER", 0,0,
+ "Suppress output of the printed filename." },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPY_GRP, "SCRIPT", 0,0,0 },
+ { T_SEP_OPT, 0,0,0,0 },
+ { T_COPT, "DEST", 0,0,0 },
+ { T_COPT, "DEST2", 0,0,0 },
+
+ //---------- COMMAND wszst YAZDUMP ----------
+
+ { T_CMD_BEG, "YAZDUMP", 0,0,0 },
+ { T_COPY_GRP, "DEST", 0,0,0 },
+
+ //---------- COMMAND wszst VEHICLE ----------
+
+ { T_CMD_BEG, "VEHICLE", 0,0,0 },
+ { T_COPT, "SOURCE", 0,0,
+ "Load the file instead of using the internal base." },
+ { T_COPT, "DEST", 0,0,
+ "Define a destination path (directory/file)."
+ " The destination @-@ means: write to standard output." },
+ { T_COPT, "DEST2", 0,0,0 },
+ { T_COPT, "OVERWRITE", 0,0,0 },
+ { T_COPT, "QUIET", 0,0,
+ "Suppress logging." },
+ { T_COPT, "VERBOSE", 0,0,
+ "Log patching." },
+ { T_COPT, "BRIEF", 0,0,
+ "Suppress min/max counts on dumps." },
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// E N D ///////////////
+///////////////////////////////////////////////////////////////////////////////