RULE (File Format)
To do: Description of the function of RULE files |
This file format was introduced in Metroid Prime 2 and has appeared in every Retro game since. The format is identical in Prime 2/3/DKCR, other than the shorter asset ID length in Prime 2. In Tropical Freeze, the extension was changed to RSTC and the header was changed, but otherwise the format is the same.
Possible version numbers:
Version | Game |
---|---|
1 | Metroid Prime 2: Echoes, Metroid Prime 3: Corruption, Donkey Kong Country Returns |
2 | Donkey Kong Country: Tropical Freeze |
Format
Type | Count | Name | Notes |
---|---|---|---|
Header | 1 | Header | |
u16 | 1 | Rule Count | Count of rules in the file. |
Rule | Rule Count | Rule Array | Array of rules. |
Header
Version 1
Header for RULE files in Metroid Prime 2, Metroid Prime 3, and Donkey Kong Country Returns:
Offset | Type | Count | Name | Notes |
---|---|---|---|---|
0x0 | FourCC | 1 | Magic | Always RULE
|
0x4 | u8 | 1 | Version | Always 1 |
0x5 | Asset ID (RULE) | 1 | Parent RULE | Parent file which is checked after all conditions in this file have been checked. This allows overriding specific conditions. |
End of RULE Header |
Version 2
Header for RSTC files in Donkey Kong Country: Tropical Freeze:
Offset | Type | Count | Name | Notes |
---|---|---|---|---|
0x0 | Form Descriptor | 1 | RSTC Form Descriptor | Data type is RSTC
|
0x20 | Chunk Descriptor | 1 | RULE Chunk Descriptor | Data type is RULE
|
0x38 | End of RSTC Header |
Rule
Type | Count | Name | Notes |
---|---|---|---|
u16 | 1 | Condition Count | Count of conditions in this rule |
Condition | Condition Count | Condition Array | Array of conditions |
u16 | 1 | Action Count | Count of actions in this rule |
Action | Action Count | Action Array | Array of actions |
Condition
Type | Count | Name | Notes |
---|---|---|---|
FourCC | 1 | Condition ID | |
u8 | 1 | Comparison Operator | Operator used to compare with Value. |
u8 | 1 | Value Type | Type of Value. |
Value Type | 1 | Value | All types are 32 bits. |
Action
Type | Count | Name | Notes |
---|---|---|---|
FourCC | 1 | Action ID | |
u8 | 1 | Property Count | |
[Varies] | Property Count | Property Array | Properties used by this action. All property types are 32 bits. The number and type of properties varies depending on the Action ID FourCC. |
Comparison Operator Enum
ID | Operator |
---|---|
0 | Less than |
1 | Less than or equal to |
2 | Equal to |
3 | Greater than or equal to |
4 | Greater than |
Value Type Enum
Rule values are always 32 bits. These are the possible types:
ID | Type |
---|---|
0 | bool |
1 | float |
2 | int32 |
3 | Unknown; variable type? Used internally but may not actually be used in RULE files. |