LUA List: Difference between revisions
Content added Content deleted
m (Burninrubber0 moved page LUAList (Burnout Paradise) to LUA List: LUA-related page updates) |
(Add description, separate enumerations, and complete the spec.) |
||
Line 1: | Line 1: | ||
The LUA List resource type contains binary data detailing the challenges in individual [[LUA Script]] resources. It is used in scripted challenges such as Party Pack challenges. |
|||
⚫ | |||
The information held includes details of the challenge itself, such as its name and goal, as well as modifiers such as the variables. |
|||
= Layout = |
|||
Some names are given for clarity and are not official Criterion identifiers. |
|||
⚫ | |||
⚫ | |||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Size !! Type !! Name !! Description |
! Offset !! Size !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || 0x4 || int32_t || || Version number || 1 |
| 0x0 || 0x4 || int32_t || || Version number || 1 |
||
|- |
|- |
||
| 0x4 || 0x4 || || || padding |
| 0x4 || 0x4 || || || padding || |
||
|- |
|- |
||
| 0x8 || 0x8 || CgsID || || List ID |
| 0x8 || 0x8 || CgsID || || List ID || Encoded |
||
|- |
|- |
||
| 0x10 || 0x4 || |
| 0x10 || 0x4 || Entry* || || Entry data start || |
||
|- |
|- |
||
| 0x14 || 0x4 || char |
| 0x14 || 0x4 || char** || || Types || See [[#Types | Types]] |
||
|- |
|- |
||
| 0x18 || 0x4 || char |
| 0x18 || 0x4 || char** || || Variables || See [[#Variables | Variables]] |
||
|- |
|- |
||
| 0x1C || 0x4 || uint32_t || || Num scripts |
| 0x1C || 0x4 || uint32_t || || Num scripts || |
||
|- |
|- |
||
| 0x20 || 0x4 || uint32_t || || Data length |
| 0x20 || 0x4 || uint32_t || || Data length || Not including padding to end |
||
|- |
|- |
||
| 0x24 || 0x80 || char[128] || || List title |
| 0x24 || 0x80 || char[128] || || List title || |
||
|- |
|- |
||
| 0xA4 || 0x1 || uint8_t || || Num types |
| 0xA4 || 0x1 || uint8_t || || Num types || |
||
|- |
|- |
||
| 0xA5 || 0x1 || uint8_t || || Num variables |
| 0xA5 || 0x1 || uint8_t || || Num variables || |
||
|} |
|} |
||
=== |
==== 64-bit ==== |
||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Size !! Type !! Name !! Description |
! Offset !! Size !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || |
| 0x0 || 0x4 || int32_t || || Version number || 1 |
||
|- |
|- |
||
| |
| 0x4 || 0x4 || || || padding || |
||
|- |
|- |
||
| |
| 0x8 || 0x8 || CgsID || || List ID || Encoded |
||
|- |
|- |
||
| |
| 0x10 || 0x8 || Entry* || || Entry data start || |
||
|- |
|- |
||
| |
| 0x18 || 0x8 || char** || || Types || See [[#Types | Types]] |
||
|- |
|- |
||
| |
| 0x20 || 0x8 || char** || || Variables || See [[#Variables | Variables]] |
||
|- |
|- |
||
| |
| 0x28 || 0x4 || uint32_t || || Num scripts || |
||
|- |
|- |
||
| |
| 0x2C || 0x4 || uint32_t || || Data length || Not including padding to end |
||
|- |
|- |
||
| || || || || |
| 0x30 || 0x80 || char[128] || || List title || |
||
|- |
|- |
||
| || || || || |
| 0xB0 || 0x1 || uint8_t || || Num types || |
||
|- |
|- |
||
| |
| 0xB1 || 0x1 || uint8_t || || Num variables || |
||
⚫ | |||
| || || || || || 0x2 (Bit 1) = BOOST_LOCKED || |
|||
⚫ | |||
| || || || || || 0x4 (Bit 2) = DO_NOT_CRASH || |
|||
⚫ | |||
| || || || || || 0x8 (Bit 3) = DO_NOT_TOUCH_A_WALL || |
|||
⚫ | |||
| || || || || || 0x10 (Bit 4) = REVERSE_STEERING || |
|||
|- |
|||
| || || || || || 0x20 (Bit 5) = NO_BRAKES || |
|||
|- |
|||
| 0x218 || 0x8 || || || padding || || |
|||
|} |
|} |
||
== |
=== Entry === |
||
=== LuaList === |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Size !! Type !! Name !! Description |
! Offset !! Size !! Type !! Name !! Description !! Comments |
||
|- |
|- |
||
| 0x0 || |
| 0x0 || 0x8 || CgsID || || Script ID || Encoded |
||
|- |
|- |
||
| |
| 0x8 || 0x80 || char[128] || || Name || Non-zeroed padding in all strings |
||
|- |
|- |
||
| |
| 0x88 || 0x80 || char[128] || || Goal || |
||
|- |
|- |
||
| |
| 0x108 || 0x100 || char[256] || || Description || |
||
|- |
|- |
||
| |
| 0x208 || 0x4 || uint32_t || || Score multiplier || See [[#Score multiplier | Score multiplier]] |
||
|- |
|- |
||
| |
| 0x20C || 0x4 || uint32_t || || Scoring method || See [[#Scoring method | Scoring method]] |
||
|- |
|- |
||
| |
| 0x210 || 0x4 || uint32_t || || Type || |
||
|- |
|- |
||
| |
| 0x214 || 0x4 || uint32_t || || Variables || |
||
|- |
|- |
||
| |
| 0x218 || 0x8 || || || padding || |
||
|- |
|||
| 0xB0 || 0x1 || uint8_t || || Num types || || |
|||
|- |
|||
| 0xB1 || 0x1 || uint8_t || || Num variables || || |
|||
|} |
|} |
||
⚫ | |||
= Enumerations = |
|||
=== Challenge Type === |
|||
PASSTHEPAD is the only list to contain challenge types. |
|||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments |
|||
|- |
|- |
||
! Name !! Value !! Comments |
|||
| 0x0 || 0x8 || CgsID || || Script ID || || Encoded |
|||
|- |
|- |
||
| Stunt || 0x1 || |
|||
| 0x8 || 0x80 || char[128] || || Name || || Non-zeroed padding in all strings |
|||
|- |
|- |
||
| Skill || 0x2 || |
|||
| 0x88 || 0x80 || char[128] || || Goal || || |
|||
|- |
|- |
||
| Speed || 0x4 || |
|||
| 0x108 || 0x80 || char[128] || || Description || || |
|||
⚫ | |||
⚫ | |||
PASSTHEPAD is the only list to contain variables. |
|||
{| class="wikitable" |
|||
|- |
|- |
||
! Name !! Value !! Comments |
|||
| 0x188 || 0x80 || char[128] || || ? || || Empty |
|||
|- |
|- |
||
| $K_ACCELERATOR_LOCKED || 0x1 || English translation: ACCELERATOR LOCKED ON |
|||
| 0x208 || 0x4 || uint32_t || || ? || || Only used in PASSTHEPAD |
|||
|- |
|- |
||
| $K_BOOST_LOCKED || 0x2 || English translation: BOOST LOCKED ON |
|||
| 0x20C || 0x4 || uint32_t || || ? || 1 if Stunt type, else 0 || |
|||
|- |
|- |
||
| $K_DO_NOT_CRASH || 0x4 || English translation: DON'T CRASH |
|||
| 0x210 || 0x4 || uint32_t || || Type || 0x1 (Bit 0) = Stunt || |
|||
|- |
|- |
||
| $K_DO_NOT_TOUCH_A_WALL || 0x8 || English translation: DON'T TOUCH A WALL |
|||
| || || || || || 0x2 (Bit 1) = Skill || |
|||
|- |
|- |
||
| $K_REVERSE_STEERING || 0x10 || English translation: REVERSE STEERING |
|||
| || || || || || 0x4 (Bit 2) = Speed || |
|||
|- |
|- |
||
| $K_NO_BRAKES || 0x20 || English translation: NO BRAKES |
|||
| 0x214 || 0x4 || uint32_t || || Variables || 0x1 (Bit 0) = ACCELERATOR_LOCKED || |
|||
⚫ | |||
=== Score multiplier === |
|||
PASSTHEPAD is the only list to use multipliers, and only on Stunt challenges. |
|||
{| class="wikitable" |
|||
|- |
|- |
||
! Name !! Value !! Comments |
|||
| || || || || || 0x2 (Bit 1) = BOOST_LOCKED || |
|||
|- |
|- |
||
| ? || 0 || Standard points |
|||
| || || || || || 0x4 (Bit 2) = DO_NOT_CRASH || |
|||
|- |
|- |
||
| ? || 1 || Double points |
|||
| || || || || || 0x8 (Bit 3) = DO_NOT_TOUCH_A_WALL || |
|||
⚫ | |||
| ? || 2 || Triple points |
|||
⚫ | |||
=== Scoring method === |
|||
PASSTHEPAD is the only list to use success/fail scoring, and only on Stunt challenges. All Stunt challenges use this. |
|||
{| class="wikitable" |
|||
|- |
|- |
||
! Name !! Value !! Comments |
|||
| || || || || || 0x10 (Bit 4) = REVERSE_STEERING || |
|||
|- |
|- |
||
| ? || 0 || Score by position |
|||
| || || || || || 0x20 (Bit 5) = NO_BRAKES || |
|||
|- |
|- |
||
| |
| ? || 1 || Score by success/fail |
||
|} |
|} |
Revision as of 06:00, 12 June 2022
The LUA List resource type contains binary data detailing the challenges in individual LUA Script resources. It is used in scripted challenges such as Party Pack challenges.
The information held includes details of the challenge itself, such as its name and goal, as well as modifiers such as the variables.
Layout
Some names are given for clarity and are not official Criterion identifiers.
LuaList
32-bit
Offset | Size | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | int32_t | Version number | 1 | |
0x4 | 0x4 | padding | |||
0x8 | 0x8 | CgsID | List ID | Encoded | |
0x10 | 0x4 | Entry* | Entry data start | ||
0x14 | 0x4 | char** | Types | See Types | |
0x18 | 0x4 | char** | Variables | See Variables | |
0x1C | 0x4 | uint32_t | Num scripts | ||
0x20 | 0x4 | uint32_t | Data length | Not including padding to end | |
0x24 | 0x80 | char[128] | List title | ||
0xA4 | 0x1 | uint8_t | Num types | ||
0xA5 | 0x1 | uint8_t | Num variables |
64-bit
Offset | Size | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x4 | int32_t | Version number | 1 | |
0x4 | 0x4 | padding | |||
0x8 | 0x8 | CgsID | List ID | Encoded | |
0x10 | 0x8 | Entry* | Entry data start | ||
0x18 | 0x8 | char** | Types | See Types | |
0x20 | 0x8 | char** | Variables | See Variables | |
0x28 | 0x4 | uint32_t | Num scripts | ||
0x2C | 0x4 | uint32_t | Data length | Not including padding to end | |
0x30 | 0x80 | char[128] | List title | ||
0xB0 | 0x1 | uint8_t | Num types | ||
0xB1 | 0x1 | uint8_t | Num variables |
Entry
Offset | Size | Type | Name | Description | Comments |
---|---|---|---|---|---|
0x0 | 0x8 | CgsID | Script ID | Encoded | |
0x8 | 0x80 | char[128] | Name | Non-zeroed padding in all strings | |
0x88 | 0x80 | char[128] | Goal | ||
0x108 | 0x100 | char[256] | Description | ||
0x208 | 0x4 | uint32_t | Score multiplier | See Score multiplier | |
0x20C | 0x4 | uint32_t | Scoring method | See Scoring method | |
0x210 | 0x4 | uint32_t | Type | ||
0x214 | 0x4 | uint32_t | Variables | ||
0x218 | 0x8 | padding |
Enumerations
Challenge Type
PASSTHEPAD is the only list to contain challenge types.
Name | Value | Comments |
---|---|---|
Stunt | 0x1 | |
Skill | 0x2 | |
Speed | 0x4 |
Variables
PASSTHEPAD is the only list to contain variables.
Name | Value | Comments |
---|---|---|
$K_ACCELERATOR_LOCKED | 0x1 | English translation: ACCELERATOR LOCKED ON |
$K_BOOST_LOCKED | 0x2 | English translation: BOOST LOCKED ON |
$K_DO_NOT_CRASH | 0x4 | English translation: DON'T CRASH |
$K_DO_NOT_TOUCH_A_WALL | 0x8 | English translation: DON'T TOUCH A WALL |
$K_REVERSE_STEERING | 0x10 | English translation: REVERSE STEERING |
$K_NO_BRAKES | 0x20 | English translation: NO BRAKES |
Score multiplier
PASSTHEPAD is the only list to use multipliers, and only on Stunt challenges.
Name | Value | Comments |
---|---|---|
? | 0 | Standard points |
? | 1 | Double points |
? | 2 | Triple points |
Scoring method
PASSTHEPAD is the only list to use success/fail scoring, and only on Stunt challenges. All Stunt challenges use this.
Name | Value | Comments |
---|---|---|
? | 0 | Score by position |
? | 1 | Score by success/fail |