메뉴 취소 입력/창 소비자 검토

ESC/X/Num0 입력이 상태창/메뉴 window region으로 이어지는 정적 근거를 분리한다.

요약

grounded stack path; direct normal-field menu-open script still pending
cancel bit0x0200
consumer opcode0x9f @ 0x0040c6cc
region opcode0x45 @ 0x00406528
top regions3, 4, 6

취소 액션 키: ESCAPE, NUMPAD_INSERT, X, state+0x115. script-data region opcode probe: 45 06=0, 45 03=0, 45 04=0.

판정

항목상태근거
cancel/back actiongroundedprimary action 9 maps ESCAPE, NUMPAD_INSERT, X and state offsets to bit 0x0200.
cancel/back consumergroundedopcode 0x9f handler 0x0040c6cc tests AH bit 0x02 from edge mask 0x0059e312 and mutates menu stack cursor 0x0059e33e.
menu stack globalsgrounded0x4576e8/0x4576e9 hold active menu entry ids; 0x59db30 holds entry pointers; 0x59e33e is the current cursor. Add/remove helpers at 0x00431fe8/0x00432541 update them.
top menu window regionsgrounded-region / consumer pendingregion #6, #3, #4 form the 640x352 top menu candidate layout from window.cns templates, but the exact opener stream was not isolated.
raw region command sequenceblockeddirect script-data byte sequences 45 06 / 45 03 / 45 04 were not found; the top menu layout is likely selected through descriptor/object state rather than a simple contiguous region-opener stream.

VM Opcode

opcodehandler역할bytes
0x400x004063fcbind current action mask as VM input source55 8b ec 53 56 57 8b 45 08 c7 80 a8 00 00 00 10 e3 59 00 8b 45 08 83 40
0x440x004064f4conditional draw region 055 8b ec 53 56 57 e8 0a b0 01 00 8b 45 08 8b 40 40 33 c9 8a 48 01 85 c9
0x450x00406528draw region id from command byte55 8b ec 53 56 57 8b 45 08 8b 40 40 66 0f b6 40 01 50 e8 3a 50 01 00 83
0x800x0040ad5ebind menu stack slot to entry table row55 8b ec 53 56 57 8b 45 08 8b 40 40 33 c9 8a 48 02 8d 04 49 c1 e0 03 8d
0x880x0040b13bdirection/list selector movement55 8b ec 83 ec 08 53 56 57 8b 45 08 8b 40 40 8b 40 04 89 45 fc 8b 45 08
0x990x0040c2fcrebuild menu stack from active ids55 8b ec 83 ec 04 53 56 57 c7 45 fc 00 00 00 00 e9 03 00 00 00 ff 45 fc
0x9f0x0040c6cccancel/back menu stack controller55 8b ec 83 ec 10 53 56 57 8b 45 08 8b 40 40 33 c9 8a 48 01 89 4d fc e9

Window Regions

top menu 후보 #6/#3/#4 포함
#rectresourcetemplate해석상태
10,352 416x1280x000900011normal HUD left panelgrounded
2416,352 224x1280x000900044normal HUD right panelgrounded
3416,0 224x960x000900022top menu upper-right window candidategrounded-region / consumer pending
4416,96 224x2560x000900033top menu lower-right window candidategrounded-region / consumer pending
60,0 416x3520x000900000top menu large left window candidategrounded-region / consumer pending
8324,128 80x1120x0009000d13window.cns template #13window-region
90,0 352x960x000900066window.cns template #6window-region
100,0 352x1120x000900077window.cns template #7window-region
110,0 352x1280x000900088window.cns template #8window-region
120,0 352x1440x000900099window.cns template #9window-region
130,0 352x1600x0009000a10window.cns template #10window-region
140,80 304x2400x0009000b11window.cns template #11window-region
15304,80 128x800x0009000c12window.cns template #12window-region
16304,160 128x800x0009000c12window.cns template #12window-region
17304,240 128x800x0009000c12window.cns template #12window-region
390,64 224x480x0009000e14window.cns template #14window-region
400,112 224x480x0009000f15window.cns template #15window-region
420,0 176x640x0009001016window.cns template #16window-region

Input/Stack Globals

