- Enhance `extract_eusecode_flx.py` to derive class event rows with additional metadata including derived body windows and repeated template statuses. - Introduce `usecode_family_compare.py` for comparing event families, analyzing commonalities in event bodies, and generating reports on identical groups and differences. - Implement new data structures for managing class event rows and family artifact specifications. - Update output formats to include derived body information and repeated family regression checks. - Ensure robust validation of repeated family expectations against actual extracted data.
145 lines
4.7 KiB
Markdown
145 lines
4.7 KiB
Markdown
# Environmental Family Decompiled Event Sketches
|
|
|
|
This is a reversible per-class rendering derived directly from `class_event_index.tsv` plus the raw extracted chunk bytes.
|
|
ScummVM event labels remain hints only; the authoritative data here is the slot id, raw row bytes, and derived body window.
|
|
|
|
## FLAMEBOX
|
|
|
|
```yaml
|
|
class:
|
|
entry_index: 0x0E5
|
|
class_id: 0x403
|
|
class_name: FLAMEBOX
|
|
class_object_index: 0x405
|
|
raw_code_base_u32: 0xE0
|
|
code_base_minus_one: 0xDF
|
|
conservative_event_count: 34
|
|
events:
|
|
- slot: 0x0a
|
|
event_name_hint: equip
|
|
raw_event_entry_word: 0x026a
|
|
raw_code_offset: 0x00000001
|
|
derived_body_start: 0x00e0
|
|
derived_body_end: 0x034a
|
|
derived_body_length: 618
|
|
repeated_template_status: environmental-event/shared-slot-0x0A/shared-slot-template
|
|
body_sha1: ae2a680ccf984b74404e7c105e0b2f9331e58a11
|
|
body_prefix_hex: 5a065c2902464c41
|
|
body_suffix_hex: 656374696f6e007a
|
|
- slot: 0x20
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x01ac
|
|
raw_code_offset: 0x0000026b
|
|
derived_body_start: 0x034a
|
|
derived_body_end: 0x04f6
|
|
derived_body_length: 428
|
|
repeated_template_status: environmental-event/shared-slot-0x20/shared-slot-template
|
|
body_sha1: 73ea45e739673c86eb92fe6a328a1a8442da767d
|
|
body_prefix_hex: 5a045c6b01464c41
|
|
body_suffix_hex: 666c616d6532007a
|
|
- slot: 0x21
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x029a
|
|
raw_code_offset: 0x00000417
|
|
derived_body_start: 0x04f6
|
|
derived_body_end: 0x0790
|
|
derived_body_length: 666
|
|
repeated_template_status: environmental-event/shared-slot-0x21/shared-slot-template
|
|
body_sha1: 8bdf9b3c2792514b300c2a4768f21e525313e86d
|
|
body_prefix_hex: 5a065c4d02464c41
|
|
body_suffix_hex: 657754797065007a
|
|
```
|
|
|
|
## NOSTRIL
|
|
|
|
```yaml
|
|
class:
|
|
entry_index: 0x0ED
|
|
class_id: 0x43E
|
|
class_name: NOSTRIL
|
|
class_object_index: 0x440
|
|
raw_code_base_u32: 0xE0
|
|
code_base_minus_one: 0xDF
|
|
conservative_event_count: 34
|
|
events:
|
|
- slot: 0x0a
|
|
event_name_hint: equip
|
|
raw_event_entry_word: 0x00c0
|
|
raw_code_offset: 0x00000001
|
|
derived_body_start: 0x00e0
|
|
derived_body_end: 0x01a0
|
|
derived_body_length: 192
|
|
repeated_template_status: environmental-event/shared-slot-0x0A/shared-slot-template
|
|
body_sha1: a9d5700c4ff677d813fffdd67444ebd4ac6f4b19
|
|
body_prefix_hex: 5a025c99004e4f53
|
|
body_suffix_hex: fe0266697265007a
|
|
- slot: 0x20
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x0129
|
|
raw_code_offset: 0x000000c1
|
|
derived_body_start: 0x01a0
|
|
derived_body_end: 0x02c9
|
|
derived_body_length: 297
|
|
repeated_template_status: environmental-event/shared-slot-0x20/shared-slot-template
|
|
body_sha1: fd7fca65f43267c20931c91f1db269cccde92947
|
|
body_prefix_hex: 5a045cf8004e4f53
|
|
body_suffix_hex: 026669726532007a
|
|
- slot: 0x21
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x01be
|
|
raw_code_offset: 0x000001ea
|
|
derived_body_start: 0x02c9
|
|
derived_body_end: 0x0487
|
|
derived_body_length: 446
|
|
repeated_template_status: environmental-event/shared-slot-0x21/shared-slot-template
|
|
body_sha1: e3257250cfa12e430d872bd0ecc03e7e8d41a63d
|
|
body_prefix_hex: 5a065c8d014e4f53
|
|
body_suffix_hex: 00636f756e74007a
|
|
```
|
|
|
|
## STEAMBOX
|
|
|
|
```yaml
|
|
class:
|
|
entry_index: 0x128
|
|
class_id: 0x500
|
|
class_name: STEAMBOX
|
|
class_object_index: 0x502
|
|
raw_code_base_u32: 0xE0
|
|
code_base_minus_one: 0xDF
|
|
conservative_event_count: 34
|
|
events:
|
|
- slot: 0x0a
|
|
event_name_hint: equip
|
|
raw_event_entry_word: 0x0266
|
|
raw_code_offset: 0x00000001
|
|
derived_body_start: 0x00e0
|
|
derived_body_end: 0x0346
|
|
derived_body_length: 614
|
|
repeated_template_status: environmental-event/shared-slot-0x0A/shared-slot-template
|
|
body_sha1: 0c7a45d14c66b5b6d8611f3eea647657e982e8c9
|
|
body_prefix_hex: 5a065c2502535445
|
|
body_suffix_hex: 656374696f6e007a
|
|
- slot: 0x20
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x01f6
|
|
raw_code_offset: 0x00000267
|
|
derived_body_start: 0x0346
|
|
derived_body_end: 0x053c
|
|
derived_body_length: 502
|
|
repeated_template_status: environmental-event/shared-slot-0x20/shared-slot-template
|
|
body_sha1: b42657cfea765abc07c9b0e99020d7c8783f06ef
|
|
body_prefix_hex: 5a045cb501535445
|
|
body_suffix_hex: 737465616d32007a
|
|
- slot: 0x21
|
|
event_name_hint:
|
|
raw_event_entry_word: 0x02a7
|
|
raw_code_offset: 0x0000045d
|
|
derived_body_start: 0x053c
|
|
derived_body_end: 0x07e3
|
|
derived_body_length: 679
|
|
repeated_template_status: environmental-event/shared-slot-0x21/shared-slot-template
|
|
body_sha1: a7cf9924083dbcb16dbb2372a6c4f8ffeec578db
|
|
body_prefix_hex: 5a045c6602535445
|
|
body_suffix_hex: 737465616d32007a
|
|
```
|