route map1_01a -> map2_02d; gate offsets 0xe8, 0xea; expected selection index range 0..11; proofFound False; promotion status blocked
Mapping the gate offsets through known context+0xa8 base candidates weakens the party-slot-base path: for party slots, 0xe8/0xea land on later character MP/stat bytes such as Rinshan and Smashu MP fields, not on documented selector-index bytes. Since opcode 0x11 expects a branch-state slot index in the 0..11 range, those stat-byte mappings are not promotion evidence. Loader-aware save/runtime mapping also matters here: 0x004576d8+0xe8/0xea falls into the second loaded save block after the six-byte runtime gap, so those bytes map to save offsets 0x00e2/0x00e4 rather than linear offsets 0x00e8/0x00ea. The viable sources remain an unresolved global/save-runtime buffer or object pointer table mode, so control-flow proof is still blocked.
save-runtime-gate-byte-route-sampleparty-slot-branch-state-indexruntime-pointer-mode-proofcontrol-path-gate-base-proofout/save_selector_gate_offset_sources.json: current gate offsets and inherited/runtime gate-source classificationout/save_selector_selection_buffer_bases.json: candidate context+0xa8 base modes and static address reference checkstools/parse_savedata.py: save-block and field-offset schema used for loader-aware byte classification| base | slot | gate | runtime address | save block | save offset | known save field | direct refs | classification |
|---|---|---|---|---|---|---|---|---|
| global selection buffer | - | 0xe8 | 0x0059e3f8 | - | - | - | 0 | unresolved-global-buffer |
| save/runtime block base | - | 0xe8 | 0x004577c0 | partyAndStats | 0x00e2 | unknown within partyAndStats save block (unmapped-byte) | 0 | save-backed-unmapped-byte |
| party slot base | 0 | 0xe8 | 0x00457838 | partyAndStats | 0x015a | Rinshan MP recover (low-byte) | 0 | implausible-stat-byte-index |
| party slot base | 1 | 0xe8 | 0x00457910 | partyAndStats | 0x0232 | Smashu MP recover (low-byte) | 0 | implausible-stat-byte-index |
| party slot base | 2 | 0xe8 | 0x004579e8 | - | - | - | 0 | party-slot-byte-needs-runtime-proof |
| runtime object pointer table | - | 0xe8 | - | - | - | - | 0 | unresolved-pointer-table-base |
| global selection buffer | - | 0xea | 0x0059e3fa | - | - | - | 0 | unresolved-global-buffer |
| save/runtime block base | - | 0xea | 0x004577c2 | partyAndStats | 0x00e4 | unknown within partyAndStats save block (unmapped-byte) | 0 | save-backed-unmapped-byte |
| party slot base | 0 | 0xea | 0x0045783a | partyAndStats | 0x015c | Rinshan MP maximum (low-byte) | 0 | implausible-stat-byte-index |
| party slot base | 1 | 0xea | 0x00457912 | partyAndStats | 0x0234 | Smashu MP maximum (low-byte) | 0 | implausible-stat-byte-index |
| party slot base | 2 | 0xea | 0x004579ea | - | - | - | 0 | party-slot-byte-needs-runtime-proof |
| runtime object pointer table | - | 0xea | - | - | - | - | 0 | unresolved-pointer-table-base |