Global Mode/State Frontier Review
통합 교집합 스캔에서 새 live gameplay mode/state producer는 승격되지 않았다. 가장 강한 scene+menu 교집합인 0x00423319는 save/load restore 경로로 분리됐고, 0x0041d61b/0x0043022d/descriptor helpers/RNG primitive도 각각 내부 소비자 또는 generic helper로 배제된다.
statuscross-domain-frontier-scanned-no-producer-promoted
cross-domain funcs19
review required0
promoted producers0
save/load bridgeTrue
Strict Promotion Criteria
- A candidate must connect a live input/field/scene state transition to exact descriptor attachment, selected-root execution, battle formation/resource setup, or visible map-animation mutation.
- Save/load restoration, generic descriptor stack add/remove/rebuild, cursor movement, text/status rendering, and RNG primitives are support layers and do not promote by themselves.
- A single shared global such as descriptor count or selected-root is insufficient unless the caller/root shows live execution context.
Cross-Domain Functions
| function | categories | promotion | refs | calls |
|---|---|---|---|---|
0x00407d09cross-domain-context | field + menu | context-only Multiple categories meet, but strict producer/root conditions are not satisfied. | [{"name": "menu.descriptorCount", "vaHex": "0x00407d24", "category": "menu"}, {"name": "field.viewX", "vaHex": "0x00407dd5", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00407e4a", "category": "field"}] | [] |
0x0040847bcross-domain-context | field + menu | context-only Multiple categories meet, but strict producer/root conditions are not satisfied. | [{"name": "menu.descriptorCount", "vaHex": "0x0040849d", "category": "menu"}, {"name": "field.mapWidth", "vaHex": "0x00408554", "category": "field"}] | [] |
0x00408767cross-domain-context | field + menu | context-only Multiple categories meet, but strict producer/root conditions are not satisfied. | [{"name": "menu.descriptorCount", "vaHex": "0x00408782", "category": "menu"}, {"name": "field.viewX", "vaHex": "0x00408855", "category": "field"}, {"name": "field.viewY", "vaHex": "0x004088d8", "category": "field"}] | [] |
0x00408d10cross-domain-context | field + menu | context-only Multiple categories meet, but strict producer/root conditions are not satisfied. | [{"name": "menu.descriptorCount", "vaHex": "0x00408d2b", "category": "menu"}, {"name": "field.liveLayer0Grid", "vaHex": "0x00408de1", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00408e36", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00408dbc", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00408e11", "category": "field"}] | [] |
0x00408eaccross-domain-context | field + menu | context-only Multiple categories meet, but strict producer/root conditions are not satisfied. | [{"name": "menu.descriptorCount", "vaHex": "0x00408ec7", "category": "menu"}, {"name": "field.liveLayer0Grid", "vaHex": "0x00408f75", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00408fea", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00408f4e", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00408fc3", "category": "field"}] | [] |
0x0040bcc9generic-vm-rng-selector | encounter + menu | excluded-primitive generic random selector primitive using descriptor context; not field encounter routing by itself. | [{"name": "menu.descriptorCount", "vaHex": "0x0040bce8", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0040bcf7", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0040bd37", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0040bd6b", "category": "menu"}, {"name": "menu.descriptorOrder", "vaHex": "0x0040bd4b", "category": "menu"}] | [{"name": "encounter.sharedRng", "vaHex": "0x0040bdcc", "category": "encounter"}] |
0x0040c6cccancel-back-handler | input + menu | excluded-cancel-back ESC/X edge handling that unwinds active descriptor state; this is cancel/back behavior, not normal opener or higher-level mode transition. | [{"name": "input.edgeMask", "vaHex": "0x0040c746", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0040c757", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0040c762", "category": "input"}, {"name": "menu.descriptorCount", "vaHex": "0x0040c86c", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0040c8b8", "category": "menu"}] | [] |
0x00411476field-tick-update-route | field + input | excluded-known-route-no-direct-producer per-frame field tick/update route; it calls update paths before redraw but has no direct live map-buffer mutation or encounter/menu/scene producer bridge. | [] | [{"name": "input.pollDriver", "vaHex": "0x004114e2", "category": "input"}, {"name": "field.activeObjectScriptRoute", "vaHex": "0x004114ec", "category": "field"}] |
0x0041d61bmenu-internal-dispatcher | input + menu | excluded-menu-internal confirmed cursor/confirm/cancel dispatcher after menu object construction. | [{"name": "input.edgeMask", "vaHex": "0x0041d6ff", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d70a", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d712", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d71b", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d723", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d797", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d7b2", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d807", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d812", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d82e", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d851", "category": "input"}, {"name": "input.edgeMask", "vaHex": "0x0041d85c", "category": "input"}, {"name": "menu.dispatchLatch", "vaHex": "0x0041d623", "category": "menu"}, {"name": "menu.dispatchLatch", "vaHex": "0x0041d6f3", "category": "menu"}, {"name": "menu.dispatchLatch", "vaHex": "0x0041d822", "category": "menu"}, {"name": "menu.dispatchLatch", "vaHex": "0x0041d86c", "category": "menu"}] | [] |
0x0041d89ddisplay-vm-base-binder | input + menu | excluded-base-binder display/object VM base pointer binder, not descriptor attachment producer. | [{"name": "input.currentMask", "vaHex": "0x0041d8c5", "category": "input"}, {"name": "menu.descriptorRows", "vaHex": "0x0041d8f8", "category": "menu"}] | [] |
0x0042177frng-descriptor-context-review | encounter + menu | context-only RNG and descriptor state meet; previous scans usually classify these as generic VM/battle/status helpers unless field/map state is also present. | [{"name": "menu.descriptorOrder", "vaHex": "0x004217a0", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004217ae", "category": "menu"}] | [{"name": "encounter.sharedRng", "vaHex": "0x004217da", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x00421836", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x00421892", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x004218da", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x00421922", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x0042196a", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x004219a8", "category": "encounter"}] |
0x00423319save-load-state-restore | menu + scene | excluded-non-live-route loads/restores 0x4576d8 state block, 0x457750 descriptor block, 0x59db60 flags, then restores 0x59de30 from selector bytes. It proves save/load restoration, not live scene/menu/encounter routing. | [{"name": "menu.descriptorRows", "vaHex": "0x00423428", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x00423561", "category": "menu"}, {"name": "scene.selectorA", "vaHex": "0x004234a4", "category": "scene"}, {"name": "scene.selectorB", "vaHex": "0x004234b3", "category": "scene"}, {"name": "scene.selectedRoot", "vaHex": "0x004234bb", "category": "scene"}] | [{"name": "menu.rebuildDescriptor", "vaHex": "0x0042349c", "category": "menu"}] |
0x0043022dfield-movement-controller | field + input + menu | excluded-known-consumer input/current mask, descriptor count, collision flags, viewport refs meet in the movement/collision controller. It is already excluded as the menu opener and not a battle/scene producer. | [{"name": "input.currentMask", "vaHex": "0x0043038e", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x0043039e", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303ae", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303b7", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303bf", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303c8", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303d0", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303e0", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303f0", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004303f9", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430401", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x0043040a", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430412", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430429", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430440", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430457", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004304df", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004304fe", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430660", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x0043067f", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430806", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x00430825", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004309c8", "category": "input"}, {"name": "input.currentMask", "vaHex": "0x004309e7", "category": "input"}, {"name": "menu.descriptorCount", "vaHex": "0x00430239", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0043026a", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00431185", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0043146f", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004319bc", "category": "menu"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430534", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430541", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x0043055e", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430574", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x004306b5", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x004306c2", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x004306df", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x004306f5", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x0043085b", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430868", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430885", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x0043089b", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430a1d", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430a2a", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430a47", "category": "field"}, {"name": "field.liveLayer1Flags", "vaHex": "0x00430a5d", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x004304b1", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00430632", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x004307b2", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x004307ea", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00430958", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x0043099e", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00430f5d", "category": "field"}, {"name": "field.mapWidth", "vaHex": "0x00431595", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430f0c", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430f28", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430f41", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430f69", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430f85", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00430fab", "category": "field"}, {"name": "field.viewX", "vaHex": "0x0043110b", "category": "field"}, {"name": "field.viewX", "vaHex": "0x004311da", "category": "field"}, {"name": "field.viewX", "vaHex": "0x00431822", "category": "field"}, {"name": "field.viewX", "vaHex": "0x004318c6", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430e51", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430e79", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430e9f", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430ebb", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430ed7", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00430ef0", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00431130", "category": "field"}, {"name": "field.viewY", "vaHex": "0x0043120b", "category": "field"}, {"name": "field.viewY", "vaHex": "0x00431847", "category": "field"}, {"name": "field.viewY", "vaHex": "0x004318eb", "category": "field"}] | [] |
0x00431fe8descriptor-add-helper | menu + scene | excluded-generic-stack-helper generic descriptor stack add helper; it may call text/status consumer but is below the root producer. | [{"name": "menu.descriptorCount", "vaHex": "0x00431ff4", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432013", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432073", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432163", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432184", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432191", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432198", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004321b8", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004322a2", "category": "menu"}, {"name": "menu.descriptorOrder", "vaHex": "0x00432169", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004320b2", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x0043217c", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004321d0", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004321f3", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x0043228e", "category": "menu"}, {"name": "menu.rootTable", "vaHex": "0x004321bf", "category": "menu"}] | [{"name": "scene.textStatusConsumer", "vaHex": "0x004322f2", "category": "scene"}] |
0x00432323descriptor-rebuild-helper | menu + scene | excluded-generic-stack-helper generic descriptor stack rebuild helper; useful support layer, not an opener/root selector. | [{"name": "menu.descriptorCount", "vaHex": "0x00432385", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004323a5", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004323c8", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004324b2", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004323b3", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004323e0", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x00432403", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x0043249e", "category": "menu"}, {"name": "menu.rootTable", "vaHex": "0x004323cf", "category": "menu"}] | [{"name": "scene.textStatusConsumer", "vaHex": "0x00432510", "category": "scene"}] |
0x00432541descriptor-remove-helper | menu + scene | excluded-generic-stack-helper generic descriptor stack remove helper; this is cancel/stack maintenance support. | [{"name": "menu.descriptorCount", "vaHex": "0x0043254d", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0043256b", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0043264f", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00432685", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004326c4", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004326cb", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004326ea", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x0043270a", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004327f4", "category": "menu"}, {"name": "menu.descriptorOrder", "vaHex": "0x00432663", "category": "menu"}, {"name": "menu.descriptorOrder", "vaHex": "0x004326a5", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x0043259b", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x00432722", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x00432745", "category": "menu"}, {"name": "menu.descriptorRows", "vaHex": "0x004327e0", "category": "menu"}, {"name": "menu.rootTable", "vaHex": "0x00432711", "category": "menu"}] | [{"name": "scene.textStatusConsumer", "vaHex": "0x00432844", "category": "scene"}] |
0x004330e0scene-random-gate | encounter + scene | excluded-scene-random-gate scene/event random gate; previous field encounter scans exclude it as encounter RNG. | [{"name": "scene.randomGateThreshold", "vaHex": "0x004330fb", "category": "scene"}, {"name": "scene.randomGateCounter", "vaHex": "0x00433109", "category": "scene"}] | [{"name": "encounter.sharedRng", "vaHex": "0x004330eb", "category": "encounter"}] |
0x00433402rng-descriptor-context-review | encounter + menu | context-only RNG and descriptor state meet; previous scans usually classify these as generic VM/battle/status helpers unless field/map state is also present. | [{"name": "menu.descriptorCount", "vaHex": "0x00433491", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x004334e2", "category": "menu"}] | [{"name": "encounter.sharedRng", "vaHex": "0x00433448", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x00433463", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x004334e7", "category": "encounter"}] |
0x00433acarng-descriptor-context-review | encounter + menu | context-only RNG and descriptor state meet; previous scans usually classify these as generic VM/battle/status helpers unless field/map state is also present. | [{"name": "menu.descriptorCount", "vaHex": "0x00433b37", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00433b68", "category": "menu"}, {"name": "menu.descriptorCount", "vaHex": "0x00433b9b", "category": "menu"}] | [{"name": "encounter.sharedRng", "vaHex": "0x00433b3c", "category": "encounter"}, {"name": "encounter.sharedRng", "vaHex": "0x00433bde", "category": "encounter"}] |
Important Negative Promotions
0x00423319save/load restore writes selected-root from selector bytes after reading persistent blocks; useful boundary, not live route producer.0x0043022dfield movement/collision controller has input+field+descriptor refs but no scene/encounter/top-menu materialization evidence.0x0041d61bmenu-internal dispatcher after menu object exists.0x00431fe8/0x00432323/0x00432541generic descriptor stack helper layer; not the producer that chooses which root to attach.
Next Frontier
- Trace callers above the generic object/display VM handlers that choose descriptor roots before add/rebuild helpers run.
- Search for live writers of 0x004576da/0x004576db/0x0059de30 outside save/load restore and generic selector opcodes.
- For encounter, require one function/root to bridge field step/tick state with formation/resource setup, not merely shared RNG.
- For map animation, require a live animated-map object/root that reaches tile-write handlers before redraw.