Refactor Ghidra instructions, add new binary files, and enhance decompilation notes

- Updated Ghidra instructions to emphasize keeping analysis batches small.
- Added new binary files: `db.104.gbf`, `db.105.gbf`, and `db.27.gbf`.
- Expanded decompilation notes for `cheat_code_check`, detailing its internal workings and verified cheat actions.
- Revised segment coverage ledger to reflect new findings and promote segments from `Foothold` to `Partial`.
- Enhanced `plan-mid.md` with updated estimates and focus areas for ongoing analysis.
This commit is contained in:
MaddoScientisto 2026-03-21 21:43:33 +01:00
commit 3d4c4933ec
7 changed files with 167 additions and 26 deletions

View file

@ -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","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"
"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","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"
"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","Foothold","Runtime-entry wrappers and pre-entry state prep","FUN_000c_7412; FUN_000c_c890; FUN_000c_c9f4; thunk_callf_0000_ffff_000c_827d","Broader seg126 state-machine/helper meanings remain open, but this lane now clearly feeds the seg005 startup/display transition","crusader_decompilation_notes.md; plan-mid.md"
"127","code","0xCC600","0x8F6","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"
"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"

1 Segment Type FileOffset Length CoverageStatus KnownSubsystem KeyNamedFunctions Blockers NotesSource
47 46 code 0x7A200 0x7DC None crusader_ne_segments.csv
48 47 code 0x7AC00 0x9B4 None crusader_ne_segments.csv
49 48 code 0x7B800 0x63 None crusader_ne_segments.csv
50 49 code 0x7BA00 0x1E3F None 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_ne_segments.csv crusader_decompilation_notes.md; plan-mid.md
51 50 code 0x7DE00 0x9C8 None crusader_ne_segments.csv
52 51 code 0x7EA00 0x1D02 None crusader_ne_segments.csv
53 52 code 0x80A00 0x1D65 None crusader_ne_segments.csv
106 105 code 0xAEC00 0x9F6 None crusader_ne_segments.csv
107 106 code 0xAF800 0x1795 None crusader_ne_segments.csv
108 107 code 0xB1400 0x40C None crusader_ne_segments.csv
109 108 code 0xB1A00 0x113F None 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_ne_segments.csv crusader_decompilation_notes.md; plan-mid.md
110 109 code 0xB2E00 0x1424 None High-value gap around 000b:2e00 still unresolved crusader_ne_segments.csv; crusader_decomp_progress.md
111 110 code 0xB4400 0x4C4 None crusader_ne_segments.csv
112 111 code 0xB4A00 0x489 None crusader_ne_segments.csv
124 123 code 0xC3C00 0xE6D None crusader_ne_segments.csv
125 124 code 0xC4E00 0x3DD None crusader_ne_segments.csv
126 125 code 0xC5400 0x1A3E None crusader_ne_segments.csv
127 126 code 0xC7400 0x402A Foothold Partial Runtime-entry wrappers and pre-entry state prep Transition-entry wrappers, pre-entry setup/script, and exit control FUN_000c_7412; FUN_000c_c890; FUN_000c_c9f4; thunk_callf_0000_ffff_000c_827d 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 Broader seg126 state-machine/helper meanings remain open, but this lane now clearly feeds the seg005 startup/display transition 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
128 127 code 0xCC600 0x8F6 None 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_ne_segments.csv crusader_decompilation_notes.md; plan-mid.md
129 128 code 0xCD200 0x5D0 None crusader_ne_segments.csv
130 129 code 0xCDA00 0xD77 None crusader_ne_segments.csv
131 130 code 0xCEA00 0x47D None crusader_ne_segments.csv