## ############################################################################### ############### Tool 'wszst' ############### ############################################################################### #:def_tool( "wszst", \ "wszst [option]... command [option|parameter|@file]...", \ "Wiimms SZS Tool : List, compare, (de-)compress, extract and create" \ " SZS, U8, PACK, BRRES, BREFF and BREFT archives. Additonally, RARC" \ " archive can be extracted. It is also a wrapper to all other tools." ) #:def_cmd( "VERSION", "VERSION", \ "wszst VERSION [ignored]...", \ "Print program name and version and exit." ) #: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.", \ "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." ) #:def_cmd( "CONFIG", "CONFIG", \ "wszst CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content. The command can also export the settings for scripts or" \ " can create or update configuration files." ) #:def_cmd( "INSTALL", "INSTALL", \ "wszst INSTALL [file]...", \ "Install files to the shared directory. Use {wszst CONFIG} to list" \ " related pathes." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wszst ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #: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." ) #:def_cmd( "COLORS", "COLORS", \ "wszst COLORS", \ "Ignore all parameters and print colored text for testing." ) #: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." ) #: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." ) #: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')." ) #: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." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wszst SYMBOLS", \ "Print predefined symbols of text parser to standard output." ) #: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." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wszst CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #: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.", \ "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." ) #: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." ) #: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." ) #: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." ) #: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." ) #: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." ) #: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." ) #:def_cmd( "LIST", "LIST|LS", \ "wszst LIST [source]...", \ "List all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC" \ " archives. If listing a directory, then a virtual SZS file is created" \ " (like CREATE does it) and listed." ) #: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}." ) #: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}." ) #: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}." ) #: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}." ) #: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}." ) #: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." ) #:def_cmd( "ILIST", "ILIST|IL", \ "wszst ILIST [source]...", \ "List the images files of all sub files of SZS, U8, PACK, BRRES," \ " BREFF, BREFT and RARC archives; non image files are ignored. If" \ " listing a directory, then a virtual SZS file is created (like CREATE" \ " does it) and listed." ) #: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}." ) #: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}." ) #: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}." ) #: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}." ) #:def_cmd( "MEMORY", "MEMORY|MEM", \ "wszst MEMORY [source]...", \ "Dump a memory map of each source file. Virtual images (extracted" \ " directories) are also supported." ) #: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}." ) #: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." ) #:def_cmd( "SHA1", "SHA1", \ "wszst SHA1 [source]...", \ "Print a SHA1 checksum for each source. The checksum is calculated by" \ " using the uncompressed data and after patching." ) #:def_cmd( "ANALYZE", "ANALYZE|ANA|ANALYSE", \ "wszst ANALYZE [source]...", \ "Analyse track files and print results in machine readable format." ) #:def_cmd( "IS_TEXTURE", "IS-TEXTURE|ISTEXTURE", \ "wszst IS-TEXTURE --reference reference [source]...", \ "Test each source to see if it's a texture hack versus a reference" \ " file. For each source, one human and machine readable status line is" \ " printed. It is either »-1=err« on error, »1=yes« for a texture" \ " hack, or »0=no LIST« with a comma separated list of reasons.\n" \ " At the moment KCL, KMP (see notes) and LEX are checked. KMP section" \ " CAME has been intentionally left out. Section ENPT is only checked" \ " if KCL contains a least one face of type force-recalculation." ) #: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." ) #:def_cmd( "DIFF", "DIFF|CMP", \ "wszst DIFF source1 source2\n" \ "wszst DIFF source... --dest dest", \ "Compare two or more sources (each SZS, U8, PACK, BRRES, BREFF, BREFT," \ " RARC or directory) on file level and report mismatches for each sub" \ " file. If option {--dest} is set, then each source file is compared" \ " with a file in the destination." ) #: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." ) #: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." ) #: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." ) #: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." ) #: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}." ) #: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." ) #: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." ) #: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 1573 files will be created." \ " So the use of option {--fast} is recommended to speed up the" \ " process. Use command {wkmpt GAMEMODES} to list all variants and to" \ " check them beforehand." ) #: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." ) #: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'@." ) #:def_cmd( "DECOMPRESS", "DECOMPRESS|DEC", \ "wszst DECOMPRESS [szs]...", \ "Decompress SZS files. The default destination is @'%P/%N.u8'@." ) #: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." ) #:def_cmd( "CREATE", "CREATE|C", \ "wszst CREATE [source_dir]...", \ "Create SZS, U8, PACK, BRRES, BREFF or BREFT archives by adding all" \ " not hidden files of the directory structure. Create and/or encode" \ " sub files if necessary. The default destination is @'%P/%N%T'@." ) #:def_cmd( "UPDATE", "UPDATE|U", \ "wszst UPDATE [source]... [--source=] [--dest=]", \ "Update an existing SZS, U8, PACK, BRRES, BREFF, BREFT and" \ " RARCarchive. This is done in similar way as the {EXTRACT} command," \ " but instead of extracting, source files are searched in a prior" \ " extracted archive. Only files with the same size are updated. The" \ " secondary source is used to find the source sub files. The default" \ " secondary source is @'%P/%N.d/'@." ) #:def_cmd( "EXTRACT", "EXTRACT|X", \ "wszst EXTRACT [source]...", \ "Extract all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC" \ " archives. The default destination is @'%P/%N.d/'@." ) #:def_cmd( "XDECODE", "XDECODE|XD", \ "wszst XDECODE [source]...", \ "Command @XDECODE@ is a short cut for {EXTRACT --decode}. It extract" \ " all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC" \ " archives and decodes all supported files. The default destination is" \ " @'%P/%N.d/'@." ) #:def_cmd( "XEXPORT", "XEXPORT|XX", \ "wszst XEXPORT [source]...", \ "Command @XEXPORT@ is a short cut for {EXTRACT --decode --export}. It" \ " extract all sub files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC" \ " archives and decodes all supported files with enabled export mode." \ " The default destination is @'%P/%N.d/'@." ) #:def_cmd( "XALL", "XALL|XA", \ "wszst XALL [source]...", \ "Command @XALL@ is a short cut for {EXTRACT --all}. It extract all sub" \ " files of SZS, U8, PACK, BRRES, BREFF, BREFT and RARC archives" \ " recursively and decodes all supported files. The default destination" \ " is @'%P/%N.d/'@." ) #: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/'@." ) #: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." ) #: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." ) #:def_cmd( "CAT", "CAT", \ "wszst CAT [source/subfile]...", \ "Extract one or more sub files of SZS, U8, PACK, BRRES, BREFF, BREFT" \ " and RARC archives. The output of all source files is concatenated" \ " and written to stdout." ) #: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}." ) #: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}." ) #: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)." ) #: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)." ) #: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)." ) #:def_cmd( "YAZDUMP", "YAZDUMP|YD", \ "wszst YAZDUMP [szs]...", \ "Analyze YAZ compression and print a dump to stdout. Ignore files" \ " without YAZ compression." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "TOUCH", "touch", "C", \ "", \ "Mark the minimap as modified to force a new calculation of the" \ " translation and inverse matrices." ) #:def_opt( "AUTO", "auto", "C", \ "", \ "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." ) #:def_opt( "SET_FLAGS", "set-flags|setflags", "CP", \ "flag", \ "Define the flag values (default 0x31f) of the minimap." ) #:def_opt( "SET_SCALE", "set-scale|setscale", "CP", \ "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')." ) #:def_opt( "SET_ROT", "set-rot|setrot", "CP", \ "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')." ) #:def_opt( "SET_X", "set-x|setx", "CP", \ "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." ) #:def_opt( "SET_Y", "set-y|sety", "CP", \ "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." ) #:def_opt( "SET_Z", "set-z|setz", "CP", \ "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." ) #:def_opt( "XCENTER", "xcenter", "C", \ "", \ "Center the minimap in x-direction. This is done after AUTO and SET," \ " but before SCALE and SHIFT." ) #:def_opt( "YCENTER", "ycenter", "C", \ "", \ "Center the minimap in y-direction. This is done after AUTO and SET," \ " but before SCALE and SHIFT." ) #:def_opt( "ZCENTER", "zcenter", "C", \ "", \ "Center the minimap in z-direction. This is done after AUTO and SET," \ " but before SCALE and SHIFT." ) #:def_opt( "CENTER", "center", "C", \ "", \ "Center the minimap in all 3 directions. This is a short cut for" \ " {--xcenter --ycenter --zcenter}." ) #:def_opt( "SCALE", "scale", "CP", \ "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." ) #:def_opt( "SHIFT", "shift", "CP", \ "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." ) #:def_opt( "XSS", "xss", "CP", \ "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." ) #:def_opt( "YSS", "yss", "CP", \ "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." ) #:def_opt( "ZSS", "zss", "CP", \ "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." ) #:def_opt( "ROT", "rot", "CP", \ "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." ) #:def_opt( "XROT", "xrot", "CP", \ "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." ) #:def_opt( "YROT", "yrot|hrot", "CP", \ "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." ) #:def_opt( "ZROT", "zrot", "CP", \ "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." ) #:def_opt( "YPOS", "ypos", "CP", \ "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." ) #:def_opt( "TRANSLATE", "translate|trans", "CP", \ "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." ) #:def_opt( "NULL", "null", "C", \ "", \ "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." ) #:def_opt( "NEXT", "next", "C", \ "", \ "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." ) #:def_opt( "ASCALE", "ascale", "CP", \ "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!" ) #:def_opt( "AROT", "arot", "CP", \ "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!" ) #:def_opt( "TFORM_SCRIPT", "tform-script|tformscript", "CP", \ "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." ) #:def_opt( "MINIMAP", "minimap", "C", \ "", \ "Fix the minimap position in the same way as {wszst MINIMAP --auto}." \ " All other minimap related options are ignored for the minimap" \ " processing." ) #:def_opt( "RM_GOBJ", "rm-gobj|rmgobj", "CP", \ "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." ) #:def_opt( "BATTLE", "battle", "GO", \ "[=mode]", \ "@MODE@ is either @OFF@, @AUTO@ (default) or @ON@. Without value, @ON@" \ " is used.\n" \ " If mode is @ON@, assume a battle arena and enable a special battle" \ " support. If mode is @OFF@, disable special battle arena support. If" \ " mode is @AUTO@, analyse the KMP and estimate, if it is a battle" \ " areana. Modes @ON@ and @OFF@ override KMP parameter @BATTLE-MODE@." ) #:def_opt( "EXPORT_FLAGS", "export-flags|exportflags|exflags", "GO", \ "[=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." ) #:def_opt( "ROUTE_OPTIONS", "route-options|routeoptions|ropt", "GO", \ "[=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." ) #:def_opt( "WIM0", "wim0", "GO", \ "[=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." ) #:def_opt( "SLOT", "slot", "CP", \ "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." ) #:def_opt( "LOAD_KCL", "load-kcl|loadkcl", "GP", \ "file", \ "Load a KCL or OBJ file for reference issues." ) #:def_opt( "KCL", "kcl", "GP", \ "list", \ "Set global options for KCL processing. Parameter @'list'@ is a comma" \ " separated list of keywords. A minus sign before a keyword disables a" \ " setting. Each occurrence of the option will only change entered" \ " settings and all other settings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings and @CLEAR@ disables" \ " all. Keywords @SMALL, MEDIUM@ and @CHARY@ select the default" \ " parameters for the octree creation. The other allowed keywords are:" \ " @FAST, NEW, CENTER, ROUND, NORMALS, MTL, WIIMM, TRIANGLES, OUT-SWAP," \ " G, USEMTL, CLIP, IN-SWAP, AUTO, HEX4, HEX23, HEX, DROP-UNUSED," \ " DROP-FIXED, DROP-INVALID, DROP, RM-FACEDOWN, RM-FACEUP, FIX-ALL," \ " TINY-0 ... TINY-7, CONV-FACEUP, WEAK-WALLS, SORT, INPLACE, SILENT@" \ " and @LOG@." ) #:def_opt( "KCL_FLAG", "kcl-flag|kclflag", "CP", \ "joblist", \ "Modify the KCL flag of KCL files. A comma separated job list in the" \ " format @'srclist=dest'@ is expected. @'srclist'@ is a plus sign" \ " separated list with single values like @@, @T@ and" \ " @/@ or ranges like @:@, @T:@ and" \ " @:/@. @''@ is a complete KCL flag in the range" \ " of @0..0xffff@. @''@ are only the base types in the range of" \ " @0..0x1f@. If @@ is present, it marks the relevant bits. For" \ " the @T@ variant, the mask is set to @0x1f@.\n" \ " All KCL flags of the source list are assigned to the new value" \ " @'dest'@, but only the set bits of @''@ are modified. A later" \ " definition overrides the previous one." ) #:def_opt( "KCL_SCRIPT", "kcl-script|kclscript", "CP", \ "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." ) #:def_opt( "TRI_AREA", "tri-area|triarea", "GP", \ "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." ) #:def_opt( "TRI_HEIGHT", "tri-height|triheight|tri-ht|triht", "GP", \ "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." ) #:def_opt( "FLAG_FILE", "flag-file|flagfile", "CP", \ "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')." ) #:def_opt( "KMP", "kmp", "GP", \ "list", \ "Set global options for KMP processing. Parameter @'list'@ is a comma" \ " separated list of keywords. A minus sign before a keyword disables a" \ " setting. Each occurrence of the option will only change entered" \ " settings and all other settings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings and @CLEAR@ disables" \ " all. The other allowed keywords are: @FORCE, NEW, RM-SPCITEM, LEFT," \ " RIGHT, WIDE, NARROW, FIX-CKPH, FIX-ENPH, FIX-ITPH, FIX-PH," \ " FIX-CKNEXT, FIX-CKJGPT, FIX-CK, FIX-ALL, MASK-PFLAGS, RM-LECODE," \ " PURGE-GOBJ, FULL-DEFOBJ, DUMP-CLASS, DUMP-ONEWAY, DUMP-ALL, 1LAP ..." \ " 9LAPS, MAX-LAPS, RM-EMPTY, TINY-0 ... TINY-7, INPLACE, SILENT@ and" \ " @LOG@." ) #:def_opt( "SPEED_MOD", "speed-mod|speedmod", "GP", \ "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." ) #:def_opt( "KTPT2", "ktpt2", "GP", \ "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." ) #:def_opt( "TFORM_KMP", "tform-kmp|tformkmp|tkmp", "GP", \ "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." ) #:def_opt( "REPAIR_XPF", "repair-xpflags|repairxpflags|repxpf", "CP", \ "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." ) #:def_opt( "GAMEMODES", "gamemodes|gmodes", "CP", \ "list", \ "Filter the list of combinations. The parameter is a comma separated" \ " list of keywords: @AUTO@: Add a automatic mode without conditions" \ " first. @STANDARD@ (or @STD@): Add standard modes. @1STANDARD@ (or" \ " @1STD@): Add standard modes first. @BALLOON@: Add balloon battle" \ " modes. @COIN@: Add coin runners modes. @BATTLE@: Short cut for" \ " 'BALLOON,COIN'. @VERSUS@ (or @VS@): Add versus modes. @ITEMRAIN@:" \ " Add itemrain modes. @RACE@: Short cut for 'VERSUS,ITEMRAIN'. @ALL@" \ " (default): Short cut for 'STANDARD,BATTLE,RACE'. @NO-MODES@: Exclude" \ " 'ALL' and create auto modes only. @ENGINE@: Include engine classes" \ " (default). @NO-ENGINE@: Exclude engine classes. @RANDOM@: Include" \ " random modes (default). @NO-RANDOM@: Exclude random modes." \ " @OFFLINE@: Filter offline modes. @ONLINE@: Filter online modes." \ " @NO-TT@: Exclude time trial. @TT@: Force a time trial scenario, even" \ " if it is a duplicate. @FULL@: Don't eliminate duplicates from list" \ " (up to 1573 modes). @NSORT@: Sort the list by name. @ISORT@: Sort" \ " the list by index. @DEBUG@: Print a debug info about this option." ) #:def_opt( "MDL", "mdl", "GP", \ "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@." ) #:def_opt( "PAT", "pat", "GP", \ "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@." ) #:def_opt( "PATCH_FILE", "patch-file|patchfile|pfile", "GP", \ "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@." ) #:def_opt( "KMG_LIMIT", "kmg-limit|kmglimit", "GP", \ "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." ) #:def_opt( "KMG_COPY", "kmg-copy|kmgcopy", "GP", \ "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." ) #:def_opt( "LT_CLEAR", "lt-clear|ltclear", "G", \ "", \ "Clear the LEX/TEST section and remove the section and course.lex if" \ " empty. This option is executed before all other --lt-* options." ) #:def_opt( "LT_ONLINE", "lt-online|ltonline", "GP", \ "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." ) #:def_opt( "LT_N_PLAYERS", "lt-n-players|lt-nplayers|ltnplayers", "GP", \ "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." ) #:def_opt( "LT_COND_BIT", "lt-cond-bit|lt-condbit|ltcondbit", "GP", \ "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." ) #:def_opt( "LT_GAME_MODE", "lt-game-mode|lt-gamemode|ltgamemode", "GP", \ "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." ) #:def_opt( "LT_ENGINE", "lt-engine|ltengine", "GP", \ "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." ) #:def_opt( "LT_RANDOM", "lt-random|ltrandom", "GP", \ "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." ) #:def_opt( "LEX_PURGE", "lex-purge|lexpurge", "G", \ "", \ "Delete LEX sections without any impact. Delete sub-file course.lex if" \ " it no longer contains a section. This option is executed after all" \ " --lt-* and --lex-* options." ) #:def_opt( "LOAD_BMG", "load-bmg|loadbmg", "CMP", \ "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." ) #:def_opt( "PATCH_BMG", "patch-bmg|patchbmg|pb", "CMP", \ "mode[cond][=param]", \ "This option specifies a BMG patch mode. Some of the modes need a" \ " parameter or a file name of a BMG patch file (raw or text BMG), both" \ " separated by an equal sign. Modes with required file names are" \ " @PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL@ and" \ " @NOTEQUAL@. Modes with text parameter are @FORMAT@, @REGEXP@ and" \ " @RM-REGEXP@. Standalone modes are @ID, ID-ALL, UNICODE, RM-ESCAPES," \ " RM-CUPS, CT-COPY, CT-FORCE-COPY, CT-FILL, LE-COPY, LE-FORCE-COPY," \ " LE-FILL, X-COPY, X-FORCE-COPY@ and @X-FILL@. Unique abbreviations" \ " are allowed.\n" \ " The optional condition @COND@ is either '@?MID@' or '@!MID@'. In" \ " case of '@?MID@', the patch is only applied if the message id MID" \ " already exists. In case of '@!MID@', the patch is only applied if" \ " the message id MID does not exists.\n" \ " If this option is used multiple times, all patch files will be" \ " processed in the entered order." ) #:def_opt( "MACRO_BMG", "macro-bmg|macrobmg|mb", "CMP", \ "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." ) #:def_opt( "FILTER_BMG", "filter-bmg|filterbmg|fb|msg", "CMP", \ "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." ) #:def_opt( "CACHE", "cache", "GP", \ "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." ) #:def_opt( "CNAME", "cname", "GP", \ "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." ) #:def_opt( "ID", "id", "C", \ "", \ "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)." ) #:def_opt( "BASE64", "base64", "CO", \ "[=mode]", \ "Encode the the checksum string as BASE64 with 27 characters instead" \ " of hex. If a parameter is set, it acts like {--coding=mode}." ) #:def_opt( "DB64", "db64", "CO", \ "[=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}." ) #:def_opt( "CODING", "coding", "CP", \ "mode", \ "Define the coding of the non alphanumeric characters for BASE64:" \ " STANDARD (+/=, default), URL (-_=), STAR (-_*) or XML (.-*)." ) #:def_opt( "VERIFY", "verify", "C", \ "", \ "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." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print in long format. Multiple usage possible." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress printing of header and footer." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress information lines in decoded text files. This includes" \ " syntax information ({--no-header}). If set twice, the output of" \ " unneeded sections is also suppressed." ) #:def_opt( "PIPE", "pipe", "CM", \ "", \ "Use pipe sign instead of spaces to separate columns." ) #:def_opt( "DELTA", "delta", "C", \ "", \ "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@)." ) #:def_opt( "DIFF", "diff", "C", \ "", \ "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." ) #:def_opt( "BMG_ENDIAN", "bmg-endian|bmgendian", "CP", \ "name", \ "Force an endian for new BMG files. Accepted values are @BIG@ or @BE@" \ " for big endian, @LITTLE@ or @LE@ for little endian and @AUTO@ for" \ " automatic detection (default).\n" \ " Mario Kart Wii uses big endian; the default if no other endian is" \ " defined." ) #:def_opt( "BMG_ENCODING", "bmg-encoding|bmgencoding", "CP", \ "name", \ "Force an encoding for new BMG files. Accepted encoding names are" \ " @CP-1252@, @UTF-16BE@ (or @UTF-16@), @SHIFT-JIS@, @UTF-8@ and @AUTO@" \ " for automatic detection (default). Same keywords without minus signs" \ " are accepted too.\n" \ " Mario Kart Wii uses encoding @UTF-16BE@; the default if no other" \ " encoding is defined." ) #:def_opt( "BMG_INF_SIZE", "bmg-inf-size|bmginfsize", "CP", \ "size", \ "Defines the 'INF1' size of new BMG files between 4 and 1000. The" \ " first 4 bytes of a INF1 record is an offset into the string pool and" \ " the remaining bytes the attributes. Maximal 40 attribute bytes are" \ " supported and additional bytes are assumed to be NULL. All BMG files" \ " of MKW have a size of 8." ) #:def_opt( "BMG_MID", "bmg-mid|bmgmid", "CO", \ "[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." ) #:def_opt( "FORCE_ATTRIB", "force-attrib|forceattrib", "CP", \ "attrib", \ "Forces, that all attributes are set to this vector." ) #:def_opt( "DEF_ATTRIB", "def-attrib|defattrib", "CP", \ "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]@." ) #:def_opt( "NO_ATTRIB", "no-attrib|noattrib", "C", \ "", \ "Suppress the output of any BMG attributes if creating BMG text files." ) #:def_opt( "X_ESCAPES", "x-escapes|xescapes", "C", \ "", \ "Use \\x{{} escapes instead of \\z{{} escapes." ) #:def_opt( "OLD_ESCAPES", "old-escapes|oldescapes", "C", \ "", \ "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." ) #:def_opt( "SINGLE_LINE", "1|single-line|singleline", "C", \ "", \ "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." ) #:def_opt( "NO_BMG_COLORS", "no-bmg-colors|nobmgcolors", "C", \ "", \ "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." ) #:def_opt( "BMG_COLORS", "bmg-colors|bmgcolors", "C", \ "", \ "Force output of '\\c{{color}' escape sequences with names, even for" \ " foreign (not MKWii) BMG files." ) #:def_opt( "NO_BMG_INLINE", "no-bmg-inline|nobmginline", "C", \ "", \ "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." ) #:def_opt( "EXPORT", "X|export", "C", \ "", \ "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." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "SORT", "S|sort", "CP", \ "mode", \ "Define a sort mode. Allowed keywords are: @NONE@ (default), @NAME," \ " OFFSET, U8, PACK, BRRES, BREFT@ and @AUTO@" ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TRACKS", "T|tracks", "GP", \ "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." ) #:def_opt( "ARENAS", "A|arenas", "GP", \ "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." ) #:def_opt( "AUTOADD_PATH", "autoadd-path|autoaddpath", "GP", \ "directory", \ "Define an alternative directory as autoadd library. The default is," \ " that the sub-directory called './auto-add/' of all search paths are" \ " used. Use {wszst config -ll} for tests." ) #:def_opt( "TRANSFORM", "x|transform", "CP", \ "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." ) #:def_opt( "STRIP", "strip", "C", \ "", \ "If creating a PNG file, don't add comments about creator and source" \ " formats." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "TINY", "tiny", "GP", \ "mode", \ "Set tiny mode to a level between 0 and 7." ) #:def_opt( "YAZ0", "yaz0", "G", \ "", \ "If creating a compressed file, force Yaz0 compression. Yaz0" \ " compression is the default, if no compression method is defined by" \ " option or setup file." ) #:def_opt( "YAZ1", "yaz1", "G", \ "", \ "If creating a compressed file, force Yaz1 compression. The difference" \ " to Yaz0 is only the magic, which is set to 'Yaz1'." ) #:def_opt( "XYZ", "xyz", "G", \ "", \ "If creating a compressed file, force XYZ compression (an experimental" \ " Yaz0 variant)." ) #:def_opt( "BZ", "bz", "G", \ "", \ "If creating a compressed file, force BZ compression (a BZIP2" \ " variant)." ) #:def_opt( "SH", "sh", "G", \ "", \ "Dump info using SH syntax. Use {--var name} as prefix." ) #:def_opt( "BASH", "bash", "G", \ "", \ "Dump info using BASH syntax. Use {--var name} as prefix." ) #:def_opt( "JSON", "json", "G", \ "", \ "Dump info using JSON syntax. Options {--var} and {--array} are" \ " ignored." ) #:def_opt( "PHP", "php", "G", \ "", \ "Dump infos using PHP syntax. Use {--var name} as variable name of the" \ " resulting object." ) #:def_opt( "MAKEDOC", "makedoc", "G", \ "", \ "Dump infos using MakeDoc syntax. Use {--var name} as variable name of" \ " the resulting map." ) #:def_opt( "VAR", "var", "GP", \ "varname", \ "Use @VARNAME@ as variable name or prefix on script output. The" \ " default value is 'res' for variables and 'res_' as prefix." ) #:def_opt( "ARRAY", "array", "G", \ "", \ "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." ) #:def_opt( "AVAR", "avar", "GP", \ "varname", \ "Shortcut for: {--array --var name}" ) #:def_opt( "CASE", "case", "GP", \ "case", \ "@CASE@ is one of @LOWER@, @AUTO@ (default) or @UPPER@.If @LOWER@ or" \ " @UPPER@ are set, then the lower/upper case of the variable names is" \ " adjusted accordingly." ) #:def_opt( "INSTALL", "install", "C", \ "", \ "Manage configuration for an installation." ) #:def_opt( "SOURCE", "s|source|src", "CP", \ "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." ) #:def_opt( "REFERENCE", "ref|reference", "CP", \ "path", \ "Define a reference SZS." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_SRC", "remove-src|removesrc|rm-src|rmsrc", "C", \ "", \ "Remove the source file after successful operation. @--rm-src@ is a" \ " short cut." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "IGNORE_SETUP", "ignore-setup|ignoresetup", "C", \ "", \ "Ignore hidden setup file '@wszst-setup.txt@'. This file is used to" \ " determine some default settings and to find out sub archives and" \ " files to encode. Use this option only if you know what you do." ) #:def_opt( "PURGE", "purge", "C", \ "", \ "Remove repeated files with same checksum." ) #:def_opt( "ALIGN_U8", "align-u8|alignu8", "CP", \ "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." ) #:def_opt( "ALIGN_PACK", "align-pack|alignpack", "CP", \ "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." ) #:def_opt( "ALIGN_BRRES", "align-brres|alignbrres", "CP", \ "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." ) #:def_opt( "ALIGN_BREFF", "align-breff|alignbreff", "CP", \ "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." ) #:def_opt( "ALIGN_BREFT", "align-breft|alignbreft", "CP", \ "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." ) #:def_opt( "ALIGN", "align", "CP", \ "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}." ) #:def_opt( "ENCODE_ALL", "encode-all|encodeall|eall", "C", \ "", \ "Encode all files. Normally a file is only encoded, if the source is" \ " younger than the destination or the destination is missing. Only" \ " files in the @[encode]@ section of the file '@wszst-setup.txt@' are" \ " candidates for encoding. @--eall@ is a short cut. Option" \ " {--no-encode} takes precedence over {--encode-all}." ) #:def_opt( "ENCODE_IMG", "encode-img|encodeimg|eimg", "C", \ "", \ "Encode all image files. Normally a image file is only encoded, if the" \ " source is younger than the destination or the destination is" \ " missing. Only files in the @[encode]@ section of the file" \ " '@wszst-setup.txt@' are candidates for encoding. @--eimg@ is a short" \ " cut. If set, option {--no-encode} is ignored for images." ) #:def_opt( "NO_ENCODE", "no-encode|noencode|noenc", "C", \ "", \ "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." ) #:def_opt( "NO_RECURSE", "no-recurse|norecurse|norec", "C", \ "", \ "Do not create archives recursively. Normally files in the @[create]@" \ " section of the file '@wszst-setup.txt@' are created first. @--norec@" \ " is a short cut." ) #:def_opt( "AUTO_ADD", "auto-add|autoadd|aadd", "C", \ "", \ "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." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KCL and KMP files." ) #:def_opt( "PT_DIR", "pt-dir|ptdir|pdir", "CO", \ "[=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." ) #:def_opt( "RM_AIPARAM", "rm-aiparam|rmaiparam|rmai", "C", \ "", \ "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." ) #:def_opt( "U8", "u8", "C", \ "", \ "Create an U8 archive, if possible. If the source is a WU8 archive," \ " convert it to an U8 archive. This is the default if the setup file" \ " '@wszst-setup.txt@' has no other definition. The default compression" \ " mode is set to Yaz0 (see {--yaz0})." ) #:def_opt( "SZS", "szs", "C", \ "", \ "Short cut for {--u8 --yaz0}: Create an U8 archive, if possible, and" \ " set the compression method to Yaz0." ) #:def_opt( "WU8", "wu8", "C", \ "", \ "Create a WU8 archive, if possible. If the source is an U8 archive," \ " convert it to a WU8 archive." ) #:def_opt( "WBZ", "wbz", "C", \ "", \ "Short cut for {--wu8 --bz}: Create a WU8 archive, if possible, and" \ " set the compression method to BZ." ) #:def_opt( "PACK", "pack", "C", \ "", \ "Create a PACK archive." ) #:def_opt( "BRRES", "brres|bres", "C", \ "", \ "Create a BRRES archive." ) #:def_opt( "BREFF", "breff", "C", \ "", \ "Create a BREFF archive." ) #:def_opt( "BREFT", "breft", "C", \ "", \ "Create a BREFT archive." ) #:def_opt( "NO_COMPRESS", "no-compress|nocompress|noc", "C", \ "", \ "Create an uncompressed file instead of a compressed SZS file. The" \ " default destination changes to @'%P/%N%T'@. @--noc@ is a short cut." ) #:def_opt( "COMPRESS", "C|compr|compress", "CP", \ "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}." ) #:def_opt( "FAST", "fast", "C", \ "", \ "Short cut for {--compr=fast}: Set the fastest real compression. It" \ " also overrides compression rates set by {--norm} or {--compr}." ) #:def_opt( "NORM", "n|norm", "C", \ "", \ "The uncompressed data will be normalized. See command {NORMALIZE} for" \ " more details." ) #:def_opt( "LINKS", "links", "C", \ "", \ "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." ) #:def_opt( "BASEDIR", "basedir|bdir", "CP", \ "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." ) #:def_opt( "RECURSE", "R|recurse", "CO", \ "[=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}." ) #:def_opt( "EXT", "e|ext", "C", \ "", \ "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'." ) #:def_opt( "DECODE", "decode|dec", "C", \ "", \ "If a extracted file is known and can be decoded, do it. @--dec@ is a" \ " short cut." ) #:def_opt( "MIPMAPS", "mipmaps|mm", "C", \ "", \ "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." ) #:def_opt( "NO_MIPMAPS", "no-mipmaps|nomipmaps|no-mm|nomm", "C", \ "", \ "If reading a source, ignore mipmaps. This disables not the creation" \ " of mipmaps (see {-n-mipmaps}). @--no-mm@ is a short cut." ) #:def_opt( "N_MIPMAPS", "n-mipmaps|nmipmaps|n-mm|nmm", "CP", \ "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." ) #:def_opt( "MAX_MIPMAPS", "max-mipmaps|maxmipmaps|max-mm|maxmm", "CP", \ "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." ) #:def_opt( "MIPMAP_SIZE", "mipmap-size|mipmapsize|mm-size|mmsize", "CP", \ "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." ) #:def_opt( "FAST_MIPMAPS", "fast-mipmaps|fastmipmaps|fast-mm|fastmm", "C", \ "", \ "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." \ " @--fast-mm@ is a short cut." ) #:def_opt( "CMPR_DEFAULT", "cmpr-default", "CP", \ "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 @C112 bytes as single words using \\x{{}. Also" \ " don't use \\x{{} and \\u{{} with parameter lists." ) #:def_opt( "SINGLE_LINE", "1|single-line|singleline", "C", \ "", \ "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." ) #:def_opt( "NO_BMG_COLORS", "no-bmg-colors|nobmgcolors", "C", \ "", \ "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." ) #:def_opt( "BMG_COLORS", "bmg-colors|bmgcolors", "C", \ "", \ "Force output of '\\c{{color}' escape sequences with names, even for" \ " foreign (not MKWii) BMG files." ) #:def_opt( "NO_BMG_INLINE", "no-bmg-inline|nobmginline", "C", \ "", \ "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." ) #:def_opt( "EXPORT", "X|export", "C", \ "", \ "Enable the export mode and create small and machine readable text" \ " files for easy post processing. The option works similar like" \ " @-HBl11@ for BMG text files." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "POINTS", "POINTS", \ "", \ "" ) #:def_cmd_opt( "POINTS", "BRIEF", \ "", \ "Print the table as comma separated lists in C notation." ) #:def_cmd_opt( "POINTS", "LONG", \ "", \ "Append a string in {--points} format that defines the table. If set" \ " twice, append up to 3 strings in different modes." ) #:def_cmd_opt( "EXTRACT", "NO_HEADER", \ "", \ "Exclude the section header from output." ) #:def_cmd_opt( "SECTIONS", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "LIST", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "LIST", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "LIST", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "LIST", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "LIST", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "LIST", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "SLOTS", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "DIFF", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "DIFF", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "DIFF", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "DIFF", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "DIFF", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "DIFF", "DEST", \ "", \ "" ) #:def_cmd_opt( "DIFF", "ESC", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "CAT", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "CAT", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "CAT", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "CAT", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CAT", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CAT", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "CAT", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "CAT", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "CAT", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "CAT", "LONG", \ "", \ "" ) #:def_cmd_opt( "CAT", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "MIX", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "MIX", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "MIX", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "MIX", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "MIX", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "MIX", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "MIX", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "MIX", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "MIX", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "MIX", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "MIX", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "MIX", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "MIX", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "MIX", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "MIX", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "MIX", "LONG", \ "", \ "" ) #:def_cmd_opt( "MIX", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "MIX", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "MIX", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "MIX", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "MIX", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "LE_CODE", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "CT_CODE", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "LONG", \ "", \ "" ) #:def_cmd_opt( "IDENTIFIER", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "DECODE", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "DECODE", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "LONG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ALIGN", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST2", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ESC", \ "", \ "" ) #:def_cmd_opt( "PATCH", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "PATCH", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "PATCH", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "PATCH", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "PATCH", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "LONG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "PATCH", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ALIGN", \ "", \ "" ) ## ############################################################################### ############### Tool 'wctct' ############### ############################################################################### #:def_tool( "wctct", \ "wctct [option]... command [option|parameter|@file]...", \ "Wiimms CT-CODE Tool : Manage the $CT-CODE$ extension. BRRES, TEX0," \ " CT-CODE, CT-TEXT and LE-BIN files are accepted as input." ) #:def_cmd( "VERSION", "VERSION", \ "wctct VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wctct HELP [--width=wd] OPT|OPTION ...\n" \ "wctct HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wctct HELP [--width=wd] command [-b] [ignored]...\n" \ "wctct HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wctct CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wctct ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wctct TEST [options]... [ignored]...", \ "This debugging command accepts all options and parameters and prints" \ " a list of the internal option values. The command is designed to" \ " test the option parameters. The non option parameters are completely" \ " ignored." ) #:def_cmd( "COLORS", "COLORS", \ "wctct COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wctct ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wctct FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wctct FILEATTRIB [keyword]...", \ "Print a table with attributes for all known file types. If at least" \ " one keyword is entered, only matching file types are printed. A" \ " keyword is either a file type (like 'BRRES' or 'BMG') or one of the" \ " printed keywords (like 'ARCHIVE' or 'EXTRACT')." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wctct SYMBOLS", \ "Print predefined symbols of text parser to standard output. The" \ " CT-CODE specific symbols are included." ) #:def_cmd( "FUNCTIONS", "FUNCTIONS", \ "wctct FUNCTIONS [key]...", \ "Print a list with all parser functions including the CT-CODE specific" \ " functions. If one key ore more key entered, then only functions that" \ " match at least one key are printed." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wctct CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #:def_cmd( "FLOAT", "FLOAT", \ "wctct FLOAT number...", \ "This commands helps to convert hex values into floating point numbers" \ " and vice versa. For each non empty parameter, a line with 4 bytes" \ " hex and a float, 8 bytes hex and a double float, and the parameter" \ " itself is printed. If a parameter begins with 'x' or '0x', it is a" \ " hex string, otherwise it is a floating point number.\n" \ " The special parameters \"+\" and \"-\" mean: Increment or decrement" \ " the previous value by the smallest possible value. Use different" \ " increments for floats and doubles.\n" \ " All conversions are done using big endian." ) #:def_cmd( "DUMP", "D|DUMP", \ "wctct DUMP [source]...", \ "Print an information dump for the CT-CODE of each source file. BRRES," \ " TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input." ) #:def_cmd( "CAT", "CAT", \ "wctct CAT [source]...", \ "Read the source files and print the CT-CODE part them as decoded text" \ " files to standard output. The output of all source files is" \ " concatenated. BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted" \ " as input." ) #:def_cmd( "BMG", "BMG", \ "wctct BMG [source]...", \ "Read the source files and print a BMG message listing to standard" \ " output. BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as" \ " input." ) #:def_cmd( "TRACKS", "TRACKS", \ "wctct TRACKS [source]...", \ "Read the source files and print a track listing to standard output." \ " BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wctct DECODE [source]...", \ "Read the source files and decode them to CT-TEXT files. The default" \ " destination is @'%P/%N.txt'@. BRRES, TEX0, CT-CODE, CT-TEXT and" \ " LE-BIN are accepted as input." ) #:def_cmd( "CREATE", "CREATE|C", \ "wctct CREATE keyword [source]...", \ "Read the source files, scan the CT-CODE part and create an output" \ " file controlled by the keyword. BRRES, TEX0, CT-CODE, CT-TEXT and" \ " LE-BIN files are accepted as input. Possible keywords are: @CUP1," \ " CRS1, r-MOD1, r-MOD2, r-OVR1, r-BAD1CODE, r-BAD1DATA (=r-CODE)," \ " r-TEX0, r-BRRES, r-SZS, BMG, TRACKS, LIST, REF@ and @FULL@. 'r'" \ " defines the region and is one of @EU, RMCP, US, RMCE, JP, RMCJ, KO@" \ " or @RMCK@.\n" \ " The Korean support needs external CT-CODE files. Use option" \ " {--ct-dir} to define at least one search path." ) #:def_cmd( "PATCH", "PATCH|P", \ "wctct PATCH [source]...", \ "Read each source file, find and scan the CT-CODE part and patch it." \ " BRRES, TEX0, CT-CODE, CT-TEXT and LE-BIN are accepted as input." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) #:def_opt( "OLD_SPINY", "old-spiny|oldspiny", "G", \ "", \ "Disable the new feature to hold a Spiny Shell at the tail." ) #:def_opt( "CRS1", "crs1", "GP", \ "value", \ "Store this value into all 8 members of the property array of the CRS1" \ " header if reading a CT-TEXT. The default value is 0x800." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress cross reference comments." ) #:def_opt( "RAW", "raw", "C", \ "", \ "Print BMG messages as UTF-8 text without escape sequences." ) #:def_opt( "BMG_ENDIAN", "bmg-endian|bmgendian", "CP", \ "name", \ "Force an endian for new BMG files. Accepted values are @BIG@ or @BE@" \ " for big endian, @LITTLE@ or @LE@ for little endian and @AUTO@ for" \ " automatic detection (default).\n" \ " Mario Kart Wii uses big endian; the default if no other endian is" \ " defined." ) #:def_opt( "BMG_ENCODING", "bmg-encoding|bmgencoding", "CP", \ "name", \ "Force an encoding for new BMG files. Accepted encoding names are" \ " @CP-1252@, @UTF-16BE@ (or @UTF-16@), @SHIFT-JIS@, @UTF-8@ and @AUTO@" \ " for automatic detection (default). Same keywords without minus signs" \ " are accepted too.\n" \ " Mario Kart Wii uses encoding @UTF-16BE@; the default if no other" \ " encoding is defined." ) #:def_opt( "BMG_INF_SIZE", "bmg-inf-size|bmginfsize", "CP", \ "size", \ "Defines the 'INF1' size of new BMG files between 4 and 1000. The" \ " first 4 bytes of a INF1 record is an offset into the string pool and" \ " the remaining bytes the attributes. Maximal 40 attribute bytes are" \ " supported and additional bytes are assumed to be NULL. All BMG files" \ " of MKW have a size of 8." ) #:def_opt( "BMG_MID", "bmg-mid|bmgmid", "CO", \ "[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." ) #:def_opt( "FORCE_ATTRIB", "force-attrib|forceattrib", "CP", \ "attrib", \ "Forces, that all attributes are set to this vector." ) #:def_opt( "DEF_ATTRIB", "def-attrib|defattrib", "CP", \ "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]@." ) #:def_opt( "NO_ATTRIB", "no-attrib|noattrib", "C", \ "", \ "Suppress the output of any BMG attributes if creating BMG text files." ) #:def_opt( "X_ESCAPES", "x-escapes|xescapes", "C", \ "", \ "Use \\x{{} escapes instead of \\z{{} escapes." ) #:def_opt( "OLD_ESCAPES", "old-escapes|oldescapes", "C", \ "", \ "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." ) #:def_opt( "SINGLE_LINE", "1|single-line|singleline", "C", \ "", \ "If set, don't print continuation lines for BMG text output. If set" \ " twice, print only single text lines but not value lines." ) #:def_opt( "NO_BMG_COLORS", "no-bmg-colors|nobmgcolors", "C", \ "", \ "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." ) #:def_opt( "BMG_COLORS", "bmg-colors|bmgcolors", "C", \ "", \ "Force output of '\\c{{color}' escape sequences with names, even for" \ " foreign (not MKWii) BMG files." ) #:def_opt( "NO_BMG_INLINE", "no-bmg-inline|nobmginline", "C", \ "", \ "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." ) #:def_opt( "EXPORT", "X|export", "C", \ "", \ "Enable the export mode and create small and machine readable text" \ " files for easy post processing. The option works similar like @-HB@" \ " for CT-CODE output." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KCL and KMP files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "LIST", "list", "C", \ "", \ "Cancel all previous {--rel} and {--full} and enter LIST mode" \ " (default) for text output.\n" \ " In LIST mode only a track list is generated. On scanning the tracks" \ " are automatically distributed to the cups. This makes rearanging" \ " very simple." ) #:def_opt( "REF", "ref", "C", \ "", \ "Cancel all previous {--list} and {--full} and enter REFERENCE mode" \ " for text output.\n" \ " In REFERENCE mode all tracks and cups are printed separately. After" \ " scanning the cup and track layout is the same as the original code" \ " file." ) #:def_opt( "FULL", "full", "C", \ "", \ "Cancel all previous {--list} and {--rel} and enter FULL mode for text" \ " output.\n" \ " FULL mode is a combination of LIST and REF modes." ) #:def_opt( "HEX", "hex", "C", \ "", \ "Normally and if available, names are printed for music and property" \ " slots. If this option is set, hex numbers are printed always." ) #:def_opt( "CT_DIR", "ct-dir|ctdir", "GP", \ "dir", \ "Define a search directory for CT-CODE parts and use the internal" \ " copies only, if no valid file is found. Each file is searched" \ " without and then with extension '.bz2'. For both cases bzip2 files" \ " are detected and decompressed. Only files with correct file type are" \ " accepted.\n" \ " wctct will search in the sub directory @'rmc[pujk]/'@ for files" \ " @'mod1.bin', 'mod2.bin', 'ovr1.bin'@ and @'bad1code.bin'@.\n" \ " Use this option multiple times to define more than one search" \ " directory." ) #:def_opt( "CT_LOG", "ct-log|ctlog", "GO", \ "[=level]", \ "Define a log level for option {--ct-dir}. Without parameter, the" \ " current level is increased. Allowed keywords are: 0=0FF, 1=SUCCESS," \ " 2=FOUND, 3=ALL" ) #:def_opt( "ALLOW_SLOTS", "allow-slots|allowslots", "GP", \ "list", \ "Allow and disallow slots for automatic slot assigning. A comma" \ " separated list of slots (A), slot ranges (A:B) or keywords is" \ " expected. If preceded by a minus sign, the slots are disabled. The" \ " keywords are: @TRACKS@ (slots 0:0x1f), @ARENAS@ (0x20:0x29) and" \ " @SPECIAL@ (0x36:0x3a). @CTCODE@ is an abbreviation for" \ " @ARENAS,SPECIAL@.\n" \ " The default is to enable slot ranges @0x00:0x1f@, @0x2a:0x35@," \ " @0x3b:0x41@ and @0x44:0xfe@." ) #:def_opt( "IMAGES", "images", "CP", \ "dir", \ "If creating a CT-CODE BRRES or SZS file, then search the 8 strap" \ " images in the specified directory. The images are searched with" \ " extensions .png, .tex, .tex0 and without extension in this order" \ " until a valid image is found. All images will be resized to the" \ " correct width and height and converted to format TEX.RGB565 without" \ " mipmaps. If no valid image is found, a hard coded default image is" \ " used." ) #:def_opt( "LOAD_BMG", "load-bmg|loadbmg", "CMP", \ "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." ) #:def_opt( "PATCH_BMG", "patch-bmg|patchbmg|pb", "CMP", \ "mode[cond][=param]", \ "This option specifies a BMG patch mode. Some of the modes need a" \ " parameter or a file name of a BMG patch file (raw or text BMG), both" \ " separated by an equal sign. Modes with required file names are" \ " @PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL@ and" \ " @NOTEQUAL@. Modes with text parameter are @FORMAT@, @REGEXP@ and" \ " @RM-REGEXP@. Standalone modes are @ID, ID-ALL, UNICODE, RM-ESCAPES," \ " RM-CUPS, CT-COPY, CT-FORCE-COPY, CT-FILL, LE-COPY, LE-FORCE-COPY," \ " LE-FILL, X-COPY, X-FORCE-COPY@ and @X-FILL@. Unique abbreviations" \ " are allowed.\n" \ " The optional condition @COND@ is either '@?MID@' or '@!MID@'. In" \ " case of '@?MID@', the patch is only applied if the message id MID" \ " already exists. In case of '@!MID@', the patch is only applied if" \ " the message id MID does not exists.\n" \ " If this option is used multiple times, all patch files will be" \ " processed in the entered order." ) #:def_opt( "MACRO_BMG", "macro-bmg|macrobmg|mb", "CMP", \ "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." ) #:def_opt( "FILTER_BMG", "filter-bmg|filterbmg|fb", "CMP", \ "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." ) #:def_opt( "PATCH_NAMES", "patch-names|patchnames", "C", \ "", \ "If set, the names of the CUP1 and CSR1 sections are patched by the" \ " loaded BMG files directly after loading the source files." ) #:def_opt( "ORDER_BY", "order-by|orderby|order", "CP", \ "bmg", \ "Load the BMG file and filter track names. Then before creating output" \ " files, re-distribute the tracks of the additonal cups (9-) to the" \ " same cups by the order of the read track names. Tracks without BMG" \ " reference are placed at the end of all tracks. This option modifes" \ " only the track order of the cups, but will not change any name." ) #:def_opt( "ORDER_ALL", "order-all|orderall", "C", \ "", \ "Used together with option {--order-by}: Re-distribute the tracks of" \ " all cups beginning with Mushroom Cup." ) #:def_opt( "WRITE_TRACKS", "write-tracks|writetracks|wtracks", "CP", \ "file", \ "Create a machine readable file reflecting the racing track" \ " distribution to the cups. One line of format @'IDX|MID|NAME'@ is" \ " written for each track. --wtracks is a short cut." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "RAWDUMP", "DEST", \ "", \ "" ) #:def_cmd_opt( "RAWDUMP", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DUMP", "LONG", \ "", \ "Print headers as hexdump." ) #:def_cmd_opt( "DUMP", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "LIST", \ "", \ "" ) #:def_cmd_opt( "CAT", "REF", \ "", \ "" ) #:def_cmd_opt( "CAT", "FULL", \ "", \ "" ) #:def_cmd_opt( "CAT", "HEX", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "Suppress the syntax information section in CTC text files." ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CAT", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CAT", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "CAT", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "CAT", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "CAT", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "BMG", "BRIEF", \ "", \ "Filter the message by tracks, that are used a racing track. If set" \ " twice, suppress also tracks created by the 'N' command of CT-TEXT" \ " files. If set 3 times, suppress always the output of first 32" \ " tracks." ) #:def_cmd_opt( "BMG", "LONG", \ "", \ "Normally, only the track and arena names are exported. The message id" \ " (MID) range is 4000-40FF. If set, cup names are exported too as MID" \ " 4200-423F. If set twice, cup/track relations are also exported as" \ " MID 4300-43FF." ) #:def_cmd_opt( "BMG", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "BMG", "LIST", \ "", \ "" ) #:def_cmd_opt( "BMG", "REF", \ "", \ "" ) #:def_cmd_opt( "BMG", "FULL", \ "", \ "" ) #:def_cmd_opt( "BMG", "HEX", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_HEADER", \ "", \ "Suppress the syntax information section in CTC text files." ) #:def_cmd_opt( "BMG", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "BMG", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "BMG", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "BMG", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "BMG", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "BMG", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "BMG", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "BMG", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "BMG", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "BMG", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "BMG", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "BMG", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "BMG", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "BMG", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "BMG", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "BMG", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "BMG", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "BMG", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "BMG", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "BMG", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "NO_HEADER", \ "", \ "Suppress the table header." ) #:def_cmd_opt( "TRACKS", "BRIEF", \ "", \ "Suppress the output of the music and property slots." ) #:def_cmd_opt( "TRACKS", "LONG", \ "", \ "Include the first 32 standard tracks into the output. If set twice," \ " also include the battle arenas." ) #:def_cmd_opt( "TRACKS", "RAW", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "LIST", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "REF", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "FULL", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "HEX", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "LIST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "FULL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "HEX", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "Suppress the syntax information section in CTC text files." ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DECODE", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "CREATE", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEST", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ESC", \ "", \ "" ) #:def_cmd_opt( "CREATE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "CREATE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "CREATE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "HEX", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_HEADER", \ "", \ "Suppress the syntax information section in CTC text files." ) #:def_cmd_opt( "CREATE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CREATE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CREATE", "BMG_ENDIAN", \ "", \ "" ) #:def_cmd_opt( "CREATE", "BMG_ENCODING", \ "", \ "" ) #:def_cmd_opt( "CREATE", "BMG_INF_SIZE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "BMG_MID", \ "", \ "" ) #:def_cmd_opt( "CREATE", "FORCE_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEF_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_ATTRIB", \ "", \ "" ) #:def_cmd_opt( "CREATE", "X_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "CREATE", "OLD_ESCAPES", \ "", \ "" ) #:def_cmd_opt( "CREATE", "SINGLE_LINE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "BMG_COLORS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_BMG_INLINE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LONG", \ "", \ "BMG: Normally, only the track and arena names are exported. The" \ " message id (MID) range is 4000-40FF. If set, cup names are exported" \ " too as MID 4200-423F. If set twice, cup/track relations are also" \ " exported as MID 4300-43FF." ) #:def_cmd_opt( "CREATE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CREATE", "CT_DIR", \ "", \ "" ) #:def_cmd_opt( "CREATE", "CT_LOG", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ALLOW_SLOTS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "IMAGES", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "CREATE", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "CREATE", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "CREATE", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "CREATE", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ORDER_ALL", \ "", \ "" ) #:def_cmd_opt( "PATCH", "WRITE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST2", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ESC", \ "", \ "" ) #:def_cmd_opt( "PATCH", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "PATCH", "LOAD_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PATCH_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MACRO_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "FILTER_BMG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PATCH_NAMES", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ORDER_BY", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ORDER_ALL", \ "", \ "" ) ## ############################################################################### ############### Tool 'wimgt' ############### ############################################################################### #:def_tool( "wimgt", \ "wimgt [option]... command [option|parameter|@file]...", \ "Wiimms Image Tool : Extract and convert graphic images. The file" \ " formats TPL, TEX, BTI, BREFT and PNG are supported." ) #:def_cmd( "VERSION", "VERSION", \ "wimgt VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wimgt HELP [--width=wd] OPT|OPTION ...\n" \ "wimgt HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wimgt HELP [--width=wd] command [-b] [ignored]...\n" \ "wimgt HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wimgt CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wimgt ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wimgt 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." ) #:def_cmd( "COLORS", "COLORS", \ "wimgt COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wimgt ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wimgt FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wimgt 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')." ) #:def_cmd( "LIST", "LIST|LS", \ "wimgt LIST [source]...", \ "List images files and print file and image type." ) #:def_cmd( "LIST_L", "LIST-L|LL|LISTL", \ "wit LIST-L [source]...", \ "List images files and print file and image type and geometry data." \ " 'LIST-L' is a short cut for {LIST --long}." ) #:def_cmd( "LIST_LL", "LIST-LL|LLL|LISTLL", \ "wit LIST-LL [source]...", \ "List images files and print file and image type and advanced geometry" \ " data. 'LIST-LL' is a short cut for {LIST --long --long}." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wimgt DECODE [source]...", \ "Decode (export) the entered image files into PNG files. The default" \ " destination is @'%P/%F.png'@." ) #:def_cmd( "ENCODE", "ENCODE|ENC", \ "wimgt ENCODE [source]...", \ "Encode (import) the entered PNG files and convert them to to an" \ " internal image format (TPL, TEX, BREFT). The default destination is" \ " @'%P/%N'@ (removed extension)." ) #:def_cmd( "CONVERT", "CONVERT|CV", \ "wimgt CONVERT [source]...", \ "Convert the entered image files into new file and image formats. The" \ " old file is replaced by the new one. The difference to {ENCODE} is" \ " only the default file name handling." ) #:def_cmd( "COPY", "COPY|CP", \ "wimgt COPY source dest\n" \ "wimgt COPY source... [-d|-D] dest", \ "Copy and convert an image from 'source' to 'dest'. Multiple sources" \ " can be used, if 'dest' is a directory or contains at least one" \ " %-pattern.\n" \ " This is an alternative for the ENCODE and DECODE commands. The" \ " default destination file format is selected by scanning the file" \ " extension of the destination. Option --transform may override this." \ " Option --overwrite is set implicitly." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Create smaller output." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "ALL", "a|all", "C", \ "", \ "Convert all files and not only the files with changed file or image" \ " formats." ) #:def_opt( "MIPMAPS", "mipmaps", "C", \ "", \ "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." ) #:def_opt( "NO_MIPMAPS", "no-mipmaps|nomipmaps|no-mm|nomm", "C", \ "", \ "If reading a source, ignore mipmaps. This disables not the creation" \ " of mipmaps (see {-n-mipmaps}). @--no-mm@ is a short cut." ) #:def_opt( "N_MIPMAPS", "n-mipmaps|nmipmaps|n-mm|nmm", "CP", \ "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." ) #:def_opt( "MAX_MIPMAPS", "max-mipmaps|maxmipmaps|max-mm|maxmm", "CP", \ "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." ) #:def_opt( "MIPMAP_SIZE", "mipmap-size|mipmapsize|mm-size|mmsize", "CP", \ "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." ) #:def_opt( "FAST_MIPMAPS", "fast-mipmaps|fastmipmaps|fast-mm|fastmm", "C", \ "", \ "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." \ " @--fast-mm@ is a short cut." ) #:def_opt( "CMPR_DEFAULT", "cmpr-default", "CP", \ "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@, @T@ and" \ " @/@ or ranges like @:@, @T:@ and" \ " @:/@. @''@ is a complete KCL flag in the range" \ " of @0..0xffff@. @''@ are only the base types in the range of" \ " @0..0x1f@. If @@ is present, it marks the relevant bits. For" \ " the @T@ variant, the mask is set to @0x1f@.\n" \ " All KCL flags of the source list are assigned to the new value" \ " @'dest'@, but only the set bits of @''@ are modified. A later" \ " definition overrides the previous one." ) #:def_opt( "KCL_SCRIPT", "kcl-script|kclscript", "CP", \ "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." ) #:def_opt( "TRI_AREA", "tri-area|triarea", "GP", \ "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." ) #:def_opt( "TRI_HEIGHT", "tri-height|triheight|tri-ht|triht|kcl-min|kclmin", "GP", \ "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." ) #:def_opt( "FLAG_FILE", "flag-file|flagfile", "CP", \ "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')." ) #:def_opt( "SLOT", "slot", "CP", \ "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." ) #:def_opt( "ID", "id", "C", \ "", \ "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)." ) #:def_opt( "BASE64", "base64", "CO", \ "[=mode]", \ "Encode the the checksum string as BASE64 with 27 characters instead" \ " of hex. If a parameter is set, it acts like {--coding=mode}." ) #:def_opt( "DB64", "db64", "CO", \ "[=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}." ) #:def_opt( "CODING", "coding", "CP", \ "mode", \ "Define the coding of the non alphanumeric characters for BASE64:" \ " STANDARD (+/=, default), URL (-_=), STAR (-_*) or XML (.-*)." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Create smaller output." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KCL files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "TINY", "tiny", "GP", \ "mode", \ "Set tiny mode to a level between 0 and 7." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "TEST", "VERBOSE", \ "", \ "Print the matrices of transformations." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "CONST", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NULL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NEXT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "AROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "KCL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SLOT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "BRIEF", \ "", \ "If set once, suppress vector dumps for transformation steps and" \ " ignore option --long. If set twice, suppress vector dump for final" \ " transformation too." ) #:def_cmd_opt( "MATRIX", "LONG", \ "", \ "If set once, print inverse matrix for the final transformation. If" \ " set twice, print inverse matrix for all transformations." ) #:def_cmd_opt( "MATRIX", "QUIET", \ "", \ "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." ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "CONST", \ "", \ "" ) #:def_cmd_opt( "CAT", "SCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "YSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "YROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NULL", \ "", \ "" ) #:def_cmd_opt( "CAT", "NEXT", \ "", \ "" ) #:def_cmd_opt( "CAT", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "AROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "CAT", "KCL", \ "", \ "" ) #:def_cmd_opt( "CAT", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "CAT", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "CAT", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "CAT", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "CAT", "SLOT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "CONST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "KCL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "DECODE", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "CONST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "KCL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "COPY", "DEST", \ "", \ "" ) #:def_cmd_opt( "COPY", "DEST2", \ "", \ "" ) #:def_cmd_opt( "COPY", "ESC", \ "", \ "" ) #:def_cmd_opt( "COPY", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "COPY", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "COPY", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "COPY", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "COPY", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "COPY", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "COPY", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "COPY", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "COPY", "CONST", \ "", \ "" ) #:def_cmd_opt( "COPY", "SCALE", \ "", \ "" ) #:def_cmd_opt( "COPY", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "COPY", "XSS", \ "", \ "" ) #:def_cmd_opt( "COPY", "YSS", \ "", \ "" ) #:def_cmd_opt( "COPY", "ZSS", \ "", \ "" ) #:def_cmd_opt( "COPY", "ROT", \ "", \ "" ) #:def_cmd_opt( "COPY", "XROT", \ "", \ "" ) #:def_cmd_opt( "COPY", "YROT", \ "", \ "" ) #:def_cmd_opt( "COPY", "ZROT", \ "", \ "" ) #:def_cmd_opt( "COPY", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "COPY", "NULL", \ "", \ "" ) #:def_cmd_opt( "COPY", "NEXT", \ "", \ "" ) #:def_cmd_opt( "COPY", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "COPY", "AROT", \ "", \ "" ) #:def_cmd_opt( "COPY", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "COPY", "KCL", \ "", \ "" ) #:def_cmd_opt( "COPY", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "COPY", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "COPY", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "COPY", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "COPY", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "COPY", "SLOT", \ "", \ "" ) #:def_cmd_opt( "CFF", "LONG", \ "", \ "Force usage of @'f(typ,variant)'@. If set twice, force usage of" \ " @'a(typ,w,x,y,z)'@." ) #:def_cmd_opt( "CFF", "BRIEF", \ "", \ "Suppress the comments with the alternative expression formats." ) #:def_cmd_opt( "CFF", "DEST", \ "", \ "" ) #:def_cmd_opt( "CFF", "DEST2", \ "", \ "" ) #:def_cmd_opt( "CFF", "ESC", \ "", \ "" ) #:def_cmd_opt( "CFF", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "CFF", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "CFF", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "CFF", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "CFF", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "CFF", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CFF", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CFF", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CFF", "CONST", \ "", \ "" ) #:def_cmd_opt( "CFF", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "TYPES", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "TYPES", "BRIEF", \ "", \ "Print only the resulting flag." ) #:def_cmd_opt( "FLAGS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "BRIEF", \ "", \ "Suppress the output of detailed flag list and print only the type" \ " summary." ) #:def_cmd_opt( "FLAGS", "CONST", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "SCALE", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "XSS", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "YSS", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "ZSS", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "ROT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "XROT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "YROT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "ZROT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "NULL", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "NEXT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "AROT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "KCL", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "FLAGS", "SLOT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DUMP", "BRIEF", \ "", \ "Suppress the output of the triangle list and print only the header" \ " data and statistics." ) #:def_cmd_opt( "DUMP", "LONG", \ "", \ "If set, append an octree dump to the output. If set twice, add a" \ " triangle usage list behind the octree dump." ) #:def_cmd_opt( "DUMP", "CONST", \ "", \ "" ) #:def_cmd_opt( "DUMP", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "XSS", \ "", \ "" ) #:def_cmd_opt( "DUMP", "YSS", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ROT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "XROT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "YROT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "NULL", \ "", \ "" ) #:def_cmd_opt( "DUMP", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "AROT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "KCL", \ "", \ "" ) #:def_cmd_opt( "DUMP", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "DUMP", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "SLOT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "BRIEF", \ "", \ "Suppress the output of the triangle list and print only the header" \ " data and statistics." ) #:def_cmd_opt( "DBRIEF", "LONG", \ "", \ "If set, append an octree dump to the output. If set twice, add a" \ " triangle usage list behind the octree dump." ) #:def_cmd_opt( "DBRIEF", "CONST", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "XSS", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "YSS", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "ROT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "XROT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "YROT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "NULL", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "AROT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "KCL", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "DBRIEF", "SLOT", \ "", \ "" ) #:def_cmd_opt( "LIST", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "LIST", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "LIST", "CONST", \ "", \ "" ) #:def_cmd_opt( "LIST", "SCALE", \ "", \ "" ) #:def_cmd_opt( "LIST", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "LIST", "XSS", \ "", \ "" ) #:def_cmd_opt( "LIST", "YSS", \ "", \ "" ) #:def_cmd_opt( "LIST", "ZSS", \ "", \ "" ) #:def_cmd_opt( "LIST", "ROT", \ "", \ "" ) #:def_cmd_opt( "LIST", "XROT", \ "", \ "" ) #:def_cmd_opt( "LIST", "YROT", \ "", \ "" ) #:def_cmd_opt( "LIST", "ZROT", \ "", \ "" ) #:def_cmd_opt( "LIST", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "LIST", "NULL", \ "", \ "" ) #:def_cmd_opt( "LIST", "NEXT", \ "", \ "" ) #:def_cmd_opt( "LIST", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "LIST", "AROT", \ "", \ "" ) #:def_cmd_opt( "LIST", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "LIST", "KCL", \ "", \ "" ) #:def_cmd_opt( "LIST", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "LIST", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "LIST", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "LIST", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "LIST", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "LIST", "SLOT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "BRIEF", \ "", \ "Suppress the output of the 'normals' data." ) #:def_cmd_opt( "TRIANGLES", "LONG", \ "", \ "For each occurrence of option --long increase the precision of the" \ " floating points numbers by adding 1 fractional digit, but only up to" \ " additionally 5 digits." ) #:def_cmd_opt( "TRIANGLES", "CONST", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "SCALE", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "XSS", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "YSS", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "ZSS", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "ROT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "XROT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "YROT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "ZROT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "NULL", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "NEXT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "AROT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "KCL", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "TRIANGLES", "SLOT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "BRIEF", \ "", \ "Print the 0-based triangle index instead of the triangle coordinates." ) #:def_cmd_opt( "TRAVERSE", "LONG", \ "", \ "If set, print a calculation log. If set twice, print a calculation" \ " log for each octree traversing step." ) #:def_cmd_opt( "TRAVERSE", "CONST", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "XSS", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "YSS", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "ROT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "XROT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "YROT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "NULL", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "AROT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "KCL", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "TRAVERSE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "FALL", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FALL", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "FALL", "BRIEF", \ "", \ "Print only the height (y coordinate) of the result." ) #:def_cmd_opt( "FALL", "LONG", \ "", \ "If set, print a calculation log. If set twice, be more verbose." ) #:def_cmd_opt( "FALL", "CONST", \ "", \ "" ) #:def_cmd_opt( "FALL", "SCALE", \ "", \ "" ) #:def_cmd_opt( "FALL", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "FALL", "XSS", \ "", \ "" ) #:def_cmd_opt( "FALL", "YSS", \ "", \ "" ) #:def_cmd_opt( "FALL", "ZSS", \ "", \ "" ) #:def_cmd_opt( "FALL", "ROT", \ "", \ "" ) #:def_cmd_opt( "FALL", "XROT", \ "", \ "" ) #:def_cmd_opt( "FALL", "YROT", \ "", \ "" ) #:def_cmd_opt( "FALL", "ZROT", \ "", \ "" ) #:def_cmd_opt( "FALL", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "FALL", "NULL", \ "", \ "" ) #:def_cmd_opt( "FALL", "NEXT", \ "", \ "" ) #:def_cmd_opt( "FALL", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "FALL", "AROT", \ "", \ "" ) #:def_cmd_opt( "FALL", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "FALL", "KCL", \ "", \ "" ) #:def_cmd_opt( "FALL", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "FALL", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "FALL", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "FALL", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "FALL", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "FALL", "SLOT", \ "", \ "" ) #:def_cmd_opt( "CHECK", "COLORS", \ "", \ "" ) #:def_cmd_opt( "CHECK", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "CHECK", "BRIEF", \ "", \ "Print only warnings and suppress hints." ) #:def_cmd_opt( "CHECK", "LONG", \ "", \ "Be verbose and print more statistics." ) #:def_cmd_opt( "CHECK", "QUIET", \ "", \ "Be quiet until the first warning or hint is found." ) #:def_cmd_opt( "CHECK", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CHECK", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CHECK", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "ID", \ "", \ "" ) #:def_cmd_opt( "SHA1", "BASE64", \ "", \ "" ) #:def_cmd_opt( "SHA1", "DB64", \ "", \ "" ) #:def_cmd_opt( "SHA1", "CODING", \ "", \ "" ) #:def_cmd_opt( "SHA1", "BRIEF", \ "", \ "Suppress output of the filename." ) #:def_cmd_opt( "SHA1", "CONST", \ "", \ "" ) #:def_cmd_opt( "SHA1", "SCALE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "XSS", \ "", \ "" ) #:def_cmd_opt( "SHA1", "YSS", \ "", \ "" ) #:def_cmd_opt( "SHA1", "ZSS", \ "", \ "" ) #:def_cmd_opt( "SHA1", "ROT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "XROT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "YROT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "ZROT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "NULL", \ "", \ "" ) #:def_cmd_opt( "SHA1", "NEXT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "AROT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "KCL", \ "", \ "" ) #:def_cmd_opt( "SHA1", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "SHA1", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "SHA1", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "SHA1", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "SHA1", "SLOT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "CONST", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "XSS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "YSS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ROT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "XROT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "YROT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "NULL", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "AROT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "KCL", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "KCL_FLAG", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "TRI_AREA", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "TRI_HEIGHT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "FLAG_FILE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "BLOW", "IGNORE", \ "", \ "" ) ## ############################################################################### ############### Tool 'wkmpt' ############### ############################################################################### #:def_tool( "wkmpt", \ "wkmpt [option]... command [option|parameter|@file]...", \ "Wiimms KMP Tool : Analyze, modify, export and create (compile) KMP" \ " files." ) #:def_cmd( "VERSION", "VERSION", \ "wkmpt VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wkmpt HELP [--width=wd] OPT|OPTION ...\n" \ "wkmpt HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wkmpt HELP [--width=wd] command [-b] [ignored]...\n" \ "wkmpt HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wkmpt CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wkmpt ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wkmpt 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." ) #:def_cmd( "COLORS", "COLORS", \ "wkmpt COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wkmpt ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wkmpt FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wkmpt 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')." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wkmpt SYMBOLS", \ "Print predefined symbols of text parser to standard output. The KMP" \ " specific symbols are included." ) #:def_cmd( "FUNCTIONS", "FUNCTIONS", \ "wkmpt FUNCTIONS [key]...", \ "Print a list with all parser functions including the KMP specific" \ " functions. If one key ore more key entered, then only functions that" \ " match at least one key are printed." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wkmpt CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #:def_cmd( "MATRIX", "MATRIX", \ "wkmpt MATRIX [patch-option]... [vector]...", \ "Use the transformation options as base and calculate and print the" \ " related vectors and the transformation matrices. Then do a forward" \ " and backward transformation for each @vector@ parameter using the" \ " matrices and print the results.", \ "Use the transformation options as base and calculate and print the" \ " related vectors and the transformation matrices. Then do a forward" \ " and backward transformation for each @vector@ parameter using the" \ " matrices and print the results. The transformations are done with 4" \ " different methods to confirm the algorithms. Only the main results" \ " and results, which differ, are printed.\n" \ " Normally, the exit status is @OK@ (null). If at least one old" \ " transformation returns different results for the different" \ " algorithms, then status @DIFFER@ (not null) is returned." ) #:def_cmd( "FLOAT", "FLOAT", \ "wkmpt 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." ) #:def_cmd( "STARTPOS", "STARTPOS|SP", \ "wkmpt STARTPOS [patch-option]... key_or_file...", \ "Print an ASCII image or a table of the start positions. The parameter" \ " list is a wild mix of filenames, keywords and numbers.\n" \ " If a parameter contains a slash ('/' or '\\'), it is a filename of" \ " a KMP or SZS file and a KMP is loaded. The KMP is used to print" \ " absolute positions and to find the settings for @LEFT/RIGHT@ and" \ " @WIDE/NARROW@ automatically.\n" \ " A parameter may also be one of the following keywords to define a" \ " setting: @RESET, IMAGE, TABLE, RELATIVE, ABSOLUTE, LEFT, RIGHT," \ " WIDE, NARROW, AUTO, NO-AUTO, DECIMAL, HEXADECIMAL, Z0, Z1, Z2, Z3@." \ " A table or image is only printed on numbers 1 to 12." ) #:def_cmd( "OBJECTS", "OBJECTS|OBJ", \ "wkmpt OBJECTS key...", \ "Infos about all objects, that match any of the entered keys, are" \ " printed. A key match, if the text is part of the object name, file" \ " list or info (ignoring case). If a key is a number (decimal or hex)," \ " the object with that id matches too. This command uses an internal" \ " object and file database." ) #:def_cmd( "CAT", "CAT", \ "wkmpt CAT [source]...", \ "Read the entered KMP files (text, binary or szs) and print them as" \ " decoded text files to standard output. The output of all source" \ " files is concatenated." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wkmpt DECODE [source]...", \ "Read the entered KMP files (text or binary) and decode them to text" \ " files. The default destination is @'%P/%N.txt'@." ) #:def_cmd( "ENCODE", "ENCODE|ENC", \ "wkmpt ENCODE source...", \ "Read the entered KMP files (text or binary) and encode (compile) them" \ " to binary files. The default destination is @'%P/%N.kmp'@." ) #:def_cmd( "DIFF", "DIFF|CMP", \ "wkmpt DIFF source1 source2\n" \ "wkmpt DIFF source... --dest dest", \ "Compare the KMP of two or more sources (KMP, KMP-text or SZS). Each" \ " KMP will be converted into the internal format, and then fixed and" \ " patched controlled by options. Only the known sections are compared." \ " If option SORT (see {--diff}) is set, elements of section GOBJ are" \ " sorted by object-id.\n" \ " This command is in development. So for the section @POTI@ only a" \ " simple notice about the different data record is printed.\n" \ " If option {--dest} is set, then each source file is compared with a" \ " file in the destination." ) #:def_cmd( "DRAW", "DRAW|D|COBJECT|COB", \ "wkmpt DRAW source...", \ "Read the entered KMP files (text or binary), of needed load the" \ " related KCL file, draw KMP objects and create an OBJ file. The" \ " default destination is @'%P/%N.kmp.obj'@.\n" \ " Automated dropping of bad KCL triangles is enabled if no drop" \ " option is specified by option {--kcl}." ) #:def_cmd( "CHECK", "CHECK|CHK", \ "wkmpt CHECK source...", \ "Read the entered KMP files (text or binary) and and make a" \ " plausibility check. Hints and warnings are written to standard" \ " output. The exit status is @'DIFFER'@ if at least one KMP warning" \ " found." ) #:def_cmd( "STGI", "STGI", \ "wkmpt STGI file...", \ "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." ) #:def_cmd( "KTPT", "KTPT", \ "wkmpt KTPT [source]...", \ "Analyse the start positions (KMP:KTPT) and lap counters (KMP:CKPT" \ " with mode 0) and print a simple information list. Use enemy points" \ " (KMP:ENPT) to find recommendations.\n" \ " This command is dedicated to LE-CODE, which supports an alternative" \ " position for the finish line at the minimap." ) #:def_cmd( "ROUTES", "ROUTES", \ "wkmpt ROUTES file...", \ "Print the internal cross references for routes of KMP sections CKPH," \ " CKPT, ENPH, ENPT, ITPH and ITPT." ) #:def_cmd( "GAMEMODES", "GAMEMODES|GMODES", \ "wkmpt GAMEMODES [source]...", \ "Analyze the presence flags combinations with and without extension" \ " support and print a list. The lists consists of index, scenario" \ " version and scenario name. Scenario versions are only equal, if the" \ " scenarios are duplicates. Duplicates happens only, if {--gamemodes}" \ " option TT or FULL is set." ) #:def_cmd( "WIM0", "WIM0|W0", \ "wkmpt WIM0 [source]...", \ "Analyze the WIM0 section of each KMP file (text, binary or szs) and" \ " print an info about it." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "Enable LE-CODE and CT-CODE support. The optional parameter is" \ " deprecated and ignored." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "SCALE", "scale", "CP", \ "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." ) #:def_opt( "SHIFT", "shift", "CP", \ "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." ) #:def_opt( "XSS", "xss", "CP", \ "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." ) #:def_opt( "YSS", "yss", "CP", \ "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." ) #:def_opt( "ZSS", "zss", "CP", \ "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." ) #:def_opt( "ROT", "rot", "CP", \ "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." ) #:def_opt( "XROT", "xrot", "CP", \ "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." ) #:def_opt( "YROT", "yrot|hrot", "CP", \ "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." ) #:def_opt( "ZROT", "zrot", "CP", \ "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." ) #:def_opt( "YPOS", "ypos", "CP", \ "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." ) #:def_opt( "TRANSLATE", "translate", "CP", \ "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." ) #:def_opt( "NULL", "null", "C", \ "", \ "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." ) #:def_opt( "NEXT", "next", "C", \ "", \ "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." ) #:def_opt( "ASCALE", "ascale", "CP", \ "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!" ) #:def_opt( "AROT", "arot", "CP", \ "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!" ) #:def_opt( "TFORM_SCRIPT", "tform-script|tformscript", "CP", \ "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." ) #:def_opt( "RM_GOBJ", "rm-gobj|rmgobj", "CP", \ "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." ) #:def_opt( "BATTLE", "battle", "GO", \ "[=mode]", \ "@MODE@ is either @OFF@, @AUTO@ (default) or @ON@. Without value, @ON@" \ " is used.\n" \ " If mode is @ON@, assume a battle arena and enable a special battle" \ " support. If mode is @OFF@, disable special battle arena support. If" \ " mode is @AUTO@, analyse the KMP and estimate, if it is a battle" \ " areana. Modes @ON@ and @OFF@ override KMP parameter @BATTLE-MODE@." ) #:def_opt( "EXPORT_FLAGS", "export-flags|exportflags|exflags", "GO", \ "[=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." ) #:def_opt( "ROUTE_OPTIONS", "route-options|routeoptions|ropt", "GO", \ "[=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." ) #:def_opt( "WIM0", "wim0", "GO", \ "[=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." ) #:def_opt( "SLOT", "slot", "CP", \ "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." ) #:def_opt( "DRAW", "w|draw", "CP", \ "list", \ "The parameter is a comma separated list of keywords to select the" \ " elements to draw. Allowed keywords are: @CKPT, CJGPT, JGPT, KTPT," \ " ENPT, ITPT, POTI, CNPT, ITEMBOXES, COINS, ROADOBJECTS, SOLIDOBJECTS," \ " DECORATION, BLACK, WHITE, KCL, NONE@ and @ALL@ (default); the" \ " classes @POINTS, OBJECTS@ and @RESPAWN@; the presence-flag selectors" \ " @[1-3]OFFLINE@ and @[1-3]ONLINE@; the special options @DETAILED," \ " DISPATCH@ and @WARNINGS@. If a keyword is prefixed by a minus sign," \ " the option is disabled. Option @KCL@ decides, if the reference KCL" \ " is included in the output. If @DETAILED@ is disabled, an output with" \ " less faces is created. If @DISPATCH@ is enabled, the settings of" \ " dispatch points are visualized. If @WARNINGS@ is enabled, some" \ " objects are drawn in red." ) #:def_opt( "POS_MODE", "pos-mode|posmode", "CP", \ "list", \ "Define a comma separated list of modes for the next {--pos-file}" \ " options. Each element of the list begins with a keyword followed by" \ " a column index and/or a parameter list: @X, Y, Z," \ " D, C, T, FA=, FB=, FC=," \ " @" ) #:def_opt( "POS_FILE", "pos-file|posfile", "CP", \ "file", \ "Load a position file created by mkw-ana and print the positions into" \ " the map. Define the modes first, because the last defined modes set" \ " by {--pos-mode} are used!" ) #:def_opt( "PNG", "png", "CP", \ "pix_size ['a' align] ['x' x1[:x2]] ['y' y1[:y2]] ['t' types]", \ "Draw a PNG with a top view of the track instead of an OBJ file." \ " Transformations are done after the KMP 3D drawing, but before PNG" \ " creation.\n" \ " @'pix_size'@ is the number of world units (sqare) used for 1 PNG" \ " pixel. @'align'@ is a factor as anti-aliasing pixel multiplicator" \ " (>1 is on). @'x'@ and @'y'@ defines the part of the world that is" \ " displayed. If not set, the check points (KMP/CKPT) are used to find" \ " a good area. @'t'@ is a bit field with 32 bits to enable the the KCL" \ " types. Each bit corresponds to one of the KCL types and only . The" \ " default is to display all but not walls and solid fall (0x7fef0bff).\n" \ " All numeric values can be any expression allowed by the parser." ) #:def_opt( "LOAD_KCL", "load-kcl|loadkcl", "GP", \ "file", \ "Load a KCL or OBJ file for reference issues." ) #:def_opt( "KCL", "kcl", "GP", \ "list", \ "Set global options for KCL processing. Parameter @'list'@ is a comma" \ " separated list of keywords. A minus sign before a keyword disables a" \ " setting. Each occurrence of the option will only change entered" \ " settings and all other settings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings and @CLEAR@ disables" \ " all. Keywords @SMALL, MEDIUM@ and @CHARY@ select the default" \ " parameters for the octree creation. The other allowed keywords are:" \ " @FAST, NEW, CENTER, ROUND, NORMALS, MTL, WIIMM, TRIANGLES, OUT-SWAP," \ " G, USEMTL, CLIP, IN-SWAP, AUTO, HEX4, HEX23, HEX, DROP-UNUSED," \ " DROP-FIXED, DROP-INVALID, DROP, RM-FACEDOWN, RM-FACEUP, FIX-ALL," \ " TINY-0 ... TINY-7, CONV-FACEUP, WEAK-WALLS, SORT, INPLACE, SILENT@" \ " and @LOG@." ) #:def_opt( "KCL_FLAG", "kcl-flag|kclflag", "CP", \ "joblist", \ "Modify the KCL flag of KCL files. A comma separated job list in the" \ " format @'srclist=dest'@ is expected. @'srclist'@ is a plus sign" \ " separated list with single values like @@, @T@ and" \ " @/@ or ranges like @:@, @T:@ and" \ " @:/@. @''@ is a complete KCL flag in the range" \ " of @0..0xffff@. @''@ are only the base types in the range of" \ " @0..0x1f@. If @@ is present, it marks the relevant bits. For" \ " the @T@ variant, the mask is set to @0x1f@.\n" \ " All KCL flags of the source list are assigned to the new value" \ " @'dest'@, but only the set bits of @''@ are modified. A later" \ " definition overrides the previous one." ) #:def_opt( "KCL_SCRIPT", "kcl-script|kclscript", "CP", \ "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." ) #:def_opt( "TRI_AREA", "tri-area|triarea", "GP", \ "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." ) #:def_opt( "TRI_HEIGHT", "tri-height|triheight|tri-ht|triht|kcl-min|kclmin", "GP", \ "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." ) #:def_opt( "FLAG_FILE", "flag-file|flagfile", "CP", \ "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')." ) #:def_opt( "KMP", "kmp", "GP", \ "list", \ "Set global options for KMP processing. Parameter @'list'@ is a comma" \ " separated list of keywords. A minus sign before a keyword disables a" \ " setting. Each occurrence of the option will only change entered" \ " settings and all other settings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings and @CLEAR@ disables" \ " all. The other allowed keywords are: @FORCE, NEW, RM-SPCITEM, LEFT," \ " RIGHT, WIDE, NARROW, FIX-CKPH, FIX-ENPH, FIX-ITPH, FIX-PH," \ " FIX-CKNEXT, FIX-CKJGPT, FIX-CK, FIX-ALL, MASK-PFLAGS, RM-LECODE," \ " PURGE-GOBJ, FULL-DEFOBJ, DUMP-CLASS, DUMP-ONEWAY, DUMP-ALL, 1LAP ..." \ " 9LAPS, MAX-LAPS, RM-EMPTY, TINY-0 ... TINY-7, INPLACE, SILENT@ and" \ " @LOG@." ) #:def_opt( "SPEED_MOD", "speed-mod|speedmod", "GP", \ "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." ) #:def_opt( "KTPT2", "ktpt2", "GP", \ "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." ) #:def_opt( "TFORM_KMP", "tform-kmp|tformkmp|tkmp", "GP", \ "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." ) #:def_opt( "REPAIR_XPF", "repair-xpflags|repairxpflags|repxpf", "CP", \ "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." ) #:def_opt( "GAMEMODES", "gamemodes|gmodes", "CP", \ "list", \ "Filter the list of combinations. The parameter is a comma separated" \ " list of keywords: @AUTO@: Add a automatic mode without conditions" \ " first. @STANDARD@ (or @STD@): Add standard modes. @1STANDARD@ (or" \ " @1STD@): Add standard modes first. @BALLOON@: Add balloon battle" \ " modes. @COIN@: Add coin runners modes. @BATTLE@: Short cut for" \ " 'BALLOON,COIN'. @VERSUS@ (or @VS@): Add versus modes. @ITEMRAIN@:" \ " Add itemrain modes. @RACE@: Short cut for 'VERSUS,ITEMRAIN'. @ALL@" \ " (default): Short cut for 'STANDARD,BATTLE,RACE'. @NO-MODES@: Exclude" \ " 'ALL' and create auto modes only. @ENGINE@: Include engine classes" \ " (default). @NO-ENGINE@: Exclude engine classes. @RANDOM@: Include" \ " random modes (default). @NO-RANDOM@: Exclude random modes." \ " @OFFLINE@: Filter offline modes. @ONLINE@: Filter online modes." \ " @NO-TT@: Exclude time trial. @TT@: Force a time trial scenario, even" \ " if it is a duplicate. @FULL@: Don't eliminate duplicates from list" \ " (up to 1573 modes). @NSORT@: Sort the list by name. @ISORT@: Sort" \ " the list by index. @DEBUG@: Print a debug info about this option." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress information lines in decoded KMP text files. This includes" \ " syntax information ({--no-header}). If set twice, the output of" \ " unneeded sections is also suppressed." ) #:def_opt( "EXPORT", "X|export", "C", \ "", \ "Enable the export mode and create small and machine readable text" \ " files for easy post processing. The option works similar like @-HBB@" \ " for KMP text files." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "EPSILON", "epsilon", "CP", \ "float", \ "When comparing floating point numbers, 2 numbers are considered" \ " identical if their difference is less than or equal to epsilon. The" \ " default value is @0.01@." ) #:def_opt( "DIFF", "diff", "CP", \ "list", \ "List of KMP sections names that should be compared. To select a" \ " section, use a combiantion of the following keywords: @AREA, CAME," \ " CNPT, CKPH, CKPT, ENPH, ENPT, GOBJ, ITPH, ITPT, JGPT, KTPT, MSPT," \ " POTI, STGI, NONE, GOOD, DEFAULT@ of @ALL@ (default). Additional" \ " keywords are @SORT@ (default) and @NOSORT@" ) #:def_opt( "GENERIC", "G|generic", "C", \ "", \ "Forget scanned entry names and use generic names for output." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KMP files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "TINY", "tiny", "GP", \ "mode", \ "Set tiny mode to a level between 0 and 7." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "TEST", "VERBOSE", \ "", \ "Print the matrices of transformations." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "CONST", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YPOS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NULL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NEXT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "AROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "KMP", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "WIM0", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SLOT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "BRIEF", \ "", \ "If set once, suppress vector dumps for transformation steps and" \ " ignore option --long. If set twice, suppress vector dump for final" \ " transformation too." ) #:def_cmd_opt( "MATRIX", "LONG", \ "", \ "If set once, print inverse matrix for the final transformation. If" \ " set twice, print inverse matrix for all transformations." ) #:def_cmd_opt( "MATRIX", "QUIET", \ "", \ "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." ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "CONST", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "SCALE", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "XSS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "YSS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "ZSS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "ROT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "XROT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "YROT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "ZROT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "YPOS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "NULL", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "NEXT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "AROT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "KMP", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "WIM0", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "SLOT", \ "", \ "" ) #:def_cmd_opt( "STARTPOS", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "OBJECTS", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "OBJECTS", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "OBJECTS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "OBJECTS", "BRIEF", \ "", \ "Don't print the file list and the info line(s). If set twice, only ID" \ " and object name is printed and option {--long} is ignored." ) #:def_cmd_opt( "OBJECTS", "LONG", \ "", \ "Print each setting starting on a new line. --long and {--brief} can" \ " be used together." ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "Suppress the syntax information section in KMP text files." ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_PARAM", \ "", \ "" ) #:def_cmd_opt( "CAT", "GENERIC", \ "", \ "" ) #:def_cmd_opt( "CAT", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "CAT", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "CAT", "WIM0", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "CONST", \ "", \ "" ) #:def_cmd_opt( "CAT", "SCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "YSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "YROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "YPOS", \ "", \ "" ) #:def_cmd_opt( "CAT", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NULL", \ "", \ "" ) #:def_cmd_opt( "CAT", "NEXT", \ "", \ "" ) #:def_cmd_opt( "CAT", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "AROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "CAT", "KMP", \ "", \ "" ) #:def_cmd_opt( "CAT", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "CAT", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "CAT", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "CAT", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "CAT", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "CAT", "SLOT", \ "", \ "" ) #:def_cmd_opt( "CAT", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "Suppress the syntax information section in KMP text files." ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_PARAM", \ "", \ "" ) #:def_cmd_opt( "DECODE", "GENERIC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "WIM0", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "CONST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YPOS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "KMP", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "DECODE", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "CONST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YPOS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "KMP", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "WIM0", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SLOT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "DIFF", "QUIET", \ "", \ "If set once, only a summary status is printed. If set twice, the" \ " status is only reported as exit status." ) #:def_cmd_opt( "DIFF", "EPSILON", \ "", \ "" ) #:def_cmd_opt( "DIFF", "DIFF", \ "", \ "" ) #:def_cmd_opt( "DIFF", "DEST", \ "", \ "" ) #:def_cmd_opt( "DIFF", "ESC", \ "", \ "" ) #:def_cmd_opt( "DRAW", "DRAW", \ "", \ "" ) #:def_cmd_opt( "DRAW", "POS_MODE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "POS_FILE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "PNG", \ "", \ "" ) #:def_cmd_opt( "DRAW", "DEST", \ "", \ "" ) #:def_cmd_opt( "DRAW", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ESC", \ "", \ "" ) #:def_cmd_opt( "DRAW", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DRAW", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DRAW", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NO_HEADER", \ "", \ "Suppress the syntax information section in KMP text files." ) #:def_cmd_opt( "DRAW", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DRAW", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NO_PARAM", \ "", \ "" ) #:def_cmd_opt( "DRAW", "GENERIC", \ "", \ "" ) #:def_cmd_opt( "DRAW", "BATTLE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "EXPORT_FLAGS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ROUTE_OPTIONS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "WIM0", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DRAW", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "CONST", \ "", \ "" ) #:def_cmd_opt( "DRAW", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "XSS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "YSS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ROT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "XROT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "YROT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "YPOS", \ "", \ "" ) #:def_cmd_opt( "DRAW", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NULL", \ "", \ "" ) #:def_cmd_opt( "DRAW", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DRAW", "AROT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "KMP", \ "", \ "" ) #:def_cmd_opt( "DRAW", "SPEED_MOD", \ "", \ "" ) #:def_cmd_opt( "DRAW", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "DRAW", "TFORM_KMP", \ "", \ "" ) #:def_cmd_opt( "DRAW", "REPAIR_XPF", \ "", \ "" ) #:def_cmd_opt( "DRAW", "RM_GOBJ", \ "", \ "" ) #:def_cmd_opt( "DRAW", "SLOT", \ "", \ "" ) #:def_cmd_opt( "DRAW", "LOAD_KCL", \ "", \ "" ) #:def_cmd_opt( "DRAW", "KCL_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "CHECK", "COLORS", \ "", \ "" ) #:def_cmd_opt( "CHECK", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "CHECK", "BRIEF", \ "", \ "Print only warnings and suppress hints." ) #:def_cmd_opt( "CHECK", "LONG", \ "", \ "Be verbose and print more statistics." ) #:def_cmd_opt( "CHECK", "QUIET", \ "", \ "Be quiet until the first warning or hint is found." ) #:def_cmd_opt( "CHECK", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CHECK", "GENERIC", \ "", \ "" ) #:def_cmd_opt( "CHECK", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CHECK", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "STGI", "COLORS", \ "", \ "" ) #:def_cmd_opt( "STGI", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "STGI", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "STGI", "IGNORE", \ "", \ "If set, ignore non existing source files and files without KMP" \ " without warning. If set twice, ignore files with standard settings" \ " too." ) #:def_cmd_opt( "KTPT", "COLORS", \ "", \ "" ) #:def_cmd_opt( "KTPT", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "KTPT", "KTPT2", \ "", \ "" ) #:def_cmd_opt( "KTPT", "IGNORE", \ "", \ "If set, ignore non existing source files and files without KMP" \ " without warning." ) #:def_cmd_opt( "KTPT", "LONG", \ "", \ "If set, compare each KTPT with each lap counter (some CKPT) and print" \ " positions, directions, distances and recommendations as wide table." ) #:def_cmd_opt( "ROUTES", "COLORS", \ "", \ "" ) #:def_cmd_opt( "ROUTES", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "ROUTES", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ROUTES", "IGNORE", \ "", \ "If set, ignore non existing source files and files without KMP" \ " without warning." ) #:def_cmd_opt( "GOBJ", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "GOBJ", "NO_HEADER", \ "", \ "Suppress head and foot lines." ) #:def_cmd_opt( "GOBJ", "BRIEF", \ "", \ "Print only summary for each object category. If set twice, print a" \ " status vector only." ) #:def_cmd_opt( "GOBJ", "LONG", \ "", \ "?" ) #:def_cmd_opt( "GAMEMODES", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "GAMEMODES", "GAMEMODES", \ "", \ "" ) #:def_cmd_opt( "GAMEMODES", "NO_HEADER", \ "", \ "Suppress head and foot lines." ) #:def_cmd_opt( "GAMEMODES", "BRIEF", \ "", \ "Print only the scenario version and configuration name. If set twice," \ " suppress ead and foot lines too." ) #:def_cmd_opt( "GAMEMODES", "LONG", \ "", \ "If set, print a status vector for each GOBJ element too: '-': Object" \ " diabled; '=': Object diabled by presence flags, but visible before" \ " race; '+': Object enabled; 'e': Depends on engine; 'r': Depends on" \ " random scenario; 'b': Defintion object of type BITS; 'o': Defintion" \ " object of type OR; 'a': Defintion object of type AND." ) #:def_cmd_opt( "WIM0", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "WIM0", "LONG", \ "", \ "If set, disable table format and append a full hexdump for each WIM0" \ " section." ) ## ############################################################################### ############### Tool 'wlect' ############### ############################################################################### #:def_tool( "wlect", \ "wlect [option]... command [option|parameter|@file]...", \ "Wiimms LE-CODE Tool : Manage the $LE-CODE$ and LEX extensions." ) #:def_cmd( "VERSION", "VERSION", \ "wlect VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wlect HELP [--width=wd] OPT|OPTION ...\n" \ "wlect HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wlect HELP [--width=wd] command [-b] [ignored]...\n" \ "wlect HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wlect CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wlect ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wlect 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." ) #:def_cmd( "COLORS", "COLORS", \ "wlect COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wlect ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wlect FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wlect 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')." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wlect SYMBOLS", \ "Print predefined symbols of text parser to standard output. The" \ " LE-CODE specific symbols are included." ) #:def_cmd( "FUNCTIONS", "FUNCTIONS", \ "wlect FUNCTIONS [key]...", \ "Print a list with all parser functions including the LE-CODE specific" \ " functions. If one key ore more key entered, then only functions that" \ " match at least one key are printed." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wlect CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #:def_cmd( "FLOAT", "FLOAT", \ "wlect 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." ) #:def_cmd( "DUMP", "DUMP|D", \ "wlect DUMP [source]...", \ "Print an information dump for each source file. LE-CODE binaries and" \ " LEX binaries are accepted as input." ) #:def_cmd( "DL", "DL", \ "wlect DL [source]...", \ "Short cut for {DUMP --long}." ) #:def_cmd( "DLL", "DLL", \ "wlect DLL [source]...", \ "Short cut for {DUMP --long --long}." ) #:def_cmd( "BIN_DIFF", "BIN-DIFF|BINDIFF|BD", \ "wlect BIN-DIFF settings binary1 binary2", \ "Compare parts of 2 different LECODE binary files. @SETTINGS@ is a" \ " string with plus and minus signs to switch between plus/minus modes," \ " and some key letters to select parts: s:size, h:header, t:timestamp," \ " b:body, p:parameters, d:data, c:code and a:all. In plus-mode, a test" \ " is enabled, in minus-mode it is disabled. Scanning starts in" \ " plus-mode.\n" \ " Example: @a-t@: compare all except timestamps.\n" \ " The exist status is @OK@ (0) if nothing differ, @DIFFER@ (2) if at" \ " least one test failed, or an error code." ) #:def_cmd( "PATCH", "PATCH|P", \ "wlect PATCH [le_bin]...", \ "Read each LE-BIN file and patch it. Use {--le-define} to setup cups" \ " and tracks." ) #:def_cmd( "LPAR", "LPAR", \ "wlect LPAR [le_bin]...", \ "Read each LE-BIN file and patch it. Then extract the LE-CODE" \ " parameters and store them as LPAR text file. Print the result to" \ " standard output if no other destination is defined." ) #:def_cmd( "CREATE", "CREATE|CR", \ "wlect CREATE [keyword]", \ "Create a file and print it to standard output. The kind of file is" \ " defined by KEYWORD. Use command without keywords to get a list of" \ " possible keywords.\n" \ " The following keywords are possible: @LEX@ for a LEX text file with" \ " all known sections except @TEST@. @LEX+@ for a LEX text file with" \ " all known sections including @TEST@. @SET1, CANN, HIPT@ and @TEST@" \ " (section names) for a LEX text file with 1 section only. @LPAR@ for" \ " an example LE-CODE parameter file." ) #:def_cmd( "CAT", "CAT", \ "wlect CAT [source]...", \ "Read the entered LEX and LE-CODE files (text, binary or szs) and" \ " print them as decoded text files to standard output. The output of" \ " all source files is concatenated." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wlect DECODE [source]...", \ "Read the entered LEX files (text or binary) and decode them to text" \ " files. The default destination is @'%P/%N.txt'@." ) #:def_cmd( "ENCODE", "ENCODE|ENC", \ "wlect ENCODE source...", \ "Read the entered LEX files (text or binary) and encode (compile) them" \ " to binary files. The default destination is @'%P/%N.lex'@." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress cross reference comments." ) #:def_opt( "EXPORT", "X|export", "C", \ "", \ "Enable the export mode and create small and machine readable text" \ " files for easy post processing." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "LT_CLEAR", "lt-clear|ltclear", "C", \ "", \ "Clear LEX section TEST and remove the section if empty. This option" \ " is executed before all other --lt-* options." ) #:def_opt( "LT_ONLINE", "lt-online|ltonline", "CP", \ "value", \ "Set LEX/TEST parameter OFFLINE-ONLINE to this MODE. MODE is one of" \ " @AUTO@ (default), @NEVER@ or @ALWAYS@. If needed, LEX section TEST" \ " is created or removed if empty." ) #:def_opt( "LT_N_PLAYERS", "lt-n-players|lt-nplayers|ltnplayers", "CP", \ "offline,online", \ "Set LEX/TEST parameters N-OFFLINE and N-ONLINE to these integer" \ " values. If needed, LEX section TEST is created or removed if empty." ) #:def_opt( "LT_COND_BIT", "lt-cond-bit|lt-condbit|ltcondbit", "GP", \ "bitnum", \ "Set LEX/TEST parameter COND-BIT to this integer value. Use -1 to" \ " deactivate this COND-BIT. If needed, LEX section TEST are created or" \ " removed if empty." ) #:def_opt( "LT_GAME_MODE", "lt-game-mode|lt-gamemode|ltgamemode", "GP", \ "mode", \ "Set LEX/TEST parameter GAME-MODE to this MODE. MODE is one of @AUTO@" \ " (default), @Balloon, COIN, VERSUS@ or @ITEMRAIN@. If needed, LEX" \ " section TEST is created or removed if empty." ) #:def_opt( "LT_ENGINE", "lt-engine|ltengine", "GP", \ "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, LEX section TEST is created" \ " or removed if empty." ) #:def_opt( "LT_RANDOM", "lt-random|ltrandom", "GP", \ "index", \ "Force a random scenario, if between 1 and 8. Value 0 enables auto" \ " selection and -1 disables this option. If needed, LEX section TEST" \ " is created or removed if empty." ) #:def_opt( "LEX_PURGE", "lex-purge|lexpurge", "G", \ "", \ "Delete LEX sections without any impact. This option is executed after" \ " all --lt-* options." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "LE_DEFINE", "le-define|ledefine", "CP", \ "file", \ "Use this file as definition file to patch LE-CODE. The file format" \ " can be LE-BIN or any supported CT-CODE file (BRRES, TEX0, CT-CODE or" \ " CT-TEXT)." ) #:def_opt( "LPAR", "lpar", "CP", \ "file", \ "Read a LPAR file to overwrite settings of LE-CODE section LPAR." ) #:def_opt( "ALIAS", "alias", "CP", \ "list", \ "The parameter is a comma separated list of @SLOT=ALIAS@ elements." \ " SLOT defines the slot, for which the ALIAS is defined. ALIAS itself" \ " is a slot number to be executed, if SLOT is selected. Empty and" \ " invalid elements are ignored. Multiple usage is possible: the lists" \ " are concatenated." ) #:def_opt( "ENGINE", "engine", "CP", \ "list", \ "Define probabilities for engine classes. @LIST@ is a vector for" \ " @100cc,150cc,mirror@ If 200cc is enabled by {--200cc}, then vector" \ " is interpreted as @150cc,200cc,mirror@. Any numbers are accepted." \ " They are normalized to get a total of 100 percent. Use @0,1,0@ to" \ " force 150cc only. Use @0,0,0@ to reset to Nintendos VR based choice." ) #:def_opt( "200CC", "200cc", "CO", \ "[=mode]", \ "Enable or disable 200cc support. Mode is one of @OFF@, @AUTO@" \ " (default) or @ON@ (default, if option is used without parameter)." \ " LE-CODE hasn't implemented this feature yet!" ) #:def_opt( "PERFMON", "perf-mon|perfmon", "CO", \ "[=mode]", \ "Enable or disable the performance monitor. Mode is one of @OFF@," \ " @AUTO@ (default, don't change setting), @ON@ (enable it for Wii and" \ " Wii U only; default, if option is used without parameter) or @FORCE@" \ " (enable it for Wii, Wii U and for Dolphin)." ) #:def_opt( "CUSTOM_TT", "custom-tt|customtt", "CO", \ "[=mode]", \ "Enable or disable time trial for custom tracks. Mode is one of @OFF@," \ " @AUTO@ (default) or @ON@ (default, if option is used without" \ " parameter)." ) #:def_opt( "XPFLAGS", "xpflags", "CO", \ "[=mode]", \ "Enable or disable support for Extended Presence Flags. Mode is one of" \ " @OFF@, @AUTO@ (default) or @ON@ (default, if option is used without" \ " parameter). Disable it only for tests!" ) #:def_opt( "SPEEDOMETER", "speedometer", "CO", \ "[=mode]", \ "Enable or disable the speedometer. Mode is one of @OFF@, @AUTO@" \ " (default, don't change setting), @ON@ (default, if option is used" \ " without parameter) or @FRACTION@ (=@1DIGIT@), @2DIGITS@ and" \ " @3DIGITS@." ) #:def_opt( "DEBUG", "debug", "CP", \ "mode", \ "Enable or disable the debug output while racing. Mode is one of" \ " @OFF@, @AUTO@ (default, don't change setting), @USER@ or @100@ to" \ " @199@ for predefined setups." ) #:def_opt( "TRACK_DIR", "track-dir|trackdir", "CP", \ "directory", \ "Define a destination directory, where track files are copied, moved" \ " or linked to. Usually it is @.../Race/Course/@.\n" \ " Files are searched in directories defined by {--copy-tracks}," \ " {--move-tracks}, {--move1-tracks} and {--link-tracks} in definition" \ " order. Already existing files are removed before operation." ) #:def_opt( "COPY_TRACKS", "copy-tracks|copytracks", "CMP", \ "directory", \ "Define a search directory for all included tracks. Files found in" \ " this directory are copied to the directory specified by option" \ " {--track-dir}." ) #:def_opt( "MOVE_TRACKS", "move-tracks|movetracks", "CMP", \ "directory", \ "Define a search directory for all included tracks. Files found in" \ " this directory are moved to the directory specified by option" \ " {--track-dir}. If moving fails, the file is copied and the source" \ " removed." ) #:def_opt( "MOVE1_TRACKS", "move1-tracks|move1tracks", "CMP", \ "directory", \ "Define a search directory for all included tracks. Files found in" \ " this directory are moved to the directory specified by option" \ " {--track-dir}, but only if a file has not more than one hard link." \ " This guarantees an unique version of the file. If the file has more" \ " hard links or moving fails, the file is copied and the source" \ " removed." ) #:def_opt( "LINK_TRACKS", "link-tracks|linktracks", "CMP", \ "directory", \ "Define a search directory for all included tracks. Files found in" \ " this directory are linked to the directory specified by option" \ " {--track-dir}. If linking fails, the file is copied." ) #:def_opt( "COMPLETE", "C|complete", "C", \ "", \ " Append missing sections to the LEX file." ) #:def_opt( "LOAD_BMG", "load-bmg|loadbmg", "CMP", \ "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." ) #:def_opt( "PATCH_BMG", "patch-bmg|patchbmg|pb", "CMP", \ "mode[cond][=param]", \ "This option specifies a BMG patch mode. Some of the modes need a" \ " parameter or a file name of a BMG patch file (raw or text BMG), both" \ " separated by an equal sign. Modes with required file names are" \ " @PRINT, REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL@ and" \ " @NOTEQUAL@. Modes with text parameter are @FORMAT@, @REGEXP@ and" \ " @RM-REGEXP@. Standalone modes are @ID, ID-ALL, UNICODE, RM-ESCAPES," \ " RM-CUPS, CT-COPY, CT-FORCE-COPY, CT-FILL, LE-COPY, LE-FORCE-COPY," \ " LE-FILL, X-COPY, X-FORCE-COPY@ and @X-FILL@. Unique abbreviations" \ " are allowed.\n" \ " The optional condition @COND@ is either '@?MID@' or '@!MID@'. In" \ " case of '@?MID@', the patch is only applied if the message id MID" \ " already exists. In case of '@!MID@', the patch is only applied if" \ " the message id MID does not exists.\n" \ " If this option is used multiple times, all patch files will be" \ " processed in the entered order." ) #:def_opt( "MACRO_BMG", "macro-bmg|macrobmg|mb", "CMP", \ "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." ) #:def_opt( "PATCH_NAMES", "patch-names|patchnames", "C", \ "", \ "If set, the names of the CUP1 and CSR1 sections are patched by the" \ " loaded BMG files directly after loading the source files." ) #:def_opt( "ORDER_BY", "order-by|orderby|order", "CP", \ "bmg", \ "Load the BMG file and filter track names. Then before creating output" \ " files, re-distribute the tracks of the additonal cups (9-) to the" \ " same cups by the order of the read track names. Tracks without BMG" \ " reference are placed at the end of all tracks. This option modifes" \ " only the track order of the cups, but will not change any name." ) #:def_opt( "ORDER_ALL", "order-all|orderall", "C", \ "", \ "Used together with option {--order-by}: Re-distribute the tracks of" \ " all cups beginning with Mushroom Cup." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "DUMP", "LE_DEFINE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "LPAR", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ALIAS", \ "", \ "" ) #:def_cmd_opt( "DUMP", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "DUMP", "200CC", \ "", \ "" ) #:def_cmd_opt( "DUMP", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "DUMP", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "DUMP", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "DUMP", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "DUMP", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "DUMP", "LONG", \ "", \ "For LE-CODE binaries: If set, print cups with tracks or arenas. For" \ " each track, property and music slot is printed in brackets. If set" \ " twice, print a track list too.\n" \ " For LEX binaries: If set, print a hex dump of max 16 bytes (1 line)" \ " of the element data. If set twice, print a hex dump of max 64 bytes" \ " (4 lines). If set 3 times ore more, print a complete hex dump." ) #:def_cmd_opt( "DUMP", "VERBOSE", \ "", \ "For LE-CODE binaries: If set, print a track slot usage table." ) #:def_cmd_opt( "DL", "LE_DEFINE", \ "", \ "" ) #:def_cmd_opt( "DL", "LPAR", \ "", \ "" ) #:def_cmd_opt( "DL", "ALIAS", \ "", \ "" ) #:def_cmd_opt( "DL", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "DL", "200CC", \ "", \ "" ) #:def_cmd_opt( "DL", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "DL", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "DL", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "DL", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "DL", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "DL", "LONG", \ "", \ "For LE-CODE binaries: If set, print cups with tracks or arenas. For" \ " each track, property and music slot is printed in brackets. If set" \ " twice, print a track list too.\n" \ " For LEX binaries: If set, print a hex dump of max 16 bytes (1 line)" \ " of the element data. If set twice, print a hex dump of max 64 bytes" \ " (4 lines). If set 3 times ore more, print a complete hex dump." ) #:def_cmd_opt( "DL", "VERBOSE", \ "", \ "For LE-CODE binaries: If set, print a track slot usage table." ) #:def_cmd_opt( "DLL", "LE_DEFINE", \ "", \ "" ) #:def_cmd_opt( "DLL", "LPAR", \ "", \ "" ) #:def_cmd_opt( "DLL", "ALIAS", \ "", \ "" ) #:def_cmd_opt( "DLL", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "DLL", "200CC", \ "", \ "" ) #:def_cmd_opt( "DLL", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "DLL", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "DLL", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "DLL", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "DLL", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "DLL", "LONG", \ "", \ "For LE-CODE binaries: If set, print cups with tracks or arenas. For" \ " each track, property and music slot is printed in brackets. If set" \ " twice, print a track list too.\n" \ " For LEX binaries: If set, print a hex dump of max 16 bytes (1 line)" \ " of the element data. If set twice, print a hex dump of max 64 bytes" \ " (4 lines). If set 3 times ore more, print a complete hex dump." ) #:def_cmd_opt( "DLL", "VERBOSE", \ "", \ "For LE-CODE binaries: If set, print a track slot usage table." ) #:def_cmd_opt( "BIN_DIFF", "QUIET", \ "", \ "Suppress all messages and tell result as exit status only." ) #:def_cmd_opt( "BIN_DIFF", "VERBOSE", \ "", \ "Be more verbose and tell, what tests are planned." ) #:def_cmd_opt( "PATCH", "LE_DEFINE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "LPAR", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ALIAS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "200CC", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "PATCH", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "PATCH", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "PATCH", "TRACK_DIR", \ "", \ "" ) #:def_cmd_opt( "PATCH", "COPY_TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MOVE_TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MOVE1_TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "LINK_TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST2", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ESC", \ "", \ "" ) #:def_cmd_opt( "PATCH", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "LE_DEFINE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "LPAR", \ "", \ "" ) #:def_cmd_opt( "LPAR", "ALIAS", \ "", \ "" ) #:def_cmd_opt( "LPAR", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "200CC", \ "", \ "" ) #:def_cmd_opt( "LPAR", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "LPAR", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "LPAR", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "LPAR", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "LPAR", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "LPAR", "DEST", \ "", \ "" ) #:def_cmd_opt( "LPAR", "DEST2", \ "", \ "" ) #:def_cmd_opt( "LPAR", "ESC", \ "", \ "" ) #:def_cmd_opt( "LPAR", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "LPAR", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "LPAR", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "LPAR", "NO_HEADER", \ "", \ "Suppress the syntax information section in LE text files." ) #:def_cmd_opt( "LPAR", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "LPAR", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CREATE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_HEADER", \ "", \ "Suppress the syntax information section in LE text files." ) #:def_cmd_opt( "CREATE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CREATE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEST", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ESC", \ "", \ "" ) #:def_cmd_opt( "CREATE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "CREATE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "CREATE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LPAR", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_CLEAR", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_ONLINE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_N_PLAYERS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_COND_BIT", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_GAME_MODE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_ENGINE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LT_RANDOM", \ "", \ "" ) #:def_cmd_opt( "CREATE", "LEX_PURGE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "ENGINE", \ "", \ "" ) #:def_cmd_opt( "CREATE", "200CC", \ "", \ "" ) #:def_cmd_opt( "CREATE", "PERFMON", \ "", \ "" ) #:def_cmd_opt( "CREATE", "CUSTOM_TT", \ "", \ "" ) #:def_cmd_opt( "CREATE", "XPFLAGS", \ "", \ "" ) #:def_cmd_opt( "CREATE", "SPEEDOMETER", \ "", \ "" ) #:def_cmd_opt( "CREATE", "DEBUG", \ "", \ "" ) #:def_cmd_opt( "CAT", "COMPLETE", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "Suppress the syntax information section in LE text files." ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "COMPLETE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "Suppress the syntax information section in LE text files." ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "EXPORT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "COMPLETE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) ## ############################################################################### ############### Tool 'wmdlt' ############### ############################################################################### #:def_tool( "wmdlt", \ "wmdlt [option]... command [option|parameter|@file]...", \ "Wiimms MDL Tool : Decode raw MDL and encode text MDL files." ) #:def_cmd( "VERSION", "VERSION", \ "wmdlt VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wmdlt HELP [--width=wd] OPT|OPTION ...\n" \ "wmdlt HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wmdlt HELP [--width=wd] command [-b] [ignored]...\n" \ "wmdlt HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wmdlt CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wmdlt ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wmdlt 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." ) #:def_cmd( "COLORS", "COLORS", \ "wmdlt COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wmdlt ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wmdlt FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wmdlt 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')." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wmdlt SYMBOLS", \ "Print predefined symbols of text parser to standard output. The MDL" \ " specific symbols are included." ) #:def_cmd( "FUNCTIONS", "FUNCTIONS", \ "wmdlt FUNCTIONS [key]...", \ "Print a list with all parser functions including the MDL specific" \ " functions. If one key ore more key entered, then only functions that" \ " match at least one key are printed." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wmdlt CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #:def_cmd( "MATRIX", "MATRIX", \ "wmdlt MATRIX [patch-option]... [vector]...", \ "Use the transformation options as base and calculate and print the" \ " related vectors and the transformation matrices. Then do a forward" \ " and backward transformation for each @vector@ parameter using the" \ " matrices and print the results.", \ "Use the transformation options as base and calculate and print the" \ " related vectors and the transformation matrices. Then do a forward" \ " and backward transformation for each @vector@ parameter using the" \ " matrices and print the results. The transformations are done with 4" \ " different methods to confirm the algorithms. Only the main results" \ " and results, which differ, are printed.\n" \ " Normally, the exit status is @OK@ (null). If at least one old" \ " transformation returns different results for the different" \ " algorithms, then status @DIFFER@ (not null) is returned." ) #:def_cmd( "FLOAT", "FLOAT", \ "wmdlt 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." ) #:def_cmd( "CAT", "CAT", \ "wmdlt CAT [source]...", \ "Read the entered MDL files (text or binary) and print them as decoded" \ " text files to standard output (stdout). The output of all source" \ " files is concatenated.\n" \ " A decoded MDL0 file can only be used for analysis. Encoding or" \ " creating a new MDL0 file is not supported." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wmdlt DECODE [source]...", \ "Read the entered MDL files (text or binary) and decode them to text" \ " files. The default destination is @'%P/%N.txt'@.\n" \ " A decoded MDL0 file can only be used for analysis. Encoding or" \ " creating a new MDL0 file is not supported." ) #:def_cmd( "STRINGS", "STRINGS", \ "wmdlt STRINGS [source]...", \ "Read the entered MDL files (text or binary) and print all strings of" \ " all sections.\n" \ " For archives like SZS or BREES, the strings of each containing MDL" \ " are printed. It is also possible to address an internal sub-file" \ " like @track.szs/course_model.brres@." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "MDL", "mdl", "GP", \ "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@." ) #:def_opt( "SCALE", "scale", "CP", \ "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." ) #:def_opt( "SHIFT", "shift", "CP", \ "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." ) #:def_opt( "XSS", "xss", "CP", \ "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." ) #:def_opt( "YSS", "yss", "CP", \ "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." ) #:def_opt( "ZSS", "zss", "CP", \ "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." ) #:def_opt( "ROT", "rot", "CP", \ "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." ) #:def_opt( "XROT", "xrot", "CP", \ "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." ) #:def_opt( "YROT", "yrot|hrot", "CP", \ "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." ) #:def_opt( "ZROT", "zrot", "CP", \ "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." ) #:def_opt( "TRANSLATE", "translate", "CP", \ "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." ) #:def_opt( "NULL", "null", "C", \ "", \ "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." ) #:def_opt( "NEXT", "next", "C", \ "", \ "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." ) #:def_opt( "ASCALE", "ascale", "CP", \ "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!" ) #:def_opt( "AROT", "arot", "CP", \ "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!" ) #:def_opt( "TFORM_SCRIPT", "tform-script|tformscript", "CP", \ "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." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress cross reference comments." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KMP files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "TINY", "tiny", "GP", \ "mode", \ "Set tiny mode to a level between 0 and 7." ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "TEST", "VERBOSE", \ "", \ "Print the matrices of transformations." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZSS", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "XROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "YROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ZROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NULL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "AROT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "NEXT", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "MDL", \ "", \ "" ) #:def_cmd_opt( "MATRIX", "BRIEF", \ "", \ "If set once, suppress vector dumps for transformation steps and" \ " ignore option --long. If set twice, suppress vector dump for final" \ " transformation too." ) #:def_cmd_opt( "MATRIX", "LONG", \ "", \ "If set once, print inverse matrix for the final transformation. If" \ " set twice, print inverse matrix for all transformations." ) #:def_cmd_opt( "MATRIX", "QUIET", \ "", \ "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." ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "Suppress the syntax information section in MDL text files." ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "CAT", "SCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "YSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZSS", \ "", \ "" ) #:def_cmd_opt( "CAT", "ROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "XROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "YROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "ZROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NULL", \ "", \ "" ) #:def_cmd_opt( "CAT", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "CAT", "AROT", \ "", \ "" ) #:def_cmd_opt( "CAT", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "CAT", "NEXT", \ "", \ "" ) #:def_cmd_opt( "CAT", "MDL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "Suppress the syntax information section in MDL text files." ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "MDL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZSS", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "XROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "YROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ZROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NULL", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "AROT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NEXT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "MDL", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "NO_HEADER", \ "", \ "Suppress the syntax information section in MDL text files." ) #:def_cmd_opt( "STRINGS", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "SCALE", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "XSS", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "YSS", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "ZSS", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "ROT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "XROT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "YROT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "ZROT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "NULL", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "AROT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "NEXT", \ "", \ "" ) #:def_cmd_opt( "STRINGS", "MDL", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "NO_HEADER", \ "", \ "Suppress the syntax information section in MDL text files." ) #:def_cmd_opt( "GEOMETRY", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "SCALE", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "XSS", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "YSS", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "ZSS", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "ROT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "XROT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "YROT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "ZROT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "NULL", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "AROT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "NEXT", \ "", \ "" ) #:def_cmd_opt( "GEOMETRY", "MDL", \ "", \ "" ) #:def_cmd_opt( "XTEST", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "XTEST", "NO_HEADER", \ "", \ "Suppress the syntax information section in MDL text files." ) #:def_cmd_opt( "XTEST", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "XTEST", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "XTEST", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "XTEST", "SCALE", \ "", \ "" ) #:def_cmd_opt( "XTEST", "SHIFT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "XSS", \ "", \ "" ) #:def_cmd_opt( "XTEST", "YSS", \ "", \ "" ) #:def_cmd_opt( "XTEST", "ZSS", \ "", \ "" ) #:def_cmd_opt( "XTEST", "ROT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "XROT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "YROT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "ZROT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "TRANSLATE", \ "", \ "" ) #:def_cmd_opt( "XTEST", "NULL", \ "", \ "" ) #:def_cmd_opt( "XTEST", "ASCALE", \ "", \ "" ) #:def_cmd_opt( "XTEST", "AROT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "TFORM_SCRIPT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "NEXT", \ "", \ "" ) #:def_cmd_opt( "XTEST", "MDL", \ "", \ "" ) ## ############################################################################### ############### Tool 'wpatt' ############### ############################################################################### #:def_tool( "wpatt", \ "wpatt [option]... command [option|parameter|@file]...", \ "Wiimms PAT Tool : Decode raw PAT and encode text PAT files." ) #:def_cmd( "VERSION", "VERSION", \ "wpatt VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wpatt HELP [--width=wd] OPT|OPTION ...\n" \ "wpatt HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wpatt HELP [--width=wd] command [-b] [ignored]...\n" \ "wpatt HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wpatt CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wpatt ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wpatt 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." ) #:def_cmd( "COLORS", "COLORS", \ "wpatt COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wpatt ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wpatt FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wpatt 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')." ) #:def_cmd( "SYMBOLS", "SYMBOLS", \ "wpatt SYMBOLS", \ "Print predefined symbols of text parser to standard output. The PAT" \ " specific symbols are included." ) #:def_cmd( "FUNCTIONS", "FUNCTIONS", \ "wpatt FUNCTIONS [key]...", \ "Print a list with all parser functions including the PAT specific" \ " functions. If one key ore more key entered, then only functions that" \ " match at least one key are printed." ) #:def_cmd( "CALCULATE", "CALCULATE", \ "wpatt CALCULATE expression...", \ "Calculate each expression and print the result to standard output." ) #:def_cmd( "FLOAT", "FLOAT", \ "wpatt 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." ) #:def_cmd( "CAT", "CAT", \ "wpatt CAT [source]...", \ "Read the entered PAT files (text or binary) and print them as decoded" \ " text files to standard output (stdout). The output of all source" \ " files is concatenated." ) #:def_cmd( "DECODE", "DECODE|DEC", \ "wpatt DECODE [source]...", \ "Read the entered PAT files (text or binary) and decode them to text" \ " files. The default destination is @'%P/%N.txt'@." ) #:def_cmd( "ENCODE", "ENCODE|ENC", \ "wpatt ENCODE [source]...", \ "Read the entered PAT files (text or binary) and encode (compile) them" \ " to binary files. The default destination is @'%P/%N.pat'@." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "ROUND", "round", "C", \ "", \ "Print additional lines with rounded values (to 3 and 2 bytes for" \ " floats and 7 and 6 bytes for doubles)." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "Suppress cross reference comments." ) #:def_opt( "NO_PARAM", "P|no-param|noparam", "C", \ "", \ "Disable parameter support in decoded KMP text files." ) #:def_opt( "NO_ECHO", "no-echo|noecho", "C", \ "", \ "Suppress output of @@ECHO commands while scanning text files." ) #:def_opt( "NO_CHECK", "N|no-check|nocheck", "C", \ "", \ "Do not make plausibility checks for KMP files." ) #:def_opt( "MAX_FILE_SIZE", "M|max-file-size|maxfilesize", "GP", \ "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." ) #:def_opt( "PAT", "pat", "GP", \ "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@." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "SYMBOLS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "FUNCTIONS", "BRIEF", \ "", \ "Suppress the output of the description and print only function type" \ " and syntax." ) #:def_cmd_opt( "FUNCTIONS", "LONG", \ "", \ "Usually only the function syntax is compared to the keywords. But if" \ " --long is set, the descriptions are compared too." ) #:def_cmd_opt( "CALCULATE", "CONST", \ "", \ "" ) #:def_cmd_opt( "FLOAT", "ROUND", \ "", \ "" ) #:def_cmd_opt( "CAT", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_HEADER", \ "", \ "Suppress the syntax information section in PAT text files." ) #:def_cmd_opt( "CAT", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "CAT", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DECODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PAT", \ "", \ "" ) #:def_cmd_opt( "DECODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "DECODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "DECODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_HEADER", \ "", \ "Suppress the syntax information section in PAT text files." ) #:def_cmd_opt( "DECODE", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "DECODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "DEST2", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "ESC", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PAT", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_ECHO", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "NO_CHECK", \ "", \ "" ) #:def_cmd_opt( "ENCODE", "IGNORE", \ "", \ "" ) ## ############################################################################### ############### Tool 'wstrt' ############### ############################################################################### #:def_tool( "wstrt", \ "wstrt [option]... command [option|parameter|@file]...", \ "Wiimms StaticR Tool : Manipulate the 'main.dol' and 'StaticR.rel'" \ " files of Mario Kart Wii." ) #:def_cmd( "VERSION", "VERSION", \ "wstrt VERSION [ignored]...", \ "Print program name and version and exit." ) #:def_cmd( "HELP", "HELP|H|?", \ "wstrt HELP [--width=wd] OPT|OPTION ...\n" \ "wstrt HELP [--width=wd] CMD|COMMAND [ignored]...\n" \ "wstrt HELP [--width=wd] command [-b] [ignored]...\n" \ "wstrt HELP [--width=wd] [ignored]...", \ "Print help for commands and options.", \ "Print help for commands and options.\n" \ " The first variant (with keyword @OPT@ or @OPTION@) prints a list of" \ " all global and command specific options. If at least one option is" \ " set, only info about the declared options are printed. The second" \ " variant (with keyword @CMD@ or @COMMAND@) prints an overview about" \ " all commands. The third variant (with a valid command name) prints" \ " details about the declared command. The fourth variant prints an" \ " overview about all commands and all global options." ) #:def_cmd( "CONFIG", "CONFIG", \ "wstrt CONFIG [options]...", \ "Show all information about the search for the configuration file and" \ " its content." ) #:def_cmd( "ARGTEST", "ARGTEST", \ "wstrt ARGTEST ...", \ "This debug command accepts all kinds of parameters and prints one" \ " line for each parameter." ) #:def_cmd( "TEST", "TEST", \ "wstrt 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." ) #:def_cmd( "COLORS", "COLORS", \ "wstrt COLORS", \ "Ignore all parameters and print colored text for testing." ) #:def_cmd( "ERROR", "ERROR|ERR", \ "wstrt ERROR [error_code]", \ "Translate an exit code to a message name. If no exit code is entered," \ " print a table with all error messages." ) #:def_cmd( "FILETYPE", "FILETYPE|FT", \ "wstrt FILETYPE file...", \ "Scan the header of the entered files and print file type and path for" \ " each file as list." ) #:def_cmd( "FILEATTRIB", "FILEATTRIB|FA", \ "wstrt 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')." ) #:def_cmd( "DUMP", "DUMP", \ "wstrt DUMP file...", \ "Dump the structure of REL files (e.g. @StaticR.rel@) and of DOL files" \ " (e.g. @main.dol@) as text." ) #:def_cmd( "HEXDUMP", "HEXDUMP|XDUMP", \ "wstrt HEXDUMP file...", \ "Dump the content of DOL files as hex dump and use virtual addresses." \ " Select parts by --vaddr, --faddr and --sname. Without selectors, the" \ " whole file is dumped." ) #:def_cmd( "PORT", "PORT", \ "wstrt PORT param...", \ "The command expects a list of keywords or hex numbers. Keywords are" \ " @PAL@ (default), @USA@, @JAPAN@, @KOREA@, or any abbreviation of" \ " them. They select the region for the following addresses. The hex" \ " numbers (with or without @0x@ prefix) are interpreted as addresses." \ " If an address begins with @m@ or @s@, then it is interpreted as a" \ " file offset for @main.dol@ or @staticr.rel@. All addresses are" \ " ported to all other regions. The result is printed as colorized" \ " table." ) #:def_cmd( "WHERE", "WHERE", \ "wstrt WHERE address...", \ "A list of addresses in hex format is expected as input. The segments" \ " in which the specified addresses are located is calculated for each" \ " region. The result is output as a human and machine readable table.\n" \ " This command is well suited to converting addresses into file" \ " offsets and vice versa." ) #:def_cmd( "EXTRACT", "EXTRACT|X", \ "wstrt EXTRACT dol...", \ "Extract the sections of a DOL or a REL file into a directory." ) #:def_cmd( "TRACKS", "TRACKS", \ "wstrt TRACKS [file]...", \ "Show track infos in the order of the 'StaticR.rel' files. If no file" \ " is entered, the standard order is used." ) #:def_cmd( "ARENAS", "ARENAS", \ "wstrt ARENAS [file]...", \ "Show arena infos in the order of the 'StaticR.rel' files. If no file" \ " is entered, the standard order is used." ) #:def_cmd( "FILES", "FILES", \ "wstrt FILES [file]...", \ "List track and arena file names in machine readable format. Use the" \ " order of the entered 'StaticR.rel' files. If no file is entered, the" \ " standard order is used." ) #:def_cmd( "FIND", "FIND", \ "wstrt FIND [+]TRACK keyword...\n" \ "wstrt FIND [+]ARENA keyword...", \ "Find a track or arena by keyword and print one line for each keyword" \ " in machine readable format @'type slot'@ or, if not found, a simple" \ " @'-'@. The name is searched in the entered context (tracks or" \ " arenas). If @TRACK@ or @ARENA@ is prefixed by a plus, then a failed" \ " search will be continued in the other context. If at least one name" \ " is not found, the tool terminates with exit code @NOT_EXISTS@." ) #:def_cmd( "POINTS", "POINTS|PTS", \ "wstrt POINTS [--points=list] [file]...", \ "Print a table with the points assigned to player after a versus or" \ " room race for each entered file. If no file is entered, the standard" \ " table is used. However, if option {--points} is set only the" \ " resulting table is printed." ) #:def_cmd( "ANALYZE", "ANALYZE|ANA|ANALYSE", \ "wstrt ANALYZE [file]...", \ "Open 'StaticR.rel' and DOL files and analyze them. The files will be" \ " classified using SHA1 checksums." ) #:def_cmd( "PATCH", "PATCH", \ "wstrt PATCH [file]...", \ "Patch 'main.dol and 'StaticR.rel' files of Mario Kart Wii. No backup" \ " is made." ) #:def_opt( "VERSION", "V|version", "G", \ "", \ "Stop parsing the command line, print a version info and exit." ) #:def_opt( "HELP", "h|help", "G", \ "", \ "Stop parsing the command line, print a help message and exit." ) #:def_opt( "XHELP", "xhelp", "G", \ "", \ "Stop parsing the command line and print a help message with all" \ " commands included. Exit after printing." ) #:def_opt( "CONFIG", "config", "GP", \ "file", \ "Define a configuration file or a directory as source. In later case," \ " file @'wiimms-szs-tools.conf'@ is searched.\n" \ " If option is not not set, then file @'wiimms-szs-tools.conf'@ is" \ " searched in different directories. Use command @'wszst CONFIG'@ to" \ " get more details." ) #:def_opt( "ALLOW_ALL", "allow-all|allowall", "G", \ "", \ "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." ) #:def_opt( "COMPATIBLE", "compatible", "GP", \ "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." ) #:def_opt( "WIDTH", "width", "GP", \ "width", \ "Define the terminal width (number of columns) for help and some other" \ " messages and disable the automatic detection of the terminal width." ) #:def_opt( "MAX_WIDTH", "max-width|maxwidth", "GP", \ "maxwidth", \ "Define the maximum terminal width (number of columns) for help and" \ " some other messages. The default is 120. This option is ignored if" \ " --width is set." ) #:def_opt( "QUIET", "q|quiet", "GM", \ "", \ "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." ) #:def_opt( "VERBOSE", "v|verbose", "GM", \ "", \ "Be verbose and print more progress information. Multiple usage is" \ " possible. The impact is command dependent." ) #:def_opt( "LOGGING", "L|logging", "GM", \ "", \ "This debug option enables the logging of internal lists and maps." ) #:def_opt( "WARN", "W|warn", "GP", \ "list", \ "Enable or disable warnings. Parameter @'list'@ is a comma separated" \ " list of keywords. A minus sign before a keyword disables a warning." \ " Each occurrence of the option will only change entered warning and" \ " all other warnings are untouched.\n" \ " Keyword @DEFAULT@ resets the default settings, @OFF@ disables and" \ " @ALL@ enables all. The other allowed keywords are: @INVALID-OFFSET@." ) #:def_opt( "DE", "de", "G", \ "", \ "Use german track and arena names." ) #:def_opt( "COLORS", "colors", "GO", \ "[=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." ) #:def_opt( "NO_COLORS", "no-colors|nocolors", "G", \ "", \ "Deactive colorized text. This is the default, if an output file is" \ " not a terminal." ) #:def_opt( "CT_CODE", "ct-code|ctcode", "G", \ "", \ "Enable CT-CODE support." ) #:def_opt( "LE_CODE", "le-code|lecode", "GO", \ "[=param]", \ "This option is completely ignored by wlect. It only exists due to" \ " compatibility with the other tools." ) #:def_opt( "CHDIR", "chdir", "GMP", \ "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." ) #:def_opt( "CONST", "c|const", "GMP", \ "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." ) #:def_opt( "LONG", "l|long", "CM", \ "", \ "Print long numeric message IDs instead of alternative message names" \ " like Txx, Uxx or Mxx." ) #:def_opt( "BRIEF", "B|brief", "C", \ "", \ "List only the track file names and suppress table header and footer." ) #:def_opt( "NO_HEADER", "H|no-header|noheader", "C", \ "", \ "Suppress the syntax information section in BMG text files." ) #:def_opt( "TRACKS", "T|tracks", "GP", \ "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." ) #:def_opt( "ARENAS", "A|arenas", "GP", \ "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." ) #:def_opt( "REGION", "R|region", "GP", \ "region", \ "If 'region' is an unsigned number, the region for online versus races" \ " and for battles is patched to the entered number. If the number is" \ " prefixed by the letter @'t'@, a test mode is enabled and the places" \ " are patched with ascending numbers. You can patch StaticR.rel and" \ " main.dol.\n" \ " Otherwise a keyword is expected. Official regions are: @JAPAN(0)," \ " AMERICA(1), EUROPE(2), AUSTRALIA(OCEANIA,3), KOREA(4), TAIWAN(5)@" \ " and @CHINA(6)@. @RESTORE@ restores the original Nintendo values and" \ " @NONE@ disables region patching (default).\n" \ " See https://wiimmfi.de/reg-list for other regions." ) #:def_opt( "VS_REGION", "vs-region|vsregion|vregion", "GP", \ "region", \ "Same as {--region}, but only for online versus races." ) #:def_opt( "BT_REGION", "bt-region|btregion|bregion", "GP", \ "region", \ "Same as {--region}, but only for online battles." ) #:def_opt( "ALL_RANKS", "all-ranks|allranks", "GO", \ "[=mode]", \ "If set to @ON@ (default without parameter), the server query to" \ " Nintendos servers is manipulated, so that the player will find all" \ " players in online races independent of their ranking points. Value" \ " @RESTORE@ disables this feature and restores Nintendos original" \ " query. Value @NONE@ disables this kind of patching (default)." ) #:def_opt( "POINTS", "points|pts", "GP", \ "list", \ "This patch option defines a new table for the points assigned to" \ " players after a versus or room race. The parameter is a blank or" \ " comma and slash (next row) separated list with numbers (points)" \ " between 0 and 255 and the following keywords: @NINTENDO, LINEAR," \ " WIN, WIN15, WIN25@ to select a predefined table; @NO-BONUS, BONUS," \ " NULL, ONE@ as options; @N1..N12@ to select the row for N players." ) #:def_opt( "HTTPS", "https", "GP", \ "mode", \ "Patch the https strings of REL and DOL files. 'mode' is one of the" \ " following keywords:\n" \ "@RESTORE@ restores the original URLs and domains.\n" \ "@HTTP@ replaces HTTPS requests by HTTP and sub-domain '@naswii.@' by" \ " '@nas.@'.\n" \ "@DOMAIN@ replace HTTPS requests by HTTP and the domain" \ " '@nintendowifi.net@' by a domain specified by option {--domain}.\n" \ "@SAKE0@ same as DOMAIN, but don't replace URLs with SAKE domain.\n" \ "@SAKE1@ same as SAKE0, but replace HTTPS of SAKE domains." ) #:def_opt( "DOMAIN", "domain", "GP", \ "dom", \ "Define a domain for option {--https}. The default is '@wiimmfi.de@'." ) #:def_opt( "WIIMMFI", "wiimmfi", "G", \ "", \ "Patch the files for the new custom server. It is a short cut for" \ " {--https domain --domain wiimmfi.de}." ) #:def_opt( "WC24", "wc24", "G", \ "", \ "Exclude 2 strings of file StaticR.rel from --wiimmfi and --domain" \ " patch to enable WC24 support." ) #:def_opt( "PB_MODE", "pb-mode|pbmode", "GP", \ "mode", \ "Mode for the patched-by string: @OFF@ disables modifications. @RESET@" \ " resets the string to stars. @WIIMMFI@ defines it only, if patched" \ " for Wiimmfi. @AUTO@ (default) defines it only, if patched. @ALWAYS@" \ " defines it always." ) #:def_opt( "VS", "vs", "GP", \ "char", \ "Reset (str is empty) or replace the second character of 'vs' to" \ " create an own online world for versus races. The file StaticR.rel" \ " will be patched at 4 places." ) #:def_opt( "BT", "bt", "GP", \ "char", \ "Reset (str is empty) or replace the second character of 'bt' to" \ " create an own online world for battles. The file StaticR.rel will be" \ " patched at 4 places." ) #:def_opt( "CANNON", "cannon", "GP", \ "idx,p1,p2,p3,p4", \ "Patch parameters for cannon with index IDX (0..2). Parameters P1..P4" \ " are floating point numbers. Repeat this option for each cannon, that" \ " should be modified." ) #:def_opt( "MENO", "meno", "G", \ "", \ "Patch some 'MenuSingle' and 'MenuMulti' strings of file StaticR.rel" \ " for online usage to 'MenO*' (MenuOnline) to distinguish between" \ " offline and online races." ) #:def_opt( "TEST", "t|test", "GM", \ "", \ "Run in test mode, modify nothing.\n" \ ">>> USE THIS OPTION IF UNSURE! <<<" ) #:def_opt( "FORCE", "force", "GM", \ "", \ "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! <<<" ) #:def_opt( "REPAIR_MAGICS", "repair-magics|repairmagics", "GO", \ "[=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! <<<" ) #:def_opt( "DEST", "d|dest", "CP", \ "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." ) #:def_opt( "DEST2", "D|DEST", "CP", \ "path", \ "Like {--dest}, but create the directory path automatically." ) #:def_opt( "ESC", "E|esc", "CP", \ "char", \ "Define an alternative escape character for destination files. The" \ " default is '%'. For Windows batch files it is a good choice to set" \ " @'-E$$'@." ) #:def_opt( "OVERWRITE", "o|overwrite", "C", \ "", \ "Overwrite already existing files without warning and ignore option" \ " {--number}." ) #:def_opt( "NUMBER", "number|num", "C", \ "", \ "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." ) #:def_opt( "REMOVE_DEST", "r|remove-dest|removedest|rm-dest|rmdest|remove", "C", \ "", \ "Remove already existing files before creating it. If set," \ " {--overwrite} is ignored. @--rm-dest@ is a short cut." ) #:def_opt( "UPDATE", "u|update", "C", \ "", \ "Update only existing files and don't create new files. If set," \ " {--overwrite} and {--remove-dest} are ignored." ) #:def_opt( "PRESERVE", "p|preserve", "C", \ "", \ "Preserve file times (atime+mtime) while converting or copying files." ) #:def_opt( "IGNORE", "i|ignore", "C", \ "", \ "Ignore non existing source files without warning." ) #:def_opt( "CLEAN_DOL", "clean-dol|cleandol", "G", \ "", \ "Remove additional DOL sections, reset entry point and VBI address," \ " and try to restore other patches known by SZS tools. This is done" \ " after loading a DOL and before analysing and patching to allow" \ " re-patching." ) #:def_opt( "ADD_LECODE", "add-lecode|addlecode", "C", \ "", \ "Add LE-CODE starter to main.dol." ) #:def_opt( "ADD_CTCODE", "add-ctcode|addctcode", "C", \ "", \ "If source is an original main.dol file of MKWii, then append 2" \ " sections (usually T2 and D8) with @CT-CODE@. The CTCODE is inserted" \ " after sections defined by {--add-section} and then only, if there" \ " are no address collisions.\n" \ " If {--ct-dir} is used, then files named @rmc[ejp]/boot_code.bin@" \ " and @boot_code.bin@ for T2, and @rmc[ejp]/boot_data.bin@ and" \ " @boot_data.bin@ for D8 are searched." ) #:def_opt( "CT_DIR", "ct-dir|ctdir", "GP", \ "dir", \ "Define a search directory for CT-CODE parts and use the internal" \ " copies only, if no valid file is found. Each file is searched" \ " without and then with extension '.bz2'. For both cases bzip2 files" \ " are detected and decompressed. Only files with correct file type are" \ " accepted.\n" \ " Use this option multiple times to define more than one search" \ " directory." ) #:def_opt( "MOVE_D8", "move-d8|moved8", "C", \ "", \ "Move the @CT-CODE@ section D8 to another place at the middle of" \ " binary. It is done automatically, if the original place overlaps" \ " other existing sections." ) #:def_opt( "ADD_SECTION", "add-section|addsection", "CP", \ "file", \ "Each option call adds the filename to an internal list. Each file" \ " must be of type GCT, GCH or WCH. All GCT files together are combined" \ " with an internal code handler to one section (like a GCH file). GCH" \ " and WCH define sections and patches. The defined sections are added" \ " and VBI hooks are optionally initialized. Use option {--force} to" \ " allow overlapped sections. Use option {--verbose} up to 2 times for" \ " a log.\n" \ " If a single file is not found and the filename (not path) contains" \ " at least 1 '@@' character, then all '@@' characters of it are" \ " replaced by the region code (one of P,E,J,K) for a second try.\n" \ " The intention of this option is to add a Gecko Code Handler and" \ " cheat codes to a main.dol for automatic execution." ) #:def_opt( "GCT_MOVE", "gct-move|gctmove", "CO", \ "[=mode]", \ "If a section is of type gecko code handler + cheat code, then make" \ " the heap smaller and move the cheat codes before the FST section.\n" \ " Parameter MODE is optional. If set, OFF disables and ON enables" \ " this feature. For mode AUTO (default) this feature is enabled, if" \ " the cheat codes are too large or for internal reasons." ) #:def_opt( "GCT_ADDR", "gct-addr|gctaddr", "CP", \ "address", \ "If {--gct-move} is active, a text section is created to manage the" \ " code handling. This section is only needed at start and is placed by" \ " default at address 0c802c0000 (good address for all 4 regions) as" \ " part of BSS. This option changes the start address of the section." \ " If address is @0@ or invalid, then unused BSS space is searched." ) #:def_opt( "GCT_SPACE", "gct-space|gctspace", "CP", \ "size", \ "Define the minimal space for the code part of {--gct-move}. This" \ " value is ignored, if it is smaller than the size of the cheat codes." \ " This option was only implemented to test the memory allocation by" \ " {--gct-move} with large blocks." ) #:def_opt( "ALLOW_USER_GCH", "allow-user-gch|allowusergch", "CO", \ "[=mode]", \ " This option is only relevant, if main.dol is patched for wiimmfi.de." \ " It is dedicated to custom distribution creators for test purposes." \ " If enabled, a user can load an own instance of Gecko Code Handler" \ " and cheat codes and can use them online. If disabled, pachcing for" \ " online modus is disabled if an alternative Gecko Code Handler is" \ " detected.\n" \ " Parameter MODE is optional. If set, OFF disables and ON enables" \ " this feature. For mode AUTO (default) it depends on other options." ) #:def_opt( "SECTIONS", "sections", "C", \ "", \ "Print in machine readable sections and parameter lines." ) #:def_opt( "PORT_DB", "port-db|portdb", "CP", \ "file", \ "Load the specified update file and replace the internal porting" \ " database. If not set, then file @port-db.bin@ is searched in the" \ " share path." ) #:def_opt( "ORDER", "order", "CP", \ "pujk", \ "The parameter is scanned for the first appearance of letters P (for" \ " PAL), U (USA), J (JAPAN) and K (KOREA) to define the order of the" \ " output. Case is ignored. Missing letters are added automatically." \ " The default is @'PUJK'@." ) #:def_opt( "NO_0X", "0|no-0x|no0x", "C", \ "", \ "Suppress 0x prefix of hex numbers. This is the default for cheat" \ " codes." ) #:def_opt( "UPPER", "U|upper", "C", \ "", \ "Print digits A-F of hex numbers in upper case. This is the default" \ " for cheat codes." ) #:def_opt( "VADDR", "vaddr|va", "CP", \ "RANGE", \ "Comma separated list of virtual addresses to select the hex-dump" \ " ranges. Each element is either @ADDRESS@ (1 byte) or @START:END@ or" \ " @START#SIZE@." ) #:def_opt( "FADDR", "faddr|fa", "CP", \ "RANGE", \ "Comma separated list of file addresses to select the hex-dump ranges." \ " Each element is either @ADDRESS@ (1 byte) or @START:END@ or" \ " @START#SIZE@." ) #:def_opt( "SNAME", "sname|sn", "CP", \ "LIST", \ "Comma separated list of section names to select the hex-dump ranges." ) #:def_opt( "INT1", "i1", "C", \ "", \ "Format: Print single bytes as integer number (default)." ) #:def_opt( "INT2", "i2", "C", \ "", \ "Format: Print each 2 bytes as integer number." ) #:def_opt( "INT3", "i3", "C", \ "", \ "Format: Print each 3 bytes as integer number." ) #:def_opt( "INT4", "i4", "C", \ "", \ "Format: Print each 4 bytes as integer number." ) #:def_opt( "INT5", "i5", "C", \ "", \ "Format: Print each 5 bytes as integer number." ) #:def_opt( "INT6", "i6", "C", \ "", \ "Format: Print each 6 bytes as integer number." ) #:def_opt( "INT7", "i7", "C", \ "", \ "Format: Print each 7 bytes as integer number." ) #:def_opt( "INT8", "i8", "C", \ "", \ "Format: Print each 8 bytes as integer number." ) #:def_opt( "FLOAT", "float", "C", \ "", \ "Format: Print each 4 bytes as floating point number." ) #:def_opt( "DOUBLE", "double", "C", \ "", \ "Format: Print each 8 bytes as double floating point number." ) #:def_opt( "LE", "le", "C", \ "", \ "Use little endian for binary data." ) #:def_opt( "BE", "be", "C", \ "", \ "Use big endian for binary data (default)." ) #:def_opt( "ZEROS", "zeros", "C", \ "", \ "Print integer numbers with leading zeros." ) #:def_opt( "HEX", "hex", "C", \ "", \ "Print integer numbers as hexadecimal numbers (default)." ) #:def_opt( "DEC", "dec", "C", \ "", \ "Print integer numbers as decimal numbers." ) #:def_opt( "C_SYNTAX", "c-syntax|csyntax", "C", \ "", \ "Print output in `C' syntax." ) #:def_opt( "ADDR", "address", "CP", \ "addr", \ "Use @ADDR@ instead of null as start address for the dump." ) #:def_opt( "ALIGN", "align", "C", \ "", \ "Try to align the dump, so that the addresses (printed or not) are" \ " multiple of bytes-per-line." ) #:def_opt( "TRIGGER", "trigger", "CP", \ "num", \ "If the number @NUM@ is found and printed, close the current line and" \ " start with a new one. If {--align} is set too, continue the next" \ " line with the current column. The trigger works only for integer" \ " formats, but not for floats." ) #:def_opt( "NO_ADDR", "no-address|noaddress", "C", \ "", \ "Suppress the address column of the dump." ) #:def_opt( "NO_NUMBERS", "no-numbers|nonumbers", "C", \ "", \ "Suppress the numbers column of the dump." ) #:def_opt( "NO_TEXT", "no-text|notext", "C", \ "", \ "Suppress the text column of the dump." ) #:def_opt( "FORMAT", "format", "C", \ "", \ "Add @'#FORMAT:'@ info lines." ) #:def_opt( "NO_NULL", "no-null|nonull", "C", \ "", \ "Ignore data lines with NULL bytes only and print a summary for each" \ " NULL block. (@'#NULL: ...'@)" ) #:def_opt( "NARROW", "narrow", "C", \ "", \ "Suppress the spaces that are usually inserted for readability." ) #:def_opt( "SMALL", "small", "C", \ "", \ "Each call will halve the number of bytes per line. Usually, 16 bytes" \ " per lines are reduced to 8, then to 4, 2 and 1. The effective number" \ " of bytes per line is format dependent." ) #:def_opt( "WIDE", "wide", "C", \ "", \ "Each call will round down the current bytes per line value to the" \ " next multiple of 16 and then increment it by 16. Usually, 16 bytes" \ " per lines are enhanced to 32, then to 48, 64, 80 and so on. The" \ " effective number of bytes per line is format dependent." ) #:def_opt( "BYTES", "bytes", "CP", \ "num", \ "Print up to @NUM@ bytes per line instead of 16. The maximum allowed" \ " value is 600. The effective number of bytes per line is format" \ " dependent (multiple of format size)." ) #:def_cmd_opt( "VERSION", "BRIEF", \ "", \ "Print only the version number, revision and system. If set twice," \ " print only the version number." ) #:def_cmd_opt( "VERSION", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "VERSION", "LONG", \ "", \ "Print in long format. Ignored if option {--sections} is set." ) #:def_cmd_opt( "HELP", "WIDTH", \ "", \ "" ) #:def_cmd_opt( "HELP", "MAX_WIDTH", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "CONFIG", \ "", \ "" ) #:def_cmd_opt( "CONFIG", "BRIEF", \ "", \ " Suppress configuration search list." ) #:def_cmd_opt( "CONFIG", "LONG", \ "", \ "If set, print the global search list too. If set twice, print the" \ " auto-add search list too." ) #:def_cmd_opt( "COLORS", "COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "NO_COLORS", \ "", \ "" ) #:def_cmd_opt( "COLORS", "LONG", \ "", \ "Print also a list of all colored text types. If set twice, include" \ " alternative names. If set three times, include raw color names." ) #:def_cmd_opt( "COLORS", "BRIEF", \ "", \ "Ignore option --long and print a single status line about current" \ " color settings." ) #:def_cmd_opt( "ERROR", "SECTIONS", \ "", \ "" ) #:def_cmd_opt( "ERROR", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ERROR", "LONG", \ "", \ "Print message text instead of message name." ) #:def_cmd_opt( "ERROR", "BRIEF", \ "", \ "Print message number instead of message name." ) #:def_cmd_opt( "FILETYPE", "LONG", \ "", \ "Print an additional column with the decompressed file type and" \ " version. If entered twice, a validation status column is added." ) #:def_cmd_opt( "FILETYPE", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "FILEATTRIB", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "RAWDUMP", "DEST", \ "", \ "" ) #:def_cmd_opt( "RAWDUMP", "DEST2", \ "", \ "" ) #:def_cmd_opt( "DUMP", "LONG", \ "", \ "For DOL files: If set, a second table with the image map is printed." \ " If set twice, a third table with delta values is printed too." ) #:def_cmd_opt( "HEXDUMP", "VADDR", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "FADDR", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "SNAME", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "LOGGING", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT1", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT2", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT3", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT4", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT5", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT6", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT7", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "INT8", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "FLOAT", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "DOUBLE", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "LE", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "BE", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "ZEROS", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "HEX", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "DEC", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "C_SYNTAX", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "ADDR", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "ALIGN", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "TRIGGER", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "NO_ADDR", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "NO_NUMBERS", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "NO_TEXT", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "FORMAT", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "NO_NULL", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "NARROW", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "SMALL", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "WIDE", \ "", \ "" ) #:def_cmd_opt( "HEXDUMP", "BYTES", \ "", \ "" ) #:def_cmd_opt( "PORT", "PORT_DB", \ "", \ "" ) #:def_cmd_opt( "PORT", "ORDER", \ "", \ "" ) #:def_cmd_opt( "PORT", "NO_0X", \ "", \ "" ) #:def_cmd_opt( "PORT", "UPPER", \ "", \ "" ) #:def_cmd_opt( "PORT", "NO_HEADER", \ "", \ "Suppress the table header and footer and output exactly 1 line for" \ " each specified address. This makes the output more machine-readable." ) #:def_cmd_opt( "PORT", "BRIEF", \ "", \ " Same as {--no-header}." ) #:def_cmd_opt( "PORT", "LONG", \ "", \ "Print file offsets too." ) #:def_cmd_opt( "WHERE", "ORDER", \ "", \ "" ) #:def_cmd_opt( "WHERE", "NO_0X", \ "", \ "" ) #:def_cmd_opt( "WHERE", "UPPER", \ "", \ "" ) #:def_cmd_opt( "WHERE", "NO_HEADER", \ "", \ "Suppress the table header and footer and output exactly 1 line for" \ " each specified address. This makes the output more machine-readable." ) #:def_cmd_opt( "WHERE", "BRIEF", \ "", \ " Same as {--no-header}." ) #:def_cmd_opt( "WHERE", "LONG", \ "", \ "Print file offsets too." ) #:def_cmd_opt( "HTTPS", "LONG", \ "", \ " Print output a C source" ) #:def_cmd_opt( "HTTPS", "VERBOSE", \ "", \ " Print hex dump if an entry differs." ) #:def_cmd_opt( "EXTRACT", "DEST", \ "", \ "" ) #:def_cmd_opt( "EXTRACT", "DEST2", \ "", \ "" ) #:def_cmd_opt( "EXTRACT", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "LONG", \ "", \ "Add columns for music slot and short name." ) #:def_cmd_opt( "TRACKS", "DE", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "REGION", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "WC24", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "VS", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "BT", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "CANNON", \ "", \ "" ) #:def_cmd_opt( "TRACKS", "MENO", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "NO_HEADER", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "BRIEF", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "LONG", \ "", \ "Add columns for music slot and short name." ) #:def_cmd_opt( "ARENAS", "DE", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "REGION", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "WC24", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "VS", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "BT", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "CANNON", \ "", \ "" ) #:def_cmd_opt( "ARENAS", "MENO", \ "", \ "" ) #:def_cmd_opt( "FILES", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "FILES", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "FILES", "REGION", \ "", \ "" ) #:def_cmd_opt( "FILES", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "FILES", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "FILES", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "FILES", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "FILES", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "FILES", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "FILES", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "FILES", "WC24", \ "", \ "" ) #:def_cmd_opt( "FILES", "VS", \ "", \ "" ) #:def_cmd_opt( "FILES", "BT", \ "", \ "" ) #:def_cmd_opt( "FILES", "CANNON", \ "", \ "" ) #:def_cmd_opt( "FILES", "MENO", \ "", \ "" ) #:def_cmd_opt( "FIND", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "FIND", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "FIND", "REGION", \ "", \ "" ) #:def_cmd_opt( "FIND", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "FIND", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "FIND", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "FIND", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "FIND", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "FIND", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "FIND", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "FIND", "WC24", \ "", \ "" ) #:def_cmd_opt( "FIND", "VS", \ "", \ "" ) #:def_cmd_opt( "FIND", "BT", \ "", \ "" ) #:def_cmd_opt( "FIND", "CANNON", \ "", \ "" ) #:def_cmd_opt( "FIND", "MENO", \ "", \ "" ) #:def_cmd_opt( "FIND", "LONG", \ "", \ "Add a user friendly track or arena name at the end of each line. If" \ " set twice, add also the file names of the track and sound files" \ " before the track name. If set three times, add the slot index and" \ " the internal index (both zero based) before the file names." ) #:def_cmd_opt( "FIND", "DE", \ "", \ "" ) #:def_cmd_opt( "POINTS", "POINTS", \ "", \ "" ) #:def_cmd_opt( "POINTS", "BRIEF", \ "", \ "Print the table as comma separated lists in C notation." ) #:def_cmd_opt( "POINTS", "LONG", \ "", \ "Append a string in {--points} format that defines the table. If set" \ " twice, append up to 3 strings in different modes." ) #:def_cmd_opt( "ANALYZE", "CLEAN_DOL", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "REGION", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "WC24", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "VS", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "BT", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "CANNON", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "MENO", \ "", \ "" ) #:def_cmd_opt( "ANALYZE", "LONG", \ "", \ "Print different lists if bugs found. If set twice, print the lists" \ " always." ) #:def_cmd_opt( "PATCH", "DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DEST2", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ESC", \ "", \ "" ) #:def_cmd_opt( "PATCH", "OVERWRITE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "NUMBER", \ "", \ "" ) #:def_cmd_opt( "PATCH", "REMOVE_DEST", \ "", \ "" ) #:def_cmd_opt( "PATCH", "UPDATE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PRESERVE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "IGNORE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "CLEAN_DOL", \ "", \ "" ) #:def_cmd_opt( "PATCH", "TRACKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ARENAS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "REGION", \ "", \ "" ) #:def_cmd_opt( "PATCH", "VS_REGION", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BT_REGION", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ALL_RANKS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "HTTPS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "DOMAIN", \ "", \ "" ) #:def_cmd_opt( "PATCH", "WIIMMFI", \ "", \ "" ) #:def_cmd_opt( "PATCH", "PB_MODE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "WC24", \ "", \ "" ) #:def_cmd_opt( "PATCH", "VS", \ "", \ "" ) #:def_cmd_opt( "PATCH", "BT", \ "", \ "" ) #:def_cmd_opt( "PATCH", "CANNON", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MENO", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ADD_CTCODE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "CT_DIR", \ "", \ "" ) #:def_cmd_opt( "PATCH", "MOVE_D8", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ADD_SECTION", \ "", \ "" ) #:def_cmd_opt( "PATCH", "GCT_MOVE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "GCT_ADDR", \ "", \ "" ) #:def_cmd_opt( "PATCH", "GCT_SPACE", \ "", \ "" ) #:def_cmd_opt( "PATCH", "ALLOW_USER_GCH", \ "", \ "" ) #:def_cmd_opt( "PATCH", "FORCE", \ "", \ "Accept overlapped sections.\n" \ ">>> THE RESULT IS MOST LIKELY INVALID! <<<" ) ## ############################################################################### ############### END ############### ###############################################################################