Difference between revisions of "LPAR (File Format)"
Line 58: | Line 58: | ||
|} | |} | ||
− | === <span id= | + | === <span id=chatmsg>Chat Messages [CHAT-MESSAGE-MODES]</span> === |
+ | |||
+ | [[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. Until LE-CODE build 16 the functions were hard coded to the messages (see [[#oldchatmsg|below]]). As of [[LE-CODE#b17|LE-CODE build 17]] (in development) and [[Wiimms SZS Tools|Wiimms SZS Tools v2.15]] each function can be assigned to any message, and also to more than 1 message. | ||
+ | |||
+ | The settings are stored at host side and send to the clients when starting a Grand Prix. This guarantees that late clients will be informed about the modified settings even if they never received the related chat message. The settings are reset after finishing or aborting the Grand Prix. | ||
+ | |||
+ | {|class="textbox grid alt" style="margin-top:1em" | ||
+ | |+ List of available functions | ||
+ | |- | ||
+ | ! Category !! Parameter in<br>Wiimms SZS Tools !! Description | ||
+ | |- | ||
+ | ! rowspan=2 | track | ||
+ | | <tt>CHAT$TRACK_BY_HOST</tt> | ||
+ | | The host selects a tracks and wins the lottery. The track selection for guests is disabled. | ||
+ | |- | ||
+ | | <tt>CHAT$ANY_TRACK</tt> | ||
+ | | Cancel <tt>CHAT$TRACK_BY_HOST</tt> and enable standard track lottery. | ||
+ | |- | ||
+ | ! rowspan=3 | vehicle | ||
+ | | <tt>CHAT$KARTS_ONLY</tt> | ||
+ | | Each player must select a kart. | ||
+ | |- | ||
+ | | <tt>CHAT$BIKES_ONLY</tt> | ||
+ | | Each player must select a bike. | ||
+ | |- | ||
+ | | <tt>CHAT$ANY_VEHICLE</tt> | ||
+ | | Cancel vehicle requirement. | ||
+ | |- | ||
+ | ! rowspan=4 | engine | ||
+ | | <tt>CHAT$USE_ENGINE_1</tt> | ||
+ | | Force the first engine class. Usually this is 100cc. If mode 200cc is activated, then it is 150cc. | ||
+ | |- | ||
+ | | <tt>CHAT$USE_ENGINE_2</tt> | ||
+ | | Force the second engine class. Usually this is 150cc. If mode 200cc is activated, then it is 200cc. | ||
+ | |- | ||
+ | | <tt>CHAT$USE_ENGINE_3</tt> | ||
+ | | Force the third engine class. Usually this is 150cc-mirror. If mode 200cc is activated, then it is 200cc-mirror. | ||
+ | |- | ||
+ | | <tt>CHAT$RESET_ENGINE</tt> | ||
+ | | Cancel engine selection. | ||
+ | |- | ||
+ | ! n_races | ||
+ | | <tt>chat$n_races(N)</tt> | ||
+ | | Define the number of races in the next Grand Prix. '''N''' is a number between 1 and 512 (inclusive). | ||
+ | |} | ||
+ | ;Notes: | ||
+ | * Constants are written here with upper case letters and the function-call with lower case letters. Anyway, the text parser accepts constant, variable and function names in any case. | ||
+ | * Only messages by the host are relevant. | ||
+ | * Only one option of each category can be active. A later messages cancels the previous message of the same category. | ||
+ | |||
+ | Some other codes are planned. If you have ideas tell them at the [[Talk:LE-CODE/Distribution_Tutorial|talk page]]. | ||
+ | |||
+ | ==== <span id=oldchatmsg>Hard coded functions until LE-CODE build 16</span> ==== | ||
+ | |||
+ | The following list shows all messages with special functionality. The texts are examples used by [[MKW-Fun]] (with colors). | ||
+ | |||
+ | <pre> | ||
+ | M65 = \c{green}Free vehicle selection! | ||
+ | |||
+ | M69 = \c{yor2}Attention: Karts required! | ||
+ | M70 = \c{yor2}Attention: Bikes required! | ||
+ | M71 = \c{blue1}Observe Track Specifications! | ||
+ | M72 = \c{green}Free track selection! | ||
+ | |||
+ | M73 = \c{yor1}Grand Prix with 1 race! | ||
+ | M74 = \c{yor2}Grand Prix with 2 races! | ||
+ | M75 = \c{yor3}Grand Prix with 3 races! | ||
+ | M76 = \c{green}Grand Prix with 4 races! | ||
+ | |||
+ | M77 = \c{yor4}Grand Prix with 5 races! | ||
+ | M78 = \c{yor5}Grand Prix with 6 races! | ||
+ | M79 = \c{yor6}Grand Prix with 8 races! | ||
+ | M80 = \c{yor7}Grand Prix with 10 races! | ||
+ | </pre> | ||
+ | |||
+ | From [[LE-CODE#b17|LE-CODE build 17]] it will be possible to freely distribute the special functions to all chat messages. | ||
+ | |||
+ | ==== Legacy settings (MKW-Fun settings) ==== | ||
+ | |||
+ | Beginning with [[LE-CODE#b17|LE-CODE build 17]], no chat messages has a special functionality by default. Each special functionality must be defined explicitly. If you want to use the old behavior defined for [[MKW-Fun]] create a file (e.g. with name ''lecode-param.txt''): | ||
+ | <pre> | ||
+ | #LE-LPAR | ||
+ | [CHAT-MESSAGE-MODES] | ||
+ | @legacy = 1 | ||
+ | </pre> | ||
+ | This is equivalent to: | ||
+ | <pre> | ||
+ | #LE-LPAR | ||
+ | [CHAT-MESSAGE-MODES] | ||
+ | M65 = CHAT$ANY_VEHICLE | ||
+ | M69 = CHAT$KARTS_ONLY | ||
+ | M70 = CHAT$BIKES_ONLY | ||
+ | M71 = CHAT$TRACK_BY_HOST | ||
+ | M72 = CHAT$ANY_TRACK | ||
+ | M73 = chat$n_races(1) | ||
+ | M74 = chat$n_races(2) | ||
+ | M75 = chat$n_races(3) | ||
+ | M76 = chat$n_races(4) | ||
+ | M77 = chat$n_races(5) | ||
+ | M78 = chat$n_races(6) | ||
+ | M79 = chat$n_races(8) | ||
+ | M80 = chat$n_races(10) | ||
+ | </pre> | ||
+ | Then use option '''<tt>--lpar lecode-param.txt</tt>''' when patching the [[LE-CODE]] binary. The option will be available with the next release of [[Wiimms SZS Tools]]. | ||
+ | |||
+ | The original game uses [[BMG]] messages <tt>582</tt> to <tt>585</tt> (hex) to announce the races. [[LE-CODE]] moved the messages to range <tt>6100</tt> to <tt>6109</tt> to support 10 races. [[MKW-Fun]] defines the following messages: | ||
+ | <pre> | ||
+ | 6100 = \z{802,110002}\z{802,110000} - 1st Race (\z{a02,1000000000} players) | ||
+ | 6101 = \z{802,110002}\z{802,110000} - 2nd Race (\z{a02,1000000000} players) | ||
+ | 6102 = \z{802,110002}\z{802,110000} - 3rd Race (\z{a02,1000000000} players) | ||
+ | 6103 = \z{802,110002}\z{802,110000} - 4th Race (\z{a02,1000000000} players) | ||
+ | 6104 = \z{802,110002}\z{802,110000} - 5th Race (\z{a02,1000000000} players) | ||
+ | 6105 = \z{802,110002}\z{802,110000} - 6th Race (\z{a02,1000000000} players) | ||
+ | 6106 = \z{802,110002}\z{802,110000} - 7th Race (\z{a02,1000000000} players) | ||
+ | 6107 = \z{802,110002}\z{802,110000} - 8th Race (\z{a02,1000000000} players) | ||
+ | 6108 = \z{802,110002}\z{802,110000} - 9th Race (\z{a02,1000000000} players) | ||
+ | 6109 = \z{802,110002}\z{802,110000} - 10th Race (\z{a02,1000000000} players) | ||
+ | </pre> | ||
== Manage LPAR files == | == Manage LPAR files == |
Revision as of 14:15, 5 April 2020
LPAR (LE-CODE Parameters) is a text file format defined by Wiimm. It is used to define parameters for LE-CODE.
Introduction
A LE-CODE binary file (e.g. lecode-PAL.bin) contains a binary section with magic »LPAR«. It defines how the LE-CODE executor works. Up to Wiimms SZS Tools v2.14a, LE-CODE parameters had to be set via options when patching. As of v2.15a there is also the possibility to define the parameters by a LPAR file. So a LPAR file is a text version of the binary LPAR section. Options are still accepted and have higher priority than a LPAR file.
Using a LPAR file is recommended, because some parameters can only be set by a LPAR file. A typical command looks like this:
wlect patch lecode-PAL.bin --le-define DEFINITION --lpar lpar.txt ....
Here and in this whole article the filename lpar.txt is used for the LPAR file, but any other filenames like lecode-param.txt are possible too. Read »Use a LPAR file« for more details.
A LPAR file is a text file that always begins with the magic »#LE-LPAR« as identification. It is divided into sections. At the moment 2 sections are supported, one for General Parameters and one for Chat Messages. So a LPAR file looks like this:
#LE-LPAR [LECODE-PARAMETERS] ENGINE = 10,60,30 ENABLE-200CC = 0 PERF-MONITOR = 0 CUSTOM-TT = 0 XPFLAGS = 1 [CHAT-MESSAGE-MODES] # ....
Section »Create a LPAR file« explains how to create and modify a LPAR file.
Sections
General Parameters [LECODE-PARAMETERS]
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.
Parameter Name |
Value | Related Option |
Description |
---|---|---|---|
ENGINE | int,int,int | --engine | 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 numbers are 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 Nintendos VR based choice. |
ENABLE-200CC | int | --200cc | Enable (1) or disable (0) 200cc support. LE-CODE hasn't implemented this feature yet! |
PERF-MONITOR | int | --perf-mon | Enable (1) or disable (0) the performance monitor for Wii and Wii U. The special value 2 enables the it for Dolphin too, but it doesn't work correctly with Dolphin. |
CUSTOM-TT | int | --custom-tt | Enable (1) or disable (0) time trial for custom tracks. |
XPFLAGS | int | --xpflags | Enable (1) or disable (0) support for extended presence flags. Disable it only for tests! |
Chat Messages [CHAT-MESSAGE-MODES]
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. Until LE-CODE build 16 the functions were hard coded to the messages (see below). As of LE-CODE build 17 (in development) and Wiimms SZS Tools v2.15 each function can be assigned to any message, and also to more than 1 message.
The settings are stored at host side and send to the clients when starting a Grand Prix. This guarantees that late clients will be informed about the modified settings even if they never received the related chat message. The settings are reset after finishing or aborting the Grand Prix.
Category | Parameter in Wiimms SZS Tools |
Description |
---|---|---|
track | 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 and enable standard track lottery. | |
vehicle | CHAT$KARTS_ONLY | Each player must select a kart. |
CHAT$BIKES_ONLY | Each player must select a bike. | |
CHAT$ANY_VEHICLE | Cancel vehicle requirement. | |
engine | CHAT$USE_ENGINE_1 | Force the first engine class. Usually this is 100cc. If mode 200cc is activated, then it is 150cc. |
CHAT$USE_ENGINE_2 | Force the second engine class. Usually this is 150cc. If mode 200cc is activated, then it is 200cc. | |
CHAT$USE_ENGINE_3 | Force the third engine class. Usually this is 150cc-mirror. If mode 200cc is activated, then it is 200cc-mirror. | |
CHAT$RESET_ENGINE | Cancel engine selection. | |
n_races | chat$n_races(N) | Define the number of races in the next Grand Prix. N is a number between 1 and 512 (inclusive). |
- Notes
- Constants are written here with upper case letters and the function-call with lower case letters. Anyway, the text parser accepts constant, variable and function names in any case.
- Only messages by the host are relevant.
- Only one option of each category can be active. A later messages cancels the previous message of the same category.
Some other codes are planned. If you have ideas tell them at the talk page.
Hard coded functions until LE-CODE build 16
The following list shows all messages with special functionality. The texts are examples used by MKW-Fun (with colors).
M65 = \c{green}Free vehicle selection! M69 = \c{yor2}Attention: Karts required! M70 = \c{yor2}Attention: Bikes required! M71 = \c{blue1}Observe Track Specifications! M72 = \c{green}Free track selection! M73 = \c{yor1}Grand Prix with 1 race! M74 = \c{yor2}Grand Prix with 2 races! M75 = \c{yor3}Grand Prix with 3 races! M76 = \c{green}Grand Prix with 4 races! M77 = \c{yor4}Grand Prix with 5 races! M78 = \c{yor5}Grand Prix with 6 races! M79 = \c{yor6}Grand Prix with 8 races! M80 = \c{yor7}Grand Prix with 10 races!
From LE-CODE build 17 it will be possible to freely distribute the special functions to all chat messages.
Legacy settings (MKW-Fun settings)
Beginning with LE-CODE build 17, no chat messages has a special functionality by default. Each special functionality must be defined explicitly. If you want to use the old behavior defined for MKW-Fun create a file (e.g. with name lecode-param.txt):
#LE-LPAR [CHAT-MESSAGE-MODES] @legacy = 1
This is equivalent to:
#LE-LPAR [CHAT-MESSAGE-MODES] M65 = CHAT$ANY_VEHICLE M69 = CHAT$KARTS_ONLY M70 = CHAT$BIKES_ONLY M71 = CHAT$TRACK_BY_HOST M72 = CHAT$ANY_TRACK M73 = chat$n_races(1) M74 = chat$n_races(2) M75 = chat$n_races(3) M76 = chat$n_races(4) M77 = chat$n_races(5) M78 = chat$n_races(6) M79 = chat$n_races(8) M80 = chat$n_races(10)
Then use option --lpar lecode-param.txt when patching the LE-CODE binary. The option will be available with the next release of Wiimms SZS Tools.
The original game uses BMG messages 582 to 585 (hex) to announce the races. LE-CODE moved the messages to range 6100 to 6109 to support 10 races. MKW-Fun defines the following messages:
6100 = \z{802,110002}\z{802,110000} - 1st Race (\z{a02,1000000000} players) 6101 = \z{802,110002}\z{802,110000} - 2nd Race (\z{a02,1000000000} players) 6102 = \z{802,110002}\z{802,110000} - 3rd Race (\z{a02,1000000000} players) 6103 = \z{802,110002}\z{802,110000} - 4th Race (\z{a02,1000000000} players) 6104 = \z{802,110002}\z{802,110000} - 5th Race (\z{a02,1000000000} players) 6105 = \z{802,110002}\z{802,110000} - 6th Race (\z{a02,1000000000} players) 6106 = \z{802,110002}\z{802,110000} - 7th Race (\z{a02,1000000000} players) 6107 = \z{802,110002}\z{802,110000} - 8th Race (\z{a02,1000000000} players) 6108 = \z{802,110002}\z{802,110000} - 9th Race (\z{a02,1000000000} players) 6109 = \z{802,110002}\z{802,110000} - 10th Race (\z{a02,1000000000} players)
Manage LPAR files
Create a LPAR file
Use a LPAR file
Under construction
See »LE-CODE: Distribution Tutorial: LE-CODE parameters« for details until this pages is completed.