{"scope":"dialogue prompt render pipeline","promotionStatus":"render-pipeline-grounded-root-producer-open","summary":{"dialogueRegionIndexes":[9,10,11,12,13],"dialogueRegionTemplates":[6,7,8,9,10],"textRenderHandlerVaHex":"0x0041bb4c","textSourceHandlerVaHex":"0x0041bca4","selectedPointerGlobalHex":"0x0059de30","selectedRootConsumerVerified":true,"routeTextBindingProofFound":false,"textConsumerProofFound":true,"inline4035SpeakerOpcodeCount":2023,"inline4035SpeakerFaceMismatchCount":0,"inline4035ArgAStatus":"grounded-four-prompt-position-slots","promptSequencePromotionStatus":"prompt-sequence-partial-choice-branch-blocked"},"chain":[{"step":"window template / region","status":"grounded","evidence":"dialogue regions [9, 10, 11, 12, 13] use templates [6, 7, 8, 9, 10]; region draw routine 0x0041b579","remainingGap":"runtime template selection per prompt height/layout is not fully named."},{"step":"selected root consumer","status":"grounded consumer, producer open","evidence":"selected root global 0x0059de30 is consumed by 0x0040adc9; reads at 0x0040adfe","remainingGap":"normal scene/event route -> exact selected root producer is still not proven."},{"step":"text source setup opcode 0x0d","status":"grounded","evidence":"context+0x28=stream dword+4; use low 16 bits as index into 0x55b134 to seed context+0xce/0xd2/0xd6/0xda; advance +8","remainingGap":"per-scene use of 0x0d is data-stream state, not direct textVa code refs."},{"step":"text render opcode 0x0b","status":"grounded","evidence":"push context+0x28; call 0x0041b579; copy context+0xce/0xd2 to cursor 0xd6/0xda; advance +4","remainingGap":"specific prompt stream execution order remains partial around choice branches."},{"step":"input wait opcode 0x06","status":"grounded","evidence":"toggle press/release latch; set 0x55b280 stop flag; advance stream +4 only after release condition","remainingGap":"browser replay only approximates the wait loop."},{"step":"inline portrait selector 40 35 aa bb","status":"grounded","evidence":"2023 selectors; speaker/face mismatches 0; aa status grounded-four-prompt-position-slots","remainingGap":"the opcode 0x35 handler body is not fully named, but storage semantics are grounded by all observed speaker rows."}],"portraitSlots":[{"argA":0,"argAHex":"0x00","promptClass":"in-game","positionSlot":"left","positionSummary":"in-game prompt portrait left slot","evidence":"story-prompt-2373 at render 0x004c062e uses 40 35 00 01 and Ataho portrait is observed on the left."},{"argA":1,"argAHex":"0x01","promptClass":"in-game","positionSlot":"right","positionSummary":"in-game prompt portrait right slot","evidence":"paired with 0x00 in-game prompt slot; exact screen sample still useful for direct right-side proof."},{"argA":2,"argAHex":"0x02","promptClass":"epilogue-or-special","positionSlot":"left","positionSummary":"epilogue/special prompt portrait left slot","evidence":"story-prompt-4235 at render 0x00546e98 uses 40 35 02 02 and Smash portrait is observed on the left."},{"argA":3,"argAHex":"0x03","promptClass":"epilogue-or-special","positionSlot":"right","positionSummary":"epilogue/special prompt portrait right slot","evidence":"paired with 0x02 in epilogue/special prompt layout; the same story-prompt-4235 render block later uses 40 35 03 01 for Ataho."}],"faceLegend":[{"frameIndex":0,"label":"아타호","usage":"main-dialogue-dominant","source":"user-observed"},{"frameIndex":1,"label":"스마슈","usage":"main-dialogue-dominant","source":"user-observed"},{"frameIndex":2,"label":"린샹","usage":"main-dialogue-dominant","source":"user-observed"},{"frameIndex":3,"label":"페톰","usage":"story-dialogue","source":"user-observed"},{"frameIndex":4,"label":"키리","usage":"story-event","source":"user-observed"},{"frameIndex":5,"label":"화린","usage":"story-event","source":"user-observed"},{"frameIndex":6,"label":"알리바바","usage":"story-event","source":"user-observed"},{"frameIndex":7,"label":"유리와카마루","usage":"portrait-only-story-event","source":"user-observed"},{"frameIndex":8,"label":"황금돼지 두루마리 관련 인물","usage":"brief-story","source":"user-observed"}],"sampleInlineSelectors":[],"opcodeConsumers":{"0x0d":{"opcodeHex":"0x0d","handlerEntryVaHex":null,"handlerVaHex":"0x0041bca4","handlerSection":".text","referenceCount":0,"commandCount":83,"evidenceLevel":"grounded","role":"text-source-opcode-grounded","decodedLength":"0x8","operandLayout":"stream dword at +4","effect":"context+0x28=stream dword+4; use low 16 bits as index into 0x55b134 to seed context+0xce/0xd2/0xd6/0xda; advance +8","source":"out/event_text_source_flow.json","sourceFamily":"event-object-vm","nextStep":"supports partial dialogue replay only; route-linked execution still missing","browserReplayEnabled":true,"isDefaultHandler":false,"isCodeHandler":true},"0x0b":{"opcodeHex":"0x0b","handlerEntryVaHex":null,"handlerVaHex":"0x0041bb4c","handlerSection":".text","referenceCount":0,"commandCount":3179,"evidenceLevel":"grounded","role":"text-source-opcode-grounded","decodedLength":"0x4","operandLayout":"inherited context+0x28","effect":"push context+0x28; call 0x0041b579; copy context+0xce/0xd2 to cursor 0xd6/0xda; advance +4","source":"out/event_text_source_flow.json","sourceFamily":"event-object-vm","nextStep":"supports partial dialogue replay only; route-linked execution still missing","browserReplayEnabled":true,"isDefaultHandler":false,"isCodeHandler":true},"0x06":{"opcodeHex":"0x06","handlerEntryVaHex":null,"handlerVaHex":"0x0041b8ee","handlerSection":".text","referenceCount":0,"commandCount":243,"evidenceLevel":"grounded","role":"input-wait-opcode-grounded","decodedLength":"0x4","operandLayout":"no promoted text operand; waits on global 0x47f1d4 and input mask 0x0059e312","effect":"toggle press/release latch; set 0x55b280 stop flag; advance stream +4 only after release condition","source":"Hwanse2.exe handler 0x0041b8ee plus out/event_dialogue_blocks.json storage scan","sourceFamily":"event-object-vm","nextStep":"dialogue wait evidence only; full browser event VM wait loop remains unimplemented","browserReplayEnabled":false,"isDefaultHandler":false,"isCodeHandler":true},"0x09":{"opcodeHex":"0x09","handlerEntryVaHex":null,"handlerVaHex":"0x0041bac6","handlerSection":".text","referenceCount":0,"commandCount":143,"evidenceLevel":"grounded","role":"control-flow-call-opcode-grounded","decodedLength":"0x8","operandLayout":"stream dword at +4 is branch target; stream+8 is pushed as continuation","effect":"push continuation pointer to context+0xb4 stack; increment context+0xc8; set stream to target dword","source":"Hwanse2.exe handler 0x0041bac6 plus out/event_dialogue_blocks.json storage scan","sourceFamily":"event-object-vm","nextStep":"VM control-flow evidence only; browser replay does not follow original event branches","browserReplayEnabled":false,"isDefaultHandler":false,"isCodeHandler":true},"0x35":{"opcodeHex":"0x35","handlerEntryVaHex":null,"handlerVaHex":"0x0041fe09","handlerSection":".text","referenceCount":0,"commandCount":249,"evidenceLevel":"partial","role":"literal-storage-marker","decodedLength":"-","operandLayout":"CP949 text bytes are preserved as literalTextEvents from dialogue block storage; handler semantics are not promoted.","effect":"storage-indexed literal payload marker used by partial browser replay evidence","source":"out/event_dialogue_blocks.json","sourceFamily":"event-object-vm","nextStep":"storage evidence only; not route-linked VM execution","browserReplayEnabled":true,"isDefaultHandler":false,"isCodeHandler":true}},"decisions":[{"item":"Can prompt text and portrait be rendered from current data?","answer":"yes","reason":"window template, text render opcode, wait opcode, and inline portrait selector are all grounded enough for replay/rendering."},{"item":"Can this prove scene story flow?","answer":"not yet","reason":"the selected root consumer is known, but the producer that chooses an exact scene/root and choice branch remains unresolved."},{"item":"Best next reverse-trace target","answer":"selected-root producer / branch target","reason":"following the prompt renderer further will mostly re-prove drawing; finding who writes the selected root connects scene -> prompt."}],"remainingProofs":["scene/event record or input route that writes the selected root global","selected choice value -> next prompt target","full semantic name for opcode 0x35 handler internals"],"sourceArtifacts":{"dialogueTemplateTextFace":"out/dialogue_template_text_face_review.json","sceneEventTextConsumer":"out/scene_event_text_consumer_trace_review.json","selectedSceneTextRootConsumer":"out/selected_scene_text_root_consumer_review.json","dialogueFaceSelector":"out/dialogue_face_selector_gap_review.json","promptSequence":"out/scene_event_vm_prompt_sequence_review.json"}}