LUA List: Difference between revisions

From Burnout Wiki
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.
=== Lua List ===


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 ====
{| class="wikitable"
{| class="wikitable"
! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments
! 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 || || Encoded
| 0x8 || 0x8 || CgsID || || List ID || Encoded
|-
|-
| 0x10 || 0x4 || Unk0 * || || Script list || Unk0 format ||
| 0x10 || 0x4 || Entry* || || Entry data start ||
|-
|-
| 0x14 || 0x4 || char[32] * * || || Types || ||
| 0x14 || 0x4 || char** || || Types || See [[#Types | Types]]
|-
|-
| 0x18 || 0x4 || char[32] * * || || Variables || ||
| 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 || || Not including padding to end
| 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 ||
|}
|}


=== Unk0 ===
==== 64-bit ====
{| class="wikitable"
{| class="wikitable"
! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
|-
| 0x0 || 0x8 || CgsID || || Script ID || || Encoded
| 0x0 || 0x4 || int32_t || || Version number || 1
|-
|-
| 0x8 || 0x80 || char[128] || || Name || || Non-zeroed padding in all strings
| 0x4 || 0x4 || || || padding ||
|-
|-
| 0x88 || 0x80 || char[128] || || Goal || ||
| 0x8 || 0x8 || CgsID || || List ID || Encoded
|-
|-
| 0x108 || 0x80 || char[128] || || Description || ||
| 0x10 || 0x8 || Entry* || || Entry data start ||
|-
|-
| 0x188 || 0x80 || char[128] || || ? || || Empty
| 0x18 || 0x8 || char** || || Types || See [[#Types | Types]]
|-
|-
| 0x208 || 0x4 || uint32_t || || ? || || Only used in PASSTHEPAD
| 0x20 || 0x8 || char** || || Variables || See [[#Variables | Variables]]
|-
|-
| 0x20C || 0x4 || uint32_t || || ? || 1 if Stunt type, else 0 ||
| 0x28 || 0x4 || uint32_t || || Num scripts ||
|-
|-
| 0x210 || 0x4 || uint32_t || || Type || 0x1 (Bit 0) = Stunt ||
| 0x2C || 0x4 || uint32_t || || Data length || Not including padding to end
|-
|-
| || || || || || 0x2 (Bit 1) = Skill ||
| 0x30 || 0x80 || char[128] || || List title ||
|-
|-
| || || || || || 0x4 (Bit 2) = Speed ||
| 0xB0 || 0x1 || uint8_t || || Num types ||
|-
|-
| 0x214 || 0x4 || uint32_t || || Variables || 0x1 (Bit 0) = ACCELERATOR_LOCKED ||
| 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 || ||
|}
|}


== PS4 ==
=== Entry ===

=== LuaList ===
{| class="wikitable"
{| class="wikitable"
! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments
! Offset !! Size !! Type !! Name !! Description !! Comments
|-
|-
| 0x0 || 0x4 || int32_t || || Version number || 1 ||
| 0x0 || 0x8 || CgsID || || Script ID || Encoded
|-
|-
| 0x4 || 0x4 || || || padding || ||
| 0x8 || 0x80 || char[128] || || Name || Non-zeroed padding in all strings
|-
|-
| 0x8 || 0x8 || CgsID || || List ID || || Encoded
| 0x88 || 0x80 || char[128] || || Goal ||
|-
|-
| 0x10 || 0x8 || Unk0 * || || Script list || Unk0 format ||
| 0x108 || 0x100 || char[256] || || Description ||
|-
|-
| 0x18 || 0x8 || char[32] * * || || Types || ||
| 0x208 || 0x4 || uint32_t || || Score multiplier || See [[#Score multiplier | Score multiplier]]
|-
|-
| 0x20 || 0x8 || char[32] * * || || Variables || ||
| 0x20C || 0x4 || uint32_t || || Scoring method || See [[#Scoring method | Scoring method]]
|-
|-
| 0x28 || 0x4 || uint32_t || || Num scripts || ||
| 0x210 || 0x4 || uint32_t || || Type ||
|-
|-
| 0x2C || 0x4 || uint32_t || || Data length || || Not including padding to end
| 0x214 || 0x4 || uint32_t || || Variables ||
|-
|-
| 0x30 || 0x80 || char[128] || || List title || ||
| 0x218 || 0x8 || || || padding ||
|-
| 0xB0 || 0x1 || uint8_t || || Num types || ||
|-
| 0xB1 || 0x1 || uint8_t || || Num variables || ||
|}
|}

=== Unk0 ===
= 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 || ||
|}

=== Variables ===
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 ||
|-
|-
| 0x218 || 0x8 || || || padding || ||
| ? || 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