{"title":"Manual movement trigger bridge","summary":{"manualMovementToObjectScriptBridgeFound":true,"routeProofFound":false,"sceneAutoTransitionSupported":false,"manualMovementConsumerStatus":"object-overlap-script-cursor-bridge-found-route-target-unresolved","manualScriptOpcodeCount":15,"manualScriptOpcodeRouteProofFound":false,"scope":"manual movement overlap bridge only; concrete map transition target is not proven here"},"constants":{"actorCollisionHelperFunction":"0x004319f8","actorOverlapLoop":"0x00431ca6","collisionObjectListHead":"0x00574100","collisionObjectListSentinel":"0x005741ec","actorDirectionLatch":"0x00574533","objectPayloadField":"+0xec","objectScriptCursorField":"+0x40","genericObjectScriptRunner":"0x00402321","scriptHandlerTable":"0x00440538","scriptStopFlag":"0x0055a1b8"},"bridgeSteps":[{"step":1,"label":"scan active collision object list","evidence":"0x00431ca6 loads 0x00574100 and stops at 0x005741ec"},{"step":2,"label":"filter overlap-capable scripted objects","evidence":"object +0x14 must include 0x0101 and object +0xec must be nonzero"},{"step":3,"label":"direction-specific overlap response","evidence":"0x00574533 selects one of four overlap branches, mirrored for 1..4 and 5..8"},{"step":4,"label":"arm object script cursor","evidence":"0x00431fd6 copies object +0xec -> +0x40 after the latch is consumed"},{"step":5,"label":"generic object script runner consumes +0x40","evidence":"0x00402321 reads byte at object +0x40 and dispatches through 0x00440538"}],"jumpTable":{"va":4399003,"vaHex":"0x00431f9b","entries":["0x00431d03","0x00431dba","0x00431e71","0x00431ef8","0x00431d03","0x00431dba","0x00431e71","0x00431ef8"],"expectedEntries":["0x00431d03","0x00431dba","0x00431e71","0x00431ef8","0x00431d03","0x00431dba","0x00431e71","0x00431ef8"],"matches":true,"latchMapping":{"1":"0x00431d03","2":"0x00431dba","3":"0x00431e71","4":"0x00431ef8","5":"0x00431d03","6":"0x00431dba","7":"0x00431e71","8":"0x00431ef8"}},"instructionEvidence":[{"id":"object-list-head-load","va":4398246,"vaHex":"0x00431ca6","meaning":"start scanning active collision/display objects from 0x00574100","expectedHex":"a1 00 41 57 00","actualHex":"a1 00 41 57 00","matches":true},{"id":"object-list-sentinel","va":4398268,"vaHex":"0x00431cbc","meaning":"sentinel is 0x00573b40 + 0x06ac = 0x005741ec","expectedHex":"b8 40 3b 57 00 05 ac 06 00 00 3b 45 fc","actualHex":"b8 40 3b 57 00 05 ac 06 00 00 3b 45 fc","matches":true},{"id":"active-object-mask","va":4398287,"vaHex":"0x00431ccf","meaning":"skip objects whose +0x14 active mask lacks 0x0101","expectedHex":"8b 45 fc 33 c9 66 8b 48 14 f7 c1 01 01 00 00","actualHex":"8b 45 fc 33 c9 66 8b 48 14 f7 c1 01 01 00 00","matches":true},{"id":"object-script-payload-nonzero-gate","va":4398308,"vaHex":"0x00431ce4","meaning":"only objects with nonzero +0xec participate in this bridge","expectedHex":"8b 45 fc 83 b8 ec 00 00 00 00 0f 84 ea 02 00 00","actualHex":"8b 45 fc 83 b8 ec 00 00 00 00 0f 84 ea 02 00 00","matches":true},{"id":"direction-latch-read","va":4398324,"vaHex":"0x00431cf4","meaning":"read movement direction latch 0x00574533 before overlap case dispatch","expectedHex":"33 c0 a0 33 45 57 00 89 45 ec","actualHex":"33 c0 a0 33 45 57 00 89 45 ec","matches":true},{"id":"direction-jump-table-dispatch","va":4398980,"vaHex":"0x00431f84","meaning":"dispatch latch values 1..8 through 0x00431f9b table","expectedHex":"ff 4d ec 83 7d ec 07 0f 87 2a 00 00 00 8b 45 ec ff 24 85 9b 1f 43 00","actualHex":"ff 4d ec 83 7d ec 07 0f 87 2a 00 00 00 8b 45 ec ff 24 85 9b 1f 43 00","matches":true},{"id":"object-script-payload-to-cursor-copy","va":4399035,"vaHex":"0x00431fbb","meaning":"when latch has been consumed, copy object +0xec into object +0x40 script cursor","expectedHex":"33 c0 a0 33 45 57 00 85 c0 0f 85 14 00 00 00 8b 45 fc 8b 80 ec 00 00 00 8b 4d fc 89 41 40","actualHex":"33 c0 a0 33 45 57 00 85 c0 0f 85 14 00 00 00 8b 45 fc 8b 80 ec 00 00 00 8b 4d fc 89 41 40","matches":true},{"id":"generic-object-script-runner","va":4203303,"vaHex":"0x00402327","meaning":"generic runner resets 0x0055a1b8, reads object +0x40 opcode, dispatches through 0x00440538","expectedHex":"c7 05 b8 a1 55 00 00 00 00 00 83 3d b8 a1 55 00 00 0f 85 1d 00 00 00 8b 45 08 50 8b 45 08 8b 40 40 33 c9 8a 08 ff 14 8d 38 05 44 00","actualHex":"c7 05 b8 a1 55 00 00 00 00 00 83 3d b8 a1 55 00 00 0f 85 1d 00 00 00 8b 45 08 50 8b 45 08 8b 40 40 33 c9 8a 08 ff 14 8d 38 05 44 00","matches":true}],"statePairEvidence":[{"id":"vertical-overlap-response-a","va":4398493,"vaHex":"0x00431d9d","actorState":1,"objectState":2,"expectedHex":"c7 40 68 01 00 00 00 8b 45 fc c7 40 68 02 00 00 00 c6 05 33 45 57 00 00","actualHex":"c7 40 68 01 00 00 00 8b 45 fc c7 40 68 02 00 00 00 c6 05 33 45 57 00 00","matches":true},{"id":"vertical-overlap-response-b","va":4398676,"vaHex":"0x00431e54","actorState":2,"objectState":1,"expectedHex":"c7 40 68 02 00 00 00 8b 45 fc c7 40 68 01 00 00 00 c6 05 33 45 57 00 00","actualHex":"c7 40 68 02 00 00 00 8b 45 fc c7 40 68 01 00 00 00 c6 05 33 45 57 00 00","matches":true},{"id":"horizontal-overlap-response-a","va":4398811,"vaHex":"0x00431edb","actorState":3,"objectState":4,"expectedHex":"c7 40 68 03 00 00 00 8b 45 fc c7 40 68 04 00 00 00 c6 05 33 45 57 00 00","actualHex":"c7 40 68 03 00 00 00 8b 45 fc c7 40 68 04 00 00 00 c6 05 33 45 57 00 00","matches":true},{"id":"horizontal-overlap-response-b","va":4398946,"vaHex":"0x00431f62","actorState":4,"objectState":3,"expectedHex":"c7 40 68 04 00 00 00 8b 45 fc c7 40 68 03 00 00 00 c6 05 33 45 57 00 00","actualHex":"c7 40 68 04 00 00 00 8b 45 fc c7 40 68 03 00 00 00 c6 05 33 45 57 00 00","matches":true}],"manualScriptOpcodeReview":{"opcodeSemantics":[{"opcodeHex":"0x55","name":"global-position-step","meaning":"steps global field position words 0x4576dc/0x4576de toward a target coordinate","routeImpact":"manual movement helper; no destination map/root write"},{"opcodeHex":"0x65","name":"active-object-position-branch","meaning":"branches to command+8 target when an active object's object+0xe8/+0xea position matches","routeImpact":"manual trigger/object position gate; no destination map/root write"},{"opcodeHex":"0x66","name":"active-object-sequence-gate","meaning":"matches active object kind, compares/increments object+0x70 sequence counter, and queues a value","routeImpact":"object state progression; no destination map/root write"},{"opcodeHex":"0x67","name":"active-object-position-gate","meaning":"waits on active object object+0xe8/+0xea position and can stall the script runner","routeImpact":"object position wait/gate; no destination map/root write"},{"opcodeHex":"0x70","name":"active-object-motion-state","meaning":"sets linked active object position/motion/state fields","routeImpact":"object animation/motion setup; no destination map/root write"}],"opcodeCounts":{"0x55":4,"0x65":1,"0x66":14,"0x67":4,"0x70":1},"trustedOpcodeCounts":{"0x55":4,"0x65":1,"0x66":11,"0x67":4,"0x70":0},"scriptCount":15,"mapLoaderRows":[],"routeProofFound":false,"scripts":[{"scriptVa":4482564,"scriptVaHex":"0x00446604","classification":"text/prompt-manual-object-script","textPreview":"아타호\n「응？ 이런 곳에\n수상한 깔개가…\n올라 타본다\n그만둔다\n아타호가 갖고 있던\n「나찰의 돌」이 빛나기 시작했다\n스마슈\n「우와왓！！\n몸이 날아간다！\n………\n린샹\n「아무 변화도 없잖아！\n「마법의 물약」을 발견했다\n「마법의","commands":[{"vaHex":"0x00446628","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x00 value=0x05 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4482684,"scriptVaHex":"0x0044667c","classification":"text/prompt-manual-object-script","textPreview":"린샹\n「이 위에 올라타면\n원래의 장소로 돌아갈 수 있나？\n올라탄다\n타지 않는다\n「쾌진격 기서」를 발견했다\n스마슈\n「엇！ 으와 이게 웬 떡！\n이야호，신난다！\n이건 나에게 필요한 기술이잖아\n이제 나도 새로운 필살기를\n사용할 수 있게 됐다！\n스마슈는 새로","commands":[{"vaHex":"0x004466a0","opcodeHex":"0x67","opcodeName":"active-object-position-gate","summary":"scan active objects by object+0x16 and compare object+0xe8/+0xea positions; mode=0x00 kind=0x00 axis=0x03 x=17 y=26","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4578800,"scriptVaHex":"0x0045ddf0","classification":"text/prompt-manual-object-script","textPreview":"붯K\n스마슈\n「쉬지도 않고 계속 걸었더니\n목이 마르군． 물이나 마셔볼까\n물을 마신다\n마시지 않는다\n붯K\n스마슈\n「시원한게 정말 맛좋군\n꿀꺽！ 꿀꺽！\n스마슈\n「우와 정말 맛있다\n이게 천연명수인가…\n붯K\n스마슈\n…우\n…우웃\n…괴로워\n아뿔싸！ 이","commands":[{"vaHex":"0x0045de20","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x19 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x0045def8","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x0f target=0x01","alignmentConfidence":"tentative-after-unknown-opcode"},{"vaHex":"0x0045df20","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x1b target=0x01","alignmentConfidence":"tentative-after-unknown-opcode"},{"vaHex":"0x0045df28","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x01 target=0x01","alignmentConfidence":"tentative-after-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4673884,"scriptVaHex":"0x0047515c","classification":"text/prompt-manual-object-script","textPreview":"휰\n스마슈\n「우리 둘만 갈 건가요？\n그렇다면 후회하기 전에\n회복계 아이템을\n확실히 챙겨둬야죠？\n무리는 금물이니까요\n그럼，그만둘까\n괜찮다니까\n휰\n아타호\n「아차，어슬렁거리고 있을\n틈이 없잖아！！\n빨리 여관으로 가서\n대회주최자에게\n서류를 전해줘야해！","commands":[{"vaHex":"0x00475188","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x00 value=0x05 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4808628,"scriptVaHex":"0x00495fb4","classification":"text/prompt-manual-object-script","textPreview":"h쩙\n린샹\n「이봐요 아타호！\n뒷 이야기를 안들어도 돼요？\n아타호\n「그렇군…\n나중에라도 괜찮겠지…\nh쩙\n린샹\n「아니 이건 술 냄새！！\n질렸어！ 도장 안에 술을…\n아타호\n「…이런 고급 술이…\nh쩙 백호권 사범\n「우선 기본적인 것부터 시작하지\nh쩙 아타호와 린샹은 한","commands":[{"vaHex":"0x00495fd0","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x00 value=0x05 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4901836,"scriptVaHex":"0x004acbcc","classification":"text/prompt-manual-object-script","textPreview":"<힓 문에 뭔가 쓰여져있다\n갈 때는 즐겁지만\n돌아오긴 두렵다！\n문을 통과한다\n그만둔다\n<힓 문에 뭔가 쓰여져있다\n「출구전용\n이쪽으로는 출입금지\n스마슈\n「뭐야？ 이쪽으로는\n들어갈 수 없잖아？\n<힓 석판\n「사악한 ４마수를 이곳에 봉인한다\n부적을 지닌 자 출입을 금한다！","commands":[{"vaHex":"0x004acbd0","opcodeHex":"0x65","opcodeName":"active-object-position-branch","summary":"branch if active object position matches; mode=0x02 x=0 y=16 kind=0x00 -> 0x004acc28; else +0x0c","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004acbf0","opcodeHex":"0x55","opcodeName":"global-position-step","summary":"step global position words 0x4576dc/0x4576de toward target; advanceMode=0x00 axis=0x03 target=(19,9)","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004acc08","opcodeHex":"0x67","opcodeName":"active-object-position-gate","summary":"scan active objects by object+0x16 and compare object+0xe8/+0xea positions; mode=0x00 kind=0x00 axis=0x03 x=36 y=9","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4902276,"scriptVaHex":"0x004acd84","classification":"text/prompt-manual-object-script","textPreview":"<힓\n아타호\n「벽에 금이 갔잖아\n<힓\n스마슈\n「엇！ 뭔가 있을 것같은데…\n내가 이 햄머로\n부셔버리겠어요！\n간닷！ 암석파괴충！！\n<힓 「고급한방약」을 발견했다\n0힓 「고급한방약」을 손에 넣었다\n0힓\n<힓\n린샹\n「여기…，금이 가 있어요！\n<힓\n스마슈","commands":[{"vaHex":"0x004acda8","opcodeHex":"0x67","opcodeName":"active-object-position-gate","summary":"scan active objects by object+0x16 and compare object+0xe8/+0xea positions; mode=0x00 kind=0x02 axis=0x03 x=3 y=8","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004acdbc","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x1a target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":4902500,"scriptVaHex":"0x004ace64","classification":"text/prompt-manual-object-script","textPreview":"<힓\n린샹\n「여기…，금이 가 있어요！\n<힓\n스마슈\n「엇！ 뭔가 있을 것같은데\n좋아，이 햄머로 기냐∼앙\n부숴버리고 말 테다！！\n간닷！ 암석파괴충！！！\n<힓 「기공대회복」의 기서를\n발견했다！\n린샹\n「어머，이 기술은 나도\n사용할 수 있겠네！！\n0힓 린샹은 새로운 회복기인","commands":[{"vaHex":"0x004ace88","opcodeHex":"0x67","opcodeName":"active-object-position-gate","summary":"scan active objects by object+0x16 and compare object+0xe8/+0xea positions; mode=0x00 kind=0x02 axis=0x03 x=74 y=8","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004ace9c","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x1a target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5137928,"scriptVaHex":"0x004e6608","classification":"text/prompt-manual-object-script","textPreview":"아타호\n「그럼，호랑이마을을 향해\n출발해볼까！\n출발한다\n아니，잠깐만！\n|S 이렇게 아타호일행은\n호랑이마을을 향해 출발했다","commands":[{"vaHex":"0x004e662c","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x00 value=0x05 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5196288,"scriptVaHex":"0x004f4a00","classification":"text/prompt-manual-object-script","textPreview":"oJ 「책」이 떨어져있다\n스마슈\n「어라？ 이것은…？！\n…이렇게 깨끗한 곳에\n몰지각하게 쓰레기를 버리다니…\n몹쓸 인간들이구만，치엣∼\n내가 정리해야겠다！！！\noJ 스마슈는 하는 수 없이\n「☆○책」을 주었다\n스마슈\n「으와∼\n이렇게 대단한 책을！！\n…으악！ 잊고","commands":[{"vaHex":"0x004f4a18","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x14 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004f4a2c","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x0e target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"},{"vaHex":"0x004f4a38","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x02 value=0x01 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5380440,"scriptVaHex":"0x00521958","classification":"manual-object-script-no-text","textPreview":"","commands":[{"vaHex":"0x00521968","opcodeHex":"0x55","opcodeName":"global-position-step","summary":"step global position words 0x4576dc/0x4576de toward target; advanceMode=0x00 axis=0x03 target=(0,0)","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5382980,"scriptVaHex":"0x00522344","classification":"manual-object-script-no-text","textPreview":"","commands":[{"vaHex":"0x00522354","opcodeHex":"0x55","opcodeName":"global-position-step","summary":"step global position words 0x4576dc/0x4576de toward target; advanceMode=0x00 axis=0x03 target=(0,0)","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5385520,"scriptVaHex":"0x00522d30","classification":"manual-object-script-no-text","textPreview":"","commands":[{"vaHex":"0x00522d40","opcodeHex":"0x55","opcodeName":"global-position-step","summary":"step global position words 0x4576dc/0x4576de toward target; advanceMode=0x00 axis=0x03 target=(0,0)","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5437788,"scriptVaHex":"0x0052f95c","classification":"text/prompt-manual-object-script","textPreview":"결N\n아타호\n「그러면 지금부터 내 고향으로\n가려는데，준비는 됐나？\n…그런데，여기서 떠나게 되면\n더이상 이곳으로 올 일은\n없을 테니까，잘 결정하게나！！\n스마슈\n「…누구에게 말한거죠？\n네，좋아요\n아니，잠깐만요\n결N\n아타호\n「음∼이쪽은 길이 틀린데…\n엉뚱한 길로 와버렸군…","commands":[{"vaHex":"0x0052f980","opcodeHex":"0x66","opcodeName":"active-object-sequence-gate","summary":"scan active objects by object+0x16; compare/increment object+0x70; mode=0x00 kind=0x00 value=0x06 target=0x01","alignmentConfidence":"trusted-before-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false},{"scriptVa":5510204,"scriptVaHex":"0x0054143c","classification":"text/prompt-manual-object-script","textPreview":"H 사내\n「알고 있어！？\nH 마시기대회에서 우승한 녀석，\n대회에서 실컷 퍼 마시고선\n곧장 술집으로 갔대 글쎄…\nH 알아？！…근처 술집에\n도둑이 들었대，글쎄！\n세상，참 어수선해졌어！\nH 전투 도중 기절하면\nＨＰ최대치가 감소한다는 걸．물론\n회복장소에선 회복할 수 있대！\nH 명중","commands":[{"vaHex":"0x0054145c","opcodeHex":"0x70","opcodeName":"active-object-motion/state","summary":"scan linked active objects and set object position/motion/state fields; mode=0x14 x=84 y=5252 kind=0x54 state=0x00","alignmentConfidence":"tentative-after-unknown-opcode"}],"mapLoaderRefFound":false,"routeProofFound":false}]},"missingEvidence":["a concrete field-map active object descriptor with its runtime +0xec payload decoded","a decoded object script command stream proving map-loader/selector-root transition","a target map id/root/coordinate write linked to the copied +0xec script","a source trigger footprint linked to a specific active object descriptor"],"nonClaims":["This does not prove map1_01a -> map1_02b or any other route.","This does not prove scene-driven automatic map movement.","Direction latch values remain movement/collision state, not a route selector by themselves."],"references":["out/runtime_movement.md","out/map1_01a_edge_trigger_gap.md","out/opening_consumer_trace.md","out/battle_display_vm_static_decode.md"]}
