aboutsummaryrefslogtreecommitdiff
path: root/project/text-files/kmp.inc
diff options
context:
space:
mode:
authorroot <root@dc13.lemmi>2020-07-21 10:00:46 +0200
committerroot <root@dc13.lemmi>2020-07-21 10:00:46 +0200
commit1192c4575ea7afdf38e3fa0df4587a08620af11e (patch)
tree6910a62487c282d0840d2e668aa7eb40b7c8a3fd /project/text-files/kmp.inc
parent76de8a89f7c1d1b4522eb66e8f89d248e8c1781f (diff)
SZS v2.18a
Diffstat (limited to '')
-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
32 files changed, 651 insertions, 0 deletions
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
+#-----------------------------------------------------------------#-----------