Crusader_Decomp/crusader_segment_coverage_ledger.csv
2026-04-12 14:45:08 +02:00

26 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
76code0x42C000x75EFootholdGameplay-side masked materializer and local state/value selector laneentity_vm_context_try_create_mask_0008_slot30_with_offset; entity_vm_context_try_create_mask_0010_slot08_with_offset_if_readyOuter callers for the renamed seg006 helpers are still unresolved, and the higher-level gameplay subsystem owning the local state-selector and adjacent class-linked value family still needs caller-side recoveryplan-mid.md; docs/raw-0008-000c.md
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
3029code0x5C4000x190APartialArea-search collision move and step-aware sweep helper laneAreaSearch_CollideMove; AreaSearch_SweepShapeBetweenPoints; AreaSearch_SweepItemToPointWithStepUp; AreaSearch_SweepShapeBetweenPointsWithStepUpCurrent direct callers are still all movement/collision-side and the remaining gap is the earlier policy layer deciding when those paths instantiate the 0x236 queue or whether any non-collision lane feeds itplan-mid.md; docs/ne-hole-filling-priorities.md; docs/raw-0008-000c.md
3130code0x5E0000x5071Nonecrusader_ne_segments.csv
3231code0x640000x6EEPartialStorageDataProcess queue create/run/release helpersStorageDataProcess_Create; StorageDataProcess_Run; StorageDataProcess_Release; StorageDataProcess_RunAndTerminateProcs; storage_process_ref_list_create; storage_process_ref_list_append; storage_process_ref_list_terminate_item_matches; storage_process_ref_list_destroyStill needs caller-side recovery beyond the verified collision producer and any stronger subsystem naming than the local hit/got-hit storage queueplan-mid.md; docs/ne-hole-filling-priorities.md; docs/raw-0008-000c.md
3332code0x648000x56AFootholdItem type / typename.dat loader helpersItemType_Init; ItemType_LoadTypeflagDat; ItemType_Load_TypenameDat; ItemType_GetTypenameRecordPtrAtIndex; ItemType_FindTypenameRecordIndex; Item_GetShapeFamilyOfShapeThe segment is now clearly an item-type helper lane. The remaining gap is not local contract recovery but broader caller-side integration and any later higher-level item-family helpers that still sit outside this small loader-focused window.plan-mid.md; docs/function-knowledge-roadmap.md
3433code0x650000x10D7PartialNPC action / stand / pace / surrender / guard / loiter AI processesNPCActionProcess_Create; NPCActionProcess_RunNoop; NPCActionProcess_Destroy; NPCActionProcess_VtableSlot10Noop; StandProcess_Run; StandProcess_Destroy; PaceProcess_CreateProcess; PaceProcess_Run; PaceProcess_Destroy; SurrenderProcess_CreateProcess; SurrenderProcess_Destroy; SurrenderProcess_Run; GuardProcess_CreateProcess; GuardProcess_Run; GuardProcess_Destroy; LoiterProcess_CreateProcess; LoiterProcess_Run; LoiterProcess_Destroy; LoiterProcess_VtableSlot10DispatchByShapeIfAlive; NPC_DoRandomIdleAnimTwiceIfNotBusyThe live AI-process lane now has owner-first Remorse class lifting in addition to run ownership, slot-1 destructor ownership, and the local slot-10 helper split. The remaining uncertainty in this immediate window is mostly higher-level behavior-policy meaning and whether the family is ready for a safe provisional datatype, especially what the slot-10/slot-11 transitions represent semantically beyond the now-named local function objects.plan-mid.md; docs/function-knowledge-roadmap.md; docs/npc-action-process-class-layout.md
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
5049code0x7BA000x1E3FPartialWatch/camera controller object lanewatch_entity_controller_create_global; watch_entity_controller_create; watch_entity_controller_dispatch_if_present; entity_set_watch_ptrThe 0x2bd8 lane is now a real shared watch/controller object with verified vtable +0x2c/+0x30 dispatch, and the startup/display handoff bodies consistently raise or clear the borrowed active-dispatch hold byte around that controller phase; the exact controller-vs-watched-entity ownership label is still opencrusader_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
7170code0x91C000xF24PartialDOS file-handle lifecycle and owner-resource twin file-family loadersfile_handle_alloc_init_and_open; file_handle_open_with_modeExact DOS open/create flags and the per-family record schema behind the twin `0009:67b6` / `0009:6916` loader passes still need caller-side decodingcrusader_decompilation_notes.md; docs/raw-000a-000d.md; docs/raw-0008-000c.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
9190code0xA38000x9C6PartialItem movement legality, collision-info, and directional cache-offset helpersItem_LegalMoveToPoint; Item_LegalMoveToPointWithCollisionInfo; ItemCache_PushAndPopToDirectionalOffsetStill needs the surrounding item-move dispatcher/flags policy and stronger linkage to the upstream queue-instantiation layerplan-mid.md; docs/ne-hole-filling-priorities.md; docs/raw-0008-000c.md
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
109108code0xB1A000x113FPartialActive sprite/object state lanesprite_object_clear_flag40_if_present; sprite_object_set_flag40_if_present; sprite_object_push_state_word; sprite_object_pop_state_wordThe 0x4f38 lane is now a verified bounded sprite/object state-word stack at +0x186/+0x196 with a separate local bit-0x40 contract at +0x32. It is reused across startup/display and later UI flows, and it is now clearly separated from both the validated seg005 caller object and the shared active-dispatch hold byte at 0x6828+0x40; the higher-level sprite/object meaning and any link to 0x4588 remain 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
123122code0xC02000x3149PartialMain menu shell plus options-panel and options-menu helpersMainMenu_Destroy; MainMenu_DrawCornerDecorations; MainMenu_HandleButtonClick; MainMenu_HandleKey; MainMenu_ActivateSelection; MainMenuOptionsPanel_Create; MainMenuOptionButtonGump_Create; MainMenuOptionButtonGump_HandlePointerEvent; MainMenuOptionButtonGump_SelectPeer; MainMenuOptionButtonGump_Draw; MainMenuOptionsPanelButtonGump_Create; MainMenuOptionsPanelButtonGump_DrawLabel; MainMenuOptionsPanelButtonGump_Select; MainMenuOptionsPanelButtonGump_Deselect; MainMenuOptionsMenu_Create; MainMenuOptionsMenu_Destroy; MainMenuOptionsMenu_GetOptionRect; MainMenuOptionsMenu_HandleChildButtonEvent; MainMenuOptionsMenu_HandleKey; MainMenuOptionsMenu_DrawTitle; MainMenuOptionsMenuButtonGump_DrawLabelThe segment now has a broad structural map for the main-menu shell and two adjacent option-oriented families, but several sibling methods and subordinate dialog/menu roles still need caller-side recovery or stronger local-family placementplan-mid.md; docs/function-knowledge-roadmap.md; crusader_decompilation_notes.md
124123code0xC3C000xE6DPartialSavegame UI helper and slot-edit laneSavegameNameField_MapInputChar; SavegameMenu_Destroy; SavegameMenu_HandleKey; SavegameMenu_HandleSlotAction; SavegameSlot_DrawCornerDecorations; SavegameSlotGump_Create; SavegameSlotGump_Destroy; SavegameNameField_HandleKey; SavegameSlot_HandleClick; SavegameSlot_BeginEditOrActivate; SavegameNameField_Draw; SavegameSlot_SelectThe local helper/gump lane is now broadly named; remaining work is higher-level menu semantics rather than anonymous helper cleanup inside this segmentplan-mid.md; docs/function-knowledge-roadmap.md; crusader_decompilation_notes.md
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
129128code0xCD2000x5D0FootholdQuick save/load/exit modal and adjacent compact gump helpersQuickSaveLoadExitGump_Destroy; QuickSaveLoadExitGump_Create; QuickSaveLoadExitGump_HandleChildButtonEvent; QuickSaveLoadExitGump_HandleKey; QuickSaveLoadExitGump_DrawLabel; Gump13f80383_Destroy; Gump13f80383_Draw; Gump13f80383_VtableSlot10Noop; Gump13f80383_VtableSlot11NoopSeveral sibling methods in the compact gump lane are still anonymous or only structurally understood, so this segment is not yet a full dialog-family closureplan-mid.md; docs/function-knowledge-roadmap.md; crusader_decompilation_notes.md
130129code0xCDA000xD77Nonecrusader_ne_segments.csv
131130code0xCEA000x47DNonecrusader_ne_segments.csv
132131code0xCF0000x44DNonecrusader_ne_segments.csv
133132code0xCF6000x3EB8Nonecrusader_ne_segments.csv
134133code0xD38000x215APartialVM masked-context creation, context save/load, and slot-value reload laneentity_vm_context_try_create_masked_for_entity; entity_vm_context_create_from_slot_index; entity_vm_context_save; entity_vm_context_load; entity_vm_slot_load_value_plus_offsetThe outer selector into entity_vm_opcode_sequence_run and the direct caller roles for the `0x0400/0x000a` and `0x0800/0x000b` offset-specialized wrappers remain unresolved, but the generic masked-create hub and persisted slot-plus-offset lane are now stableplan-mid.md; docs/raw-0008-000c.md; docs/raw-000a-000d.md
135134code0xD60000xEF0PartialVM runtime bootstrap, context seeding, and opcode sequencer supportentity_vm_runtime_init_from_path_if_configured; entity_vm_referent_registry_init; entity_vm_runtime_release_slots; entity_vm_runtime_init_slots; entity_vm_opcode_sequence_runThe upstream selector path into entity_vm_opcode_sequence_run and the exact configured owner-file naming at 0x65a still need caller-side recovery, but the runtime bootstrap, persisted slot-plus-offset lane, and sequencer entry/exit contract are now stable enough for partial coverageplan-mid.md; docs/raw-0008-000c.md; docs/raw-000a-000d.md
136135code0xD70000x3B7PartialVM runtime owner-resource helper and paired external file-family loaderentity_vm_runtime_owner_resource_create; entity_vm_runtime_owner_resource_destroyThe helper now has two parallel file-family loops at 0009:67b6 and 0009:6916 feeding separate buffers, but the exact per-family record schema and higher-level resource names are still unresolvedplan-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