This commit is contained in:
Christian Semmler 2026-01-10 16:11:38 -07:00
parent bce41fe793
commit 9857f86eb3
No known key found for this signature in database
GPG Key ID: 086DAA1360BEEE5C
2 changed files with 419 additions and 22 deletions

View File

@ -116,19 +116,19 @@ void LegoRace::Enable(MxBool p_enable)
// FUNCTION: LEGO1 0x10015f30 // FUNCTION: LEGO1 0x10015f30
RaceState::RaceState() RaceState::RaceState()
{ {
m_entries[0].m_id = 1; m_entries[0].m_id = LegoActor::c_pepper;
m_entries[0].m_lastScore = 0; m_entries[0].m_lastScore = 0;
m_entries[0].m_score = 0; m_entries[0].m_score = 0;
m_entries[1].m_id = 2; m_entries[1].m_id = LegoActor::c_mama;
m_entries[1].m_lastScore = 0; m_entries[1].m_lastScore = 0;
m_entries[1].m_score = 0; m_entries[1].m_score = 0;
m_entries[2].m_id = 3; m_entries[2].m_id = LegoActor::c_papa;
m_entries[2].m_lastScore = 0; m_entries[2].m_lastScore = 0;
m_entries[2].m_score = 0; m_entries[2].m_score = 0;
m_entries[3].m_id = 4; m_entries[3].m_id = LegoActor::c_nick;
m_entries[3].m_lastScore = 0; m_entries[3].m_lastScore = 0;
m_entries[3].m_score = 0; m_entries[3].m_score = 0;
m_entries[4].m_id = 5; m_entries[4].m_id = LegoActor::c_laura;
m_entries[4].m_lastScore = 0; m_entries[4].m_lastScore = 0;
m_entries[4].m_score = 0; m_entries[4].m_score = 0;
m_state = RaceState::e_carrace; m_state = RaceState::e_carrace;

View File

@ -47,9 +47,7 @@ seq:
variables, background color, light position, and ends with variables, background color, light position, and ends with
"END_OF_VARIABLES" marker. "END_OF_VARIABLES" marker.
- id: characters - id: characters
type: character_entry type: character_manager
repeat: expr
repeat-expr: 66
doc: Character manager data for all 66 actors in the game. doc: Character manager data for all 66 actors in the game.
- id: plants - id: plants
type: plant_entry type: plant_entry
@ -110,10 +108,163 @@ types:
value: name == "END_OF_VARIABLES" value: name == "END_OF_VARIABLES"
doc: True if this is the end-of-variables marker. doc: True if this is the end-of-variables marker.
character_entry: character_manager:
doc: | doc: |
Character customization and state for a single actor. All 66 character entries in the game, in the order defined by g_actorInfoInit.
Total size is 16 bytes per character. Each entry is 16 bytes, for a total of 1056 bytes.
seq:
- id: pepper
type: pepper_character_entry
doc: Pepper Roni
- id: mama
type: standard_character_entry
doc: Mama Brickolini
- id: papa
type: standard_character_entry
doc: Papa Brickolini
- id: nick
type: standard_character_entry
doc: Nick Brick
- id: laura
type: standard_character_entry
doc: Laura Brick
- id: infoman
type: infoman_character_entry
doc: Infomaniac
- id: brickstr
type: standard_character_entry
doc: Brickster
- id: studs
type: standard_character_entry
doc: Studs Linkin
- id: rhoda
type: standard_character_entry
doc: Rhoda Hogg
- id: valerie
type: standard_character_entry
doc: Valerie Stubbins
- id: snap
type: standard_character_entry
doc: Snap Lockitt
- id: pt
type: standard_character_entry
- id: mg
type: standard_character_entry
doc: Margaret Patricia "Maggie" Post
- id: bu
type: standard_character_entry
- id: ml
type: standard_character_entry
- id: nu
type: standard_character_entry
- id: na
type: standard_character_entry
doc: Nancy Nubbins
- id: cl
type: standard_character_entry
- id: en
type: standard_character_entry
- id: re
type: standard_character_entry
- id: ro
type: standard_character_entry
- id: d1
type: standard_character_entry
- id: d2
type: standard_character_entry
- id: d3
type: standard_character_entry
- id: d4
type: standard_character_entry
- id: l1
type: standard_character_entry
- id: l2
type: standard_character_entry
- id: l3
type: standard_character_entry
- id: l4
type: standard_character_entry
- id: l5
type: standard_character_entry
- id: l6
type: standard_character_entry
- id: b1
type: standard_character_entry
- id: b2
type: standard_character_entry
- id: b3
type: standard_character_entry
- id: b4
type: standard_character_entry
- id: cm
type: standard_character_entry
- id: gd
type: standard_character_entry
- id: rd
type: standard_character_entry
- id: pg
type: standard_character_entry
doc: Polly Gone
- id: bd
type: standard_character_entry
- id: sy
type: standard_character_entry
- id: gn
type: standard_character_entry
- id: df
type: standard_character_entry
- id: bs
type: standard_character_entry
- id: lt
type: standard_character_entry
- id: st
type: standard_character_entry
- id: bm
type: standard_character_entry
- id: jk
type: standard_character_entry
- id: ghost
type: ghost_character_entry
- id: ghost01
type: ghost_character_entry
- id: ghost02
type: ghost_character_entry
- id: ghost03
type: ghost_character_entry
- id: ghost04
type: ghost_character_entry
- id: ghost05
type: ghost_character_entry
- id: hg
type: standard_character_entry
- id: pntgy
type: standard_character_entry
- id: pep
type: pepper_character_entry
- id: cop01
type: standard_character_entry
- id: actor_01
type: standard_character_entry
- id: actor_02
type: standard_character_entry
- id: actor_03
type: standard_character_entry
- id: actor_04
type: standard_character_entry
- id: actor_05
type: standard_character_entry
- id: btmncycl
type: standard_character_entry
- id: cboycycl
type: standard_character_entry
- id: boatman
type: standard_character_entry
standard_character_entry:
doc: |
Character customization and state for actors using the standard hat parts
(g_hatPartIndices). Hat index 0-19 maps directly to hat_part enum.
Total size is 16 bytes.
seq: seq:
- id: sound - id: sound
type: s4 type: s4
@ -126,25 +277,164 @@ types:
doc: Character mood state. doc: Character mood state.
- id: hat_part_name_index - id: hat_part_name_index
type: u1 type: u1
doc: Hat part name table index. enum: standard_hat
doc: Index into standard hat parts (0-19 = standard hats).
- id: hat_name_index - id: hat_name_index
type: u1 type: u1
doc: Hat variant name table index. enum: lego_color
doc: Hat color.
- id: infogron_name_index - id: infogron_name_index
type: u1 type: u1
doc: Torso (infogron) variant name table index. enum: lego_color
doc: Torso (infogron) color.
- id: armlft_name_index - id: armlft_name_index
type: u1 type: u1
doc: Left arm variant name table index. enum: lego_color
doc: Left arm color.
- id: armrt_name_index - id: armrt_name_index
type: u1 type: u1
doc: Right arm variant name table index. enum: lego_color
doc: Right arm color.
- id: leglft_name_index - id: leglft_name_index
type: u1 type: u1
doc: Left leg variant name table index. enum: lego_color
doc: Left leg color.
- id: legrt_name_index - id: legrt_name_index
type: u1 type: u1
doc: Right leg variant name table index. enum: lego_color
doc: Right leg color.
pepper_character_entry:
doc: |
Character customization and state for Pepper (uses g_pepperHatPartIndices).
Hat index 0=phat, 1-20 map to standard hats 0-19.
Total size is 16 bytes.
seq:
- id: sound
type: s4
doc: Sound/voice variant index.
- id: move
type: s4
doc: Movement/animation variant index.
- id: mood
type: u1
doc: Character mood state.
- id: hat_part_name_index
type: u1
enum: pepper_hat
doc: Index into Pepper's hat parts (0=phat, 1-20=standard hats 0-19).
- id: hat_name_index
type: u1
enum: lego_color
doc: Hat color.
- id: infogron_name_index
type: u1
enum: lego_color
doc: Torso (infogron) color.
- id: armlft_name_index
type: u1
enum: lego_color
doc: Left arm color.
- id: armrt_name_index
type: u1
enum: lego_color
doc: Right arm color.
- id: leglft_name_index
type: u1
enum: lego_color
doc: Left leg color.
- id: legrt_name_index
type: u1
enum: lego_color
doc: Right leg color.
infoman_character_entry:
doc: |
Character customization and state for Infoman (uses g_infomanHatPartIndices).
Hat index 0=icap (only option).
Total size is 16 bytes.
seq:
- id: sound
type: s4
doc: Sound/voice variant index.
- id: move
type: s4
doc: Movement/animation variant index.
- id: mood
type: u1
doc: Character mood state.
- id: hat_part_name_index
type: u1
enum: infoman_hat_index
doc: Index into Infoman's hat parts (0=icap only).
- id: hat_name_index
type: u1
enum: lego_color
doc: Hat color.
- id: infogron_name_index
type: u1
enum: lego_color
doc: Torso (infogron) color.
- id: armlft_name_index
type: u1
enum: lego_color
doc: Left arm color.
- id: armrt_name_index
type: u1
enum: lego_color
doc: Right arm color.
- id: leglft_name_index
type: u1
enum: lego_color
doc: Left leg color.
- id: legrt_name_index
type: u1
enum: lego_color
doc: Right leg color.
ghost_character_entry:
doc: |
Character customization and state for ghosts (uses g_ghostHatPartIndices).
Hat index 0=sheet (only option).
Total size is 16 bytes.
seq:
- id: sound
type: s4
doc: Sound/voice variant index.
- id: move
type: s4
doc: Movement/animation variant index.
- id: mood
type: u1
doc: Character mood state.
- id: hat_part_name_index
type: u1
enum: ghost_hat_index
doc: Index into ghost hat parts (0=sheet only).
- id: hat_name_index
type: u1
enum: lego_color
doc: Hat color.
- id: infogron_name_index
type: u1
enum: lego_color
doc: Torso (infogron) color.
- id: armlft_name_index
type: u1
enum: lego_color
doc: Left arm color.
- id: armrt_name_index
type: u1
enum: lego_color
doc: Right arm color.
- id: leglft_name_index
type: u1
enum: lego_color
doc: Left leg color.
- id: legrt_name_index
type: u1
enum: lego_color
doc: Right leg color.
plant_entry: plant_entry:
doc: | doc: |
@ -172,7 +462,7 @@ types:
type: s1 type: s1
doc: | doc: |
Growth/interaction counter. Affects plant height. Growth/interaction counter. Affects plant height.
Negative values indicate special states. This is used in Act 2/3.
building_entry: building_entry:
doc: | doc: |
@ -192,7 +482,7 @@ types:
type: s1 type: s1
doc: | doc: |
Interaction counter. Affects building height adjustment. Interaction counter. Affects building height adjustment.
Used for destructible buildings. This is used in Act 2/3.
game_state: game_state:
doc: | doc: |
@ -263,9 +553,11 @@ types:
doc: Mission attempt counter. doc: Mission attempt counter.
- id: score - id: score
type: s2 type: s2
enum: score_color
doc: Current/last mission score. doc: Current/last mission score.
- id: hi_score - id: hi_score
type: s2 type: s2
enum: score_color
doc: High score for this mission. doc: High score for this mission.
score_mission_state_data: score_mission_state_data:
@ -276,33 +568,43 @@ types:
seq: seq:
- id: pe_score - id: pe_score
type: s2 type: s2
enum: score_color
doc: Pepper's current/last score. doc: Pepper's current/last score.
- id: ma_score - id: ma_score
type: s2 type: s2
enum: score_color
doc: Mama's current/last score. doc: Mama's current/last score.
- id: pa_score - id: pa_score
type: s2 type: s2
enum: score_color
doc: Papa's current/last score. doc: Papa's current/last score.
- id: ni_score - id: ni_score
type: s2 type: s2
enum: score_color
doc: Nick's current/last score. doc: Nick's current/last score.
- id: la_score - id: la_score
type: s2 type: s2
enum: score_color
doc: Laura's current/last score. doc: Laura's current/last score.
- id: pe_high_score - id: pe_high_score
type: s2 type: s2
enum: score_color
doc: Pepper's high score. doc: Pepper's high score.
- id: ma_high_score - id: ma_high_score
type: s2 type: s2
enum: score_color
doc: Mama's high score. doc: Mama's high score.
- id: pa_high_score - id: pa_high_score
type: s2 type: s2
enum: score_color
doc: Papa's high score. doc: Papa's high score.
- id: ni_high_score - id: ni_high_score
type: s2 type: s2
enum: score_color
doc: Nick's high score. doc: Nick's high score.
- id: la_high_score - id: la_high_score
type: s2 type: s2
enum: score_color
doc: Laura's high score. doc: Laura's high score.
hospital_state_data: hospital_state_data:
@ -376,12 +678,15 @@ types:
seq: seq:
- id: id - id: id
type: u1 type: u1
doc: Actor ID (1-5). enum: actor
doc: Actor ID.
- id: last_score - id: last_score
type: s2 type: s2
enum: score_color
doc: Score from last race. doc: Score from last race.
- id: high_score - id: high_score
type: s2 type: s2
enum: score_color
doc: Best score (high score). doc: Best score (high score).
vehicle_build_state_data: vehicle_build_state_data:
@ -479,7 +784,7 @@ types:
repeat-expr: 3 repeat-expr: 3
if: racecar_plane.name_length > 0 if: racecar_plane.name_length > 0
doc: Racecar textures (front, back, tail). doc: Racecar textures (front, back, tail).
- id: dialogue_next_index - id: cpt_click_dialogue_next_index
type: s2 type: s2
doc: Next dialogue index for Captain Click. doc: Next dialogue index for Captain Click.
- id: played_exit_explanation - id: played_exit_explanation
@ -585,3 +890,95 @@ enums:
2: yellow 2: yellow
3: red 3: red
4: green 4: green
lego_color:
0: white
1: black
2: yellow
3: red
4: blue
5: brown
6: lt_grey
7: green
hat_part:
0: baseball
1: chef
2: cap
3: cophat
4: helmet
5: ponytail
6: pageboy
7: shrthair
8: bald
9: flower
10: cboyhat
11: cuphat
12: cathat
13: backbcap
14: pizhat
15: caprc
16: capch
17: capdb
18: capjs
19: capmd
20: sheet
21: phat
22: icap
standard_hat:
0: baseball
1: chef
2: cap
3: cophat
4: helmet
5: ponytail
6: pageboy
7: shrthair
8: bald
9: flower
10: cboyhat
11: cuphat
12: cathat
13: backbcap
14: pizhat
15: caprc
16: capch
17: capdb
18: capjs
19: capmd
pepper_hat:
0: phat
1: baseball
2: chef
3: cap
4: cophat
5: helmet
6: ponytail
7: pageboy
8: shrthair
9: bald
10: flower
11: cboyhat
12: cuphat
13: cathat
14: backbcap
15: pizhat
16: caprc
17: capch
18: capdb
19: capjs
20: capmd
infoman_hat_index:
0: icap
ghost_hat_index:
0: sheet
score_color:
0: grey
1: yellow
2: blue
3: red