Crusader_Decomp/USECODE/EUSECODE_extracted/readable_script_ir.tsv
MaddoScientisto de42fd1ea1 Add Crusader-specific USECODE data and documentation
- Introduced new file `vm_mask_ladder.tsv` containing detailed mappings for Crusader USECODE VM masks and their associated descriptors.
- Added comprehensive documentation in `scummvm-crusader-reference.md` outlining the structure, findings, and implications for reverse-engineering the Crusader engine within ScummVM.
- Created `usecode-roundtrip-ir.md` to document the plan for converting Crusader USECODE bytes into a human-readable format, detailing the container layout, event names, and intrinsic tables.
- Implemented a PowerShell script `temp_usecode_sample.ps1` for extracting and analyzing USECODE data from the Crusader FLX files, providing insights into class and event structures.
2026-03-22 17:26:39 +01:00

11 lines
9.3 KiB
Text

template_id section center_index center_label attach_labels callback_labels neighbor_labels event_families runtime_ops mask_pairs owner_source mirror_write selector_status bridge_note
jelyhack_anchor_attachment JELYHACK anchor lane 277 JELYHACK REE_BOOT,SFXTRIG SURCAMNS,SURCAMEW BASEGUN,TIMER,SPECIAL,TRIGPAD,MONSTER,ELITE,D_ESTORM,DATALINK,SLIDEFLR,JELYH2,HOFFMAN,D_HOFFMA callback-eventtrigger,boot-event-core,minimal-event-core APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR indirect-only active-event-biased ladder; no direct anchor-specific mask proven 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Referent-only anchors are now readable as payload owners, but the current mask ladder still correlates more strongly with active-event descriptors than with anchor-only rows.
jelyhack_anchor_attachment JELYHACK anchor lane 280 JELYH2 REE_BOOT,SFXTRIG SURCAMEW SPECIAL,TRIGPAD,MONSTER,ELITE,D_ESTORM,JELYHACK,DATALINK,SLIDEFLR,HOFFMAN,D_HOFFMA,SKILLBOX,D_GURDSQ,VETRON boot-event-core,callback-eventtrigger,minimal-event-core APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR indirect-only active-event-biased ladder; no direct anchor-specific mask proven 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Referent-only anchors are now readable as payload owners, but the current mask ladder still correlates more strongly with active-event descriptors than with anchor-only rows.
event_hub_cluster EVENT hub lane 189 COR_BOOT EVENT,NPCTRIG GRENADE,SCIENTIS,ROLL_NS,REB_COUP,MEDIKIT,K,CRUZTRIG,NPC_ONLY event-hub,npc-trigger APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved This is the strongest current descriptor-side bridge into the active event runtime lane: the neighborhood contains explicit event cores and matches the proven payload-chain plus link-matrix VM behavior.
event_hub_cluster EVENT hub lane 190 EVENT COR_BOOT,NPCTRIG SCIENTIS,ROLL_NS,REB_COUP,MEDIKIT,K,CRUZTRIG,NPC_ONLY,VMAIL boot-event-core,npc-trigger APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved This is the strongest current descriptor-side bridge into the active event runtime lane: the neighborhood contains explicit event cores and matches the proven payload-chain plus link-matrix VM behavior.
event_hub_cluster EVENT hub lane 191 NPCTRIG COR_BOOT,EVENT ROLL_NS,REB_COUP,MEDIKIT,K,CRUZTRIG,NPC_ONLY,VMAIL,STORMTRO boot-event-core,event-hub APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved This is the strongest current descriptor-side bridge into the active event runtime lane: the neighborhood contains explicit event cores and matches the proven payload-chain plus link-matrix VM behavior.
environmental_event_cluster Environmental event lane 229 FLAMEBOX WVENTNS,WVENTEW,REBEL_TV,SDOOR_N,SDOOR_E,EBRIDGE2,MCRATE,COPY_EW,COPY_NS APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Environmental descriptors share the same active event field grammar, so they likely ride the same generic VM event lane even though no hazard-specific opcode split is proven yet.
environmental_event_cluster Environmental event lane 237 NOSTRIL COPY_EW,COPY_NS,FLAME1,REB_PAD,VARDESK,BLASER1,REB_BOOT,UPPLATE,KEYPADNS APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Environmental descriptors share the same active event field grammar, so they likely ride the same generic VM event lane even though no hazard-specific opcode split is proven yet.
environmental_event_cluster Environmental event lane 296 STEAMBOX BOUNCBOX,HOVER1,STEAM1,FADE,PHIR,FLAME2,STEAM2,FLAMELP,BBOX,GBOX_NS APPEND_UNIQUE_INLINE,APPEND_UNIQUE_INDIRECT,REMOVE_MATCHING_INDIRECT,REMOVE_MATCHING_INLINE,MATERIALIZE_OR_FORWARD_VALUE,PREPEND_INLINE_PAYLOAD,BUILD_ENTITY_LINK_MATRIX,EMIT_OR_PUSHBACK_RESULT,FINALIZE_MIXED_VALUE_TO_OUTPTR 0x0001:0000,0x0002:0001,0x0004:0002,0x0010:0004,0x0020:0005,0x0200:0009,0x0400:000a,0x0800:000b,0x1000:000c,0x2000:0015,0x4000:000e,0x8000:0007,0x8000:000f 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Environmental descriptors share the same active event field grammar, so they likely ride the same generic VM event lane even though no hazard-specific opcode split is proven yet.
callback_trigger_cluster Callback trigger lane 269 SURCAMNS D_SOLD,D_VARG,D_COUR,D_SUSAN,D_THERM,BASEGUN,TIMER,SPECIAL,TRIGPAD,MONSTER MATERIALIZE_OR_FORWARD_VALUE,PUSH_FRAME_WORD_LITERAL,COMPARE_STREAM_DWORD_AND_PUSH_BOOL,FINALIZE_MIXED_VALUE_TO_OUTPTR no callback-specific mask pair proven; current ladder favors active event carriers 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Callback/eventTrigger descriptors are structurally distinct from the active event lane, so the runtime bridge is still generic slot-backed context flow rather than a callback-specific opcode family.
callback_trigger_cluster Callback trigger lane 284 SURCAMEW REE_BOOT,SFXTRIG SLIDEFLR,JELYH2,HOFFMAN,D_HOFFMA,SKILLBOX,D_GURDSQ,VETRON,DEATHBOX boot-event-core,minimal-event-core MATERIALIZE_OR_FORWARD_VALUE,PUSH_FRAME_WORD_LITERAL,COMPARE_STREAM_DWORD_AND_PUSH_BOOL,FINALIZE_MIXED_VALUE_TO_OUTPTR no callback-specific mask pair proven; current ladder favors active event carriers 000d:44df -> 000d:4c99 -> 000d:7000 -> (+0x10/+0x12) + 0x0d*slot + 4 entity_vm_context_create_from_slot_index writes the same source pair to 0x39ca[context_slot] 0x19/0x1a/0x1b proven in 000d:0988; 0x18 implied; upstream [BP-0x32] seed unresolved Callback/eventTrigger descriptors are structurally distinct from the active event lane, so the runtime bridge is still generic slot-backed context flow rather than a callback-specific opcode family.