Add detailed class event processing and family comparison tools
- 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.
This commit is contained in:
parent
de42fd1ea1
commit
4d3c8cd81b
23 changed files with 15033 additions and 14221 deletions
|
|
@ -3,7 +3,7 @@
|
|||
"2","code","0x40000","0x2B0","None","","","","crusader_ne_segments.csv"
|
||||
"3","code","0x40400","0x55A","None","","","","crusader_ne_segments.csv"
|
||||
"4","code","0x40A00","0x10B1","Foothold","Reset/cache entry path","runtime_cache_reset_sequence","ASYLUM.24 and downstream reset callers still need tighter classification","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"5","code","0x41E00","0x8D7","Foothold","Startup/display orchestration and large runtime handoff","FUN_0004_60c0; FUN_0004_1e00","Recovered bodies now exist, but exact subsystem naming and higher-level transition meaning remain open","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"5","code","0x41E00","0x8D7","Partial","Startup/display transition prepare/driver lane","startup_display_transition_prepare; startup_display_transition_driver","The two main seg005 bodies are now named and tied to caller-side validation through vtable +0x0c, the seg108 0x4f38 sprite/object helper lane, the shared active-dispatch hold byte at 0x6828, the seg049 watch/controller lane at 0x2bd8, and the seg126 follow-up path; the exact higher-level state label is still unresolved","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"6","code","0x42C00","0x75E","None","","","","crusader_ne_segments.csv"
|
||||
"7","code","0x43600","0x484","None","","","","crusader_ne_segments.csv"
|
||||
"8","code","0x43C00","0x1386","None","","","","crusader_ne_segments.csv"
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
"46","code","0x7A200","0x7DC","None","","","","crusader_ne_segments.csv"
|
||||
"47","code","0x7AC00","0x9B4","None","","","","crusader_ne_segments.csv"
|
||||
"48","code","0x7B800","0x63","None","","","","crusader_ne_segments.csv"
|
||||
"49","code","0x7BA00","0x1E3F","Foothold","Watch/camera controller object lane","watch_entity_controller_create_global; watch_entity_controller_create; watch_entity_controller_dispatch_if_present; entity_set_watch_ptr","Exact controller-vs-watched-entity ownership still needs caller-side confirmation, but 0x2bd8 is now clearly a real controller object lane","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"49","code","0x7BA00","0x1E3F","Foothold","Watch/camera controller object lane","watch_entity_controller_create_global; watch_entity_controller_create; watch_entity_controller_dispatch_if_present; entity_set_watch_ptr","Exact controller-vs-watched-entity ownership is still open, but startup_display_transition_driver now gives caller-side confirmation that the shared active-dispatch hold byte is raised before the 0x2bd8 vtable +0x2c dispatch and cleared again immediately after the same watch/controller phase","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"50","code","0x7DE00","0x9C8","None","","","","crusader_ne_segments.csv"
|
||||
"51","code","0x7EA00","0x1D02","None","","","","crusader_ne_segments.csv"
|
||||
"52","code","0x80A00","0x1D65","None","","","","crusader_ne_segments.csv"
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
"105","code","0xAEC00","0x9F6","None","","","","crusader_ne_segments.csv"
|
||||
"106","code","0xAF800","0x1795","None","","","","crusader_ne_segments.csv"
|
||||
"107","code","0xB1400","0x40C","None","","","","crusader_ne_segments.csv"
|
||||
"108","code","0xB1A00","0x113F","Foothold","Active sprite/object state lane","sprite_object_clear_flag40_if_present; sprite_object_set_flag40_if_present","Higher-level meaning of bit 0x40 and its relation to 0x2bd8 and 0x4588 is still unresolved","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"108","code","0xB1A00","0x113F","Foothold","Active sprite/object state lane","sprite_object_clear_flag40_if_present; sprite_object_set_flag40_if_present","startup_display_transition_prepare now confirms repeated seg108 helper use around the shared active-dispatch creation, and the same window shows a bounded local counter/stack at object +0x196/+0x186 rather than reuse of the caller object validated through vtable +0x0c; the local bit 0x40 contract at 0x4f38+0x32 is now separated from the shared active-dispatch owner byte at 0x6828+0x40, but the higher-level meaning of the sprite/object lane and its relation to 0x4588 is still unresolved","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"109","code","0xB2E00","0x1424","None","","","High-value gap around 000b:2e00 still unresolved","crusader_ne_segments.csv; crusader_decomp_progress.md"
|
||||
"110","code","0xB4400","0x4C4","None","","","","crusader_ne_segments.csv"
|
||||
"111","code","0xB4A00","0x489","None","","","","crusader_ne_segments.csv"
|
||||
|
|
@ -124,8 +124,8 @@
|
|||
"123","code","0xC3C00","0xE6D","None","","","","crusader_ne_segments.csv"
|
||||
"124","code","0xC4E00","0x3DD","None","","","","crusader_ne_segments.csv"
|
||||
"125","code","0xC5400","0x1A3E","None","","","","crusader_ne_segments.csv"
|
||||
"126","code","0xC7400","0x402A","Partial","Transition-entry wrappers, pre-entry setup/script, and exit control","FUN_000c_7412; transition_preentry_setup_resources; transition_preentry_release_resources; transition_preentry_run_until_complete_or_abort; transition_preentry_step_script; wait_for_vga_vertical_retrace; thunk_callf_0000_ffff_000c_827d; thunk_callf_0000_ffff_000c_82f9; FUN_000c_834a","The seg126 helper family is structurally recovered and now ties into a paired temporary text-renderer lane at 0x8c5c/0x8c60, an external input/event gate at 0x31a2, and the shared active-dispatch owner at 0x6828 whose +0x40 byte follows that same gate; remaining open work is the exact UI role of the renderer pair, the DS:0x6341 to 0x6828 animation-owner relationship, and the separate oversized overlap rooted at 000c:db68","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"127","code","0xCC600","0x8F6","Partial","Palette fade controller and transition-state gate","palette_fade_begin_full_up; palette_fade_begin_full_down; transition_palette_fade_begin; transition_palette_fade_tick; transition_palette_fade_out_step; transition_palette_fade_in_step","Exact transition states and palette-source owners are still unresolved, but the local fade controller, default fade entry paths, and active/direction state at 0x630a/0x630b are now clear","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"126","code","0xC7400","0x402A","Partial","Transition-entry wrappers, pre-entry setup/script, and exit control","FUN_000c_7412; transition_preentry_setup_resources; transition_preentry_release_resources; transition_preentry_run_until_complete_or_abort; transition_preentry_step_script; wait_for_vga_vertical_retrace; thunk_callf_0000_ffff_000c_827d; thunk_callf_0000_ffff_000c_82f9; FUN_000c_834a","The seg126 helper family is structurally recovered and now ties into a paired temporary text-renderer lane at 0x8c5c/0x8c60, a shared async break/hold depth at 0x31a2 whose outer-loop exit test is visible at 000c:ca11, and the shared active-dispatch owner at 0x6828 whose +0x40 byte is raised immediately after the DS:0x6341 animation ctor path; remaining open work is the exact UI role of the renderer pair, the unresolved script bytes beyond the now-anchored fade controls, and the separate oversized overlap rooted at 000c:db68","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"127","code","0xCC600","0x8F6","Partial","Palette fade controller and transition-state gate","palette_fade_begin_full_up; palette_fade_begin_full_down; transition_palette_fade_begin; transition_palette_fade_tick; transition_palette_fade_out_step; transition_palette_fade_in_step","Exact higher-level transition states and palette-source owners are still unresolved, but the local fade controller, default fade entry paths, active/direction state at 0x630a/0x630b, and the seg126 script-byte selectors 0x5e -> full-down / 0x26 -> full-up (with 0x2a sharing the same post-fade bookkeeping path) are now clear","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"128","code","0xCD200","0x5D0","None","","","","crusader_ne_segments.csv"
|
||||
"129","code","0xCDA00","0xD77","None","","","","crusader_ne_segments.csv"
|
||||
"130","code","0xCEA00","0x47D","None","","","","crusader_ne_segments.csv"
|
||||
|
|
@ -134,9 +134,9 @@
|
|||
"133","code","0xD3800","0x215A","None","","","","crusader_ne_segments.csv"
|
||||
"134","code","0xD6000","0xEF0","Foothold","VM runtime bootstrap and post-init seeding","entity_vm_runtime_init_from_path_if_configured; entity_vm_referent_registry_init; entity_vm_runtime_release_slots; entity_vm_runtime_init_slots","Configured path/global at 0x65a and the exact external file format behind the 0x6611 runtime owner table still need tighter classification","plan-mid.md; docs/raw-0008-000c.md"
|
||||
"135","code","0xD7000","0x3B7","Foothold","VM runtime owner-resource helper","entity_vm_runtime_owner_resource_create; entity_vm_runtime_owner_resource_destroy","Embedded file-backed helper class and 0x0d-stride slot-table population semantics still need callee-side recovery","plan-mid.md; docs/raw-0008-000c.md"
|
||||
"136","code","0xD7600","0x5BD","Foothold","Active dispatch-entry lifecycle helpers","active_dispatch_entry_mark_enabled; active_dispatch_entry_mark_disabled; active_dispatch_entry_create_default","Broader meaning of the active dispatch entry and its relationship to the startup/display lane still needs caller-side confirmation","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"136","code","0xD7600","0x5BD","Partial","Shared active dispatch-entry owner and hold-state controller","active_dispatch_entry_mark_enabled; active_dispatch_entry_mark_disabled; active_dispatch_entry_create_default","The shared active entry is now tied to the seg126 DS:0x6341 transition-animation path and to the shared 0x31a2 break/hold depth; current evidence also separates its borrowed +0x40 presentation hold token from the seg108-local 0x4f38 bit-0x40 lane, but the exact higher-level transition/callback subsystem name is still unresolved","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"137","code","0xD7E00","0xFBB","Partial","Palette and dispatch-entry emission helper family","entity_dispatch_entry_init_runtime_state; entity_dispatch_entry_release_runtime_state; vga_palette_set_all_black; vga_palette_set_all_white; vga_palette_set_all_rgb; dispatch_entry_create_black_palette_state_active; dispatch_entry_create_grayscale_palette_state_active; dispatch_entry_create_solid_palette_state_active","Higher-level event/script meaning is still unresolved, especially the paired 0x68bf object and the exact role of the 0004:5ad4-5b6e caller sequence","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"138","code","0xD9200","0x32E4","Foothold","Entity cleanup/finalize with callback and dispatch-entry palette emission","entity_cleanup_resources_and_dispatch; sprite_redraw_global_if_active","Concrete callback-object subsystem naming is still unresolved; FUN_000d_938c is now verified as a caller-side dispatch-entry/palette emission helper but remains intentionally unnamed","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"138","code","0xD9200","0x32E4","Partial","Entity cleanup/finalize with callback, watch-controller release, and dispatch-entry palette emission","entity_cleanup_resources_and_dispatch; sprite_redraw_global_if_active; FUN_000d_938c","Concrete callback-object subsystem naming is still unresolved, but this lane now has verified caller-side control of watch/controller state at 0x2bd8, uses the shared active-dispatch byte +0x40 as a borrowed presentation hold token rather than a local owner install, and emits two distinct 0x4588 payload pairs (entity +0x12d/+0x12f and +0x74f/+0x751) in addition to the palette-emission helpers","crusader_decompilation_notes.md; plan-mid.md"
|
||||
"139","code","0xDCC00","0x984","None","","","","crusader_ne_segments.csv"
|
||||
"140","code","0xDD800","0xC6F","None","","","","crusader_ne_segments.csv"
|
||||
"141","code","0xDE600","0x2B","None","","","Short stub-sized segment","crusader_ne_segments.csv"
|
||||
|
|
|
|||
|
Loading…
Add table
Add a link
Reference in a new issue