- Created `crusader_segment_coverage_ledger.csv` to track segment coverage status, types, and known functions. - Introduced `plan-mid.md` as a mid-project tracker outlining progress, objectives, and implementation priorities for the decompilation effort. - Added scripts in `pyghidra_plans` to assist with instruction window dumping and reference inspection for the object at `0x4588`. - Implemented functionality to scan for instruction uses of specific targets related to the decompilation project.
13 KiB
13 KiB
| 1 | Segment | Type | FileOffset | Length | CoverageStatus | KnownSubsystem | KeyNamedFunctions | Blockers | NotesSource |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 1 | code | 0x37600 | 0x8400 | Deep | Gameplay cursor/input/projectiles | cursor_update_hover; entity_fire_weapon; projectile_update_tick | Broader gameplay subsystem still spans adjacent segments | crusader_decompilation_notes.md; plan-mid.md |
| 3 | 2 | code | 0x40000 | 0x2B0 | None | crusader_ne_segments.csv | |||
| 4 | 3 | code | 0x40400 | 0x55A | None | crusader_ne_segments.csv | |||
| 5 | 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 |
| 6 | 5 | code | 0x41E00 | 0x8D7 | None | crusader_ne_segments.csv | |||
| 7 | 6 | code | 0x42C00 | 0x75E | None | crusader_ne_segments.csv | |||
| 8 | 7 | code | 0x43600 | 0x484 | None | crusader_ne_segments.csv | |||
| 9 | 8 | code | 0x43C00 | 0x1386 | None | crusader_ne_segments.csv | |||
| 10 | 9 | code | 0x45400 | 0x495 | None | crusader_ne_segments.csv | |||
| 11 | 10 | code | 0x45A00 | 0xD92 | None | crusader_ne_segments.csv | |||
| 12 | 11 | code | 0x46E00 | 0x5B1 | None | crusader_ne_segments.csv | |||
| 13 | 12 | code | 0x47600 | 0x94B | None | crusader_ne_segments.csv | |||
| 14 | 13 | code | 0x48200 | 0x1F6C | None | crusader_ne_segments.csv | |||
| 15 | 14 | code | 0x4AA00 | 0x526 | None | crusader_ne_segments.csv | |||
| 16 | 15 | code | 0x4B200 | 0x1C68 | None | crusader_ne_segments.csv | |||
| 17 | 16 | code | 0x4D400 | 0x677 | None | crusader_ne_segments.csv | |||
| 18 | 17 | code | 0x4DC00 | 0x1A7 | None | crusader_ne_segments.csv | |||
| 19 | 18 | code | 0x4E000 | 0x7E9 | None | crusader_ne_segments.csv | |||
| 20 | 19 | code | 0x4EA00 | 0xB4D | None | crusader_ne_segments.csv | |||
| 21 | 20 | code | 0x4F800 | 0x878 | None | crusader_ne_segments.csv | |||
| 22 | 21 | code | 0x50200 | 0x4486 | Partial | Timer/event dispatch and entity counting | entity_count_by_type_a; input_keyboard_handler copy | Needs broader caller-driven expansion | crusader_decompilation_notes.md; plan-mid.md |
| 23 | 22 | code | 0x55000 | 0x2BD6 | None | crusader_ne_segments.csv | |||
| 24 | 23 | code | 0x58200 | 0x5D6 | None | crusader_ne_segments.csv | |||
| 25 | 24 | code | 0x58A00 | 0x6D7 | None | crusader_ne_segments.csv | |||
| 26 | 25 | code | 0x59200 | 0x1976 | None | crusader_ne_segments.csv | |||
| 27 | 26 | code | 0x5AE00 | 0x4DE | None | crusader_ne_segments.csv | |||
| 28 | 27 | code | 0x5B400 | 0x57B | None | crusader_ne_segments.csv | |||
| 29 | 28 | code | 0x5BA00 | 0x788 | None | crusader_ne_segments.csv | |||
| 30 | 29 | code | 0x5C400 | 0x190A | None | crusader_ne_segments.csv | |||
| 31 | 30 | code | 0x5E000 | 0x5071 | None | crusader_ne_segments.csv | |||
| 32 | 31 | code | 0x64000 | 0x6EE | None | crusader_ne_segments.csv | |||
| 33 | 32 | code | 0x64800 | 0x56A | None | crusader_ne_segments.csv | |||
| 34 | 33 | code | 0x65000 | 0x10D7 | None | crusader_ne_segments.csv | |||
| 35 | 34 | code | 0x66600 | 0x253A | None | crusader_ne_segments.csv | |||
| 36 | 35 | code | 0x69400 | 0xF67 | None | crusader_ne_segments.csv | |||
| 37 | 36 | code | 0x6A600 | 0x69F | None | crusader_ne_segments.csv | |||
| 38 | 37 | code | 0x6AE00 | 0x636 | None | crusader_ne_segments.csv | |||
| 39 | 38 | code | 0x6B600 | 0x2318 | None | crusader_ne_segments.csv | |||
| 40 | 39 | code | 0x6E200 | 0x3416 | None | crusader_ne_segments.csv | |||
| 41 | 40 | code | 0x72200 | 0x1E7A | None | crusader_ne_segments.csv | |||
| 42 | 41 | code | 0x74600 | 0x28D | None | crusader_ne_segments.csv | |||
| 43 | 42 | code | 0x74A00 | 0xC9C | None | crusader_ne_segments.csv | |||
| 44 | 43 | code | 0x75A00 | 0x336F | Partial | Gameplay targeting/facing repair cluster | entity_set_at_target_update_facing; seg043_func_0090; seg043_func_021c | Two repaired functions remain positional and thunk-heavy | crusader_decompilation_notes.md; plan-mid.md |
| 45 | 44 | code | 0x79400 | 0x7F8 | None | crusader_ne_segments.csv | |||
| 46 | 45 | code | 0x79E00 | 0x200 | None | crusader_ne_segments.csv | |||
| 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 | crusader_ne_segments.csv | |||
| 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 | |||
| 54 | 53 | code | 0x82C00 | 0x10DE | None | crusader_ne_segments.csv | |||
| 55 | 54 | code | 0x84000 | 0x5 | None | Short stub-sized segment | crusader_ne_segments.csv | ||
| 56 | 55 | code | 0x84200 | 0xA06 | None | crusader_ne_segments.csv | |||
| 57 | 56 | code | 0x85000 | 0x706 | None | crusader_ne_segments.csv | |||
| 58 | 57 | code | 0x85A00 | 0x79B | None | crusader_ne_segments.csv | |||
| 59 | 58 | code | 0x86400 | 0x44B | None | crusader_ne_segments.csv | |||
| 60 | 59 | code | 0x86A00 | 0x4288 | None | crusader_ne_segments.csv | |||
| 61 | 60 | code | 0x8B600 | 0x231 | None | crusader_ne_segments.csv | |||
| 62 | 61 | code | 0x8BA00 | 0x1B6C | None | crusader_ne_segments.csv | |||
| 63 | 62 | code | 0x8DA00 | 0x85F | None | crusader_ne_segments.csv | |||
| 64 | 63 | code | 0x8E400 | 0x519 | None | crusader_ne_segments.csv | |||
| 65 | 64 | code | 0x8EA00 | 0x3B1 | None | crusader_ne_segments.csv | |||
| 66 | 65 | code | 0x8F000 | 0x5BD | None | crusader_ne_segments.csv | |||
| 67 | 66 | code | 0x8F800 | 0x4A9 | None | crusader_ne_segments.csv | |||
| 68 | 67 | code | 0x8FE00 | 0x839 | None | crusader_ne_segments.csv | |||
| 69 | 68 | code | 0x90800 | 0xB4A | None | crusader_ne_segments.csv | |||
| 70 | 69 | code | 0x91800 | 0x2A0 | None | crusader_ne_segments.csv | |||
| 71 | 70 | code | 0x91C00 | 0xF24 | None | crusader_ne_segments.csv | |||
| 72 | 71 | code | 0x92E00 | 0x6C2 | None | crusader_ne_segments.csv | |||
| 73 | 72 | code | 0x93600 | 0xCA1 | None | crusader_ne_segments.csv | |||
| 74 | 73 | code | 0x94600 | 0x9AA | None | crusader_ne_segments.csv | |||
| 75 | 74 | code | 0x95200 | 0x337 | None | crusader_ne_segments.csv | |||
| 76 | 75 | code | 0x95600 | 0x1428 | None | crusader_ne_segments.csv | |||
| 77 | 76 | code | 0x96E00 | 0x627 | None | crusader_ne_segments.csv | |||
| 78 | 77 | code | 0x97600 | 0x616 | None | crusader_ne_segments.csv | |||
| 79 | 78 | code | 0x97E00 | 0x634 | None | crusader_ne_segments.csv | |||
| 80 | 79 | code | 0x98600 | 0x421 | None | crusader_ne_segments.csv | |||
| 81 | 80 | code | 0x98C00 | 0xF27 | Foothold | Conditional render/callback dispatch | entity_conditional_render_dispatch | 0x4588 callback object still lacks a concrete subsystem name | crusader_decompilation_notes.md |
| 82 | 81 | code | 0x99E00 | 0x320 | None | crusader_ne_segments.csv | |||
| 83 | 82 | code | 0x9A200 | 0x1C8A | Partial | Allocator sweep and per-head allocation | allocator_head_try_alloc_block; allocator_head_free_block; public size wrapper | 0x4588 object and finalize path still unresolved | crusader_decompilation_notes.md; plan-mid.md |
| 84 | 83 | code | 0x9C400 | 0x31E | Foothold | Allocator node/header helpers | event_queue_push; packed size/header helpers | Mostly structural helper layer | crusader_decompilation_notes.md |
| 85 | 84 | code | 0x9C800 | 0x1478 | None | crusader_ne_segments.csv | |||
| 86 | 85 | code | 0x9E000 | 0x404 | Foothold | Allocator work token helpers | token reserve/release and commit helpers | Needs clearer subsystem naming | crusader_decompilation_notes.md |
| 87 | 86 | code | 0x9E600 | 0x40F6 | None | crusader_ne_segments.csv | |||
| 88 | 87 | code | 0xA2800 | 0x50C | None | crusader_ne_segments.csv | |||
| 89 | 88 | code | 0xA2E00 | 0x523 | None | crusader_ne_segments.csv | |||
| 90 | 89 | code | 0xA3400 | 0x373 | None | crusader_ne_segments.csv | |||
| 91 | 90 | code | 0xA3800 | 0x9C6 | None | crusader_ne_segments.csv | |||
| 92 | 91 | code | 0xA4400 | 0x6FA | Partial | Init/context and RNG helpers | seg091_func_00fd; seg091_func_014d; rng_set_seed; rng_next_modulo | 00fd and 014d still positional | crusader_decompilation_notes.md; plan-mid.md |
| 93 | 92 | code | 0xA4E00 | 0x59E | None | crusader_ne_segments.csv | |||
| 94 | 93 | code | 0xA5600 | 0x4F1 | None | crusader_ne_segments.csv | |||
| 95 | 94 | code | 0xA5E00 | 0x606 | Partial | Tracked handle table control | tracked_entity_handle_table_init; tracked_entity_handle_table_shutdown; tracked_entity_handle_table_clear_and_dispatch | Downstream dispatch tail still unresolved | crusader_decompilation_notes.md |
| 96 | 95 | code | 0xA6600 | 0xC9F | Partial | Cache manager init/reset and 0x4588 runtime callback lifecycle | cache_init; cache_reset_runtime_state; cache_shutdown | Concrete 0x4588 callback object name and nearby no-function callers remain unresolved | crusader_decompilation_notes.md; plan-mid.md |
| 97 | 96 | code | 0xA7600 | 0x582 | None | crusader_ne_segments.csv | |||
| 98 | 97 | code | 0xA7E00 | 0xDB0 | None | crusader_ne_segments.csv | |||
| 99 | 98 | code | 0xA8E00 | 0x68A | None | crusader_ne_segments.csv | |||
| 100 | 99 | code | 0xA9600 | 0x355 | None | Possible raw 000e animation overlap mapping not yet normalized | crusader_ne_segments.csv | ||
| 101 | 100 | code | 0xA9C00 | 0x697 | None | Possible raw 000e animation overlap mapping not yet normalized | crusader_ne_segments.csv | ||
| 102 | 101 | code | 0xAA400 | 0x17BC | None | Possible raw 000e animation overlap mapping not yet normalized | crusader_ne_segments.csv | ||
| 103 | 102 | code | 0xAC000 | 0x73C | None | Possible raw 000e parser mapping not yet normalized | crusader_ne_segments.csv | ||
| 104 | 103 | code | 0xACA00 | 0x16CD | None | Possible raw 000e parser mapping not yet normalized | crusader_ne_segments.csv | ||
| 105 | 104 | code | 0xAE600 | 0x41B | 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 | crusader_ne_segments.csv | |||
| 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 | |||
| 113 | 112 | code | 0xB5000 | 0x1670 | None | crusader_ne_segments.csv | |||
| 114 | 113 | code | 0xB6A00 | 0x4A6 | None | crusader_ne_segments.csv | |||
| 115 | 114 | code | 0xB7000 | 0xDF1 | None | crusader_ne_segments.csv | |||
| 116 | 115 | code | 0xB8000 | 0x978 | None | crusader_ne_segments.csv | |||
| 117 | 116 | code | 0xB8C00 | 0xAA3 | None | crusader_ne_segments.csv | |||
| 118 | 117 | code | 0xB9A00 | 0x3157 | None | crusader_ne_segments.csv | |||
| 119 | 118 | code | 0xBD400 | 0xA0A | None | crusader_ne_segments.csv | |||
| 120 | 119 | code | 0xBE200 | 0x419 | None | crusader_ne_segments.csv | |||
| 121 | 120 | code | 0xBE800 | 0x9AE | None | crusader_ne_segments.csv | |||
| 122 | 121 | code | 0xBF400 | 0xACE | None | crusader_ne_segments.csv | |||
| 123 | 122 | code | 0xC0200 | 0x3149 | 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 | None | crusader_ne_segments.csv | |||
| 128 | 127 | code | 0xCC600 | 0x8F6 | None | crusader_ne_segments.csv | |||
| 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 | |||
| 132 | 131 | code | 0xCF000 | 0x44D | None | crusader_ne_segments.csv | |||
| 133 | 132 | code | 0xCF600 | 0x3EB8 | None | crusader_ne_segments.csv | |||
| 134 | 133 | code | 0xD3800 | 0x215A | None | crusader_ne_segments.csv | |||
| 135 | 134 | code | 0xD6000 | 0xEF0 | None | crusader_ne_segments.csv | |||
| 136 | 135 | code | 0xD7000 | 0x3B7 | None | crusader_ne_segments.csv | |||
| 137 | 136 | code | 0xD7600 | 0x5BD | None | crusader_ne_segments.csv | |||
| 138 | 137 | code | 0xD7E00 | 0xFBB | None | crusader_ne_segments.csv | |||
| 139 | 138 | code | 0xD9200 | 0x32E4 | None | crusader_ne_segments.csv | |||
| 140 | 139 | code | 0xDCC00 | 0x984 | None | crusader_ne_segments.csv | |||
| 141 | 140 | code | 0xDD800 | 0xC6F | None | crusader_ne_segments.csv | |||
| 142 | 141 | code | 0xDE600 | 0x2B | None | Short stub-sized segment | crusader_ne_segments.csv | ||
| 143 | 142 | code | 0xDE800 | 0x4371 | None | crusader_ne_segments.csv | |||
| 144 | 143 | code | 0xE3400 | 0x6F5 | None | crusader_ne_segments.csv | |||
| 145 | 144 | data | 0xE3C00 | 0x8DBC | None | Large data segment not yet classified | crusader_ne_segments.csv | ||
| 146 | 145 | data | 0x0 | 0x0 | None | Zero-length data segment placeholder | crusader_ne_segments.csv |