aboutsummaryrefslogtreecommitdiff
path: root/project/text-files
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--project/text-files/common.inc/explain-objmgr-cr.inc33
-rw-r--r--project/text-files/ctcode.inc/ctcode-head-cr.inc27
-rw-r--r--project/text-files/ctcode.inc/ctcode-list-syntax-brief-cr.inc20
-rw-r--r--project/text-files/ctcode.inc/ctcode-list-syntax-full-cr.inc141
-rw-r--r--project/text-files/ctcode.inc/ctcode-setup-cr.inc33
-rwxr-xr-xproject/text-files/distrib.inc/distrib-head-cr.inc144
-rw-r--r--project/text-files/distrib.inc/distrib-param-cr.inc6
-rw-r--r--project/text-files/distrib.inc/distrib-tracks-cr.inc9
-rw-r--r--project/text-files/geohit.inc/geohit-item-head-cr.inc1
-rw-r--r--project/text-files/geohit.inc/geohit-item-info-cr.inc36
-rw-r--r--project/text-files/geohit.inc/geohit-item-objects-cr.inc9
-rw-r--r--project/text-files/geohit.inc/geohit-item-setup-cr.inc12
-rw-r--r--project/text-files/geohit.inc/geohit-kart-head-cr.inc1
-rw-r--r--project/text-files/geohit.inc/geohit-kart-info-cr.inc36
-rw-r--r--project/text-files/geohit.inc/geohit-kart-objects-cr.inc9
-rw-r--r--project/text-files/geohit.inc/geohit-kart-setup-cr.inc12
-rwxr-xr-xproject/text-files/itemslot.inc/itemslot-head-cr.inc1
-rwxr-xr-xproject/text-files/itemslot.inc/itemslot-info-cr.inc24
-rwxr-xr-xproject/text-files/itemslot.inc/itemslot-param-cr.inc6
-rwxr-xr-xproject/text-files/itemslot.inc/itemslot-setup-cr.inc12
-rwxr-xr-xproject/text-files/itemslot.inc/itemslot-table-cr.inc3
-rw-r--r--project/text-files/kcl.inc/kcl-dump-head-cr.inc40
-rw-r--r--project/text-files/kcl.inc/kcl-dump-octlist-cr.inc2
-rw-r--r--project/text-files/kcl.inc/kcl-dump-octree-cr.inc6
-rw-r--r--project/text-files/kcl.inc/kcl-dump-tridata-cr.inc15
-rw-r--r--project/text-files/kcl.inc/kcl-flag-template-cr.inc48
-rw-r--r--project/text-files/kcl.inc/kcl-head-cr.inc18
-rw-r--r--project/text-files/kmp.inc/kmp-area-cr.inc16
-rw-r--r--project/text-files/kmp.inc/kmp-came-cr.inc19
-rw-r--r--project/text-files/kmp.inc/kmp-ckph-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-ckpt-cr.inc32
-rw-r--r--project/text-files/kmp.inc/kmp-cnpt-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-defaults-cr.inc8
-rw-r--r--project/text-files/kmp.inc/kmp-enph-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-enpt-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-enpt-ropt-cr.inc42
-rw-r--r--project/text-files/kmp.inc/kmp-gobj-cr.inc49
-rw-r--r--project/text-files/kmp.inc/kmp-gobj-tabhead-cr.inc5
-rw-r--r--project/text-files/kmp.inc/kmp-head-cr.inc28
-rw-r--r--project/text-files/kmp.inc/kmp-itph-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-itpt-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-itpt-ropt-cr.inc4
-rw-r--r--project/text-files/kmp.inc/kmp-jgpt-auto-cr.inc26
-rw-r--r--project/text-files/kmp.inc/kmp-jgpt-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-ktpt-cr.inc23
-rw-r--r--project/text-files/kmp.inc/kmp-macros-cr.inc60
-rw-r--r--project/text-files/kmp.inc/kmp-mspt-cr.inc7
-rw-r--r--project/text-files/kmp.inc/kmp-param1-cr.inc54
-rw-r--r--project/text-files/kmp.inc/kmp-param2-cr.inc28
-rw-r--r--project/text-files/kmp.inc/kmp-param3-cr.inc6
-rw-r--r--project/text-files/kmp.inc/kmp-ph-cr.inc15
-rw-r--r--project/text-files/kmp.inc/kmp-poti-cr.inc42
-rw-r--r--project/text-files/kmp.inc/kmp-pt-head-cr.inc6
-rw-r--r--project/text-files/kmp.inc/kmp-pt-info-cr.inc32
-rw-r--r--project/text-files/kmp.inc/kmp-pt-mask-cr.inc6
-rw-r--r--project/text-files/kmp.inc/kmp-pt2-cr.inc25
-rw-r--r--project/text-files/kmp.inc/kmp-pt2-head-cr.inc6
-rw-r--r--project/text-files/kmp.inc/kmp-setup-cr.inc43
-rw-r--r--project/text-files/kmp.inc/kmp-stgi-cr.inc20
-rw-r--r--project/text-files/lex.inc/lex-elem-cann-cr.inc15
-rwxr-xr-xproject/text-files/lex.inc/lex-elem-hipt-cr.inc35
-rw-r--r--project/text-files/lex.inc/lex-elem-set1-cr.inc20
-rw-r--r--project/text-files/lex.inc/lex-elem-test-cr.inc43
-rwxr-xr-xproject/text-files/lex.inc/lex-head-cr.inc12
-rwxr-xr-xproject/text-files/lex.inc/lex-hexdump-cr.inc16
-rwxr-xr-xproject/text-files/lex.inc/lex-setup-cr.inc17
-rw-r--r--project/text-files/logo.inc14
-rw-r--r--project/text-files/lpar.inc/lpar-head-cr.inc13
-rw-r--r--project/text-files/lpar.inc/lpar-sect-chat-cr.inc56
-rw-r--r--project/text-files/lpar.inc/lpar-sect-chat-example-cr.inc4
-rw-r--r--project/text-files/lpar.inc/lpar-sect-param-cr.inc60
-rw-r--r--project/text-files/mdl.inc/mdl-file-head-cr.inc26
-rw-r--r--project/text-files/mdl.inc/mdl-header-cr.inc8
-rwxr-xr-xproject/text-files/mdl.inc/mdl-hexdump-cr.inc4
-rw-r--r--project/text-files/mdl.inc/mdl-s0-cr.inc19
-rw-r--r--project/text-files/mdl.inc/mdl-s0-tabhead-cr.inc2
-rw-r--r--project/text-files/mdl.inc/mdl-setup-cr.inc21
-rwxr-xr-xproject/text-files/minigame.inc/minigame-head-cr.inc1
-rwxr-xr-xproject/text-files/minigame.inc/minigame-info-cr.inc24
-rwxr-xr-xproject/text-files/minigame.inc/minigame-param-cr.inc2
-rwxr-xr-xproject/text-files/minigame.inc/minigame-setup-cr.inc12
-rwxr-xr-xproject/text-files/minigame.inc/minigame-table-cr.inc3
-rwxr-xr-xproject/text-files/minigame.inc/minigame-table-head-cr.inc3
-rw-r--r--project/text-files/obj-mtl-bz2.inc1343
-rw-r--r--project/text-files/objflow.inc/objflow-head-cr.inc1
-rw-r--r--project/text-files/objflow.inc/objflow-info-cr.inc43
-rw-r--r--project/text-files/objflow.inc/objflow-objects-cr.inc7
-rw-r--r--project/text-files/objflow.inc/objflow-setup-cr.inc12
-rw-r--r--project/text-files/pat.inc/pat-file-head-cr.inc16
-rw-r--r--project/text-files/pat.inc/pat-header-cr.inc8
-rw-r--r--project/text-files/pat.inc/pat-s0_base-cr.inc8
-rw-r--r--project/text-files/pat.inc/pat-s0_list-cr.inc7
-rw-r--r--project/text-files/pat.inc/pat-setup-cr.inc21
-rw-r--r--project/text-files/pat.inc/pat-simple-cr.inc7
-rw-r--r--project/text-files/pat.inc/pat-strings-cr.inc8
-rwxr-xr-xproject/text-files/setup.inc/setup-create-cr.inc24
-rwxr-xr-xproject/text-files/setup.inc/setup-encode-cr.inc26
-rwxr-xr-xproject/text-files/setup.inc/setup-exclude-cr.inc36
-rwxr-xr-xproject/text-files/setup.inc/setup-header-cr.inc15
-rwxr-xr-xproject/text-files/setup.inc/setup-include-cr.inc26
-rw-r--r--project/text-files/setup.inc/setup-order-cr.inc14
-rw-r--r--project/text-files/ui-head.inc41
102 files changed, 3448 insertions, 0 deletions
diff --git a/project/text-files/common.inc/explain-objmgr-cr.inc b/project/text-files/common.inc/explain-objmgr-cr.inc
new file mode 100644
index 0000000..b123052
--- /dev/null
+++ b/project/text-files/common.inc/explain-objmgr-cr.inc
@@ -0,0 +1,33 @@
+
+#------------------------------------------------------------------------------
+
+# Usually, only the data of objects defined by Nintendo can be replaced.
+# It is not possible to remove or add an object, or to replace an object
+# with one ID by another object with another ID. The following settings
+# override this protection for experimental usage.
+
+# @NEW-OBJECT = MODE
+# MODE is one of 4 settings:
+# NEWOBJ$OFF:
+# Disable experimental mode. This is the default.
+# Ignore @OBJECT-SLOTS and @MAX-OBJECT-ID.
+# NEWOBJ$REPLACE:
+# Allow new objects, but keep the total number of slots
+# at 0x13c. Ignore @OBJECT-SLOTS.
+# NEWOBJ$SHRINK:
+# Allow new objects and removal of old objects. The total number
+# of slots may shrink, but not grow above 0x13c.
+# NEWOBJ$GROW:
+# Allow new objects and removal of old objects. The total number
+# of slots may shrink or grow (limit 0x400).
+
+# @OBJECT-SLOTS = NUMBER
+# Number of available objects slots. The default is 0x13c. Up to
+# 0x400 slots are supported. This setting is ignored for some modes
+# of @NEW-OBJECT.
+
+# @MAX-OBJECT-ID = NUMBER
+# Define the maximim allowed object id. The default value is 0x2f3 and the
+# maximal possible value is 0x3ff.
+# Objects with id larger than this value are ignored. The value defines the
+# size of the reference list of section 2 too.
diff --git a/project/text-files/ctcode.inc/ctcode-head-cr.inc b/project/text-files/ctcode.inc/ctcode-head-cr.inc
new file mode 100644
index 0000000..276b43a
--- /dev/null
+++ b/project/text-files/ctcode.inc/ctcode-head-cr.inc
@@ -0,0 +1,27 @@
+#CT-CODE
+
+[INFO]
+# This section will be ignored on scanning.
+
+# This is a textual representation of CT-CODE file used by CTGPR made by Chadderz
+# and MrBean3500vr. "Wiimms SZS Tools" can convert binary (raw) and text CT-CODE
+# files in both directions. The text parser supports variables, C like expressions
+# and nested IF-THEN-ELSE and LOOP structures.
+#
+# Info about the general parser syntax and semantics:
+# * https://szs.wiimm.de/doc/syntax
+#
+# Info about the CT-CODE:
+# * https://szs.wiimm.de/doc/ctcode
+#
+# Reference list of CT-CODE parser functions:
+# * https://szs.wiimm.de/doc/ctcode/func
+#
+# Hint:
+# Set the options --no-header (-H) while decoding to suppress this info and some
+# syntax descriptions below.
+
+#----------------------------------------------------------------------------------
+# Only the section [RACING-TRACK-LIST] is scanned, all other sections are ignored!
+#----------------------------------------------------------------------------------
+
diff --git a/project/text-files/ctcode.inc/ctcode-list-syntax-brief-cr.inc b/project/text-files/ctcode.inc/ctcode-list-syntax-brief-cr.inc
new file mode 100644
index 0000000..16b0d1e
--- /dev/null
+++ b/project/text-files/ctcode.inc/ctcode-list-syntax-brief-cr.inc
@@ -0,0 +1,20 @@
+
+# Syntax:
+# '%' name = value
+# : Define an option.
+# 'N' mode : Define mode for Nintendos original tracks:
+# N$NONE | N$HIDE | N$SHOW | N$SWAP
+# OR it with N$F_HEX and/or N$F_WII and/or N$F_<COLOR>
+# 'C' name : Enter a new cup and define its name.
+# 'S' list : Predefine track slots for the next tracks.
+# 'X' list : Mark slots as 'unusable'.
+# 'T' music_id; property_id; file_name; [info;] [id]
+# 'T' music_id; property_id; le_flags; file_name; [info;] [id]
+# : Define a racing track, See https://szs.wiimm.de/doc/slot-id
+# for 'music_id' and 'property_id'.
+# 'H' music_id; property_id; file_name; [info;] [id]
+# 'H' music_id; property_id; le_flags; file_name; [info;] [id]
+# : Define a hidden track, that doesn't appear in any cup.
+# 'A' music_id; property_id; file_name; [info;] [id]
+# 'A' music_id; property_id; le_flags; file_name; [info;] [id]
+# : Define a battle arena.
diff --git a/project/text-files/ctcode.inc/ctcode-list-syntax-full-cr.inc b/project/text-files/ctcode.inc/ctcode-list-syntax-full-cr.inc
new file mode 100644
index 0000000..e1e4fb2
--- /dev/null
+++ b/project/text-files/ctcode.inc/ctcode-list-syntax-full-cr.inc
@@ -0,0 +1,141 @@
+
+#---------
+# Syntax:
+#---------
+#
+# 8 kinds of records are allowed: %, N, C, S, X, T, H and A
+#
+# * Option: '%' name = value
+#
+# Set option NAME to VAULE. The follwing options are supported:
+#
+# LE-FLAGS = 0 | 1
+# Enable or disable support of LE-FLAGS member. At section start
+# it is disabled. If enabled, the Track definition expects an
+# additional parameter between 'property_id' and 'file_name'.
+#
+# * Nintendo track mode: 'N' mode
+#
+# This command can only be used once and only before the first track
+# definition. It defines, how to manage Nintendos original tracks.
+# A numerical expression is expected. The 4 symbols are predefined:
+#
+# N$NONE : Nintendos tracks will NOT inserted automatically.
+# This is the default.
+#
+# N$HIDE : Nintendos tracks will be defined, but the tracks are not
+# shown in any Cup. If such track is selected by accident,
+# it can be played.
+# THIS MODE IS EXPERIMENTAL AND WILL FREEZE THE WII!
+#
+# N$SHOW : Define automatically 8 Cups with Nintendos tracks.
+#
+# N$SWAP : Define automatically 8 Cups with Nintendos tracks, but
+# change the cup order, so that all 4 Wii Cups are in the
+# first row and all 4 retro cups in the second row.
+#
+# For HIDE+SHOW+SWAP:
+# The cup and track names are defined by internal names. If BMG is
+# read, messages may override the internal names.
+# The track order (except SWAP), file names, music and property ids
+# are the same as in original MKWii.
+#
+# There are some flags, that are OR'ed to the base mode:
+# |N$F_HEX : Replace original filenames by a 2 digit slot hex code.
+# |N$F_WII : Prefix Wii track names by 'Wii '
+# |N$F_<color> : For BMG output, colorize the console prefix. Possible
+# color names are: RED1, RED2, RED3, RED4, YELLOW, GREEN,
+# BLUE1, BLUE2, WHITE and CLEAR (transparent).
+#
+# * Cup definition: 'C' name_of_cup
+#
+# Close the current cup and fill it with default tracks. Then define a
+# cup name for the next created cup. This command is optional and only
+# used, to store names in the CT-CODE file without any impact.
+#
+# * Slot definition: 'S' list
+#
+# Define the track slots for the next defined tracks. A list element is
+# either an index 'NUMBER' or a range 'NUMBER1:NUMBER2'. The system will
+# automatically skip invalid and already used slots. All numbers are
+# numerical expressions handled by the parser. If a number or range is
+# followed by an '!', the slots are used for the next tracks ignoring
+# previous usage or reservation.
+#
+# Each slot definition overrides the previous one and an empty list will
+# disable the slot list. Slot definiton are only needed to recreate a
+# CT-CODE file with identical track layout.
+#
+# * Used definition: 'X' list
+#
+# Mark the slots as 'reserved'. A list element is either an index 'NUM'
+# or a range 'NUMBER1:NUMBER2'. Only unused slots will be marked. All
+# numbers are numerical expressions handled by the parser. If a number
+# or range is followed by an '!', the slot is marked as used independent
+# of its previous state.
+#
+# The line "X 0x20:0x2b 0x43 0xff" is executed internally at startup.
+#
+# * Track definition:
+# 'T' music_id ';' property_id ';' file_name ';' info ';' id
+# 'T' music_id ';' property_id ';' le_flags ';' file_name ';' info ';' id
+#
+# Define a new track. Use the next free slot defined by the previous
+# slot definition, or the first not used slot. The elements are:
+#
+# * music_id
+# The numeric ID of the sound file, a numerical expression is
+# expected. The ID is normalized to avoid impossible values.
+# Track numbers (0-31) are translated to the standard music ID.
+# If a music ID is followed by an '!', the value is used without
+# normalization and transformation.
+# See https://szs.wiimm.de/doc/slot-id for infos about names.
+#
+# * property_id
+# The numeric ID of a basic slot (0-31) for the properties.
+# A numerical expression is expected. Only the lowsest 5 Bits are
+# used to avoid impossible values. If a property ID is followed
+# by an '!', the value is used as entered.
+# See https://szs.wiimm.de/doc/slot-id for infos about names.
+#
+# * le_flags
+# The flags are only allowed and mandatory, if option LE-FLAGS
+# (see above) is enabled. It is a bit field; combine flags by OR.
+# The flags are delivered to LE-CODE:
+# LE$F_NEW : Track is marked as »new track«.
+# LE$F_HEAD : Track is marked as »head of a group«. If such
+# track is selected by user, a random selection
+# of all group members is done.
+# LE$F_GROUP : Track is marked as »additional group member«
+# and is not added to a cup.
+#
+# * file_name
+# The SZS file name without extension as string. If no file name
+# is entered, the string 'slot_##' ('###' for LE-CODE) with a hex
+# slot number is used.
+#
+# * info
+# Optional information (no impact, maybe machine readable) as
+# string. Maybe empty. It is only used for references lists like
+# commands "wctct BMG" or "wctct TRACKS".
+#
+# * id
+# Optional identifier. While creating references, it is assumed,
+# that tracks with equal identifiers are equal. Empty strings
+# and a single "-" means: no identifier available.
+#
+# * Hidden track definition:
+# 'H' music_id ';' property_id ';' file_name ';' info ';' id
+# 'H' music_id ';' property_id ';' le_flags ';' file_name ';' info ';' id
+#
+# Like 'T', but hidden:
+# Define a new track, that doesn't appear in any cup. So it is hidden.
+# A hidden track can be defined at any place in this section and doesn't
+# touch any cup or the cup order.
+#
+# * Battle arena definition:
+# 'A' music_id ';' property_id ';' file_name ';' info ';' id
+# 'A' music_id ';' property_id ';' le_flags ';' file_name ';' info ';' id
+#
+# Like 'T', but for battle arenas:
+# Overwrite a battle arena slot identified by 'property_id'.
diff --git a/project/text-files/ctcode.inc/ctcode-setup-cr.inc b/project/text-files/ctcode.inc/ctcode-setup-cr.inc
new file mode 100644
index 0000000..ff92238
--- /dev/null
+++ b/project/text-files/ctcode.inc/ctcode-setup-cr.inc
@@ -0,0 +1,33 @@
+[SETUP]
+
+#--- Identify the tool and version, that have written this file:
+
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
+
+
+#--- mode
+
+CT-MODE = %3u # 1: CT-CODE, 2: LE-CODE
+
+
+#--- Statistics
+
+USED-RACING-CUPS = %3u # number of active racing cups
+MAX-RACING-CUPS = %3u # max possible number of racing cups
+USED-BATTLE-CUPS = %3u # number of active battle cups
+MAX-BATTLE-CUPS = %3u # max possible number of battle cups
+
+USED-RACING-TRACKS = %3u # number of active racing tracks (used by cup)
+USED-BATTLE-TRACKS = %3u # number of active battle tracks (used by cup)
+DEFINED-TRACKS = %3u # total number of defined tracks
+MAX-TRACKS = %3u # total number of track slots
+
+DEFINED-RACING-CUPS = %3u # number of defined racing cups
+MAX-RACING-CUPS = %3u # max possible number of racing cups
+DEFINED-BATTLE-CUPS = %3u # number of defined battle cups
+MAX-BATTLE-CUPS = %3u # max possible number of battle cups
+UNUSED-CUPS = %3u # number of unused cups (space available)
diff --git a/project/text-files/distrib.inc/distrib-head-cr.inc b/project/text-files/distrib.inc/distrib-head-cr.inc
new file mode 100755
index 0000000..bdb3862
--- /dev/null
+++ b/project/text-files/distrib.inc/distrib-head-cr.inc
@@ -0,0 +1,144 @@
+#DISTRIB
+
+# IMPORTANT:
+# Every parameter is copied to the next version of this file. For unknown
+# parameters the new section "User defined parameters" is created.
+
+# Here you can find help:
+# https://szs.wiimm.de/cmd/distribution#desc
+# http://wiki.tockdom.com/wiki/Wiimm%%27s_Custom_Archive/Distribution
+
+
+ ##############################################
+ ### ###
+ ### Upload the final version of this ###
+ ### file to https://ct.wiimm.de/upload ###
+ ### ###
+ ##############################################
+
+
+#------------------------------------------------------------------------------
+# Comments for personal use
+#------------------------------------------------------------------------------
+
+# These first comments are for personal use and will not imported to ct.wiimm.de
+# and never visible for other persons. Use it as reminder for yourself.
+
+@COMMENT1 = %s
+@COMMENT2 = %s
+@COMMENT3 = %s
+@COMMENT4 = %s
+@COMMENT5 = %s
+
+#------------------------------------------------------------------------------
+# Identify yourself! (private section)
+#------------------------------------------------------------------------------
+
+# The next parameters are used to identify you and to contact you on problems.
+# All data of this section will never be visible for other persons. It's no
+# problem to leave some or all parameters empty.
+
+# A wish for an user name @ ct.wiimm.de, if it ever supports a login.
+@USER-CT-WIIMM = %s
+
+# Your current user name @ Wiimmfi (same as @ wii-hombrew.com).
+@USER-WIIMMFI = %s
+
+# Your current user name @ CT-Wiiki (wiki.tockdom.com).
+@USER-CT-WIIKI = %s
+
+# Other user names, format: service=name
+@USER-MISC = %s
+
+# A space separated list of mail addresses:
+@MAIL = %s
+
+# A note addressed to Wiimm
+@NOTE-FOR-WIMMM = %s
+
+#------------------------------------------------------------------------------
+# Distribution parameters
+#------------------------------------------------------------------------------
+
+# Edit the following distribution parameters
+# All parameters will be visible at ct.wiimm.de
+
+# Identification of the distribution and its version.
+# These first parameters are required!
+@NAME = %s
+@VERSION = %s
+@AUTHORS = %s
+
+# Date of first release in format yyyy-mm-dd
+@RELEASE-DATE = %s
+
+# Additional keywords for the search engine (optional).
+# The 4 parameters above are automatically scanned for keywords.
+@KEYWORDS = %s
+
+# ID or UUID of predecessor
+@PREDECESSOR = %s
+
+# Additional infos (optional)
+@WIIMMFI-REGION = %s
+@INFO-TEXT = %s
+@INFO-URL = %s
+
+#------------------------------------------------------------------------------
+# Settings for ct.wiimm.de => edit them
+#------------------------------------------------------------------------------
+
+# DISPLAY-MODE decides, how this distribution is displayed.
+# 0: Hide the distribution completley (like not defined).
+# 1: Hide the distribution, but allow access to overview page by UUID.
+# 2: Like 1 + List the distribution name without a link at track info.
+# 3: Distribution is fully visible and reachable by links.
+# Once imported and mode>0, you can access the page with the following
+# private URL: https://ct.wiimm.de/dis/%s
+@DISPLAY-MODE = %d
+
+# DATABASE-NAME decides, which tracknames are used for the distribution list.
+# 0: Use the names of this file.
+# 1: Use the global names of the track archive. If a track is unknown by
+# the database, then fall back to step 0 and use the name of this file.
+@DATABASE-NAME = %d
+
+# VIEW-COMMENT decides, how the comments in square brackts [] of track names
+# are printed at the distribution page.
+# 0: Hide the name part beginning from the first "[".
+# 1: Show complete name including the [...] part.
+@VIEW-COMMENT = %d
+
+# The comments in square brackts [] of track names are read as comma separated
+# list of attributes. The attributes 'new', 'again', 'fill' and 'update' (or shorter
+# 'upd') are imported to ct.wiimm.de.
+# Each of the next 4 parameters enables a common status column in the track
+# list. Maximal one enabled status attribut is printed. 'new' has the highest
+# priority and 'update' the lowest. The options are enabled by value '1'.
+@ENABLE-NEW = %d
+@ENABLE-AGAIN = %d
+@ENABLE-FILL = %d
+@ENABLE-UPDATE = %d
+
+# If enabled, boost tracks are highlighted. For tracks known by the database,
+# the internal boost status is used. Unknown tracks are marked as boost, if
+# either the attribute 'boost' exists, or the first 5 characters of the track
+# name are 'boost'. The option is enabled by value '1'.
+@ENABLE-BOOST = %d
+
+#------------------------------------------------------------------------------
+# Automatically created parameters => DO NOT EDIT!
+#------------------------------------------------------------------------------
+
+# The UUID (Universally Unique IDentifier) identifies the distribution.
+# => Do not change it under any circumstances!
+# => And don't copy it from another distribution!
+@UUID = %s
+
+# wszst version that wrote this file
+@WSZST-VERSION = %s
+@WSZST-REVISION = %u
+
+# Timestamps for this file
+@FIRST-CREATION = %s
+@LAST-UPDATE = %s
diff --git a/project/text-files/distrib.inc/distrib-param-cr.inc b/project/text-files/distrib.inc/distrib-param-cr.inc
new file mode 100644
index 0000000..bac942e
--- /dev/null
+++ b/project/text-files/distrib.inc/distrib-param-cr.inc
@@ -0,0 +1,6 @@
+
+#------------------------------------------------------------------------------
+# User defined parameters
+#------------------------------------------------------------------------------
+# Some unknown parameters were detected. They are listed here:
+
diff --git a/project/text-files/distrib.inc/distrib-tracks-cr.inc b/project/text-files/distrib.inc/distrib-tracks-cr.inc
new file mode 100644
index 0000000..47c0e71
--- /dev/null
+++ b/project/text-files/distrib.inc/distrib-tracks-cr.inc
@@ -0,0 +1,9 @@
+
+#FF#
+#------------------------------------------------------------------------------
+# Track listing of format: SHA1 SLOT NAME
+#------------------------------------------------------------------------------
+
+# Please edit the slot column. Use »CUP.INDEX« (e.g. »1.2« or »20.4«) for
+# racing tracks and »'A' CUP.INDEX« (e.g. »A1.1« or »A2.5«) for battle arenas.
+
diff --git a/project/text-files/geohit.inc/geohit-item-head-cr.inc b/project/text-files/geohit.inc/geohit-item-head-cr.inc
new file mode 100644
index 0000000..3aa8911
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-item-head-cr.inc
@@ -0,0 +1 @@
+%s
diff --git a/project/text-files/geohit.inc/geohit-item-info-cr.inc b/project/text-files/geohit.inc/geohit-item-info-cr.inc
new file mode 100644
index 0000000..5c92c6b
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-item-info-cr.inc
@@ -0,0 +1,36 @@
+%s <<< The first 8 characters are the magic for text files of GeoHit-Item.
+# <<< Don't remove them!
+#
+#------------------------------------------------------------------------------
+#
+# This is the textual representation of a GeoHitTableItem*.bin file.
+# It is defined by Wiimm and scanned by a 2-pass parser.
+#
+# Hints for decoding to a text file:
+#
+# - If either option --no-header (-H) or option --brief (-B) is set, this
+# general description is suppressed.
+#
+# - If either option --export (-X) is set once or option --brief (-B) is set
+# twice, a very small text file without descriptions and other not needed
+# parameters is created.
+#
+# - If option --long (-l) is set, then additional hidden parameters are
+# included. They are automatically included, if they are differ from the
+# the standard settings.
+#
+#------------------------------------------------------------------------------
+#
+# Syntax for section [OBJECTS]:
+#
+# OBJ_ID P1 .. P15
+#
+# OBJ_ID : Id of the object. Use prefix '0x' for hex numbers.
+# P1..P15 : 15 hit parameters, optionally separated by commas.
+# A point ('.') is interpreted as Null, and an equal sign ('=')
+# leaves the value unchanged. Missed parameters are not modified.
+#
+# See http://wiki.tockdom.com/wiki/GeoHitTableItem.bin
+# and http://wiki.tockdom.com/wiki/GeoHitTableItemObj.bin for more details.
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/geohit.inc/geohit-item-objects-cr.inc b/project/text-files/geohit.inc/geohit-item-objects-cr.inc
new file mode 100644
index 0000000..a5923f6
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-item-objects-cr.inc
@@ -0,0 +1,9 @@
+[OBJECTS]
+@REVISION = %u
+
+#-----------------------------------------------------------------------#-----------------
+# Green Shell Star Mega Shroom Golden Shroom
+# : Red Shell : Blue Shell : Bob-omb : Bullet Bill
+# : : Banana : : Thunder : : Blooper : : Thunder Cloud
+# ID : : : Shroom : : : Fake Box : : POW : : : # Name
+#-----------------------------------------------------------------------#-----------------
diff --git a/project/text-files/geohit.inc/geohit-item-setup-cr.inc b/project/text-files/geohit.inc/geohit-item-setup-cr.inc
new file mode 100644
index 0000000..c8d5b7c
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-item-setup-cr.inc
@@ -0,0 +1,12 @@
+
+#
+###############################################################################
+
+[SETUP]
+
+# identification of creator tool
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
diff --git a/project/text-files/geohit.inc/geohit-kart-head-cr.inc b/project/text-files/geohit.inc/geohit-kart-head-cr.inc
new file mode 100644
index 0000000..3aa8911
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-kart-head-cr.inc
@@ -0,0 +1 @@
+%s
diff --git a/project/text-files/geohit.inc/geohit-kart-info-cr.inc b/project/text-files/geohit.inc/geohit-kart-info-cr.inc
new file mode 100644
index 0000000..f07d2c1
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-kart-info-cr.inc
@@ -0,0 +1,36 @@
+%s <<< The first 8 characters are the magic for text files of GeoHit-Kart.
+# <<< Don't remove them!
+#
+#------------------------------------------------------------------------------
+#
+# This is the textual representation of a GeoHitTableKart*.bin file.
+# It is defined by Wiimm and scanned by a 2-pass parser.
+#
+# Hints for decoding to a text file:
+#
+# - If either option --no-header (-H) or option --brief (-B) is set, this
+# general description is suppressed.
+#
+# - If either option --export (-X) is set once or option --brief (-B) is set
+# twice, a very small text file without descriptions and other not needed
+# parameters is created.
+#
+# - If option --long (-l) is set, then additional hidden parameters are
+# included. They are automatically included, if they are differ from the
+# the standard settings.
+#
+#------------------------------------------------------------------------------
+#
+# Syntax for section [OBJECTS]:
+#
+# OBJ_ID P1 P2 P3 P4
+#
+# OBJ_ID : Id of the object. Use prefix '0x' for hex numbers.
+# P1..P4 : 4 hit parameters, optionally separated by commas.
+# A point ('.') is interpreted as Null, and an equal sign ('=')
+# leaves the value unchanged. Missed parameters are not modified.
+#
+# See http://wiki.tockdom.com/wiki/GeoHitTableKart.bin
+# and http://wiki.tockdom.com/wiki/GeoHitTableKartObj.bin for more details.
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/geohit.inc/geohit-kart-objects-cr.inc b/project/text-files/geohit.inc/geohit-kart-objects-cr.inc
new file mode 100644
index 0000000..0600d1f
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-kart-objects-cr.inc
@@ -0,0 +1,9 @@
+[OBJECTS]
+@REVISION = %u
+
+#--------------------------------#-----------------
+# No power-up # Name
+# : Star #
+# : : Mega Mushroom
+# ID : : : Bullet Bill
+#--------------------------------#-----------------
diff --git a/project/text-files/geohit.inc/geohit-kart-setup-cr.inc b/project/text-files/geohit.inc/geohit-kart-setup-cr.inc
new file mode 100644
index 0000000..c8d5b7c
--- /dev/null
+++ b/project/text-files/geohit.inc/geohit-kart-setup-cr.inc
@@ -0,0 +1,12 @@
+
+#
+###############################################################################
+
+[SETUP]
+
+# identification of creator tool
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
diff --git a/project/text-files/itemslot.inc/itemslot-head-cr.inc b/project/text-files/itemslot.inc/itemslot-head-cr.inc
new file mode 100755
index 0000000..dbea88a
--- /dev/null
+++ b/project/text-files/itemslot.inc/itemslot-head-cr.inc
@@ -0,0 +1 @@
+#ITEMSLT
diff --git a/project/text-files/itemslot.inc/itemslot-info-cr.inc b/project/text-files/itemslot.inc/itemslot-info-cr.inc
new file mode 100755
index 0000000..1d6c2a7
--- /dev/null
+++ b/project/text-files/itemslot.inc/itemslot-info-cr.inc
@@ -0,0 +1,24 @@
+#ITEMSLT <<< The first 8 characters are the magic for ItemSlot.bin text files.
+# <<< Don't remove them!
+#
+#------------------------------------------------------------------------------
+#
+# This is the textual representation of ItemSlot.bin and ItemSlotTable.slt
+# files. It is defined by Wiimm and scanned by a 2-pass parser.
+#
+# Hints for decoding to a text file:
+#
+# - If either option --no-header (-H) or option --brief (-B) is set, this
+# general description is suppressed.
+#
+# - If either option --export (-X) is set once or option --brief (-B) is set
+# twice, a very small text file without descriptions and other not needed
+# parameters is created.
+#
+# - If option --long (-l) is set, then additional hidden parameters are
+# included. They are automatically included, if they are differ from the
+# the standard settings.
+#
+# See http://wiki.tockdom.com/wiki/ItemSlot.bin for more details.
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/itemslot.inc/itemslot-param-cr.inc b/project/text-files/itemslot.inc/itemslot-param-cr.inc
new file mode 100755
index 0000000..6e16e0e
--- /dev/null
+++ b/project/text-files/itemslot.inc/itemslot-param-cr.inc
@@ -0,0 +1,6 @@
+[PARAMETERS]
+@REVISION = %u
+
+ADD-BATTLE = %d # used if creating a binary file
+USE-SLT = %d # information only
+
diff --git a/project/text-files/itemslot.inc/itemslot-setup-cr.inc b/project/text-files/itemslot.inc/itemslot-setup-cr.inc
new file mode 100755
index 0000000..c8d5b7c
--- /dev/null
+++ b/project/text-files/itemslot.inc/itemslot-setup-cr.inc
@@ -0,0 +1,12 @@
+
+#
+###############################################################################
+
+[SETUP]
+
+# identification of creator tool
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
diff --git a/project/text-files/itemslot.inc/itemslot-table-cr.inc b/project/text-files/itemslot.inc/itemslot-table-cr.inc
new file mode 100755
index 0000000..d7fe18b
--- /dev/null
+++ b/project/text-files/itemslot.inc/itemslot-table-cr.inc
@@ -0,0 +1,3 @@
+[%s] # %s table at offset 0x%03x, %u rows, %u columns
+@REVISION = %u
+
diff --git a/project/text-files/kcl.inc/kcl-dump-head-cr.inc b/project/text-files/kcl.inc/kcl-dump-head-cr.inc
new file mode 100644
index 0000000..5a48c68
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-dump-head-cr.inc
@@ -0,0 +1,40 @@
+
+S.verticies =%8u
+S.normals =%8u
+S.triangles =%8u, %u unused, %u fixed, %u invalid
+S.octree_size =%8u
+S.total_size =%8u
+
+H.unknown_0x10 = %11.3f
+H.unknown_0x38 = %11.3f
+
+H.min_octree = %11.3f %11.3f %11.3f # minimum coord for octree entrance
+S.min_point = %11.3f %11.3f %11.3f # minimum coord of all points
+S.mean_point = %11.3f %11.3f %11.3f # arithmetic mean of all points
+S.max_point = %11.3f %11.3f %11.3f # maximum coord of all points
+S.max_octree = %11.3f %11.3f %11.3f # maximum coord for octree entrance
+
+H.mask = 0x%08x 0x%08x 0x%08x # masks (header)
+H.shifts = %8u> %8u< %8u< # header shift values
+S.null_bits = %8u %8u %8u # number of low 0 bits
+S.bcube_bits = %8u %8u %8u # number of base cube bits
+S.n_bcubes = %8u %8u %8u # number of base cubes
+
+S.min_distance = %14.6f # minimum distance between points of a triangle
+S.max_distance = %11.3f # maximum distance between points of a triangle
+
+S.bcube_width = %8u # width of a single base cube = 2^rshift
+S.max_cube_width = %8u # maximum width of a cube with triangles
+S.min_cube_width = %8u # minimum width of a cube with triangles
+~S.blow_size = %8u # suggestion: what KCL_BLOW value was used
+S.n_base_cubes = %8u # number of base cubes
+S.n_cube_nodes = %8u # number of cube nodes (each with 8 cube links)
+S.total_cubes = %8u # total number of cubes
+S.max_depth = %8u # maximum octree depth
+S.ave_depth = %11.2f # average octree depth
+
+S.n_null_lists = %8u # number of triangle lists with 0 triangles
+S.n_tri_lists = %8u # number of triangle lists with >0 triangles
+S.n_null_links = %8u # number of triangle links to lists with 0 triangles
+S.n_tri_links = %8u # number of triangle links to lists with >0 triangles
+
diff --git a/project/text-files/kcl.inc/kcl-dump-octlist-cr.inc b/project/text-files/kcl.inc/kcl-dump-octlist-cr.inc
new file mode 100644
index 0000000..eab8bf7
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-dump-octlist-cr.inc
@@ -0,0 +1,2 @@
+
+#L#
diff --git a/project/text-files/kcl.inc/kcl-dump-octree-cr.inc b/project/text-files/kcl.inc/kcl-dump-octree-cr.inc
new file mode 100644
index 0000000..daff0ce
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-dump-octree-cr.inc
@@ -0,0 +1,6 @@
+
+#
+###############################################################################
+# Octree dump: %u base cubes + %u normal cubes, %u triangle lists
+
+#O#
diff --git a/project/text-files/kcl.inc/kcl-dump-tridata-cr.inc b/project/text-files/kcl.inc/kcl-dump-tridata-cr.inc
new file mode 100644
index 0000000..d15fd47
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-dump-tridata-cr.inc
@@ -0,0 +1,15 @@
+# List of %u triangles
+
+#D#
+#-----------------------------------------+----------------------------------
+# N0 _______ x,y,z of normal #0 _______ | flags (income -> current)
+# N1 _______ x,y,z of normal #1 _______ | status
+# N2 _______ x,y,z of normal #2 _______ | 'valid', 'used'
+# N3 _______ x,y,z of normal #3 _______ |
+# P1 _______ x,y,z of point #1 ________ | length
+# P2 _______ x,y,z of point #2 ________ | difference: point2 - point1
+# P3 _______ x,y,z of point #3 ________ | difference: point3 - point1
+# LEN _______ 3x side length2 __________ | area of triangle
+# HT _______ 3x height ________________ | min and max height
+#-----------------------------------------+----------------------------------
+
diff --git a/project/text-files/kcl.inc/kcl-flag-template-cr.inc b/project/text-files/kcl.inc/kcl-flag-template-cr.inc
new file mode 100644
index 0000000..8394619
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-flag-template-cr.inc
@@ -0,0 +1,48 @@
+
+##############################################################################
+##### All behind a '#' on the same line is a comment and ignored. #####
+##### See https://szs.wiimm.de/doc/kcl/flagfile for more details. #####
+##############################################################################
+# function f()
+
+# First, we define a flag function named f().
+# This allows us to define type and variant as 2 values.
+
+@function f # (type,variant)
+ @return $1 & 0x1f | $2 << 5
+@endfunction
+
+##############################################################################
+# function a()
+
+# Here we define function a() to support the flag variant type A.
+# For details see http://wiimm.de/r/ctw/KCL_flag
+
+@function a # (type,w,x,y,z)
+ @return $1 & 0x1f # type (5 bits)
+ > | ( $2 & 7 ) << 13 # W (3 bits)
+ > | ( $3 & 3 ) << 11 # X (2 bits)
+ > | ( $4 & 7 ) << 8 # Y (3 bits)
+ > | ( $5 & 7 ) << 5 # Z (3 bits)
+@endfunction
+
+##############################################################################
+# function i()
+
+# The function i() supports fall boundaries.
+
+@function i # (type,z,index)
+ @return $1 & 0x1f # type (5 bits)
+ > | ( $2 & 7 ) << 5 # Z (3 bits)
+ > | ( $3 & 0xff ) << 8 # index (8 bits)
+@endfunction
+
+##############################################################################
+# table
+
+#-----------------------------------------------------------------------------
+# group_name = flag_or_expression
+# = f(type,variant)
+# = a(type,w,x,y,z)
+# = i(type,z,index)
+#-----------------------------------------------------------------------------
diff --git a/project/text-files/kcl.inc/kcl-head-cr.inc b/project/text-files/kcl.inc/kcl-head-cr.inc
new file mode 100644
index 0000000..1dfe947
--- /dev/null
+++ b/project/text-files/kcl.inc/kcl-head-cr.inc
@@ -0,0 +1,18 @@
+#KCL : Wavefront OBJ File
+
+## Created by 'Wiimms SZS Tools' - https://szs.wiimm.de/
+#@ TOOL = %s
+#@ SYSTEM = %s
+#@ VERSION = %s
+#@ REVISION = %u
+#@ DATE = %s
+#@ MODE = %s
+
+
+# Statistics:
+#
+# %8u vertices
+# %8u normals
+# %8u triangles
+# %8u groups
+#
diff --git a/project/text-files/kmp.inc/kmp-area-cr.inc b/project/text-files/kmp.inc/kmp-area-cr.inc
new file mode 100644
index 0000000..332e5b8
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-area-cr.inc
@@ -0,0 +1,16 @@
+
+#FF#
+###############################################################################
+
+[AREA]
+# Camera and other areas
+# KMP/AREA syntax & semantics: https://szs.wiimm.de/doc/kmp/area
+
+@REVISION = %u
+@AREA-HEAD-VALUE = %#x
+
+#AREA#
+#------------------------------------------------------------------------------------
+# mode type _____position/rotation/scale______ _________settings_________
+# idx came prio x y z #1 #2 #3 #4
+#------------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-came-cr.inc b/project/text-files/kmp.inc/kmp-came-cr.inc
new file mode 100644
index 0000000..a799131
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-came-cr.inc
@@ -0,0 +1,19 @@
+
+#FF#
+###############################################################################
+
+[CAME]
+# Cameras
+# KMP/CAME syntax & semantics: https://szs.wiimm.de/doc/kmp/came
+
+@REVISION = %u
+@OPENING-INDEX = %s
+@SELECTION-INDEX = %s
+
+#CAME#
+#-------------------------------------------------------------------------------------------
+# idx type v(came) _________position (x,y,z)_________ zoom_beg # some
+# next v(zoom) _________rotation (x,y,z)_________ zoom_end # calculated
+# unknown v(v.pt) ______view point beg (x,y,z)______ - # values
+# route unknown ______view point end (x,y,z)______ sec*60 # (info only)
+#-------------------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-ckph-cr.inc b/project/text-files/kmp.inc/kmp-ckph-cr.inc
new file mode 100644
index 0000000..2877ac5
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-ckph-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[CKPH]
+# Check points header: Divide check points into groups.
+# KMP/CKPH syntax & semantics: https://szs.wiimm.de/doc/kmp/ckph
diff --git a/project/text-files/kmp.inc/kmp-ckpt-cr.inc b/project/text-files/kmp.inc/kmp-ckpt-cr.inc
new file mode 100644
index 0000000..575283a
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-ckpt-cr.inc
@@ -0,0 +1,32 @@
+
+#FF#
+###############################################################################
+
+[CKPT]
+# Check points
+# KMP/CKPT syntax & semantics: https://szs.wiimm.de/doc/kmp/ckpt
+
+@REVISION = %u
+@CKPT-HEAD-VALUE = %#x
+@CKPH-HEAD-VALUE = %#x
+@AUTO-NEXT = %u
+@AUTO-GROUP-NAME = 0
+@AUTO-RESPAWN = 0 # 0:off, 1:on
+
+@AUTO-MODE = mode$automode
+# allowed values: AM$OFF AM$NORM AM$RENUMBER AM$1LAP AM$SHORT AM$UNLIMIT
+
+@ROUTE-OBJECT-MODE = mode$showck
+#--- default settings:
+# @ROUTE-OBJECT1 = o$%s
+# @ROUTE-OBJECT2 = o$%s
+# @ROUTE-OBJECT1-SCALE = v( %4.2f, %4.2f, %4.2f )
+# @ROUTE-OBJECT2-SCALE = v( %4.2f, %4.2f, %4.2f )
+# @ROUTE-OBJECT1-BASE = %d
+# @ROUTE-OBJECT2-BASE = %d
+
+#CKPT#
+#----------------------------------------------------------------------#-------------------
+# _____left_point______ _____right_point_____ respawn prev # width direc-
+#idx x y x y mode next # of ckpt tion
+#----------------------------------------------------------------------#-------------------
diff --git a/project/text-files/kmp.inc/kmp-cnpt-cr.inc b/project/text-files/kmp.inc/kmp-cnpt-cr.inc
new file mode 100644
index 0000000..e3a0648
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-cnpt-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[CNPT]
+# Cannon target positions
+# KMP/CNPT syntax & semantics: https://szs.wiimm.de/doc/kmp/cnpt
diff --git a/project/text-files/kmp.inc/kmp-defaults-cr.inc b/project/text-files/kmp.inc/kmp-defaults-cr.inc
new file mode 100644
index 0000000..abbdc82
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-defaults-cr.inc
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+
+# These are the default settings for route objects:
+# @ROUTE-OBJECT = %s
+# @ROUTE-OBJECT-SHIFT = v( %4.2f, %4.2f, %4.2f )
+# @ROUTE-OBJECT-SCALE = v( %4.2f, %4.2f, %4.2f )
+
diff --git a/project/text-files/kmp.inc/kmp-enph-cr.inc b/project/text-files/kmp.inc/kmp-enph-cr.inc
new file mode 100644
index 0000000..13225b9
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-enph-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[ENPH]
+# Enemy route points header: Divide enemy points into groups.
+# KMP/ENPH syntax & semantics: https://szs.wiimm.de/doc/kmp/enph
diff --git a/project/text-files/kmp.inc/kmp-enpt-cr.inc b/project/text-files/kmp.inc/kmp-enpt-cr.inc
new file mode 100644
index 0000000..101307a
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-enpt-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[ENPT]
+# Enemy Points: Routes of the cpu racers
+# KMP/ENPT syntax & semantics: https://szs.wiimm.de/doc/kmp/enpt
diff --git a/project/text-files/kmp.inc/kmp-enpt-ropt-cr.inc b/project/text-files/kmp.inc/kmp-enpt-ropt-cr.inc
new file mode 100644
index 0000000..367eee0
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-enpt-ropt-cr.inc
@@ -0,0 +1,42 @@
+
+# Experimental options, tools before v1.60a will throw error messages!
+@SHOW-OPTIONS = %d # >0: force printing of all route options
+
+# AUTO-CONNECT is one of the following AC$* symbols:
+# For racing tracks and for battle areenas with manual links setup:
+# AC$OFF
+# Do not any auto connection. Route connection are fully under control
+# of the user.
+# AC$PREV
+# Setup PREV links by NEXT links of other routes. Existing PREV links
+# are cleared before. This is the default and the behavior of all versions
+# before v1.60a.
+#
+# Modes for automatic route connection in battle arenas:
+# AC$DISPATCH
+# Find dispatch points and create links automatically if not already
+# set manually. This is the default for enemy routes, if dispatch
+# points detected.
+#
+# Flags: The modes of above can be combined with the following options by
+# the OR operator '|' (example: AC$PREV | ACF$FIX)
+# ACF$FIX_PREV
+# Add self-links, if a PREV list is empty.
+# ACF$FIX_NEXT
+# Add self-links, if a NEXT list is empty.
+# ACF$FIX
+# Abbreviation for: ACF$FIX_PREV | ACF$FIX_NEXT
+# This is the default for item routes to avoid a freeze.
+#
+@AUTO-CONNECT = %s%s
+
+# Syntax of new command with impact to all following $GROUP commands:
+# "$DEF-CLASS" [":"] class_name
+
+# Syntax of new route commands (placed behind $GROUP command):
+# "$PREV" [":"] [group_name]...
+# "$SETTINGS" [":"] setting1 setting2 [ "AUTO" | "ROUTE" | "DISPATCH" ]
+# "$CLASS" [":"] class_name_prev [class_name_next]
+# "$AC-PREV" [":"] class_name
+# "$AC-NEXT" [":"] class_name
+# "$ONEWAY" [":"] "NONE" | "PREV" | "NEXT" | "BOTH"
diff --git a/project/text-files/kmp.inc/kmp-gobj-cr.inc b/project/text-files/kmp.inc/kmp-gobj-cr.inc
new file mode 100644
index 0000000..86943aa
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-gobj-cr.inc
@@ -0,0 +1,49 @@
+
+#FF#
+###############################################################################
+
+[GOBJ]
+# Global objects.
+# KMP/GOBJ syntax & semantics: https://szs.wiimm.de/doc/kmp/gobj
+
+@REVISION = %u
+@GOBJ-HEAD-VALUE = %#x
+@AUTO-ENEMY-ITEM = 0 # mode$test ? <item$star,item$mega> : 0
+@AUTO-OBJECT-NAME = 0
+@KCL-FALL-WIDTH = 0 # set to a value >0 (e.g. 200) to enable KCL falling
+@KCL-FALL-PRE-ADD = 0 # add this height or vector before falling
+@KCL-FALL-POST-ADD = 0 # add this height or vector after success
+@KCL-FALL-TYPES = KCL$DRIVE # bit field of recognized KCL types
+ # Best values are:
+ # - KCL$BORDER: All KCL types except effects.
+ # - KCL$DRIVE: All driveable types like road, boost, ramp, water, ...
+@SORT-OBJECTS = SORT$OFF # SORT$GROUPING SORT$ANGLE SORT$TINY
+
+#------------------------------------------------------------------------------
+# Definition objects and references
+
+# There is a new kind of presence flags in progress:
+# http://wiki.tockdom.com/wiki/Extension_of_Presence_Flags
+# Since v2.11a, the KMP compiler supports this new extension.
+# Here you find some global settings for the new extension:
+
+# If >0: Reset not defined parameters of definitions-object to their default
+# values.
+@FIX-OBJDEF = 0
+
+# If not DOB$OFF: Sort definitions-objects by object-id and move them to the
+# beginning (DOB$BEGIN) or to the end (DOB$END) of all GOBJ elements.
+@SORT-OBJDEF = DOB$OFF
+
+# If >0: Clear invalid reference-ids for modes 0 and 1.
+# If >1: Clear invalid reference-ids independend of the mode.
+@FIX-REFERENCE = 0
+
+# If not DOB$OFF: Sort standard objects with a valid reference-id directly
+# before (DOB$BEFORE) or behind (DOB$BEHIND) the related definition-object.
+@SORT-REFERENCE = DOB$OFF
+
+# Object statistics:
+##--------------------------------------------------------------------------------------------
+##count id/hex name characteristics
+##--------------------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-gobj-tabhead-cr.inc b/project/text-files/kmp.inc/kmp-gobj-tabhead-cr.inc
new file mode 100644
index 0000000..6aba1b7
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-gobj-tabhead-cr.inc
@@ -0,0 +1,5 @@
+#GOBJ#
+#------------------------------------------------------------------------------------
+# idx obj-id ______position/rotation/scale______ _________settings_________ route
+# /ref-id x y z #1/#5 #2/#6 #3/#7 #4/#8 /p-flag
+#------------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-head-cr.inc b/project/text-files/kmp.inc/kmp-head-cr.inc
new file mode 100644
index 0000000..b4831b9
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-head-cr.inc
@@ -0,0 +1,28 @@
+#KMP <<< The first 4 characters '#KMP' are the magic for a KMP text file.
+# <<< Don't remove them!
+#
+###############################################################################
+#
+# This is a textual representation of a KMP file used in Nintendos "Mario Kart
+# Wii". "Wiimms SZS Tools" can convert binary (raw) and text KMP files in both
+# directions. The text parser supports variables, C like expressions and nested
+# IF-THEN-ELSE and LOOP structures.
+#
+# Info about the general parser syntax and semantics:
+# * https://szs.wiimm.de/doc/syntax
+#
+# Info about the KMP text syntax and semantics:
+# * https://szs.wiimm.de/doc/kmp/syntax
+#
+# Reference list of KMP parser functions:
+# * https://szs.wiimm.de/doc/kmp/func
+#
+# Info about the KMP file format:
+# * https://szs.wiimm.de/r/wiki/KMP
+#
+# Hint:
+# Set one of the options --no-header (-H) or --brief (-B) while decoding
+# to suppress this general description. The --brief option will also disable
+# info parts in the different sections. If --brief is set twice, the output
+# of the unneded sections CKPH, ENPH and ITPH is completly suppressed.
+#
diff --git a/project/text-files/kmp.inc/kmp-itph-cr.inc b/project/text-files/kmp.inc/kmp-itph-cr.inc
new file mode 100644
index 0000000..ee80374
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-itph-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[ITPH]
+# Item route points header: Divide item points into groups.
+# KMP/ITPH syntax & semantics: https://szs.wiimm.de/doc/kmp/itph
diff --git a/project/text-files/kmp.inc/kmp-itpt-cr.inc b/project/text-files/kmp.inc/kmp-itpt-cr.inc
new file mode 100644
index 0000000..20305d3
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-itpt-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[ITPT]
+# Item Points: Routes of red shells and bullet bill
+# KMP/ITPT syntax & semantics: https://szs.wiimm.de/doc/kmp/itpt
diff --git a/project/text-files/kmp.inc/kmp-itpt-ropt-cr.inc b/project/text-files/kmp.inc/kmp-itpt-ropt-cr.inc
new file mode 100644
index 0000000..87659bd
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-itpt-ropt-cr.inc
@@ -0,0 +1,4 @@
+
+# Route options. See section [ENPT] for details.
+@SHOW-OPTIONS = %d # >0: force printing of all route options
+@AUTO-CONNECT = %s%s
diff --git a/project/text-files/kmp.inc/kmp-jgpt-auto-cr.inc b/project/text-files/kmp.inc/kmp-jgpt-auto-cr.inc
new file mode 100644
index 0000000..6bf973e
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-jgpt-auto-cr.inc
@@ -0,0 +1,26 @@
+
+# Automatic definition of respawn points
+@AUTO-DEFINE = 0 # 0 | SECT$ENPT | SECT$ITPT
+@AUTO-DISTANCE = 1000.0 # minimal distance to other JGPT
+@AUTO-ADJUST = vy(100) # add this value to each auto-JGPT
+@AUTO-REMOVE = 0 # 0|1|2
+
+# Column 'flag' is optional and only used internally.
+# Syntax: FLAGS_STRING or '(' EXPRESSION ')'
+# F (F$FALL): Point can be used for FALL-DOWN functionality.
+# S (F$SNAP): Point can be used for SNAP functionality.
+# Remove the letter or replace it by '-' to disable a feature.
+# If the column is missed, all options are enabled by default.
+
+# If you enable EXPORT-FLAGS (set it to 1), the flags are exported using the
+# lowest byte of ROTATION.x. The rotation value needs only 4 or 5 digits, so
+# this has no disadvantage for the rotation. 5 of the 8 bits are used to
+# verify changes by other tools on import. If at least 1 of these bits of all
+# points is wrong, import is canceled.
+@EXPORT-FLAGS = %d # 0=disabled, 1=enabled (overridden by option --export-flags)
+
+#JGPT#
+#------------------------------------------------------------------------------------
+# _____________position_____________ _______rotation________ related flags
+# idx x y z x y z id effect
+#------------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-jgpt-cr.inc b/project/text-files/kmp.inc/kmp-jgpt-cr.inc
new file mode 100644
index 0000000..266be1b
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-jgpt-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[JGPT]
+# Respawn positions
+# KMP/JGPT syntax & semantics: https://szs.wiimm.de/doc/kmp/jgpt
diff --git a/project/text-files/kmp.inc/kmp-ktpt-cr.inc b/project/text-files/kmp.inc/kmp-ktpt-cr.inc
new file mode 100644
index 0000000..b19a0b7
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-ktpt-cr.inc
@@ -0,0 +1,23 @@
+
+#FF#
+###############################################################################
+
+[KTPT]
+# Kart Points: Starting positions of the racers
+# KMP/KTPT syntax & semantics: https://szs.wiimm.de/doc/kmp/ktpt
+
+@REVISION = %u
+@KTPT-HEAD-VALUE = %#x
+@KCL-FALL-WIDTH = 0 # set to a value >0 (e.g. 200) to enable KCL falling
+@KCL-FALL-PRE-ADD = 0 # add this height or vector before falling
+@KCL-FALL-POST-ADD = 0 # add this height or vector after success
+@KCL-FALL-TYPES = KCL$DRIVE # bit field of recognized KCL types
+ # Best values are:
+ # - KCL$BORDER: All KCL types except effects.
+ # - KCL$DRIVE: All driveable types like road, boost, ramp, water, ...
+
+#KTPT#
+#--------------------------------------------------------------------------------
+# _____________position______________ _______rotation_______ player
+#idx x y z x y z index unknown
+#--------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-macros-cr.inc b/project/text-files/kmp.inc/kmp-macros-cr.inc
new file mode 100644
index 0000000..8104070
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-macros-cr.inc
@@ -0,0 +1,60 @@
+
+#
+###############################################################################
+# Macros
+
+@macro itembox
+ #-------------------------------------------------------------------
+ # This macro helps to place N itemboxes in a row between
+ # 2 points with optimal height.
+ #-------------------------------------------------------------------
+ # Syntax:
+ # @:ITEMBOX(fall,1,pos1)
+ # @:ITEMBOX(fall,n,pos1,pos2)
+ # @:ITEMBOX(fall,n,pos1,pos2,factor)
+ # @:ITEMBOX(fall,n,pos1,pos2,factor,second)
+ # @:ITEMBOX(fall,n,pos1,pos2,factor,second,itemtype)
+ #-------------------------------------------------------------------
+ # Parameters:
+ # FALL : If >0: Raise the box by FALL and let it fall to
+ # : the road to get the optimal height.
+ # N : If >0: Create N itemboxes between POS1 and POS2.
+ # POS1 : Position of first itembox.
+ # POS2 : Position of last itembox.
+ # FACTOR : If set and >0.01: Create a line from POS1 to POS2.
+ # : Enlarge the line by FACTOR in both directions.
+ # : Then use the new points as new POS1 and POS2.
+ # SECOND : If set and >0: Move each second itembox into a second
+ # : row. The distance between both rows is SECOND units.
+ # ITEMTYPE: Use this value for player and enemy items.
+ #-------------------------------------------------------------------
+ # Examples:
+ # @:itembox( 200, 1, point )
+ # @:itembox( 0, 3, point1, point2, 0.9 )
+ # @:itembox( 500, 8, point1, point2, 1, 250, ITEM$3GREEN )
+ # @:itembox( 200, 4, v(2000,1000,3000), v(3000,1000,5000) )
+ #-------------------------------------------------------------------
+
+ @param fall n p1 p2 factor second itemtype
+ @pdef fall = fall > 0 ? fall : 0
+ @if isScalar(factor) && factor > 0.01
+ @pdef a = p1, b = p2, f = (1.0-factor)/2
+ @pdef p1 = pos(f,a,b)
+ @pdef p2 = pos(f,b,a)
+ @endif
+ @pdef itemtype = int(itemtype)
+ @if n == 1
+ @pdef p = fall ? kcl$fall(p1+vy(fall),200,KCL$DRIVE) : p1
+ 0 o$itembox p 0 itemtype itemtype 0 -1 0 v3(0) 0 0 0 0 0x3f v3(1)
+ @else
+ @pdef second = isScalar(second) && second > 0
+ > ? hrot(vz(second),hdir(p1,p2)+90) : v3(0)
+ @pdef n = n - 1.0
+ @for i=0;n
+ @pdef p = pos(i/n,p1,p2)
+ @doif(i&1) @pdef p = p + second
+ @doif(fall) @pdef p = kcl$fall(p+vy(fall),200,KCL$DRIVE)
+ 0 o$itembox p 0 itemtype itemtype 0 -1 0 v3(0) 0 0 0 0 0x3f v3(1)
+ @endfor
+ @endif
+@endmacro
diff --git a/project/text-files/kmp.inc/kmp-mspt-cr.inc b/project/text-files/kmp.inc/kmp-mspt-cr.inc
new file mode 100644
index 0000000..1cd13b2
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-mspt-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[MSPT]
+# End battle positions
+# KMP/MSPT syntax & semantics: https://szs.wiimm.de/doc/kmp/mspt
diff --git a/project/text-files/kmp.inc/kmp-param1-cr.inc b/project/text-files/kmp.inc/kmp-param1-cr.inc
new file mode 100644
index 0000000..9d44e42
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-param1-cr.inc
@@ -0,0 +1,54 @@
+
+#FF#
+###############################################################################
+
+# This second part of section [SETUP] is an example to prepare a KMP source
+# file for conditional encoding (compiling). The idea is, that the user
+# defines variables with the "--const name=value" option while calling one of
+# the tools 'wszst' or 'wkmpt' to create different KMP files.
+#
+# Set option --no-param (-P) to disable this parameter part.
+#
+# This example scans 7 parameters. All variables are not special for the KMP
+# encoder and fully under user control: The user can remove or rename them or
+# can add more parameters. But this values have predefined meanings:
+#
+# slot : Create a KMP for the entered slot.
+# The default value 0 means: Design for allmost all slots.
+# Use it with @if..@else..@endif to support special slots.
+#
+# d : Create a KMP file for a "_d" variant of a track.
+# Use it with @if..@else..@endif to skip objects.
+#
+# arena : If >0, then create a battle arena instead of a racing track.
+#
+# test : If >0, then test mode is enabled.
+# If <=0, test mode and also all parameters below are disabled.
+#
+# ocam : If >0 and also test>0, then enable test of opening camera #
+# (endless looping until button 'A' is pressed). With the default
+# value 0 all opening scenes are looped. If test mode is disabled,
+# the cameras work as usual.
+#
+# showrt : If set and also test>0, points of different sections ar shown as
+# item boxes and all standard item boxes are disabled. Set one or more
+# of the following bits to show the points of the section:
+# 1 : ENPT
+# 2 : ITPT
+# 4 : JGPT
+# 8 : CNPT
+# 16 : MSPT
+# 32 : POTI
+# -1 : enable all section (all bits set!)
+#
+# showck : If set and also test>0, show check points as trees (or other
+# user defined objects). See section [CKPT] for details.
+#
+# laps : It controls the number of laps by changing the settinge of the
+# check point modes (CKPT/@AUTO-MODE). Allowed values are:
+# 0: Make the race a short as possible.
+# 1: Finish the race after 1 lap
+# 3: Finish the race after 3 laps (default).
+# 4: Never finish the race (unlimited).
+# Value 3 is used, if test mode is disabled.
+#
diff --git a/project/text-files/kmp.inc/kmp-param2-cr.inc b/project/text-files/kmp.inc/kmp-param2-cr.inc
new file mode 100644
index 0000000..7ac8677
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-param2-cr.inc
@@ -0,0 +1,28 @@
+
+# First we define default values (if not set by --const) for all parameters:
+
+ @def slot ?= 0 # Enable support for special slots
+ @def d ?= 0 # Enable support for _d files
+ @def arena ?= 0 # Enable battle arena support and allow different modes
+ @def test ?= 0 # Enable test mode
+ @def ocam ?= 0 # Test opening cam, only relevant if test>0
+ @def showrt ?= 0 # Show item boxes for route points.
+ # Only relevant if test>0. Set bit combination:
+ # 1:ENPT, 2:ITPT, 4:JGPT, 8:CNPT, 0x10:MSPT, 0x20:POTI (-1:all)
+ @def showck ?= 0 # Show objects a check point positions if test>0.
+ # 0:off, 1:mandatory, 2:all, 3=left+right
+ @def laps ?= 3 # Number of laps (0|1|3|4), only relevant if test>0
+
+# In a second step, global mode variables are defined and normalized.
+# All conditions in this file should use these variables.
+
+ @gdef mode$slot = slot > 0 ? slot : 0
+ @gdef mode$d = d > 0
+ @gdef mode$arena = arena > 0 ? arena : 0
+
+ @gdef mode$test = test > 0 ? test : 0
+ @gdef mode$ocam = mode$test && ocam >= 1 ? ocam : 0
+ @gdef mode$laps = mode$test && laps >= 0 ? laps : 3
+ @gdef mode$showrt = mode$test ? showrt : 0
+ @gdef mode$showck = mode$test ? showck : 0
+ @gdef mode$automode = select(mode$laps,AM$SHORT,AM$1LAP,AM$OFF,AM$OFF,AM$UNLIMIT)
diff --git a/project/text-files/kmp.inc/kmp-param3-cr.inc b/project/text-files/kmp.inc/kmp-param3-cr.inc
new file mode 100644
index 0000000..653273a
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-param3-cr.inc
@@ -0,0 +1,6 @@
+
+# Now the tools 'wszst' and 'wkmpt' can be called with the --const (or short
+# -c) option for a conditional encoding. Example:
+# -c test=12,ocam=2,laps=0
+# Enable test mode 12, show opening camera 2 endless (until pressing A) and
+# finish the race very fast to view the finish cameras very soon.
diff --git a/project/text-files/kmp.inc/kmp-ph-cr.inc b/project/text-files/kmp.inc/kmp-ph-cr.inc
new file mode 100644
index 0000000..c9dbeb3
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-ph-cr.inc
@@ -0,0 +1,15 @@
+
+#######################################################################
+## This complete section is only informative and ignored on reading, ##
+## because it will be created while scanning the [%s] section. ##
+#######################################################################
+
+# values never used:
+ # @REVISION = %u
+ # @%s-HEAD-VALUE = %#x
+
+#%s#
+#-----------------------------------------------------------------------------#-------
+# ___range___ _________prev__________ _________next__________ # group
+#idx beg end len #1 #2 #3 #4 #5 #6 #1 #2 #3 #4 #5 #6 unknown # name
+#-----------------------------------------------------------------------------#-------
diff --git a/project/text-files/kmp.inc/kmp-poti-cr.inc b/project/text-files/kmp.inc/kmp-poti-cr.inc
new file mode 100644
index 0000000..e9cdc50
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-poti-cr.inc
@@ -0,0 +1,42 @@
+
+#FF#
+###############################################################################
+
+[POTI]
+# Routes
+# KMP/POTI syntax & semantics: https://szs.wiimm.de/doc/kmp/poti
+
+@REVISION = %u
+@AUTO-ROUTE-NAME = 0
+
+# If a route is closed, 3 global variables are defined for the route.
+# 'NAME' is a placeholder for the route name (before renaming happens):
+# NAME.len = Total route distance over all points.
+# NAME.time = Total route time in 1/60 seconds calculated by the sum of
+# all distances and the associated speed values.
+# NAME.time.set = Same value as 'NAME.time' (but see below).
+
+# These 15 commands that are computed after closing a route in this order:
+# @KCL-FALL-WIDTH = CUBE_WIDTH
+# @KCL-FALL-PRE-ADD = HEIGHT_OR_VECTOR
+# @KCL-FALL-POST-ADD = HEIGHT_OR_VECTOR
+# @KCL-FALL-TYPES = TYPEMASK
+# @XSS = X1OLD,X1NEW, X2OLD,X2NEW
+# @YSS = Y1OLD,Y1NEW, Y2OLD,Y2NEW
+# @ZSS = Z1OLD,Z1NEW, Z2OLD,Z2NEW
+# @SCALE = FACTOR [ORIGIN]
+# @SHIFT = DELTA
+# @HROTATE = DEGREE [ORIGIN]
+# @REVERSE-ORDER = 0|1
+# @SET-ROUTE-TIME = SECONDS
+# @ROUTE-OBJECT = 0=OFF | -1=USE_DEFAULT_SETTINGS | >0=OBJECT_ID
+# # Example: mode$showrt & %u ? -1 : 0
+# @ROUTE-OBJECT-SHIFT = VECTOR
+# @ROUTE-OBJECT-SCALE = VECTOR
+# The commands are reset after computations.
+
+#POTI#
+#------------------------------------------------------#--------------------------
+# _____________position_____________ value un- # seconds+distance horiz
+#idx x y z 1/60s known # to next angle
+#------------------------------------------------------#--------------------------
diff --git a/project/text-files/kmp.inc/kmp-pt-head-cr.inc b/project/text-files/kmp.inc/kmp-pt-head-cr.inc
new file mode 100644
index 0000000..767cefd
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-pt-head-cr.inc
@@ -0,0 +1,6 @@
+
+#%s#
+#----------------------------------------------------------------------#-------------------
+# _____________position_____________ width properties # distance horiz
+#idx x y z factor #1 #2 flag # to prev angle
+#----------------------------------------------------------------------#-------------------
diff --git a/project/text-files/kmp.inc/kmp-pt-info-cr.inc b/project/text-files/kmp.inc/kmp-pt-info-cr.inc
new file mode 100644
index 0000000..8a06663
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-pt-info-cr.inc
@@ -0,0 +1,32 @@
+
+@REVISION = %u
+@%s-HEAD-VALUE = %#x
+@%s-HEAD-VALUE = %#x
+@AUTO-FILL = 0.0 # >1 (e.g. 5000): create more points if distance is larger
+@AUTO-GROUP-NAME = 0
+@ROTATE-GROUP-LINKS = 0
+@KCL-FALL-WIDTH = 0 # set to a value >0 (e.g. 200) to enable KCL falling
+@KCL-FALL-PRE-ADD = 0 # add this height or vector before falling
+@KCL-FALL-POST-ADD = 0 # add this height or vector after success
+@KCL-FALL-TYPES = KCL$DRIVE # bit field of recognized KCL types
+ # Best values are:
+ # - KCL$BORDER: All KCL types except effects.
+ # - KCL$DRIVE: All driveable types like road, boost, ramp, water, ...
+@ROUTE-OBJECT = mode$showrt & %u ? -1 : 0 # 0=off, -1=use default, >0=object id
+@ROUTE-OBJECT-SHIFT = $NONE # v3(0) # add vector to position
+@ROUTE-OBJECT-SCALE = $NONE # v3(1) # define vector scale
+
+# Column 'flag' is optional and ususally only used internally.
+# Syntax: FLAGS_STRING or '(' EXPRESSION ')'
+# F (F$FALL): Point can be used for FALL-DOWN functionality.
+# S (F$SNAP): Point can be used for SNAP functionality (ignored by ITPT).
+# J (F$JGPT): Point can be used for automatic JGPT creation.
+# Remove the letter or replace it by '-' to disable a feature.
+# If the column is missed, all options are enabled by default.
+
+# If you enable EXPORT-FLAGS (set it to 1), the flags are exported using the
+# lowest byte of WIDTH FACTOR. The factor needs only 2 or 3 digits, so this
+# has no disadvantage on the width factors. 5 of the 8 bits are used to verify
+# changes by other tools on import. If at least 1 of these bit of all points
+# is wrong, import is canceled.
+@EXPORT-FLAGS = %d # 0=disabled, 1=enabled (overridden by option --export-flags)
diff --git a/project/text-files/kmp.inc/kmp-pt-mask-cr.inc b/project/text-files/kmp.inc/kmp-pt-mask-cr.inc
new file mode 100644
index 0000000..8e5da27
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-pt-mask-cr.inc
@@ -0,0 +1,6 @@
+
+# Both settings support a common definition of ENPT and ITPT.
+# If writing a binary KMP file, the settings 1 and 2 are masked
+# (AND operation) by the following values:
+@mask-1 = 0x%04x
+@mask-2 = 0x%04x
diff --git a/project/text-files/kmp.inc/kmp-pt2-cr.inc b/project/text-files/kmp.inc/kmp-pt2-cr.inc
new file mode 100644
index 0000000..e7ee696
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-pt2-cr.inc
@@ -0,0 +1,25 @@
+
+@REVISION = %u
+@%s-HEAD-VALUE = %#x
+@AUTO-ID = %u
+
+# Activate automatic Y-correction (KCL fall)
+@KCL-FALL-WIDTH = 0 # set to a value >0 (e.g. 200) to enable KCL falling
+@KCL-FALL-PRE-ADD = 0 # add this height or vector before falling
+@KCL-FALL-POST-ADD = 0 # add this height or vector after success
+@KCL-FALL-TYPES = KCL$DRIVE # bit field of recognized KCL types
+ # Best values are:
+ # - KCL$BORDER: All KCL types except effects.
+ # - KCL$DRIVE: All driveable types like road, boost, ramp, water, ...
+
+# Snap to nearest point of the enemy route and add the vector.
+# Activate it with something like: vy(200) => 200 units higher than the enemy point
+@HSNAP-TO-ENPT = $NONE # horizontal snap without adjust, y-rotation
+@SNAP-TO-ENPT = $NONE # 3D snap, y-rotation
+@SNAP2-TO-ENPT = $NONE # 3D snap, x- and y-rotation
+
+# Show points in the track by using objects
+# Values: 0=off, -1=use default (block of ghost value), >0=force object with 'id'
+@ROUTE-OBJECT = mode$showrt & %u ? -1 : 0
+@ROUTE-OBJECT-SHIFT = $NONE # v3(0) # add vector to position
+@ROUTE-OBJECT-SCALE = $NONE # v3(1) # define vector scale
diff --git a/project/text-files/kmp.inc/kmp-pt2-head-cr.inc b/project/text-files/kmp.inc/kmp-pt2-head-cr.inc
new file mode 100644
index 0000000..f7ba30d
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-pt2-head-cr.inc
@@ -0,0 +1,6 @@
+
+#%s#
+#-------------------------------------------------------------------------------
+# _____________position_____________ _______rotation________ related
+# idx x y z x y z id effect
+#-------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-setup-cr.inc b/project/text-files/kmp.inc/kmp-setup-cr.inc
new file mode 100644
index 0000000..37b170a
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-setup-cr.inc
@@ -0,0 +1,43 @@
+
+#FF#
+###############################################################################
+
+[SETUP]
+# This is the general setup and info section. Some parameters are preceeded by
+# a hash ('#') to signal the informative only status. This section should
+# always be the first one.
+
+# Identify the tool and version, that have written this file:
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
+
+# If the following info string is not empty it will be
+# inserted at the end of the KMP file behind all sections:
+INFO = "%s"
+
+# KMP version (offset 0x0c):
+KMP-VERSION = %d
+
+# If set to '1', objects with road features will be added to the internal KCL
+# for the automatic height calculations. Like --kcl +add-road
+KCL-FALL-ADD-ROAD = 0
+
+# Define the battle mode for the next text output:
+# 0 : Disable battle support
+# 1 : Enable battle support
+# 2 : Enable exclusive battle support => remove unneeded sections and parameters
+# This setting is overiden by option --battle.
+BATTLE-MODE = %d
+
+# Experimental feature in progress!
+# If set to 1, an additional KMP section named »WIM0« is created. This new
+# section should contain data of this text file like names or flags, that can
+# be restored later. At the moment, the new section contains only dummy data
+# for compatibility tests with other tools and the Wii. Option --wim0 can
+# override this setting.
+KMP-WIM0 = %d
+
+# Statistics: Entry counter for each section:
diff --git a/project/text-files/kmp.inc/kmp-stgi-cr.inc b/project/text-files/kmp.inc/kmp-stgi-cr.inc
new file mode 100644
index 0000000..8c8c57d
--- /dev/null
+++ b/project/text-files/kmp.inc/kmp-stgi-cr.inc
@@ -0,0 +1,20 @@
+
+#FF#
+###############################################################################
+
+[STGI]
+# Stage information
+# KMP/STGI syntax & semantics: https://szs.wiimm.de/doc/kmp/stgi
+
+@REVISION = %u
+@STGI-HEAD-VALUE = %#x
+
+#STGI#
+#-----------------------------------------------------------------------------
+# Write a floating point number (a '.' is mandatory) instead of the
+# 2 last bytes, and it will be rounded and accepted as speed modifier.
+#-----------------------------------------------------------------#-----------
+# byte byte byte byte u32 byte byte byte byte # last 2
+# laps pole narrow flare flare flare pad or # bytes as
+#idx 1..9 1=rt if 1 1=on color alpha 0 speed mod # speed mod
+#-----------------------------------------------------------------#-----------
diff --git a/project/text-files/lex.inc/lex-elem-cann-cr.inc b/project/text-files/lex.inc/lex-elem-cann-cr.inc
new file mode 100644
index 0000000..50ae4ec
--- /dev/null
+++ b/project/text-files/lex.inc/lex-elem-cann-cr.inc
@@ -0,0 +1,15 @@
+
+#FF#
+###############################################################################
+
+[CANN]
+# Sort order: %u
+
+# Cannon characteristics:
+# http://wiki.tockdom.com/wiki/Template:Cannon_characteristics
+
+#CANN#
+#---------------------------------------------------
+# Deceleration End
+# Idx Speed Height Factor Deceleration
+#---------------------------------------------------
diff --git a/project/text-files/lex.inc/lex-elem-hipt-cr.inc b/project/text-files/lex.inc/lex-elem-hipt-cr.inc
new file mode 100755
index 0000000..479099e
--- /dev/null
+++ b/project/text-files/lex.inc/lex-elem-hipt-cr.inc
@@ -0,0 +1,35 @@
+
+#FF#
+###############################################################################
+
+[HIPT]
+# Sort order: %u
+
+# Hide the position tracker based on online mode, the current lap index and
+# the current checkpoint of the player.
+#
+# Each row is a rule. If a player enters a new check point, the first matching
+# rule is used. Therefor the current mode (offline or online), the current lap
+# index and the index of the current CKPT is compared with the row elements
+# COND, LAP, FROM and TO. Lap is 0 until crossing the lap counter the first
+# time. This includes the start position.
+#
+# Row members:
+# COND is either 1 for offline only, 2 for online only, or 3 for both cases.
+# LAP is compared with the current lap index. Negative values refer to the
+# absolute number of laps: -1 is always the last lap and -2 is the penultimate
+# lap. This means that the setting remains valid if the number of laps (STGI)
+# is changed. The special value 99 means 'match all laps'.
+# FROM and TO build an inclusive range to compare the current check point.
+# SHOW is either 0 or 1 to hide or show the position tracker. If no rule
+# matches, the position tracker is shown (like rule »3 99 0 255 1«).
+#
+# Notes: Place the most specific rules above and more general rules below on
+# the list because of the first-hit search. Parameter @OFFLINE-ONLINE of
+# section TEST can be used to force a condition for testing.
+
+#HIPT#
+#--------------------------
+# __CKPT__
+# cond lap from to show
+#--------------------------
diff --git a/project/text-files/lex.inc/lex-elem-set1-cr.inc b/project/text-files/lex.inc/lex-elem-set1-cr.inc
new file mode 100644
index 0000000..541fc88
--- /dev/null
+++ b/project/text-files/lex.inc/lex-elem-set1-cr.inc
@@ -0,0 +1,20 @@
+
+#FF#
+###############################################################################
+
+[SET1]
+# Sort order: %u
+
+# This section defines various settings. New settings are placed at the end
+# end of the binary data. Unknown data is printed as hexdump, so no data is
+# lost even with old tools. A value of 0 means: Not defined/initialized,
+# replace the value by the default value (maybe 0 again).
+
+#-------------------------
+
+# Online, items are only transmitted correctly, if the positions of all 3 axis
+# are between -131071 and +131071. The following vector defines 3 factors to
+# increase the range at the expense of accuracy. Factors <1.0 are set to 1.0.
+
+@ITEM-POS-FACTOR = v( %5.3f, %5.3f, %5.3f )
+
diff --git a/project/text-files/lex.inc/lex-elem-test-cr.inc b/project/text-files/lex.inc/lex-elem-test-cr.inc
new file mode 100644
index 0000000..93bfb4c
--- /dev/null
+++ b/project/text-files/lex.inc/lex-elem-test-cr.inc
@@ -0,0 +1,43 @@
+
+#FF#
+###############################################################################
+
+[TEST]
+# Sort order: %u
+
+# This section defines various settings to test special situations.
+
+#-----------------------------------------------------------------------
+# The next set defines parameters to test the extended conditions
+# (extended presence flags). The settings allow to force special modes.
+# Details: http://wiki.tockdom.com/wiki/Extended_presence_flags
+#-----------------------------------------------------------------------
+
+# Force offline or online mode. Use one symbol of: LEX$OO_AUTO (default),
+# LEX$OO_OFFLINE, LEX$OO_ONLINE.
+@OFFLINE-ONLINE = LEX$OO_%s
+
+# If >0: Force number of local players at Wii. It is robust, so values >4
+# are accepted, but rounded down to 4 (offline) or 2 (online).
+@N-OFFLINE = %u
+
+# If >0: Force number of total players for online modes. It is robust, so
+# values >99 are rounded down to 99.
+@N-ONLINE = %u
+
+# If between 0 and 15: Use this bit number to check 16-bit words of CONDITIONS
+# and ignore previous settings. Good values are: LEX$CB_AUTO, LEX$CB_TIMETRIAL
+# (same as LEX$CB_RESERVED1) and LEX$CB_RESERVED2.
+@COND-BIT = %d
+
+# Force a game mode. Use one symbol of: LEX$GM_AUTO (default), LEX$GM_BALLOON,
+# LEX$GM_COIN, LEX$GM_VERSUS, LEX$GM_ITEMRAIN or LEX$GM_STANDARD.
+@GAME-MODE = LEX$GM_%s
+
+# Force an engine mode. Use one symbol of: LEX$EN_AUTO (default),
+# LEX$EN_BATTLE, LEX$EN_50CC, LEX$EN_100CC, LEX$EN_150CC or LEX$EN_200CC.
+# For mirror modes use LEX$EN_150M or LEX$EN_200M.
+@ENGINE = LEX$EN_%s
+
+# If between 1 and 8: Force a random scenario.
+@RANDOM = %u
diff --git a/project/text-files/lex.inc/lex-head-cr.inc b/project/text-files/lex.inc/lex-head-cr.inc
new file mode 100755
index 0000000..5c94c39
--- /dev/null
+++ b/project/text-files/lex.inc/lex-head-cr.inc
@@ -0,0 +1,12 @@
+#LEX <<< The first 4 characters '#LEX' are the magic for a LEX text file.
+# <<< Don't remove them!
+#
+###############################################################################
+#
+# This is a textual representation of a LEX file. It is defined by Wiimm.
+#
+# Hint:
+# Set one of the options --no-header (-H) or --brief (-B) while decoding
+# to suppress this general description. The --brief option will also disable
+# info parts in the different sections.
+#
diff --git a/project/text-files/lex.inc/lex-hexdump-cr.inc b/project/text-files/lex.inc/lex-hexdump-cr.inc
new file mode 100755
index 0000000..156281f
--- /dev/null
+++ b/project/text-files/lex.inc/lex-hexdump-cr.inc
@@ -0,0 +1,16 @@
+
+#FF#
+###############################################################################
+
+[HEXDUMP]
+# Sort order: %u
+
+# Unknown sections are stored as hexdump to keep the data. The address field
+# and the ASCII part are for info only and ignored on scanning.
+
+@MAGIC = 0x%08x # %s
+
+#HEX#
+#----+------------------------------------------------------+----------------+
+#addr: data: bytes in hex | '(' expression ')' : ASCII of data :
+#----+------------------------------------------------------+----------------+
diff --git a/project/text-files/lex.inc/lex-setup-cr.inc b/project/text-files/lex.inc/lex-setup-cr.inc
new file mode 100755
index 0000000..d56bfdb
--- /dev/null
+++ b/project/text-files/lex.inc/lex-setup-cr.inc
@@ -0,0 +1,17 @@
+
+#FF#
+###############################################################################
+
+[SETUP]
+# This is the general setup and info section. Some parameters are preceeded by
+# a hash ('#') to signal the informative only status. This section should
+# always be the first one.
+
+# Identify the tool and version, that have written this file:
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
+
+# Statistics: List of all included sections:
diff --git a/project/text-files/logo.inc b/project/text-files/logo.inc
new file mode 100644
index 0000000..23def7c
--- /dev/null
+++ b/project/text-files/logo.inc
@@ -0,0 +1,14 @@
+ ***********************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * https://szs.wiimm.de/ *
+ * *
+ ***********************************
diff --git a/project/text-files/lpar.inc/lpar-head-cr.inc b/project/text-files/lpar.inc/lpar-head-cr.inc
new file mode 100644
index 0000000..0b7fa6e
--- /dev/null
+++ b/project/text-files/lpar.inc/lpar-head-cr.inc
@@ -0,0 +1,13 @@
+#LE-LPAR <<< The first 8 characters are the magic for a LE-CODE parameter file.
+# <<< Don't remove them!
+#
+###############################################################################
+#
+# This LE-CODE parameter file is a textual representation of the LPAR section
+# of LE-CODE binary fils with editable parameters. It is defined by Wiimm.
+#
+# Hint:
+# Set one of the options --no-header (-H) or --brief (-B) while decoding
+# to suppress this general description. The --brief option will also disable
+# info parts in the different sections.
+#
diff --git a/project/text-files/lpar.inc/lpar-sect-chat-cr.inc b/project/text-files/lpar.inc/lpar-sect-chat-cr.inc
new file mode 100644
index 0000000..4685cea
--- /dev/null
+++ b/project/text-files/lpar.inc/lpar-sect-chat-cr.inc
@@ -0,0 +1,56 @@
+
+# LE-CODE supports a special feature for chat messages in private rooms. If a
+# message is send by the host and at least one guest is present, then some
+# messages change the behavior of the game. This section defines the special
+# function.
+
+# The first parameter resets all message to CHAT$OFF (no function).
+# The default is value 1. If set to 0, the current map is edited.
+@reset = 1
+
+# Set the value to 1 if you want to use the old behavior defined for MKW-Fun.
+@legacy = 0
+
+# And now define the functions for different chat messages. The syntax is:
+#
+# MESSAGE '=' EXPRESSION1
+# MESSAGE '=' EXPRESSION1 ',' EXPRESSION2
+#
+# MESSAGE is the letter 'M' followed by a number between 1 and 96. Examples
+# are M1, M02, M96. EXPRESSION is any expression supported by the parser.
+# Up to 2 modes (separated by a comma) can be defined for each message.
+# Usually the following constants or functions are used:
+#
+# CHAT$TRACK_BY_HOST : The host selects a tracks and wins the lottery.
+# The track selection for guests is disabled.
+# CHAT$ANY_TRACK : Cancel CHAT$TRACK_BY_HOST.
+#
+# CHAT$BLOCK_CLEAR : Clear the used-tracks list.
+# CHAT$BLOCK_DISABLE : Disable the block-track functionality.
+# CHAT$BLOCK_ENABLE : Enable the block-track functionality. This is the
+# default, but have only impact, if BLOCK-TRACK > 0.
+#
+# CHAT$KARTS_ONLY : Each player must select a kart.
+# CHAT$BIKES_ONLY : Each player must select a bike.
+# CHAT$ANY_VEHICLE : Cancel vehicle requirement.
+#
+# CHAT$USE_ENGINE_1 : Select first engine class (100cc or 150cc if 200cc enabled)
+# CHAT$USE_ENGINE_2 : Select second engine class (150cc or 200cc if 200cc enabled)
+# CHAT$USE_ENGINE_3 : Select third engine class (mirror)
+# CHAT$RESET_ENGINE : Cancel engine selection.
+#
+# chat$n_races(N) : Define the number of races in the next Grand Prix.
+# N is a number between 1 and 512 (inclusive).
+#
+# chat$vehicle(...) : Define a chat modus for a vehicle group. 0 to N values
+# are expected as function parameters. Each parameter is
+# either from the group VEH$SMALL, VEH$MEDIUM, VEH$LARGE
+# and VEH$ANY_SIZE for size selections and/or from the
+# group VEH$KART, VEH$BIKE, VEH$ANY_TYPE for type
+# selections. VEH$ANY resets the limitations.
+~#VEH$OUT_BIKE, VEH$IN_BIKE
+#
+# CHAT$RESET : Reset all settings to their defaults.
+#
+# See http://wiki.tockdom.com/wiki/LE-CODE/Distribution_Tutorial#chatmsg
+# for more details.
diff --git a/project/text-files/lpar.inc/lpar-sect-chat-example-cr.inc b/project/text-files/lpar.inc/lpar-sect-chat-example-cr.inc
new file mode 100644
index 0000000..a8af2f4
--- /dev/null
+++ b/project/text-files/lpar.inc/lpar-sect-chat-example-cr.inc
@@ -0,0 +1,4 @@
+#
+# Examples:
+# M01 = CHAT$TRACK_BY_HOST
+# M96 = chat$n_races(15), CHAT$USE_ENGINE_2
diff --git a/project/text-files/lpar.inc/lpar-sect-param-cr.inc b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
new file mode 100644
index 0000000..f01d07c
--- /dev/null
+++ b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
@@ -0,0 +1,60 @@
+
+# This section defines general LE-CODE parameters. The corresponding options
+# have a higher priority. Remove or comment-out a parameter if its value
+# should not be changed. All values will be limited to the allowed ranges.
+
+#------------------------------------------------------------------------------
+
+# First we define a limitation mode. This mode defines the allowed values for
+# the other parameters of this section:
+#
+# LE$PRODUCTIVE : Exclude test and experimental values.
+# LE$TESTING : Allow test values, but exclude experimental values.
+# LE$EXPERIMENTAL : Allow all values.
+# LE$AUTOMATIC : Enable automatic detection by analyzing all values.
+#
+# Values set by an option are never limited. See parameter descriptions for
+# limitation details.
+
+LIMIT-MODE = %s
+
+#------------------------------------------------------------------------------
+
+# Define probabilities for engine classes. A list for »100cc,150cc,mirror« is
+# expected. If 200cc is enabled, the values are for »150cc,200cc,mirror«. Any
+# number is accepted. They are normalized to get a total of 100 percent.
+# Use »0,1,0« to force 150cc. Use »0,0,0« to reset to Nintendo's VR based
+# choice. Option --engine will override these settings.
+
+ENGINE = %u,%u,%u
+
+# Enable (1) or disable (0) 200cc support. Option --200cc will override this
+# setting. LE-CODE hasn't implemented this feature yet!
+
+ENABLE-200CC = %u
+
+# Enable (1) or disable (0) the performance monitor at Wii and Wii U. Enabling
+# is only possible if LIMIT-MODE is LE$TESTING or LE$EXPERIMENTAL. The special
+# value 2 enables it for Dolphin too, but only on LE$EXPERIMENTAL. It doesn't
+# work correctly with Dolphin. Option --perf-mon will override this setting.
+
+PERF-MONITOR = %u
+
+# Enable (1) or disable (0) Time Trial for custom tracks. Option --custom-tt
+# will override this setting.
+
+CUSTOM-TT = %u
+
+# Enable (1) or disable (0) support for Extended Presence Flags. Disable it
+# only for tests! If LIMIT-MODE==LE$PRODUCTIVE, XPFLAGS is always enabled.
+# Option --xpflags will override this setting.
+
+XPFLAGS = %u
+
+# Define the number of races that a previously used track is blocked. LE-CODE
+# will try to find another possible track among the selected tracks. Values
+# between 0 (deactivated at all) and %u are allowed. Chat messages can clear
+# the track list and enable or disable this feature.
+
+BLOCK-TRACK = %u
+
diff --git a/project/text-files/mdl.inc/mdl-file-head-cr.inc b/project/text-files/mdl.inc/mdl-file-head-cr.inc
new file mode 100644
index 0000000..7725443
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-file-head-cr.inc
@@ -0,0 +1,26 @@
+#MDL <<< The first 4 characters '#MDL' are the magic for a MDL text file.
+# <<< Don't remove them!
+#
+###############################################################################
+#
+# This is a textual representation of a MDL file used in Nintendos "Mario Kart
+# Wii". "Wiimms SZS Tools" may convert binary (raw) and text MDL files in both
+# directions in the near future. The text parser supports variables, C like
+# expressions and nested IF-THEN-ELSE structures.
+#
+# Info about the general parser syntax and semantics:
+# * https://szs.wiimm.de/doc/syntax
+#
+# Info about the MDL text syntax and semantics:
+# * https://szs.wiimm.de/doc/mdl/syntax
+#
+# Reference list of MDL parser functions:
+# * https://szs.wiimm.de/doc/mdl/func
+#
+# Info about the MDL file format:
+# * https://szs.wiimm.de/r/wiki/MDL0
+#
+# Hint:
+# Set one of the options --no-header (-H) or --brief (-B) while decoding
+# to suppress this large syntax info. The --brief option will also disable
+# info parts in the different sections.
diff --git a/project/text-files/mdl.inc/mdl-header-cr.inc b/project/text-files/mdl.inc/mdl-header-cr.inc
new file mode 100644
index 0000000..315cd77
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-header-cr.inc
@@ -0,0 +1,8 @@
+
+#FF#
+###############################################################################
+
+[HEADER]
+# MDL header
+@REVISION = %u
+
diff --git a/project/text-files/mdl.inc/mdl-hexdump-cr.inc b/project/text-files/mdl.inc/mdl-hexdump-cr.inc
new file mode 100755
index 0000000..caa6029
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-hexdump-cr.inc
@@ -0,0 +1,4 @@
+$HEX # switch to hexdump modus
+#----+------------------------------------------------------+----------------+
+#addr: data: bytes in hex | '(' expression ')' : ASCII of data :
+#----+------------------------------------------------------+----------------+
diff --git a/project/text-files/mdl.inc/mdl-s0-cr.inc b/project/text-files/mdl.inc/mdl-s0-cr.inc
new file mode 100644
index 0000000..7bc1f1f
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-s0-cr.inc
@@ -0,0 +1,19 @@
+# This section represents one draw list.
+#
+# A draw list is a sequence of u8, u16 (1 and 2 byte unsigned integers) and
+# float (4 bytes) values divided into commands. For each command the first
+# byte declares the length and the meaning of the command:
+#
+# #1 : 1 byte, end of command list
+# #2 : 5 bytes, bone mapping
+# #3 : 4+N*6 bytes, weighting
+# #4 : 8 bytes, draw polygon
+# #5 : 5 bytes, indexing
+#
+# And these are the codings of the commands:
+# #1
+# #2, u16:weight_index, u16:parent:weight_index
+# #3, u16:wight_id, u8:N, N*( u16:table_id, float:weight )
+# #4, u16:object_index, u16:material_index, u16:bone_index, u8:unknown
+# #5, u16:weight_id, u16:weight_index
+
diff --git a/project/text-files/mdl.inc/mdl-s0-tabhead-cr.inc b/project/text-files/mdl.inc/mdl-s0-tabhead-cr.inc
new file mode 100644
index 0000000..d9cc11f
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-s0-tabhead-cr.inc
@@ -0,0 +1,2 @@
+# cmd command dependent parameters
+#-------------------------------------
diff --git a/project/text-files/mdl.inc/mdl-setup-cr.inc b/project/text-files/mdl.inc/mdl-setup-cr.inc
new file mode 100644
index 0000000..da5d0ff
--- /dev/null
+++ b/project/text-files/mdl.inc/mdl-setup-cr.inc
@@ -0,0 +1,21 @@
+
+#FF#
+###############################################################################
+
+[SETUP]
+# This is the general setup and info section. Some parameters are preceeded by
+# a hash ('#') to signal the informative only status. The scanning starts
+# always with this section.
+
+# Identify the tool and version, that have written this file:
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
+
+# The MDL name & version and the number of sections
+@MDL-NAME = "%s"
+@MDL-VERSION = %2u
+@N-SECTIONS = %2u
+
diff --git a/project/text-files/minigame.inc/minigame-head-cr.inc b/project/text-files/minigame.inc/minigame-head-cr.inc
new file mode 100755
index 0000000..2cf6953
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-head-cr.inc
@@ -0,0 +1 @@
+#KMG
diff --git a/project/text-files/minigame.inc/minigame-info-cr.inc b/project/text-files/minigame.inc/minigame-info-cr.inc
new file mode 100755
index 0000000..20aa095
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-info-cr.inc
@@ -0,0 +1,24 @@
+#KMG <<< The first 4 characters are the magic for minigame.kmg text files.
+# <<< Don't remove them!
+#
+#------------------------------------------------------------------------------
+#
+# This is the textual representation of an minigame.kmg file.
+# It is defined by Wiimm and scanned by a 2-pass parser.
+#
+# Hints for decoding to a text file:
+#
+# - If either option --no-header (-H) or option --brief (-B) is set, this
+# general description is suppressed.
+#
+# - If either option --export (-X) is set once or option --brief (-B) is set
+# twice, a very small text file without descriptions and other not needed
+# parameters is created.
+#
+# - If option --long (-l) is set, then additional hidden parameters are
+# included. They are automatically included, if they are differ from the
+# the standard settings.
+#
+# See http://wiki.tockdom.com/wiki/minigame.kmg for more details.
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/minigame.inc/minigame-param-cr.inc b/project/text-files/minigame.inc/minigame-param-cr.inc
new file mode 100755
index 0000000..286c2e0
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-param-cr.inc
@@ -0,0 +1,2 @@
+[PARAMETERS]
+@REVISION = %u
diff --git a/project/text-files/minigame.inc/minigame-setup-cr.inc b/project/text-files/minigame.inc/minigame-setup-cr.inc
new file mode 100755
index 0000000..c8d5b7c
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-setup-cr.inc
@@ -0,0 +1,12 @@
+
+#
+###############################################################################
+
+[SETUP]
+
+# identification of creator tool
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
diff --git a/project/text-files/minigame.inc/minigame-table-cr.inc b/project/text-files/minigame.inc/minigame-table-cr.inc
new file mode 100755
index 0000000..80700c0
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-table-cr.inc
@@ -0,0 +1,3 @@
+[%s] # table at offset 0x%03x
+@REVISION = %u
+
diff --git a/project/text-files/minigame.inc/minigame-table-head-cr.inc b/project/text-files/minigame.inc/minigame-table-head-cr.inc
new file mode 100755
index 0000000..5737e65
--- /dev/null
+++ b/project/text-files/minigame.inc/minigame-table-head-cr.inc
@@ -0,0 +1,3 @@
+#--------------------------------------------------------------#--------------------------
+# slot N=2 3 4 5 6 7 8 9 10 11 12 # arena info
+#--------------------------------------------------------------#--------------------------
diff --git a/project/text-files/obj-mtl-bz2.inc b/project/text-files/obj-mtl-bz2.inc
new file mode 100644
index 0000000..6286940
--- /dev/null
+++ b/project/text-files/obj-mtl-bz2.inc
@@ -0,0 +1,1343 @@
+
+newmtl road_1
+ Kd 1.00 0.00 0.00
+ Ks 1.00 0.00 0.00
+
+newmtl road_2
+ Kd 0.91 0.00 0.91
+ Ks 0.91 0.00 0.91
+
+newmtl road_3
+ Kd 0.85 0.00 0.00
+ Ks 0.85 0.00 0.00
+
+newmtl road_4
+ Kd 0.73 0.00 0.73
+ Ks 0.73 0.00 0.73
+
+newmtl road_5
+ Kd 0.71 0.00 0.00
+ Ks 0.71 0.00 0.00
+
+newmtl road_6
+ Kd 0.55 0.00 0.55
+ Ks 0.55 0.00 0.55
+
+newmtl road_7
+ Kd 0.57 0.00 0.00
+ Ks 0.57 0.00 0.00
+
+newmtl road_8
+ Kd 0.38 0.00 0.38
+ Ks 0.38 0.00 0.38
+
+newmtl road_9
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl road_10
+ Kd 0.93 0.00 0.00
+ Ks 0.93 0.00 0.00
+
+newmtl road_11
+ Kd 0.82 0.00 0.82
+ Ks 0.82 0.00 0.82
+
+newmtl road_12
+ Kd 0.78 0.00 0.00
+ Ks 0.78 0.00 0.00
+
+newmtl road_13
+ Kd 0.64 0.00 0.64
+ Ks 0.64 0.00 0.64
+
+newmtl road_14
+ Kd 0.64 0.00 0.00
+ Ks 0.64 0.00 0.00
+
+newmtl road_15
+ Kd 0.46 0.00 0.46
+ Ks 0.46 0.00 0.46
+
+newmtl road_16
+ Kd 0.50 0.00 0.00
+ Ks 0.50 0.00 0.00
+
+newmtl offroad_1
+ Kd 0.75 0.38 0.38
+ Ks 0.75 0.38 0.38
+
+newmtl offroad_2
+ Kd 0.95 0.25 0.00
+ Ks 0.95 0.25 0.00
+
+newmtl offroad_3
+ Kd 0.64 0.30 0.27
+ Ks 0.64 0.30 0.27
+
+newmtl offroad_4
+ Kd 0.84 0.25 0.00
+ Ks 0.84 0.25 0.00
+
+newmtl offroad_5
+ Kd 0.54 0.23 0.16
+ Ks 0.54 0.23 0.16
+
+newmtl offroad_6
+ Kd 0.73 0.25 0.00
+ Ks 0.73 0.25 0.00
+
+newmtl offroad_7
+ Kd 0.43 0.16 0.05
+ Ks 0.43 0.16 0.05
+
+newmtl offroad_8
+ Kd 0.63 0.25 0.00
+ Ks 0.63 0.25 0.00
+
+newmtl offroad_9
+ Kd 1.00 0.25 0.00
+ Ks 1.00 0.25 0.00
+
+newmtl offroad_10
+ Kd 0.70 0.34 0.32
+ Ks 0.70 0.34 0.32
+
+newmtl offroad_11
+ Kd 0.89 0.25 0.00
+ Ks 0.89 0.25 0.00
+
+newmtl offroad_12
+ Kd 0.59 0.27 0.21
+ Ks 0.59 0.27 0.21
+
+newmtl offroad_13
+ Kd 0.78 0.25 0.00
+ Ks 0.78 0.25 0.00
+
+newmtl offroad_14
+ Kd 0.48 0.20 0.11
+ Ks 0.48 0.20 0.11
+
+newmtl offroad_15
+ Kd 0.68 0.25 0.00
+ Ks 0.68 0.25 0.00
+
+newmtl offroad_16
+ Kd 0.38 0.13 0.00
+ Ks 0.38 0.13 0.00
+
+newmtl fast_1
+ Kd 1.00 0.63 0.19
+ Ks 1.00 0.63 0.19
+
+newmtl fast_2
+ Kd 0.90 0.47 0.14
+ Ks 0.90 0.47 0.14
+
+newmtl fast_3
+ Kd 0.95 0.55 0.16
+ Ks 0.95 0.55 0.16
+
+newmtl fast_4
+ Kd 0.97 0.59 0.17
+ Ks 0.97 0.59 0.17
+
+newmtl fast_5
+ Kd 0.88 0.44 0.13
+ Ks 0.88 0.44 0.13
+
+newmtl fast_6
+ Kd 0.93 0.51 0.15
+ Ks 0.93 0.51 0.15
+
+newmtl halfpipe_1
+ Kd 0.00 0.50 1.00
+ Ks 0.00 0.50 1.00
+
+newmtl halfpipe_2
+ Kd 0.00 0.41 0.81
+ Ks 0.00 0.41 0.81
+
+newmtl halfpipe_3
+ Kd 0.00 0.47 0.94
+ Ks 0.00 0.47 0.94
+
+newmtl halfpipe_4
+ Kd 0.00 0.38 0.75
+ Ks 0.00 0.38 0.75
+
+newmtl halfpipe_5
+ Kd 0.00 0.44 0.87
+ Ks 0.00 0.44 0.87
+
+newmtl moving_1
+ Kd 1.00 0.00 0.38
+ Ks 1.00 0.00 0.38
+
+newmtl moving_2
+ Kd 0.81 0.00 0.38
+ Ks 0.81 0.00 0.38
+
+newmtl moving_3
+ Kd 0.94 0.00 0.38
+ Ks 0.94 0.00 0.38
+
+newmtl moving_4
+ Kd 0.75 0.00 0.38
+ Ks 0.75 0.00 0.38
+
+newmtl moving_5
+ Kd 0.87 0.00 0.38
+ Ks 0.87 0.00 0.38
+
+newmtl water_1
+ Kd 0.00 0.00 1.00
+ Ks 0.00 0.00 1.00
+
+newmtl water_2
+ Kd 0.00 0.00 0.64
+ Ks 0.00 0.00 0.64
+
+newmtl water_3
+ Kd 0.00 0.00 0.85
+ Ks 0.00 0.00 0.85
+
+newmtl water_4
+ Kd 0.00 0.00 0.50
+ Ks 0.00 0.00 0.50
+
+newmtl water_5
+ Kd 0.00 0.00 0.71
+ Ks 0.00 0.00 0.71
+
+newmtl water_6
+ Kd 0.00 0.00 0.93
+ Ks 0.00 0.00 0.93
+
+newmtl water_7
+ Kd 0.00 0.00 0.57
+ Ks 0.00 0.00 0.57
+
+newmtl water_8
+ Kd 0.00 0.00 0.78
+ Ks 0.00 0.00 0.78
+
+newmtl cannon_1
+ Kd 1.00 0.50 1.00
+ Ks 1.00 0.50 1.00
+
+newmtl cannon_2
+ Kd 0.62 0.31 0.62
+ Ks 0.62 0.31 0.62
+
+newmtl cannon_3
+ Kd 0.87 0.44 0.87
+ Ks 0.87 0.44 0.87
+
+newmtl cannon_4
+ Kd 0.50 0.25 0.50
+ Ks 0.50 0.25 0.50
+
+newmtl cannon_5
+ Kd 0.75 0.38 0.75
+ Ks 0.75 0.38 0.75
+
+newmtl wall_1
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.50 0.00
+ Ks 0.00 0.50 0.00
+
+newmtl wall_2
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.57 0.29
+ Ks 0.00 0.57 0.29
+
+newmtl wall_3
+ d 0.63
+ Tr 0.37
+ Kd 0.14 0.64 0.07
+ Ks 0.14 0.64 0.07
+
+newmtl wall_4
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.71 0.36
+ Ks 0.00 0.71 0.36
+
+newmtl wall_5
+ d 0.63
+ Tr 0.37
+ Kd 0.29 0.78 0.14
+ Ks 0.29 0.78 0.14
+
+newmtl wall_6
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.85 0.43
+ Ks 0.00 0.85 0.43
+
+newmtl wall_7
+ d 0.63
+ Tr 0.37
+ Kd 0.43 0.93 0.21
+ Ks 0.43 0.93 0.21
+
+newmtl wall_8
+ d 0.63
+ Tr 0.37
+ Kd 0.00 1.00 0.50
+ Ks 0.00 1.00 0.50
+
+newmtl wall_9
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.50 0.25
+ Ks 0.00 0.50 0.25
+
+newmtl wall_10
+ d 0.63
+ Tr 0.37
+ Kd 0.07 0.57 0.04
+ Ks 0.07 0.57 0.04
+
+newmtl wall_11
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.64 0.32
+ Ks 0.00 0.64 0.32
+
+newmtl wall_12
+ d 0.63
+ Tr 0.37
+ Kd 0.21 0.71 0.11
+ Ks 0.21 0.71 0.11
+
+newmtl wall_13
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.78 0.39
+ Ks 0.00 0.78 0.39
+
+newmtl wall_14
+ d 0.63
+ Tr 0.37
+ Kd 0.36 0.85 0.18
+ Ks 0.36 0.85 0.18
+
+newmtl wall_15
+ d 0.63
+ Tr 0.37
+ Kd 0.00 0.93 0.46
+ Ks 0.00 0.93 0.46
+
+newmtl wall_16
+ d 0.63
+ Tr 0.37
+ Kd 0.50 1.00 0.25
+ Ks 0.50 1.00 0.25
+
+newmtl fall_1
+ Kd 0.00 0.00 0.00
+ Ks 0.00 0.00 0.00
+
+newmtl fall_2
+ Kd 0.19 0.06 0.06
+ Ks 0.19 0.06 0.06
+
+newmtl fall_3
+ Kd 0.13 0.13 0.13
+ Ks 0.13 0.13 0.13
+
+newmtl fall_4
+ Kd 0.31 0.19 0.19
+ Ks 0.31 0.19 0.19
+
+newmtl fall_5
+ Kd 0.25 0.25 0.25
+ Ks 0.25 0.25 0.25
+
+newmtl fall_6
+ Kd 0.06 0.06 0.06
+ Ks 0.06 0.06 0.06
+
+newmtl fall_7
+ Kd 0.25 0.13 0.13
+ Ks 0.25 0.13 0.13
+
+newmtl fall_8
+ Kd 0.19 0.19 0.19
+ Ks 0.19 0.19 0.19
+
+newmtl fall_9
+ Kd 0.38 0.25 0.25
+ Ks 0.38 0.25 0.25
+
+newmtl fall_10
+ Kd 0.13 0.00 0.00
+ Ks 0.13 0.00 0.00
+
+newmtl effect_1
+ d 0.63
+ Tr 0.37
+ Kd 0.00 1.00 1.00
+ Ks 0.00 1.00 1.00
+
+newmtl effect_2
+ d 0.63
+ Tr 0.37
+ Kd 0.08 0.67 0.67
+ Ks 0.08 0.67 0.67
+
+newmtl effect_3
+ d 0.63
+ Tr 0.37
+ Kd 0.03 0.89 0.89
+ Ks 0.03 0.89 0.89
+
+newmtl effect_4
+ d 0.63
+ Tr 0.37
+ Kd 0.11 0.56 0.56
+ Ks 0.11 0.56 0.56
+
+newmtl effect_5
+ d 0.63
+ Tr 0.37
+ Kd 0.05 0.78 0.78
+ Ks 0.05 0.78 0.78
+
+newmtl effect_6
+ d 0.63
+ Tr 0.37
+ Kd 0.01 0.94 0.94
+ Ks 0.01 0.94 0.94
+
+newmtl effect_7
+ d 0.63
+ Tr 0.37
+ Kd 0.09 0.61 0.61
+ Ks 0.09 0.61 0.61
+
+newmtl effect_8
+ d 0.63
+ Tr 0.37
+ Kd 0.04 0.83 0.83
+ Ks 0.04 0.83 0.83
+
+newmtl effect_9
+ d 0.63
+ Tr 0.37
+ Kd 0.13 0.50 0.50
+ Ks 0.13 0.50 0.50
+
+newmtl effect_10
+ d 0.63
+ Tr 0.37
+ Kd 0.07 0.72 0.72
+ Ks 0.07 0.72 0.72
+
+newmtl item_1
+ Kd 0.19 1.00 0.50
+ Ks 0.19 1.00 0.50
+
+newmtl item_2
+ Kd 0.12 0.81 0.41
+ Ks 0.12 0.81 0.41
+
+newmtl item_3
+ Kd 0.16 0.94 0.47
+ Ks 0.16 0.94 0.47
+
+newmtl item_4
+ Kd 0.09 0.75 0.38
+ Ks 0.09 0.75 0.38
+
+newmtl item_5
+ Kd 0.14 0.87 0.44
+ Ks 0.14 0.87 0.44
+
+newmtl unknown_1
+ d 0.63
+ Tr 0.37
+ Kd 1.00 1.00 1.00
+ Ks 1.00 1.00 1.00
+
+newmtl unknown_2
+ d 0.63
+ Tr 0.37
+ Kd 0.82 0.82 0.94
+ Ks 0.82 0.82 0.94
+
+newmtl unknown_3
+ d 0.63
+ Tr 0.37
+ Kd 0.87 0.87 0.87
+ Ks 0.87 0.87 0.87
+
+newmtl unknown_4
+ d 0.63
+ Tr 0.37
+ Kd 0.69 0.69 0.81
+ Ks 0.69 0.69 0.81
+
+newmtl unknown_5
+ d 0.63
+ Tr 0.37
+ Kd 0.75 0.75 0.75
+ Ks 0.75 0.75 0.75
+
+newmtl unknown_6
+ d 0.63
+ Tr 0.37
+ Kd 0.94 0.94 0.94
+ Ks 0.94 0.94 0.94
+
+newmtl unknown_7
+ d 0.63
+ Tr 0.37
+ Kd 0.75 0.75 0.87
+ Ks 0.75 0.75 0.87
+
+newmtl unknown_8
+ d 0.63
+ Tr 0.37
+ Kd 0.81 0.81 0.81
+ Ks 0.81 0.81 0.81
+
+newmtl unknown_9
+ d 0.63
+ Tr 0.37
+ Kd 0.63 0.63 0.75
+ Ks 0.63 0.63 0.75
+
+newmtl unknown_10
+ d 0.63
+ Tr 0.37
+ Kd 0.88 0.88 1.00
+ Ks 0.88 0.88 1.00
+
+newmtl kmp_ckpt_warning
+ Kd 0.75 0.00 0.00
+ Ks 0.75 0.00 0.00
+
+newmtl kmp_ckpt_warning_t
+ d 0.69
+ Tr 0.31
+ Kd 0.75 0.00 0.00
+ Ks 0.75 0.00 0.00
+
+newmtl kmp_ckpt_warning_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.75 0.00 0.00
+ Ks 0.75 0.00 0.00
+
+newmtl kmp_ckpt_lap
+ Kd 0.13 0.00 0.50
+ Ks 0.13 0.00 0.50
+
+newmtl kmp_ckpt_lap_t
+ d 0.69
+ Tr 0.31
+ Kd 0.13 0.00 0.50
+ Ks 0.13 0.00 0.50
+
+newmtl kmp_ckpt_lap_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.13 0.00 0.50
+ Ks 0.13 0.00 0.50
+
+newmtl kmp_ckpt_mandatory
+ Kd 0.00 0.00 0.75
+ Ks 0.00 0.00 0.75
+
+newmtl kmp_ckpt_mandatory_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 0.00 0.75
+ Ks 0.00 0.00 0.75
+
+newmtl kmp_ckpt_mandatory_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 0.00 0.75
+ Ks 0.00 0.00 0.75
+
+newmtl kmp_ckpt_mandatory5
+ Kd 0.00 0.00 0.25
+ Ks 0.00 0.00 0.25
+
+newmtl kmp_ckpt_mandatory5_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 0.00 0.25
+ Ks 0.00 0.00 0.25
+
+newmtl kmp_ckpt_mandatory5_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 0.00 0.25
+ Ks 0.00 0.00 0.25
+
+newmtl kmp_ckpt_etc
+ Kd 0.00 0.75 0.75
+ Ks 0.00 0.75 0.75
+
+newmtl kmp_ckpt_etc_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 0.75 0.75
+ Ks 0.00 0.75 0.75
+
+newmtl kmp_ckpt_etc_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 0.75 0.75
+ Ks 0.00 0.75 0.75
+
+newmtl kmp_ckpt_tie_lt
+ Kd 0.50 0.00 0.00
+ Ks 0.50 0.00 0.00
+
+newmtl kmp_ckpt_tie_rt
+ Kd 0.00 0.50 0.00
+ Ks 0.00 0.50 0.00
+
+newmtl kmp_ckpt_tie_group_lt
+ Kd 0.25 0.00 0.00
+ Ks 0.25 0.00 0.00
+
+newmtl kmp_ckpt_tie_group_rt
+ Kd 0.00 0.25 0.00
+ Ks 0.00 0.25 0.00
+
+newmtl kmp_ckpt_tie_next_lt
+ Kd 0.31 0.00 0.19
+ Ks 0.31 0.00 0.19
+
+newmtl kmp_ckpt_tie_next_rt
+ Kd 0.00 0.31 0.31
+ Ks 0.00 0.31 0.31
+
+newmtl kmp_ckpt_jgpt
+ Kd 0.00 0.50 0.00
+ Ks 0.00 0.50 0.00
+
+newmtl kmp_jgpt
+ Kd 0.00 0.25 0.00
+ Ks 0.00 0.25 0.00
+
+newmtl kmp_jgpt_area
+ d 0.50
+ Tr 0.50
+ Kd 0.13 0.63 0.13
+ Ks 0.13 0.63 0.13
+
+newmtl kmp_ktpt
+ Kd 0.00 0.00 0.00
+ Ks 0.00 0.00 0.00
+
+newmtl kmp_ktpt_area
+ d 0.50
+ Tr 0.50
+ Kd 0.50 0.50 0.50
+ Ks 0.50 0.50 0.50
+
+newmtl kmp_enpt
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.00 0.50
+ Ks 0.00 0.00 0.50
+
+newmtl kmp_enpt_single
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.00 0.50
+ Ks 0.00 0.00 0.50
+
+newmtl kmp_enpt_tie_bi
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.25 0.63
+ Ks 0.00 0.25 0.63
+
+newmtl kmp_enpt_tie_next
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.38 0.69
+ Ks 0.00 0.38 0.69
+
+newmtl kmp_enpt_tie_prev
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.69 0.69
+ Ks 0.00 0.69 0.69
+
+newmtl kmp_enpt_dispatch
+ Kd 0.00 0.50 0.75
+ Ks 0.00 0.50 0.75
+
+newmtl kmp_itpt
+ d 0.75
+ Tr 0.25
+ Kd 0.25 0.00 0.00
+ Ks 0.25 0.00 0.00
+
+newmtl kmp_itpt_single
+ d 0.75
+ Tr 0.25
+ Kd 0.25 0.00 0.00
+ Ks 0.25 0.00 0.00
+
+newmtl kmp_itpt_tie_bi
+ d 0.75
+ Tr 0.25
+ Kd 0.38 0.00 0.25
+ Ks 0.38 0.00 0.25
+
+newmtl kmp_itpt_tie_next
+ d 0.75
+ Tr 0.25
+ Kd 0.50 0.00 0.31
+ Ks 0.50 0.00 0.31
+
+newmtl kmp_itpt_tie_prev
+ d 0.75
+ Tr 0.25
+ Kd 0.63 0.00 0.63
+ Ks 0.63 0.00 0.63
+
+newmtl kmp_itpt_dispatch
+ Kd 0.88 0.00 0.50
+ Ks 0.88 0.00 0.50
+
+newmtl kmp_cnpt_landing
+ Kd 1.00 0.50 1.00
+ Ks 1.00 0.50 1.00
+
+newmtl kmp_cnpt_way
+ Kd 1.00 0.63 1.00
+ Ks 1.00 0.63 1.00
+
+newmtl kmp_area_arrow
+ Kd 0.50 0.50 0.00
+ Ks 0.50 0.50 0.00
+
+newmtl kmp_area_border
+ d 0.25
+ Tr 0.75
+ Kd 0.50 0.50 0.00
+ Ks 0.50 0.50 0.00
+
+newmtl kmp_poti0
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.50 0.00
+ Ks 0.00 0.50 0.00
+
+newmtl kmp_poti1
+ d 0.75
+ Tr 0.25
+ Kd 0.00 0.57 0.29
+ Ks 0.00 0.57 0.29
+
+newmtl kmp_poti2
+ d 0.75
+ Tr 0.25
+ Kd 0.14 0.64 0.07
+ Ks 0.14 0.64 0.07
+
+newmtl kmp_poti3
+ d 0.75
+ Tr 0.25
+ Kd 0.14 0.64 0.07
+ Ks 0.14 0.64 0.07
+
+newmtl kmp_itembox
+ Kd 0.44 0.44 0.44
+ Ks 0.44 0.44 0.44
+
+newmtl kmp_itembox_enemy
+ Kd 0.25 0.25 0.25
+ Ks 0.25 0.25 0.25
+
+newmtl kmp_itembox_player
+ Kd 0.25 0.06 0.06
+ Ks 0.25 0.06 0.06
+
+newmtl kmp_itemroute
+ d 0.88
+ Tr 0.12
+ Kd 0.38 0.63 0.38
+ Ks 0.38 0.63 0.38
+
+newmtl kmp_itemroute_enemy
+ d 0.88
+ Tr 0.12
+ Kd 0.19 0.44 0.19
+ Ks 0.19 0.44 0.19
+
+newmtl kmp_itemroute_player
+ d 0.88
+ Tr 0.12
+ Kd 0.31 0.06 0.06
+ Ks 0.31 0.06 0.06
+
+newmtl kmp_kinoko_green
+ Kd 0.00 0.44 0.00
+ Ks 0.00 0.44 0.00
+
+newmtl kmp_kinoko_red
+ Kd 0.56 0.09 0.00
+ Ks 0.56 0.09 0.00
+
+newmtl kmp_bridge
+ Kd 0.44 0.25 0.38
+ Ks 0.44 0.25 0.38
+
+newmtl kmp_dokan
+ Kd 0.06 0.48 0.09
+ Ks 0.06 0.48 0.09
+
+newmtl kmp_karehayama
+ Kd 0.87 0.51 0.19
+ Ks 0.87 0.51 0.19
+
+newmtl kmp_obakeblock
+ Kd 0.44 0.37 0.21
+ Ks 0.44 0.37 0.21
+
+newmtl kmp_tree_crown
+ d 0.25
+ Tr 0.75
+ Kd 0.00 0.50 0.00
+ Ks 0.00 0.50 0.00
+
+newmtl kmp_tree_trunk
+ Kd 0.35 0.20 0.06
+ Ks 0.35 0.20 0.06
+
+newmtl kmp_woodbox
+ Kd 0.61 0.41 0.13
+ Ks 0.61 0.41 0.13
+
+newmtl kmp_coin_start
+ Kd 0.88 0.69 0.00
+ Ks 0.88 0.69 0.00
+
+newmtl kmp_coin_respawn
+ Kd 1.00 0.84 0.00
+ Ks 1.00 0.84 0.00
+
+newmtl kmp_coin_invalid
+ Kd 1.00 0.69 0.00
+ Ks 1.00 0.69 0.00
+
+newmtl kmp_solid_object
+ Kd 0.25 0.25 0.50
+ Ks 0.25 0.25 0.50
+
+newmtl kmp_solid_route
+ d 0.88
+ Tr 0.12
+ Kd 0.13 0.50 0.50
+ Ks 0.13 0.50 0.50
+
+newmtl kmp_deco_object
+ d 0.75
+ Tr 0.25
+ Kd 0.50 0.00 1.00
+ Ks 0.50 0.00 1.00
+
+newmtl kmp_zero_ground_black
+ Kd 0.06 0.06 0.06
+ Ks 0.06 0.06 0.06
+
+newmtl kmp_zero_ground_white
+ Kd 0.94 0.94 0.94
+ Ks 0.94 0.94 0.94
+
+newmtl red
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl red_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl red_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl red_orange
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl red_orange_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl red_orange_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl orange
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl orange_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl orange_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl orange_yellow
+ Kd 0.97 0.78 0.00
+ Ks 0.97 0.78 0.00
+
+newmtl orange_yellow_t
+ d 0.69
+ Tr 0.31
+ Kd 0.97 0.78 0.00
+ Ks 0.97 0.78 0.00
+
+newmtl orange_yellow_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.97 0.78 0.00
+ Ks 0.97 0.78 0.00
+
+newmtl yellow
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl yellow_t
+ d 0.69
+ Tr 0.31
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl yellow_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl yellow_green
+ Kd 0.63 0.94 0.00
+ Ks 0.63 0.94 0.00
+
+newmtl yellow_green_t
+ d 0.69
+ Tr 0.31
+ Kd 0.63 0.94 0.00
+ Ks 0.63 0.94 0.00
+
+newmtl yellow_green_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.63 0.94 0.00
+ Ks 0.63 0.94 0.00
+
+newmtl green
+ Kd 0.00 1.00 0.00
+ Ks 0.00 1.00 0.00
+
+newmtl green_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 1.00 0.00
+ Ks 0.00 1.00 0.00
+
+newmtl green_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 1.00 0.00
+ Ks 0.00 1.00 0.00
+
+newmtl green_cyan
+ Kd 0.00 1.00 0.63
+ Ks 0.00 1.00 0.63
+
+newmtl green_cyan_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 1.00 0.63
+ Ks 0.00 1.00 0.63
+
+newmtl green_cyan_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 1.00 0.63
+ Ks 0.00 1.00 0.63
+
+newmtl cyan
+ Kd 0.00 1.00 1.00
+ Ks 0.00 1.00 1.00
+
+newmtl cyan_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 1.00 1.00
+ Ks 0.00 1.00 1.00
+
+newmtl cyan_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 1.00 1.00
+ Ks 0.00 1.00 1.00
+
+newmtl cyan_blue
+ Kd 0.06 0.56 1.00
+ Ks 0.06 0.56 1.00
+
+newmtl cyan_blue_t
+ d 0.69
+ Tr 0.31
+ Kd 0.06 0.56 1.00
+ Ks 0.06 0.56 1.00
+
+newmtl cyan_blue_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.06 0.56 1.00
+ Ks 0.06 0.56 1.00
+
+newmtl blue
+ Kd 0.13 0.13 1.00
+ Ks 0.13 0.13 1.00
+
+newmtl blue_t
+ d 0.69
+ Tr 0.31
+ Kd 0.13 0.13 1.00
+ Ks 0.13 0.13 1.00
+
+newmtl blue_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.13 0.13 1.00
+ Ks 0.13 0.13 1.00
+
+newmtl blue_magenta
+ Kd 0.50 0.00 1.00
+ Ks 0.50 0.00 1.00
+
+newmtl blue_magenta_t
+ d 0.69
+ Tr 0.31
+ Kd 0.50 0.00 1.00
+ Ks 0.50 0.00 1.00
+
+newmtl blue_magenta_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.50 0.00 1.00
+ Ks 0.50 0.00 1.00
+
+newmtl magenta
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl magenta_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl magenta_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl magenta_red
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl magenta_red_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl magenta_red_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl brown
+ Kd 0.50 0.31 0.06
+ Ks 0.50 0.31 0.06
+
+newmtl brown_t
+ d 0.69
+ Tr 0.31
+ Kd 0.50 0.31 0.06
+ Ks 0.50 0.31 0.06
+
+newmtl brown_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.50 0.31 0.06
+ Ks 0.50 0.31 0.06
+
+newmtl white
+ Kd 1.00 1.00 1.00
+ Ks 1.00 1.00 1.00
+
+newmtl white_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 1.00 1.00
+ Ks 1.00 1.00 1.00
+
+newmtl white_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 1.00 1.00
+ Ks 1.00 1.00 1.00
+
+newmtl grey
+ Kd 0.63 0.63 0.63
+ Ks 0.63 0.63 0.63
+
+newmtl grey_t
+ d 0.69
+ Tr 0.31
+ Kd 0.63 0.63 0.63
+ Ks 0.63 0.63 0.63
+
+newmtl grey_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.63 0.63 0.63
+ Ks 0.63 0.63 0.63
+
+newmtl black
+ Kd 0.00 0.00 0.00
+ Ks 0.00 0.00 0.00
+
+newmtl black_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 0.00 0.00
+ Ks 0.00 0.00 0.00
+
+newmtl black_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 0.00 0.00
+ Ks 0.00 0.00 0.00
+
+newmtl gold
+ Kd 1.00 0.84 0.00
+ Ks 1.00 0.84 0.00
+
+newmtl gold_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.84 0.00
+ Ks 1.00 0.84 0.00
+
+newmtl gold_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.84 0.00
+ Ks 1.00 0.84 0.00
+
+newmtl silver
+ Kd 0.75 0.75 0.75
+ Ks 0.75 0.75 0.75
+
+newmtl silver_t
+ d 0.69
+ Tr 0.31
+ Kd 0.75 0.75 0.75
+ Ks 0.75 0.75 0.75
+
+newmtl silver_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.75 0.75 0.75
+ Ks 0.75 0.75 0.75
+
+newmtl bronze
+ Kd 0.85 0.69 0.50
+ Ks 0.85 0.69 0.50
+
+newmtl bronze_t
+ d 0.69
+ Tr 0.31
+ Kd 0.85 0.69 0.50
+ Ks 0.85 0.69 0.50
+
+newmtl bronze_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.85 0.69 0.50
+ Ks 0.85 0.69 0.50
+
+newmtl test0
+ Kd 0.00 0.82 1.00
+ Ks 0.00 0.82 1.00
+
+newmtl test0_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 0.82 1.00
+ Ks 0.00 0.82 1.00
+
+newmtl test0_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 0.82 1.00
+ Ks 0.00 0.82 1.00
+
+newmtl test1
+ Kd 0.00 1.00 0.82
+ Ks 0.00 1.00 0.82
+
+newmtl test1_t
+ d 0.69
+ Tr 0.31
+ Kd 0.00 1.00 0.82
+ Ks 0.00 1.00 0.82
+
+newmtl test1_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.00 1.00 0.82
+ Ks 0.00 1.00 0.82
+
+newmtl test2
+ Kd 0.38 1.00 0.00
+ Ks 0.38 1.00 0.00
+
+newmtl test2_t
+ d 0.69
+ Tr 0.31
+ Kd 0.38 1.00 0.00
+ Ks 0.38 1.00 0.00
+
+newmtl test2_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.38 1.00 0.00
+ Ks 0.38 1.00 0.00
+
+newmtl test3
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl test3_t
+ d 0.69
+ Tr 0.31
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl test3_tt
+ d 0.44
+ Tr 0.56
+ Kd 0.94 0.94 0.00
+ Ks 0.94 0.94 0.00
+
+newmtl test4
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl test4_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl test4_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.63 0.00
+ Ks 1.00 0.63 0.00
+
+newmtl test5
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl test5_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl test5_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.38 0.06
+ Ks 1.00 0.38 0.06
+
+newmtl test6
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl test6_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl test6_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.13 0.13
+ Ks 1.00 0.13 0.13
+
+newmtl test7
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl test7_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl test7_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.00 0.50
+ Ks 1.00 0.00 0.50
+
+newmtl test8
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl test8_t
+ d 0.69
+ Tr 0.31
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
+newmtl test8_tt
+ d 0.44
+ Tr 0.56
+ Kd 1.00 0.00 1.00
+ Ks 1.00 0.00 1.00
+
diff --git a/project/text-files/objflow.inc/objflow-head-cr.inc b/project/text-files/objflow.inc/objflow-head-cr.inc
new file mode 100644
index 0000000..62cf5ef
--- /dev/null
+++ b/project/text-files/objflow.inc/objflow-head-cr.inc
@@ -0,0 +1 @@
+#OBJFLOW
diff --git a/project/text-files/objflow.inc/objflow-info-cr.inc b/project/text-files/objflow.inc/objflow-info-cr.inc
new file mode 100644
index 0000000..f76dab2
--- /dev/null
+++ b/project/text-files/objflow.inc/objflow-info-cr.inc
@@ -0,0 +1,43 @@
+#OBJFLOW <<< The first 8 characters are the magic for OBJFLOW text files.
+# <<< Don't remove them!
+#
+#------------------------------------------------------------------------------
+#
+# This is the textual representation of an ObjFlow.bin file.
+# It is defined by Wiimm and scanned by a 2-pass parser.
+#
+# Hints for decoding to a text file:
+#
+# - If either option --no-header (-H) or option --brief (-B) is set, this
+# general description is suppressed.
+#
+# - If either option --export (-X) is set once or option --brief (-B) is set
+# twice, a very small text file without descriptions and other not needed
+# parameters is created.
+#
+# - If option --long (-l) is set, then additional hidden parameters are
+# included. They are automatically included, if they are differ from the
+# the standard settings.
+#
+#------------------------------------------------------------------------------
+#
+# Syntax for section [OBJECTS]:
+#
+# Beside of emtpy lines and comments, there are 2 kinds of parameters.
+# Both start with an keyword (case insensitive):
+#
+# 'OBJECT' ID, NAME, RESOURCES
+# ID is the object ID to identify the object. Use prefix '0x' for hex
+# numbers. NAME is the object name. If not set, the original name is
+# used. RESOURCES is the resources string. If not set, the original
+# string is used. Commas are mandatory to separate string parameters.
+#
+# 'PARAM' P0, P1, P2, P3, P4, P5, P6, P7, P8
+# Define up to 9 parameters of the previous defined 'OBJECT'.
+# A point ('.') is interpreted as Null, and an equal sign ('=')
+# leaves the value unchanged. Missed parameters are not modified.
+# Commas are optional if expression is not ambiguous.
+#
+# See http://wiki.tockdom.com/wiki/ObjFlow.bin for more details.
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/objflow.inc/objflow-objects-cr.inc b/project/text-files/objflow.inc/objflow-objects-cr.inc
new file mode 100644
index 0000000..16b4787
--- /dev/null
+++ b/project/text-files/objflow.inc/objflow-objects-cr.inc
@@ -0,0 +1,7 @@
+[OBJECTS]
+@REVISION = %u
+
+#-----------------------------------------------------------------------
+# OBJECT ID, NAME, RESOURCES
+# PARAM P0 P1 P2 P3 P4 P5 P6 P7 P8
+#-----------------------------------------------------------------------
diff --git a/project/text-files/objflow.inc/objflow-setup-cr.inc b/project/text-files/objflow.inc/objflow-setup-cr.inc
new file mode 100644
index 0000000..c8d5b7c
--- /dev/null
+++ b/project/text-files/objflow.inc/objflow-setup-cr.inc
@@ -0,0 +1,12 @@
+
+#
+###############################################################################
+
+[SETUP]
+
+# identification of creator tool
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
diff --git a/project/text-files/pat.inc/pat-file-head-cr.inc b/project/text-files/pat.inc/pat-file-head-cr.inc
new file mode 100644
index 0000000..249bc44
--- /dev/null
+++ b/project/text-files/pat.inc/pat-file-head-cr.inc
@@ -0,0 +1,16 @@
+#PAT <<< The first 4 characters '#PAT' are the magic for a PAT text file.
+# <<< Don't remove them!
+#
+###############################################################################
+#
+# This is a textual representation of a PAT0 file used in Nintendos "Mario Kart
+# Wii". "Wiimms SZS Tools" may convert binary (raw) and text PAT files in both
+# directions in the near future. The text parser supports variables, C like
+# expressions and nested IF-THEN-ELSE structures.
+#
+# Details about PAT text files are available in the Web:
+# - Parser Syntax and Semantics: https://szs.wiimm.de/doc/syntax
+# - PAT Syntax and Semantics: https://szs.wiimm.de/doc/pat/text
+# - The BRRES/PAT0 file format: https://szs.wiimm.de/r/wiki/PAT0
+#
+#------------------------------------------------------------------------------
diff --git a/project/text-files/pat.inc/pat-header-cr.inc b/project/text-files/pat.inc/pat-header-cr.inc
new file mode 100644
index 0000000..b801384
--- /dev/null
+++ b/project/text-files/pat.inc/pat-header-cr.inc
@@ -0,0 +1,8 @@
+
+#FF#
+###############################################################################
+
+[HEADER]
+# PAT header
+@REVISION = %u
+
diff --git a/project/text-files/pat.inc/pat-s0_base-cr.inc b/project/text-files/pat.inc/pat-s0_base-cr.inc
new file mode 100644
index 0000000..4c4379d
--- /dev/null
+++ b/project/text-files/pat.inc/pat-s0_base-cr.inc
@@ -0,0 +1,8 @@
+
+#FF#
+###############################################################################
+
+[S0_BASE]
+# PAT section 0, base data
+@REVISION = %u
+
diff --git a/project/text-files/pat.inc/pat-s0_list-cr.inc b/project/text-files/pat.inc/pat-s0_list-cr.inc
new file mode 100644
index 0000000..ef2c221
--- /dev/null
+++ b/project/text-files/pat.inc/pat-s0_list-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[S0_LIST]
+# PAT section 0, string reference lists
+@REVISION = %u
diff --git a/project/text-files/pat.inc/pat-setup-cr.inc b/project/text-files/pat.inc/pat-setup-cr.inc
new file mode 100644
index 0000000..c8206c3
--- /dev/null
+++ b/project/text-files/pat.inc/pat-setup-cr.inc
@@ -0,0 +1,21 @@
+
+#FF#
+###############################################################################
+
+[SETUP]
+# This is the general setup and info section. Some parameters are preceeded by
+# a hash ('#') to signal the informative only status. The scanning starts
+# always with this section.
+
+# Identify the tool and version, that have written this file:
+TOOL = %s
+SYSTEM = %s
+VERSION = %s
+REVISION = %u
+DATE = %s
+
+# The PAT version, number of sections and output mode. Info only.
+PAT-VERSION = %2u
+N-SECTIONS = %2u
+OUTPUT-MODE = %s
+
diff --git a/project/text-files/pat.inc/pat-simple-cr.inc b/project/text-files/pat.inc/pat-simple-cr.inc
new file mode 100644
index 0000000..e8aee44
--- /dev/null
+++ b/project/text-files/pat.inc/pat-simple-cr.inc
@@ -0,0 +1,7 @@
+
+#FF#
+###############################################################################
+
+[SIMPLE]
+# Simplified PAT definiton.
+@REVISION = %u
diff --git a/project/text-files/pat.inc/pat-strings-cr.inc b/project/text-files/pat.inc/pat-strings-cr.inc
new file mode 100644
index 0000000..199d88c
--- /dev/null
+++ b/project/text-files/pat.inc/pat-strings-cr.inc
@@ -0,0 +1,8 @@
+
+#FF#
+###############################################################################
+
+[STRINGS]
+# Strings defined in section 1 with attributes defined in section 3
+@REVISION = %u
+
diff --git a/project/text-files/setup.inc/setup-create-cr.inc b/project/text-files/setup.inc/setup-create-cr.inc
new file mode 100755
index 0000000..1442584
--- /dev/null
+++ b/project/text-files/setup.inc/setup-create-cr.inc
@@ -0,0 +1,24 @@
+
+#------------------------------------------------------------------------------
+
+[create]
+
+# Create (and overwrite without notice) the listed files before adding them to
+# the new archive. The source directory is searched under the same filename
+# with an appended ".d" or, if this fails, with an extension replaced by ".d".
+# If a source directory does not exist, the job is ignored silently.
+# Example: For "my.brres" search directories "my.brres.d" or "my.d"
+# The source directory itself is set on the exclude list and will not stored
+# into the new archive. Creating can be controlled by the options:
+# --no-recurse : Do not create archives recursively.
+# --no-encode : Do not encode files before creating an archive.
+# --encode-img : Encode all image files (TEX,TPL,BREFT/sub), overrides --no-encode.
+# --encode-all : Encode all files and ignore timestamps.
+# --pt-dir : Set `point directory' mode.
+# --u8 : Create an U8 archive.
+# --brres : Create an BRRES archive.
+# --breff : Create an BREFF archive.
+# --breft : Create an BREFT archive.
+# --no-compress : Create an uncompressed file (U8 instead of SZS).
+# ...
+
diff --git a/project/text-files/setup.inc/setup-encode-cr.inc b/project/text-files/setup.inc/setup-encode-cr.inc
new file mode 100755
index 0000000..9775867
--- /dev/null
+++ b/project/text-files/setup.inc/setup-encode-cr.inc
@@ -0,0 +1,26 @@
+
+#------------------------------------------------------------------------------
+
+[encode]
+
+# Encode (and overwrite without notice) the listed files before adding them
+# to the new archive. The source is searched under the same filename with the
+# correct source extension added or, if this failed, a replaced extension.
+# Example: For "message.bmg" search files "message.bmg.txt" or "message.txt"
+# The source file itself is set on the exclude list and will not stored into
+# the new archive.
+#
+# The syntax of this file section is a little bit different as the other file
+# sections. Each line begins with a comma separated list of keywords followed
+# by an equal sign.
+# Syntax: COMMA_SEPARATED_FORMAT_LIST = relative_filename
+# Example: BREFT,IA8,3 = ./files/rk_steam
+# The first keyword is the file format. The following keywords describe sub
+# formats. An additonal integer is a file type specific information:
+# -> For image files it is the number of images (main image + mipmaps).
+# A value of 0 means: Use the tools default (see option --n-mipmaps).
+#
+# A file is only encoded if the destination does not exist or if the source
+# is younger than the destination. Encoding can be controlled by options
+# --no-encode, --encode-img and --encode-all (short: --noenc --eimg --eall).
+
diff --git a/project/text-files/setup.inc/setup-exclude-cr.inc b/project/text-files/setup.inc/setup-exclude-cr.inc
new file mode 100755
index 0000000..3800343
--- /dev/null
+++ b/project/text-files/setup.inc/setup-exclude-cr.inc
@@ -0,0 +1,36 @@
+
+#------------------------------------------------------------------------------
+
+[exclude-pattern]
+
+# Files and directories in this section are ignored by the CREATE command.
+# The include sections takes precedence over the exclude sections.
+
+# This section expects file patterns with wildcards.
+# Here we exclude all original, backup and temp files:
+
+*.orig
+*.bak
+*.tmp
+*.temp
+
+# Exclude all *.d directories. To enable it, remove "# " at the beginning.
+# *.d
+
+# Exclude all PNG files. The intention is to allow the creation of new PNG
+# images and mipmap files without any need to edit this setup file. All
+# extracted PNG files are automatically listed in the [exclude] section.
+# So the exclusion of all PNG is not really needed, but may help. The second
+# (disabled) line is an alternative to exclude all mipmap PNG files.
+
+*.png
+# *.mm#.png
+
+#------------------------------------------------------------------------------
+
+[exclude]
+
+# Files and directories in this section are ignored by the CREATE command.
+# This second exclude section accepts only complete file names and none of
+# characters have any special meaning.
+
diff --git a/project/text-files/setup.inc/setup-header-cr.inc b/project/text-files/setup.inc/setup-header-cr.inc
new file mode 100755
index 0000000..dac1238
--- /dev/null
+++ b/project/text-files/setup.inc/setup-header-cr.inc
@@ -0,0 +1,15 @@
+
+###############################################################################
+#
+# wszst settings:
+# ---------------
+#
+# This is the settings file for wszst (tool of "Wiimms SZS Tools"). It
+# was created by the EXTRACT command and is needed by the CREATE command
+# to rebuild the original source archive with or without modifications.
+# You can edit it, if you know what you do.
+#
+###############################################################################
+
+# The first part contains some general settings:
+
diff --git a/project/text-files/setup.inc/setup-include-cr.inc b/project/text-files/setup.inc/setup-include-cr.inc
new file mode 100755
index 0000000..8edec87
--- /dev/null
+++ b/project/text-files/setup.inc/setup-include-cr.inc
@@ -0,0 +1,26 @@
+
+###############################################################################
+#
+# Some general rules for the next sections:
+# All pathes are relative to the current base directory (directory that
+# contains the file wszst-setup.txt). Prefix at least pathes that starts
+# not with a letter, digit, point, star or underscore with "./".
+#
+#------------------------------------------------------------------------------
+
+[include-pattern]
+
+# All files and directories start with a . are hidden (unix like) and excluded
+# automatically. But filenames in one of the include sections are included
+# independent of this point. Also the include sections takes precedence over
+# the exclude sections.
+
+# This section expects file patterns with wildcards.
+
+#------------------------------------------------------------------------------
+
+[include]
+
+# This second include section accpepts only complete file names and none of
+# characters have any special meaning.
+
diff --git a/project/text-files/setup.inc/setup-order-cr.inc b/project/text-files/setup.inc/setup-order-cr.inc
new file mode 100644
index 0000000..45c96fc
--- /dev/null
+++ b/project/text-files/setup.inc/setup-order-cr.inc
@@ -0,0 +1,14 @@
+
+#------------------------------------------------------------------------------
+
+[order]
+
+# This list contains all extracted files in the order of the original archive.
+# If creating archives (but not U8) this list will be used to sort the found
+# files. For archives with directory support (all but not PACK) it is very
+# important, that the directories are listed before the files that resides in
+# the directories.
+#
+# The value before the equal sign is the file offset in the original archive
+# and is ignored for sorting.
+
diff --git a/project/text-files/ui-head.inc b/project/text-files/ui-head.inc
new file mode 100644
index 0000000..1ad49ab
--- /dev/null
+++ b/project/text-files/ui-head.inc
@@ -0,0 +1,41 @@
+
+/***************************************************************************
+ * _______ _______ _______ *
+ * | ___ |____ | ___ | *
+ * | | |_| / /| | |_| *
+ * | |_____ / / | |_____ *
+ * |_____ | / / |_____ | *
+ * _ | | / / _ | | *
+ * | |___| |/ /____| |___| | *
+ * |_______|_______|_______| *
+ * *
+ * Wiimms SZS Tools *
+ * *
+ ***************************************************************************
+ * *
+ * This file is part of the SZS project. *
+ * Visit https://szs.wiimm.de/ for project details and sources. *
+ * *
+ * Copyright (c) 2011-2020 by Dirk Clemens <wiimm@wiimm.de> *
+ * *
+ ***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * See file gpl-2.0.txt or http://www.gnu.org/licenses/gpl-2.0.txt *
+ * *
+ ***************************************************************************
+ * *
+ * >>> This file is automatically generated by './src/gen-ui.c'. <<< *
+ * >>> Do not edit this file! <<< *
+ * *
+ ***************************************************************************/
+