Crusader_Decomp/crusader_segment_coverage_ledger.csv
MaddoScientisto 4d3c8cd81b 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.
2026-03-22 23:24:46 +01:00

20 KiB

1SegmentTypeFileOffsetLengthCoverageStatusKnownSubsystemKeyNamedFunctionsBlockersNotesSource
21code0x376000x8400DeepGameplay cursor/input/projectilescursor_update_hover; entity_fire_weapon; projectile_update_tickBroader gameplay subsystem still spans adjacent segmentscrusader_decompilation_notes.md; plan-mid.md
32code0x400000x2B0Nonecrusader_ne_segments.csv
43code0x404000x55ANonecrusader_ne_segments.csv
54code0x40A000x10B1FootholdReset/cache entry pathruntime_cache_reset_sequenceASYLUM.24 and downstream reset callers still need tighter classificationcrusader_decompilation_notes.md; plan-mid.md
65code0x41E000x8D7PartialStartup/display transition prepare/driver lanestartup_display_transition_prepare; startup_display_transition_driverThe 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 unresolvedcrusader_decompilation_notes.md; plan-mid.md
76code0x42C000x75ENonecrusader_ne_segments.csv
87code0x436000x484Nonecrusader_ne_segments.csv
98code0x43C000x1386Nonecrusader_ne_segments.csv
109code0x454000x495Nonecrusader_ne_segments.csv
1110code0x45A000xD92Nonecrusader_ne_segments.csv
1211code0x46E000x5B1Nonecrusader_ne_segments.csv
1312code0x476000x94BNonecrusader_ne_segments.csv
1413code0x482000x1F6CNonecrusader_ne_segments.csv
1514code0x4AA000x526Nonecrusader_ne_segments.csv
1615code0x4B2000x1C68Nonecrusader_ne_segments.csv
1716code0x4D4000x677Nonecrusader_ne_segments.csv
1817code0x4DC000x1A7Nonecrusader_ne_segments.csv
1918code0x4E0000x7E9Nonecrusader_ne_segments.csv
2019code0x4EA000xB4DNonecrusader_ne_segments.csv
2120code0x4F8000x878Nonecrusader_ne_segments.csv
2221code0x502000x4486PartialTimer/event dispatch and entity countingentity_count_by_type_a; input_keyboard_handler copyNeeds broader caller-driven expansioncrusader_decompilation_notes.md; plan-mid.md
2322code0x550000x2BD6Nonecrusader_ne_segments.csv
2423code0x582000x5D6Nonecrusader_ne_segments.csv
2524code0x58A000x6D7Nonecrusader_ne_segments.csv
2625code0x592000x1976Nonecrusader_ne_segments.csv
2726code0x5AE000x4DENonecrusader_ne_segments.csv
2827code0x5B4000x57BNonecrusader_ne_segments.csv
2928code0x5BA000x788Nonecrusader_ne_segments.csv
3029code0x5C4000x190ANonecrusader_ne_segments.csv
3130code0x5E0000x5071Nonecrusader_ne_segments.csv
3231code0x640000x6EENonecrusader_ne_segments.csv
3332code0x648000x56ANonecrusader_ne_segments.csv
3433code0x650000x10D7Nonecrusader_ne_segments.csv
3534code0x666000x253ANonecrusader_ne_segments.csv
3635code0x694000xF67Nonecrusader_ne_segments.csv
3736code0x6A6000x69FNonecrusader_ne_segments.csv
3837code0x6AE000x636Nonecrusader_ne_segments.csv
3938code0x6B6000x2318Nonecrusader_ne_segments.csv
4039code0x6E2000x3416Nonecrusader_ne_segments.csv
4140code0x722000x1E7ANonecrusader_ne_segments.csv
4241code0x746000x28DNonecrusader_ne_segments.csv
4342code0x74A000xC9CNonecrusader_ne_segments.csv
4443code0x75A000x336FPartialGameplay targeting/facing repair clusterentity_set_at_target_update_facing; seg043_func_0090; seg043_func_021cTwo repaired functions remain positional and thunk-heavycrusader_decompilation_notes.md; plan-mid.md
4544code0x794000x7F8Nonecrusader_ne_segments.csv
4645code0x79E000x200Nonecrusader_ne_segments.csv
4746code0x7A2000x7DCNonecrusader_ne_segments.csv
4847code0x7AC000x9B4Nonecrusader_ne_segments.csv
4948code0x7B8000x63Nonecrusader_ne_segments.csv
5049code0x7BA000x1E3FFootholdWatch/camera controller object lanewatch_entity_controller_create_global; watch_entity_controller_create; watch_entity_controller_dispatch_if_present; entity_set_watch_ptrExact 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 phasecrusader_decompilation_notes.md; plan-mid.md
5150code0x7DE000x9C8Nonecrusader_ne_segments.csv
5251code0x7EA000x1D02Nonecrusader_ne_segments.csv
5352code0x80A000x1D65Nonecrusader_ne_segments.csv
5453code0x82C000x10DENonecrusader_ne_segments.csv
5554code0x840000x5NoneShort stub-sized segmentcrusader_ne_segments.csv
5655code0x842000xA06Nonecrusader_ne_segments.csv
5756code0x850000x706Nonecrusader_ne_segments.csv
5857code0x85A000x79BNonecrusader_ne_segments.csv
5958code0x864000x44BNonecrusader_ne_segments.csv
6059code0x86A000x4288Nonecrusader_ne_segments.csv
6160code0x8B6000x231Nonecrusader_ne_segments.csv
6261code0x8BA000x1B6CFootholdEntity/timer dispatch guard and period helperstimer_entity_enable_wrapper; entity_check_flag_0x4000; entity_set_event_type_checked; entity_set_update_period_and_rescheduleSeveral wrappers still resolve into thunk-heavy paths and need caller-side semantic namingcrusader_decompilation_notes.md
6362code0x8DA000x85FFootholdEntry word-list lifecycle helpersentity_word_list_destroyCaller-side object-role mapping still needed for strong behavioral namescrusader_decompilation_notes.md
6463code0x8E4000x519Nonecrusader_ne_segments.csv
6564code0x8EA000x3B1FootholdGlobal one-shot gate/dispatch controlFUN_0008_eb43; FUN_0008_ebe7; FUN_0008_eac8; FUN_0008_ec23Subsystem identity of the gate path remains unresolved; names intentionally conservativecrusader_decompilation_notes.md
6665code0x8F0000x5BDNonecrusader_ne_segments.csv
6766code0x8F8000x4A9Nonecrusader_ne_segments.csv
6867code0x8FE000x839Nonecrusader_ne_segments.csv
6968code0x908000xB4ANonecrusader_ne_segments.csv
7069code0x918000x2A0Nonecrusader_ne_segments.csv
7170code0x91C000xF24FootholdFile-handle allocation/open wrappersfile_handle_alloc_init_and_open; file_handle_open_with_modeExact DOS open/create flags and mode semantics still need caller-side argument decodingcrusader_decompilation_notes.md
7271code0x92E000x6C2Nonecrusader_ne_segments.csv
7372code0x936000xCA1Nonecrusader_ne_segments.csv
7473code0x946000x9AANonecrusader_ne_segments.csv
7574code0x952000x337Nonecrusader_ne_segments.csv
7675code0x956000x1428Nonecrusader_ne_segments.csv
7776code0x96E000x627FootholdVGA palette read/write/free helpersvga_palette_write; vga_palette_read; palette_free_if_setNeed caller-side analysis to classify higher-level palette transaction semanticscrusader_decompilation_notes.md
7877code0x976000x616FootholdPalette buffer clone/metadata setuppalette_buffer_alloc_copy_from_sourceNeed caller-side analysis to separate generic palette clone use from callback-specific stagingcrusader_decompilation_notes.md
7978code0x97E000x634Nonecrusader_ne_segments.csv
8079code0x986000x421Nonecrusader_ne_segments.csv
8180code0x98C000xF27FootholdConditional render/callback dispatch and surface releaseentity_conditional_render_dispatch; surface_release_internal; surface_release_and_maybe_free0x4588 callback object still lacks a concrete subsystem namecrusader_decompilation_notes.md
8281code0x99E000x320Nonecrusader_ne_segments.csv
8382code0x9A2000x1C8APartialAllocator head-table allocation and phase finalizeallocator_try_alloc_from_head_table; allocator_phase_finalize_pass; allocator_head_try_alloc_block; allocator_head_free_block; allocator_head_finalize_sweep0x4588 callback object subsystem identity still unresolvedcrusader_decompilation_notes.md; plan-mid.md
8483code0x9C4000x31EFootholdAllocator node/header helpersevent_queue_push; packed size/header helpersMostly structural helper layercrusader_decompilation_notes.md
8584code0x9C8000x1478Nonecrusader_ne_segments.csv
8685code0x9E0000x404FootholdAllocator work token helperstoken reserve/release and commit helpersNeeds clearer subsystem namingcrusader_decompilation_notes.md
8786code0x9E6000x40F6Nonecrusader_ne_segments.csv
8887code0xA28000x50CNonecrusader_ne_segments.csv
8988code0xA2E000x523Nonecrusader_ne_segments.csv
9089code0xA34000x373Nonecrusader_ne_segments.csv
9190code0xA38000x9C6Nonecrusader_ne_segments.csv
9291code0xA44000x6FAPartialRNG, fatal-report helpers, and runtime callback/video-state lifecyclefatal_error_report_fmt_a_and_exit; fatal_error_report_buffered_fmt_and_exit; fatal_error_report_fmt_c_and_exit; rng_set_seed; rng_next_modulo; runtime_callback_object_init_once; runtime_callback_object_teardown_once; video_bios_state_snapshot; video_mode_set_and_record_stateExact fatal-report template text and callback object subsystem identity still need tighter recoverycrusader_decompilation_notes.md; plan-mid.md
9392code0xA4E000x59ENonecrusader_ne_segments.csv
9493code0xA56000x4F1Nonecrusader_ne_segments.csv
9594code0xA5E000x606PartialTracked handle table controltracked_entity_handle_table_init; tracked_entity_handle_table_shutdown; tracked_entity_handle_table_clear_and_dispatchDownstream dispatch tail still unresolvedcrusader_decompilation_notes.md
9695code0xA66000xC9FPartialCache manager init/reset and 0x4588 runtime callback lifecyclecache_init; cache_reset_runtime_state; cache_shutdown; entity_cleanup_resources_and_dispatchConcrete 0x4588 callback object name and field-level role mapping remain unresolvedcrusader_decompilation_notes.md; plan-mid.md
9796code0xA76000x582Nonecrusader_ne_segments.csv
9897code0xA7E000xDB0Nonecrusader_ne_segments.csv
9998code0xA8E000x68ANonecrusader_ne_segments.csv
10099code0xA96000x355NonePossible raw 000e animation overlap mapping not yet normalizedcrusader_ne_segments.csv
101100code0xA9C000x697NonePossible raw 000e animation overlap mapping not yet normalizedcrusader_ne_segments.csv
102101code0xAA4000x17BCNonePossible raw 000e animation overlap mapping not yet normalizedcrusader_ne_segments.csv
103102code0xAC0000x73CNonePossible raw 000e parser mapping not yet normalizedcrusader_ne_segments.csv
104103code0xACA000x16CDNonePossible raw 000e parser mapping not yet normalizedcrusader_ne_segments.csv
105104code0xAE6000x41BNonecrusader_ne_segments.csv
106105code0xAEC000x9F6Nonecrusader_ne_segments.csv
107106code0xAF8000x1795Nonecrusader_ne_segments.csv
108107code0xB14000x40CNonecrusader_ne_segments.csv
109108code0xB1A000x113FFootholdActive sprite/object state lanesprite_object_clear_flag40_if_present; sprite_object_set_flag40_if_presentstartup_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 unresolvedcrusader_decompilation_notes.md; plan-mid.md
110109code0xB2E000x1424NoneHigh-value gap around 000b:2e00 still unresolvedcrusader_ne_segments.csv; crusader_decomp_progress.md
111110code0xB44000x4C4Nonecrusader_ne_segments.csv
112111code0xB4A000x489Nonecrusader_ne_segments.csv
113112code0xB50000x1670Nonecrusader_ne_segments.csv
114113code0xB6A000x4A6Nonecrusader_ne_segments.csv
115114code0xB70000xDF1Nonecrusader_ne_segments.csv
116115code0xB80000x978Nonecrusader_ne_segments.csv
117116code0xB8C000xAA3Nonecrusader_ne_segments.csv
118117code0xB9A000x3157Nonecrusader_ne_segments.csv
119118code0xBD4000xA0ANonecrusader_ne_segments.csv
120119code0xBE2000x419Nonecrusader_ne_segments.csv
121120code0xBE8000x9AENonecrusader_ne_segments.csv
122121code0xBF4000xACENonecrusader_ne_segments.csv
123122code0xC02000x3149Nonecrusader_ne_segments.csv
124123code0xC3C000xE6DNonecrusader_ne_segments.csv
125124code0xC4E000x3DDNonecrusader_ne_segments.csv
126125code0xC54000x1A3ENonecrusader_ne_segments.csv
127126code0xC74000x402APartialTransition-entry wrappers, pre-entry setup/script, and exit controlFUN_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_834aThe 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:db68crusader_decompilation_notes.md; plan-mid.md
128127code0xCC6000x8F6PartialPalette fade controller and transition-state gatepalette_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_stepExact 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 clearcrusader_decompilation_notes.md; plan-mid.md
129128code0xCD2000x5D0Nonecrusader_ne_segments.csv
130129code0xCDA000xD77Nonecrusader_ne_segments.csv
131130code0xCEA000x47DNonecrusader_ne_segments.csv
132131code0xCF0000x44DNonecrusader_ne_segments.csv
133132code0xCF6000x3EB8Nonecrusader_ne_segments.csv
134133code0xD38000x215ANonecrusader_ne_segments.csv
135134code0xD60000xEF0FootholdVM runtime bootstrap and post-init seedingentity_vm_runtime_init_from_path_if_configured; entity_vm_referent_registry_init; entity_vm_runtime_release_slots; entity_vm_runtime_init_slotsConfigured path/global at 0x65a and the exact external file format behind the 0x6611 runtime owner table still need tighter classificationplan-mid.md; docs/raw-0008-000c.md
136135code0xD70000x3B7FootholdVM runtime owner-resource helperentity_vm_runtime_owner_resource_create; entity_vm_runtime_owner_resource_destroyEmbedded file-backed helper class and 0x0d-stride slot-table population semantics still need callee-side recoveryplan-mid.md; docs/raw-0008-000c.md
137136code0xD76000x5BDPartialShared active dispatch-entry owner and hold-state controlleractive_dispatch_entry_mark_enabled; active_dispatch_entry_mark_disabled; active_dispatch_entry_create_defaultThe 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 unresolvedcrusader_decompilation_notes.md; plan-mid.md
138137code0xD7E000xFBBPartialPalette and dispatch-entry emission helper familyentity_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_activeHigher-level event/script meaning is still unresolved, especially the paired 0x68bf object and the exact role of the 0004:5ad4-5b6e caller sequencecrusader_decompilation_notes.md; plan-mid.md
139138code0xD92000x32E4PartialEntity cleanup/finalize with callback, watch-controller release, and dispatch-entry palette emissionentity_cleanup_resources_and_dispatch; sprite_redraw_global_if_active; FUN_000d_938cConcrete 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 helperscrusader_decompilation_notes.md; plan-mid.md
140139code0xDCC000x984Nonecrusader_ne_segments.csv
141140code0xDD8000xC6FNonecrusader_ne_segments.csv
142141code0xDE6000x2BNoneShort stub-sized segmentcrusader_ne_segments.csv
143142code0xDE8000x4371Nonecrusader_ne_segments.csv
144143code0xE34000x6F5Nonecrusader_ne_segments.csv
145144data0xE3C000x8DBCNoneLarge data segment not yet classifiedcrusader_ne_segments.csv
146145data0x00x0NoneZero-length data segment placeholdercrusader_ne_segments.csv