globalVArefssample
current action mask0x0059e310310x0040640b near vm-dispatch-loop
0x004106a8 near menu/list-template-blitter
0x0041d8c5 near choice/list-cancel-handler
0x00422d9b input-poll-driver
0x00422da1 input-poll-driver
0x004232a5 near input-poll-driver
0x004232dc near input-poll-driver
0x0043038e near field-controller-direction
edge/new-press action mask0x0059e312330x004042dd near vm-dispatch-loop
0x00404340 near vm-dispatch-loop
0x0040b167 opcode-0x88-list-direction
0x0040b189 opcode-0x88-list-direction
0x0040b1b3 opcode-0x88-list-direction
0x0040b1d5 opcode-0x88-list-direction
0x0040b1ff opcode-0x88-list-direction
0x0040b221 opcode-0x88-list-direction
previous action latch0x0055b2ac30x00422d83 input-poll-driver
0x00422da7 input-poll-driver
0x00422db8 input-poll-driver
menu stack cursor0x0059e33e620x0040b6a2 near opcode-0x88-list-direction
0x0040b780 near opcode-0x88-list-direction
0x0040b7a1 near opcode-0x88-list-direction
0x0040b7e0 near opcode-0x88-list-direction
0x0040b802 near opcode-0x88-list-direction
0x0040c53b near opcode-0x99-stack-rebuild
0x0040c599 near opcode-0x99-stack-rebuild
0x0040c6eb opcode-0x9f-cancel-stack
menu stack pointer array0x0059db302600x00406479 near vm-dispatch-loop
0x00406499 near vm-dispatch-loop
0x0040ad8b opcode-0x80-stack-bind
0x0040c04b near opcode-0x88-list-direction
0x0040c362 opcode-0x99-stack-rebuild
0x0040c3df opcode-0x99-stack-rebuild
0x0040c542 near opcode-0x99-stack-rebuild
0x0040c6f2 opcode-0x9f-cancel-stack
active menu entry count0x004576e8860x00406b91 near opcode-0x45-region-id
0x00406cce near opcode-0x45-region-id
0x00407d24 near opcode-0x45-region-id
0x004081de near opcode-0x45-region-id
0x00408372 near opcode-0x45-region-id
0x0040849d near opcode-0x45-region-id
0x00408782 near opcode-0x45-region-id
0x00408a1d near opcode-0x45-region-id
active menu entry ids0x004576e9300x0040b6aa near opcode-0x88-list-direction
0x0040b788 near opcode-0x88-list-direction
0x0040b7a9 near opcode-0x88-list-direction
0x0040b7e8 near opcode-0x88-list-direction
0x0040b80a near opcode-0x88-list-direction
0x0040bd4b near opcode-0x88-list-direction
0x0040be7e near opcode-0x88-list-direction
0x0040bfa7 near opcode-0x88-list-direction
menu entry table0x00457750390x00406436 near vm-dispatch-loop
0x0040ad79 opcode-0x80-stack-bind
0x0040b6b8 near opcode-0x88-list-direction
0x0040be8c near opcode-0x88-list-direction
0x0040c3d5 opcode-0x99-stack-rebuild
0x0040c43b near opcode-0x99-stack-rebuild
0x0040c499 near opcode-0x99-stack-rebuild
0x0040dec6 near opcode-0x9f-cancel-stack

Cancel Bit Tests

testfunctionmeaningbytes
0x0040c74aopcode-0x9f-cancel-stacktests AH bit 0x02, i.e. action bit 0x0200 when AX is the 16-bit input mask66 a1 12 e3 59 00 f6 c4 02 0f 84 c6 00 00 00 33
0x0041d7b6near choice/list-cancel-handlertests AH bit 0x02, i.e. action bit 0x0200 when AX is the 16-bit input mask66 a1 12 e3 59 00 f6 c4 02 0f 84 6b 00 00 00 8b

Stack Cursor Mutations

mutationhitswhere
inc byte ptr [0x0059e33e]20x0040c881 opcode-0x9f-cancel-stack
0x0040c8a7 opcode-0x9f-cancel-stack
dec byte ptr [0x0059e33e]10x0040c798 opcode-0x9f-cancel-stack
mov byte ptr [0x0059e33e], 010x0040c89b opcode-0x9f-cancel-stack

Call Sites

targetcall countsample call sites
input action packer
0x0042f6d2
10x00422d91 input-poll-driver
region draw function
0x0041b579
50x00406514 opcode-0x44-region0
0x0040653a opcode-0x45-region-id
0x00414fc9 near menu/list-template-blitter
0x004150d2 near menu/list-template-blitter
0x0041bb59 region-object-draw-bridge
template blit function
0x004175d3
350x0040f822 menu/list-template-blitter
0x0040f873 menu/list-template-blitter
0x0040f8e7 menu/list-template-blitter
0x0040f923 menu/list-template-blitter
0x0040f9e4 menu/list-template-blitter
0x0040fa23 menu/list-template-blitter
0x00411a0f near menu/list-template-blitter
0x0041b5ff region-draw-function
0x0041dbf3 near choice/list-cancel-handler
0x0041dd01 near choice/list-cancel-handler
0x0041df9b near choice/list-cancel-handler
0x0041e004 near choice/list-cancel-handler

다음 분석 타겟

  • Decode menu entry table rows at 0x00457750 so stack id -> text/window/content can be named.
  • Trace opcode 0x80/0x99/0x9f roots together with region opcode 0x45 to find the normal-field status-menu opener.
  • Use the known UI text strings around 0x004e8128..0x004e8872 as labels once the stack entry content table is isolated.