Ground event retagger trigger materializations

This commit is contained in:
Jan Petykiewicz 2026-04-19 02:43:50 -07:00
commit e62962f337
2 changed files with 17 additions and 0 deletions

View file

@ -9535,6 +9535,9 @@ fn parse_event_runtime_collection_summary_with_tag_width(
control_lane_notes.push(
"the post-load name-driven retagger is narrower than a bulk trigger-kind materializer too: direct disassembly of 0x00442c30 (called from 0x00443a50 at 0x00444b50) shows a hardcoded scenario-name patch table over already-live records in 0x0062be18/0x0062bae0, and the checked cases mostly tweak modifier bytes [event+0x7f9/+0x7fa] or nested payload scalars on records that already carry concrete kinds such as 7 ('Open Aus', 'The American'), 6 ('Test connections'), 5 ('Win - Gold'), and 1 ('Win - Silver' / 'Win - Bronze')".to_string(),
);
control_lane_notes.push(
"direct disassembly now boxes in the explicit trigger-kind materializations inside that same retagger too: the 'SP - GOLD' branch at 0x00443526 rewrites [event+0x7ef] from 1 to 5 on live runtime-event id 1 when the scenario flag [world+0x66de] is set and payload-root kind 7 carries subtype byte 5, while the 'Labor' branch at 0x00443601 rewrites [event+0x7ef] from 0 to 2 on live runtime-event id 0x0d when the same scenario flag is set and the checked 0x3c -> 0x3d child payload pair carries the matching negative scalar sentinel".to_string(),
);
}
if records_with_trigger_kind != 0 {
control_lane_notes.push(format!(
@ -22386,6 +22389,14 @@ mod tests {
&& line.contains("Win - Gold")
&& line.contains("Win - Silver")
}));
assert!(summary.control_lane_notes.iter().any(|line| {
line.contains("SP - GOLD")
&& line.contains("0x00443526")
&& line.contains("1 to 5")
&& line.contains("Labor")
&& line.contains("0x00443601")
&& line.contains("0 to 2")
}));
assert!(summary.control_lane_notes.iter().any(|line| {
line.contains("0x00431b20 dispatch-strip opcodes present in decoded grouped rows = [4]")
}));

View file

@ -297,6 +297,12 @@ Working rule:
remaining trigger-kind frontier is no longer “maybe the name sweep bulk-materializes null
kinds”; it is the smaller set of scenario-specific records where that sweep explicitly writes
`[event+0x7ef]` itself or a still-later owner does.
- two explicit trigger-kind materializations are now grounded inside that retagger:
the `SP - GOLD` branch at `0x00443526` rewrites `[event+0x7ef]` from `1 -> 5` on live
runtime-event id `1` when `[world+0x66de]` is set and the checked root payload is kind `7`
with subtype byte `5`, while the `Labor` branch at `0x00443601` rewrites `[event+0x7ef]`
from `0 -> 2` on live runtime-event id `0x0d` when the same scenario flag is set and the
checked `0x3c -> 0x3d` child payload pair carries the matching negative scalar sentinel.
- cross-map probing now gives a better static-analysis lead too:
`British Isles.gmp` shows no current `0x00431b20` dispatch-strip rows, `Germany.gmp` stays on
`Game Variable 1` plus `Company Variable 3..4`, while `Texas Tea.gmp` adds `Economic Status`