대화 초상화 selector 검토

slot 0x000d, inline 40 35 face id, story event portrait cluster를 분리해 검토한다.

2023inline 40 35 speaker rows
0speaker face mismatches
grounded-inline-4035-face-idspeaker selector
grounded-four-prompt-position-slotsargA status
6face draw cluster rows
6unique frames
589aligned high-0x000d dwords
partial-groundedcluster status

판정

idstatusdecisionevidence
face-slot-frame-clusterpartial-groundedA local cluster uses 0x00288012 followed by 0x000d000N and then 0x00168011; this is a strong face_01 slot/frame draw-source candidate.6 rows, frames [5, 4, 6, 0, 3, 7], roots ['0x0045d7a0'].
global-speaker-selectorgrounded-for-frame-idNormal dialogue speaker portraits use inline opcode bytes 40 35 aa bb before the speaker name. bb is the 1-based face id, so face_01 frame index is bb-1.2023 known-speaker prompts matched this opcode and 0 disagreed with the expected speaker face id.
dialogue-face-sidein-game-left-groundedargA is the prompt portrait position/layout slot. 0x00 is the in-game left portrait slot; 0x01 is the paired in-game right slot. 0x02 is the epilogue/special left slot, and 0x03 is the paired epilogue/special right slot.story-prompt-2373 is observed with Ataho portrait on the left and uses 40 35 00 01. argA distribution: [{'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.', 'count': 1329}, {'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.', 'count': 513}, {'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.', 'count': 98}, {'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.', 'count': 83}]. Kiri/Hwarin/Alibaba only use 0x02/0x03, matching the user observation that they speak in the post-game/epilogue-style talk segment rather than normal in-game dialogue.
story-event-portrait-clustermanual-matched-partial-groundedThe 5,4,6,0,3,7 cluster matches a story event portrait display sequence around story-prompt-2303..2309.User-observed order: #5 화린, #4 키리, #6 알리바바, then #0/#3/#7 for '그외 많은 동료들이여'. Extracted prompts 2303..2309 match that event flow.
manual-face-frame-legendmanual-hintUser observation gives the face_01 layout: top row #0 Ataho, #1 Smash, #2 Linshang, #3 Pethom, #4 Kiri, #5 Hwarin, #6 Alibaba, #7 Yuriwakamru.This is a manual gameplay/layout hint, not an EXE-derived selector proof. It constrains future static/runtime checks.
small-high0d-false-positivesnegative-filteredSmall high-word 0x000d dwords cannot be treated as portrait indexes without opcode context.Common rows such as 0x000d000b sit between 0x0019000b and 0x0020000b and appear in no-face roots too.
selector-root-packed-scalarsnegative-filteredselector_root rows like 0x000d014f/0x000d0364 are not face frame indexes.Their low word is outside face frame 0..15 and the row kind is packed-control-scalar.

일반 대화 inline 40 35 selector

40 35 aa bb가 speaker 이름 바로 앞에 붙는다. 확인된 화자 prompt 2023개에서 bb가 사용자 관찰 face id와 모두 일치했다. 따라서 bb는 1-based face id, 실제 face_01 frame은 bb-1로 본다.

추가 힌트 반영: 초상화 위치는 화자 고정이 아니라 프롬프트 레이아웃에 따라 달라진다. story-prompt-2373은 아타호 초상화가 왼쪽에 나오며 opcode가 40 35 00 01이므로 aa=0x00은 게임 중 왼쪽 슬롯으로 확정한다. aa=0x01은 paired in-game 오른쪽 슬롯으로 둔다. aa=0x02/0x03은 에필로그/특수 프롬프트의 좌우 후보 pair다.

argA layout 해석

argAprompt classslotsummaryevidence
0x00in-gameleftin-game prompt portrait left slotstory-prompt-2373 at render 0x004c062e uses 40 35 00 01 and Ataho portrait is observed on the left.
0x01in-gamerightin-game prompt portrait right slotpaired with 0x00 in-game prompt slot; exact screen sample still useful for direct right-side proof.
0x02epilogue-or-specialleftepilogue/special prompt portrait left slotstory-prompt-4235 at render 0x00546e98 uses 40 35 02 02 and Smash portrait is observed on the left.
0x03epilogue-or-specialrightepilogue/special prompt portrait right slotpaired with 0x02 in epilogue/special prompt layout; the same story-prompt-4235 render block later uses 40 35 03 01 for Ataho.

화자별 face id

speakerargA/face pairs
린샹[{"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.", "faceId": 3, "frameIndex": 2, "count": 259}, {"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.", "faceId": 3, "frameIndex": 2, "count": 221}, {"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.", "faceId": 3, "frameIndex": 2, "count": 11}, {"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.", "faceId": 3, "frameIndex": 2, "count": 2}]
스마슈[{"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.", "faceId": 2, "frameIndex": 1, "count": 384}, {"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.", "faceId": 2, "frameIndex": 1, "count": 141}, {"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.", "faceId": 2, "frameIndex": 1, "count": 27}, {"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.", "faceId": 2, "frameIndex": 1, "count": 16}]
아타호[{"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.", "faceId": 1, "frameIndex": 0, "count": 684}, {"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.", "faceId": 1, "frameIndex": 0, "count": 142}, {"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.", "faceId": 1, "frameIndex": 0, "count": 17}, {"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.", "faceId": 1, "frameIndex": 0, "count": 15}]
알리바바[{"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.", "faceId": 7, "frameIndex": 6, "count": 38}, {"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.", "faceId": 7, "frameIndex": 6, "count": 7}]
키리[{"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.", "faceId": 5, "frameIndex": 4, "count": 15}, {"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.", "faceId": 5, "frameIndex": 4, "count": 5}]
페톰[{"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.", "faceId": 4, "frameIndex": 3, "count": 11}, {"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.", "faceId": 4, "frameIndex": 3, "count": 9}, {"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.", "faceId": 4, "frameIndex": 3, "count": 3}, {"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.", "faceId": 4, "frameIndex": 3, "count": 2}]
화린[{"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.", "faceId": 6, "frameIndex": 5, "count": 8}, {"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.", "faceId": 6, "frameIndex": 5, "count": 6}]

argA 분포

argAprompt classslotcount
0x00in-gameleft1329
0x01in-gameright513
0x02epilogue-or-specialleft98
0x03epilogue-or-specialright83

face id 분포

face idface_01 framecount
0x010858
0x021568
0x032493
0x07645
0x04325
0x05420
0x06514

argA + face id pair 상위

argAface idframecount
0x000684
0x001384
0x002259
0x012221
0x010142
0x011141
0x02638
0x02127
0x03017
0x03116
0x03415
0x02015
0x03311
0x03211
0x0139
0x0258
0x0367
0x0356
0x0245
0x0233
0x0222
0x0032

샘플

promptspeakeropcodeargAprompt classslotface idframeface resourcetext
story-prompt-0002스마슈0x0044177a0x01in-gameright0x021False스마슈 / 「황금돼지? / 그런 것도 있었나?
story-prompt-0006스마슈0x004418d60x01in-gameright0x021False스마슈 / 「이런, 제기랄!! / 몬스터가 나온다니 그만둬야겠군
story-prompt-0007스마슈0x004418d60x01in-gameright0x021False스마슈 / 「칫! 열쇠가 잠겼잖아 / 여긴 통행금지인 모양이군
story-prompt-0010스마슈0x004419e00x00in-gameleft0x021False스마슈 / 「어라? 보물상자!! / 뭐가 들었을까?!
story-prompt-0012스마슈0x004419e00x00in-gameleft0x021False스마슈 / 「더이상 이상한 장치는 없나보군」 / 좋아 이 약을 갖고 가자!
story-prompt-0014스마슈0x00441b000x00in-gameleft0x021False스마슈 / 「어라? 뭐지?!
story-prompt-0015스마슈0x00441b000x00in-gameleft0x021False스마슈 / 「풋! 식은죽 먹기로군
story-prompt-0017스마슈0x00441bae0x00in-gameleft0x021False스마슈 / 「아무래도 저 석상이 거슬리는데 / 흐음... 뭔가 좋은 방법이 없나?!
story-prompt-0018스마슈0x00441bae0x00in-gameleft0x021False스마슈 / 「... 왠지 불길한 느낌이 드는데 / 이 석상... 혹시 움직이는 건...
story-prompt-0019스마슈0x00441bae0x00in-gameleft0x021False스마슈 / 「움직일 것같진 않은데... / 혹시... 보물상자를 여는 순간...
story-prompt-0020스마슈0x00441bae0x00in-gameleft0x021False스마슈 / 「칫! 돌로 만든 석상쯤이야 / 식은죽 먹기지 뭐!
story-prompt-0021스마슈0x00441bae0x00in-gameleft0x021False스마슈 / 「쨔~안! / 오늘은 컨디션이 만점이니까
story-prompt-0024스마슈0x00441e120x00in-gameleft0x021False스마슈 / 「휴우~이제 안전하게 / 약을 손에 넣을 수 있겠군
story-prompt-0025스마슈0x00441e120x00in-gameleft0x021False스마슈 / 「어? 이거... 최근에 부순 것같은데 / 도대체 누가 그랬지?
story-prompt-0027스마슈0x00441efa0x00in-gameleft0x021False스마슈 / 「세사람 모두 모이지 않으면 / 이 앞으론 진행할 수 없겠군
story-prompt-0031아타호0x004420520x01in-gameright0x010False아타호 / 이자가... 페톰녀석이 말했던 / 푸줏간 주인인가?)
story-prompt-0033아타호0x004420e80x01in-gameright0x010False아타호 / 이녀석... 왠지 위험한 놈이군 / 왠지 이놈에겐......
story-prompt-0037아타호0x0044222a0x00in-gameleft0x010False아타호 / 「엇!? 열쇠가 잠겼잖아 / 게다가 열쇠구멍도 없고...
story-prompt-0041아타호0x004423200x00in-gameleft0x010False아타호 / 「열쇠가 잠긴 것 / 같진 않구만
story-prompt-0043아타호0x004423200x00in-gameleft0x010False아타호 / 「이건 뭐지?!
story-prompt-0044아타호0x004423200x00in-gameleft0x010False아타호 / 「휴우~정말 / 힘들었다!
story-prompt-0046아타호0x0044243a0x00in-gameleft0x010False아타호 / 「저 석상을 치우지 않으면 / 아이템은 못 얻겠군...
story-prompt-0048아타호0x0044243a0x00in-gameleft0x010False아타호 / 「이야~정말 잘 만든 석상이네 / 금방이라도 움직일 것같군
story-prompt-0049아타호0x0044243a0x00in-gameleft0x010False아타호 / 「?... 안 움직이네 / 이상한 장치로군
story-prompt-0050아타호0x0044243a0x00in-gameleft0x010False아타호 / 「상자 내용물은 갖고싶지만 / 석상이 버티고있으니...
story-prompt-0051아타호0x0044243a0x00in-gameleft0x010False아타호 / 「휴... 겨우 이겼다! / 정말 운이 좋았어!
story-prompt-0052아타호0x0044243a0x00in-gameleft0x010False아타호 / 「... 부서져버렸으니 / 아무일도 없겠지!!
story-prompt-0054아타호0x004426b60x00in-gameleft0x010False아타호 / 「세명? 그렇다면 혼자선 / 별 도리가 없겠군...
story-prompt-0056아타호0x0044e1040x00in-gameleft0x010False아타호 / 「이곳이『지옥의 밑바닥』인가?
story-prompt-0057린샹0x0044e13e0x01in-gameright0x032False린샹 / 「응, 이곳이 입구예요! / 이 플로어 어딘가에
story-prompt-0060아타호0x0044e22c0x00in-gameleft0x010False아타호 / 「코스?
story-prompt-0061린샹0x0044e24e0x01in-gameright0x032False린샹 / 「수련의 난이도를 선택하는 거예요 / 어서 선택하세요!
story-prompt-0066린샹0x0044e3d80x00in-gameleft0x032False린샹 / 「응? 두 팀씩이나? / 정말 희한한 일이네!
story-prompt-0070스마슈0x0044e4dc0x00in-gameleft0x021False스마슈 / 「안열리는데...
story-prompt-0071린샹0x0044e5040x01in-gameright0x032False린샹 / 「해골이 열어 줄거예요 / 일단, 해골이 있는 곳으로 가죠
story-prompt-0100아타호0x0044eacc0x00in-gameleft0x010False아타호 / 「아뿔싸!! / 함정인가?!
story-prompt-0102스마슈0x0044eb320x00in-gameleft0x021False스마슈 / 「쳇! 헛물켰다~
story-prompt-0120린샹0x0044ef400x00in-gameleft0x032False린샹 / 「자, 드디어 수행 개시로군요 / 주의해야 할 점은, 수련 도중에
story-prompt-0123아타호0x0044f0660x01in-gameright0x010False아타호 / 「허어? 상당히 / 엄격한 룰이로군!
story-prompt-0124스마슈0x0044f0a80x00in-gameleft0x021False스마슈 / 「힘들면 힘들수록 / 해낸 보람이 크겠죠
story-prompt-0125스마슈0x0044f0a80x00in-gameleft0x021False스마슈 / 「이, 이봐 젖는단 말야!
story-prompt-0126린샹0x0044f12a0x01in-gameright0x032False린샹 / 「호호, 역시 당신은 / 물이 무서운가 보네요?
story-prompt-0127스마슈0x0044f1740x00in-gameleft0x021False스마슈 / 「아니라구!! / 무서운 게 아니라, 싫다구!!
story-prompt-0128아타호0x0044f1c00x01in-gameright0x010False아타호 / 「허허허, 싫은 게 아니라 / 무서운 거겠지!!!
story-prompt-0129스마슈0x0044f20e0x00in-gameleft0x021False스마슈 / 「... 아자씨, 요새... / 참견이 부쩍 늘었네요!
story-prompt-0130린샹0x0044f2580x01in-gameright0x032False린샹 / 「화제를 바꾸려고 / 상당히 노력하는군요, 호호호!
story-prompt-0131스마슈0x0044f2a60x00in-gameleft0x021False스마슈 / 「칫...! 들켜버렸군...
story-prompt-0132스마슈0x0044f2a60x00in-gameleft0x021False스마슈 / 「물에 들어가는 건 그만두자구!
story-prompt-0133아타호0x0044f31a0x01in-gameright0x010False아타호 / 「하하하, 알았다구!
story-prompt-0148아타호0x0044f6ea0x00in-gameleft0x010False아타호 / 「... 이봐 클리어 선물이 / 고작 이것 뿐이야!
story-prompt-0159스마슈0x0044fa360x00in-gameleft0x021False스마슈 / 「아니, 우리들 모습으로 변신하다니 / 간이 큰 놈들이군!
story-prompt-0160린샹0x0044fa8e0x01in-gameright0x032False린샹 / 「잠깐만! / 내 흉내내는 건 그만둬!
story-prompt-0161스마슈0x0044fad80x00in-gameleft0x021False스마슈 / 「이번엔 절대로 안진다!
story-prompt-0162아타호0x0044fb140x00in-gameleft0x010False아타호 / 「허허... 기가막힌 / 변신술이구만...
story-prompt-0164린샹0x0044fb8a0x01in-gameright0x032False린샹 / 「지금, 그런 말할 때가 아녜요
story-prompt-0165아타호0x0044fbca0x00in-gameleft0x010False아타호 / 「후... 위험할 뻔했구만
story-prompt-0166스마슈0x0044fbfa0x01in-gameright0x021False스마슈 / 「헉헉... 헉헉...
story-prompt-0167린샹0x0044fc220x00in-gameleft0x032False린샹 / 「스마슈... 왠지 / 발정난 개같아 보기 안좋아요!
story-prompt-0168아타호0x0044fc700x01in-gameright0x010False아타호 / 「...『같아』가 아니라, / 이녀석은 항상 왕성한 상태야!
story-prompt-0169스마슈0x0044fcc80x00in-gameleft0x021False스마슈 / 「그만둬요!
story-prompt-0173스마슈0x0044fdd60x00in-gameleft0x021False스마슈 / 「오, 인정서!!! / 이걸로 이 수련도 클리어다!
story-prompt-0177아타호0x004557000x00in-gameleft0x010False아타호 / 「어라? 이런 곳에 도장이...
story-prompt-0178스마슈0x004557380x01in-gameright0x021False스마슈 / 「암각권인가 뭔가하는 유파의 / 도장인가 봐요
story-prompt-0180아타호0x004557ec0x00in-gameleft0x010False아타호 / 「글쎄... 그건 나도 잘 모르겠네... / ... 이유야 어찌됐건 상관없네!!
story-prompt-0181스마슈0x0045584e0x01in-gameright0x021False스마슈 / 「예?
story-prompt-0182아타호0x0045586e0x00in-gameleft0x010False아타호 / 「만약... 무언가를 훔치려고 했거나, / 방해할 생각이 있었더라도...
story-prompt-0185스마슈0x0045598c0x01in-gameright0x021False스마슈 / 「그랬군요... 아저씨는 / 그토록 린샹을......
story-prompt-0186아타호0x004559d20x00in-gameleft0x010False아타호 / 「헛짚었네!! / 괜한 상상일랑 하지 말게!
story-prompt-0187스마슈0x00455a240x00in-gameleft0x021False스마슈 / 「이곳이 암각권 도장인가... / 수하가 두명뿐이라니 쓸쓸하군...
story-prompt-0192린샹0x00455bb40x00in-gameleft0x032False린샹 / 「론!!
story-prompt-0196린샹0x00455cd40x00in-gameleft0x032False린샹 / 「총통... 론... / 저는...
story-prompt-0203아타호0x00455eb80x00in-gameleft0x010False아타호 / 「쓸데없는 신경쓰지말게!
story-prompt-0207린샹0x00455fde0x00in-gameleft0x032False린샹 / 「저기 오른쪽 / 맨 끝방이 보물창고예요
story-prompt-0210아타호0x0045609c0x01in-gameright0x010False아타호 / 「어차피 내겐 필요없는 것일세 / 자네에게 맡겨두겠네!!
story-prompt-0211린샹0x004560f40x00in-gameleft0x032False린샹 / 「... 고마워요 / 소중하게 사용할께요
story-prompt-0212아타호0x0045613a0x00in-gameleft0x010False아타호 / 「이런... 열쇠가 잠겨있잖아 / 하는 수 없군, 다른 델 살펴보자
story-prompt-0213린샹0x004560f40x00in-gameleft0x032False린샹 / 「잠깐만 기다려요 / 지금 열어줄테니까!
story-prompt-0216린샹0x0045621e0x00in-gameleft0x032False린샹 / 「... 훔친 물건을 / 장비하려니
story-prompt-0218아타호0x004562b60x00in-gameleft0x010False아타호 / 「린샹!
story-prompt-0219린샹0x004562d80x01in-gameright0x032False린샹 / 「아타호?! / 어째서 이런 곳엘...
story-prompt-0221아타호0x004563640x00in-gameleft0x010False아타호 / 「... 그곳에 떨어져 있는 건, 혹시 / 나의『호랑이 발톱』이...?!
story-prompt-0222스마슈0x004563c20x01in-gameright0x021False스마슈 / 「으이그~아저씨! 하고 싶었던 / 말은 정작 그게 아니잖아요!
story-prompt-0223린샹0x004564280x00in-gameleft0x032False린샹 / 「... 맞아요. 이건 / 아타호 것이었죠!
story-prompt-0227스마슈0x0045657e0x01in-gameright0x021False스마슈 / 「왜, 우리가 린샹과 싸워야하지...
story-prompt-0228린샹0x004565c20x00in-gameleft0x032False린샹 / 「아직도 이해를 못하나요... / 하지만, 어쩔 수 없어요...
story-prompt-0229린샹0x004565c20x00in-gameleft0x032False린샹 / 「... 예상대로 저의 완패로군요!
story-prompt-0230스마슈0x004566560x01in-gameright0x021False스마슈 / 「... 이봐 린샹!! / 대체 무슨 일이 있었는지
story-prompt-0232아타호0x004566c60x00in-gameleft0x010False아타호 / 「스마슈가 말한 대로 / 무슨 일인지 설명해주겠나?
story-prompt-0234린샹0x004567680x01in-gameright0x032False린샹 / 「아타호... / 스마슈... 고마워요
story-prompt-0236아타호0x004567fc0x00in-gameleft0x010False아타호 / 「아직도 그런 하찮은 일에 / 구애를 받는 겐가?

부분 승격: face draw cluster 후보

0x00288012 → 0x000d000N → 0x00168011 문맥까지 맞는 행만 승격했다. 이것은 위의 일반 대화 selector가 아니라, 특정 story event에서 face_01 frame들을 직접 그리는 local draw-source cluster로 분리한다.

수동 관찰 기준 일반 대화 주 사용 프레임은 [0, 1, 2]이고, 이 cluster에는 [1, 2]가 없다.

draw opcodeslot/frameframemanual rolelocal idxargsubscriptrootseqresources
0x0045df680x0045df6c5화린130x0045e0080x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]
0x0045df800x0045df844키리230x0045e0080x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]
0x0045df980x0045df9c6알리바바330x0045e0080x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]
0x0045dfb80x0045dfbc0그외 동료들 동시 컷 / 아타호430x0045e0440x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]
0x0045dfd00x0045dfd43그외 동료들 동시 컷 / 페톰530x0045e0080x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]
0x0045dff00x0045dff47그외 동료들 동시 컷 / 유리와카마루630x0045e0440x0045d7a0["scene-text-group-009"]["map_c1.cns", "map_c2.cns", "cara_sm2.cns", "face_01.cns", "map2_01c.cns", "map2_13c.cns", "map_l1.cns", "map_l2.cns", "map2_03l.cns", "cara_12.cns", "spot.cns", "map4_01l.cns"]

Story Event 초상화 매칭

사용자 관찰로 `5,4,6,0,3,7` cluster는 일반 speaker selector가 아니라 특정 이벤트에서 초상화를 순서대로 보여주는 연출과 맞는 것으로 분리했다.

framerole
0그외 동료들 동시 컷 / 아타호
3그외 동료들 동시 컷 / 페톰
4키리
5화린
6알리바바
7그외 동료들 동시 컷 / 유리와카마루

관련 prompt 흐름

promptstatusstartblocksourcetext
story-prompt-2303found0x004be4b0render-stream-004be44e화린...
story-prompt-2304found0x004be4c8render-stream-004be44e키리...
story-prompt-2305found0x004be4e0render-stream-004be44e알리바바...
story-prompt-2306found0x004be4fcrender-stream-004be44e... 그외 많은 동료들이여...
story-prompt-2307found0x004be521render-stream-004be51c아타호 / 「이봐! 우린『그외』란 말이지?
story-prompt-2308found0x004be55frender-stream-004be558스마슈 / 「... 내 장미빛 회상장면 안으로 / 못생긴 얼굴을 들이 밀다니!!
story-prompt-2309found0x004be5b8render-stream-004be5b4우... 참혹하군... 마지막 순간까지 / 이런 썰렁한 아자씨 얼굴을 / 마주하고 죽어가다니...

수동 face frame 힌트

게임 관찰로 받은 face_01 80x80 셀 순서. EXE selector 증거는 아니며, 이후 speaker/frame 검증의 기준값으로만 사용한다.

framelabelusagesource
0아타호main-dialogue-dominantuser-observed
1스마슈main-dialogue-dominantuser-observed
2린샹main-dialogue-dominantuser-observed
3페톰story-dialogueuser-observed
4키리story-eventuser-observed
5화린story-eventuser-observed
6알리바바story-eventuser-observed
7유리와카마루portrait-only-story-eventuser-observed
8황금돼지 두루마리 관련 인물brief-storyuser-observed

high-word 0x000d 분류

값만 보면 후보가 많지만, opcode 문맥이 없으면 false positive가 많다.

classificationcount
high0d-other154
face-resource-descriptor331
text/control-run-not-face44
small-high0d-other-context54
face-draw-cluster-candidate6

low word 상위 빈도

low wordcount
0x9012330
0x000b45
0xea0229
0x000d29
0x036428
0xe80225
0x036521
0x000020
0xffd03
0x00063
0x03523
0x000c3
0x840f2
0x8f0f2
0x850f2
0x05d12
0x00152
0x001c2

분류별 샘플

classvavalueprevnextrootroot has faceseq
high0d-other0x0040f9dc0x000dffd00x830000000x50000e00-False[]
high0d-other0x00410ab80x000de9000x00c608450x458b0000-False[]
high0d-other0x004190bc0x000d840f0x000478830x458b0000-False[]
high0d-other0x0041dffc0x000dffd00x830000000x50000e00-False[]
high0d-other0x0041e2f00x000dffd00x830000000x50000e00-False[]
high0d-other0x0041f0d80x000d840f0xc08500000x3d830000-False[]
high0d-other0x0042c2ac0x000d8f0f0x64f883080x458a0000-False[]
high0d-other0x0042cc400x000d2de80x016a57560x04c48300-False[]
high0d-other0x0042dadc0x000d8f0f0x64f883080x458a0000-False[]
high0d-other0x0042e8b80x000d850f0x000878830x458b0000-False[]
face-resource-descriptor0x0043e7700x000d90120x004f87e50x0043c125-False[]
face-resource-descriptor0x0043e7c80x000d90120x0043c17a0x0043c125-False[]
face-resource-descriptor0x0043e8380x000d90120x005460290x0043c125-False[]
face-resource-descriptor0x0043e8980x000d90120x0043c17a0x0043c125-False[]
face-resource-descriptor0x0043e9100x000d90120x0043c17a0x0043c125-False[]
face-resource-descriptor0x0043f9fc0x000d90120x001000100x0043ea44-False[]
face-resource-descriptor0x0043fa440x000d90120x001000100x0043ea44-False[]
face-resource-descriptor0x0043fa880x000d90120x0043ea750x0043ea44-False[]
face-resource-descriptor0x0043fac40x000d90120x001000100x0043ea44-False[]
face-resource-descriptor0x0043fb1c0x000d90120x001000100x0043ea44-False[]
text/control-run-not-face0x0043e9780x000d000b0x0019000b0x0020000b-False[]
text/control-run-not-face0x0043fb6c0x000d000b0x0019000b0x0020000b-False[]
text/control-run-not-face0x004410400x000d000b0x0019000b0x0020000b0x0043fc5cFalse["scene-text-group-004"]
text/control-run-not-face0x004494840x000d000b0x0019000b0x0020000b0x00444a44True["scene-text-group-005"]
text/control-run-not-face0x0044dc840x000d000b0x0019000b0x0020000b0x0044aad0True["scene-text-group-006"]
text/control-run-not-face0x004543280x000d000b0x0019000b0x0020000b0x0044dd5cFalse["scene-text-group-007"]
text/control-run-not-face0x0045ccac0x000d000b0x0019000b0x0020000b0x00459dc4True["scene-text-group-008"]
text/control-run-not-face0x0045ede00x000d000b0x0019000b0x0020000b0x0045d7a0True["scene-text-group-009"]
text/control-run-not-face0x004668fc0x000d000b0x0019000b0x0020000b0x0045d7a0True["scene-text-group-009"]
text/control-run-not-face0x0046c1140x000d000b0x0019000b0x0020000b0x00468b18True["scene-text-group-010"]
small-high0d-other-context0x004580840x000d00000x000000000x000000000x0044dd5cFalse["scene-text-group-007"]
small-high0d-other-context0x0046c6240x000d000b0x000000000x0020000b0x00468b18True["scene-text-group-010"]
small-high0d-other-context0x0047440c0x000d000d0x030101670x030201670x004741c4True["scene-text-group-011"]
small-high0d-other-context0x00488c0c0x000d000d0x030101670x030201670x0048458cTrue["scene-text-group-013"]
small-high0d-other-context0x004a465c0x000d00000x000201210x0e0500c20x004a3decFalse[]
small-high0d-other-context0x004a467c0x000d00000x000401210x000201210x004a3decFalse[]
small-high0d-other-context0x004b1aa80x000d00000x000601210x000c01210x004ac10cTrue["scene-text-group-017"]
small-high0d-other-context0x004b1ae00x000d00000x000401210x000601210x004ac10cTrue["scene-text-group-017"]
small-high0d-other-context0x004dc9200x000d000c0x000400030x000d000d0x004dac1cFalse["scene-text-group-021"]
small-high0d-other-context0x004dc9240x000d000d0x000d000c0x000d000d0x004dac1cFalse["scene-text-group-021"]
face-draw-cluster-candidate0x0045df6c0x000d00050x002880120x001680110x0045d7a0True["scene-text-group-009"]
face-draw-cluster-candidate0x0045df840x000d00040x002880120x001680110x0045d7a0True["scene-text-group-009"]
face-draw-cluster-candidate0x0045df9c0x000d00060x002880120x001680110x0045d7a0True["scene-text-group-009"]
face-draw-cluster-candidate0x0045dfbc0x000d00000x002880120x001680110x0045d7a0True["scene-text-group-009"]
face-draw-cluster-candidate0x0045dfd40x000d00030x002880120x001680110x0045d7a0True["scene-text-group-009"]
face-draw-cluster-candidate0x0045dff40x000d00070x002880120x001680110x0045d7a0True["scene-text-group-009"]

selector-root high-0x000d reject

이 값들은 기존 selector-root 구조에서 눈에 띄지만, frame 0..15가 아니므로 초상화 번호로 올리지 않는다.

rootrowvaluelowkindselectorreason
0x00444a440x000d014f0x014fpacked-control-scalarlow word is outside face frame 0..15
0x0044aad00x000d03640x0364packed-control-scalarlow word is outside face frame 0..15
0x0053c4a40x000d03640x0364packed-control-scalarlow word is outside face frame 0..15

face_01 포함 prompt 샘플

리소스 availability와 실제 speaker/frame 선택은 아직 같은 증거가 아니다. 런타임 검증 시 이 샘플을 기준으로 face frame을 비교한다.

promptstartblockclasssourcefirst linesample
story-prompt-02880x0045ee64event-dialogue-block-005map-dialogue-like주작권사주작권사 / 「이곳은 주작의 시련이 있는 곳! / 안쪽에 주작님이 계십니다
story-prompt-02890x0045eec4event-dialogue-block-005map-dialogue-like주작권사주작권사 / 「주작권사는 일정 시기가 되면 / 이곳으로 와 수련을 한답니다
story-prompt-02900x0045ef24event-dialogue-block-005map-dialogue-like주작권사주작권사 / 「주작님에게 인정을 받아야만 / 비로서, 주작권사가 될 수 있죠
story-prompt-02910x0045ef84event-dialogue-block-005map-dialogue-like엉아(형님)엉아(형님) / 「으응? 용케 여~까징 왔구만 / 머슬1호 룸에 온걸 환영해부러
story-prompt-02920x0045efe2event-dialogue-block-005map-dialogue-like... 그란디, 여근 출입금지랑게!... 그란디, 여근 출입금지랑게! / 존~말할 때 가부러!!
story-prompt-07170x0046c6d7event-dialogue-block-007story-dialogue-like다리오스다리오스 / 「황금돼지야~ / 넌, 대체 어디 있는 거니?
story-prompt-07180x0046c72bevent-dialogue-block-007story-dialogue-like다리오스다리오스 / 「역시, 황금돼지는 / 이곳에 없는 걸까...
story-prompt-07190x0046c779event-dialogue-block-007story-dialogue-like아타호아타호 / 「황금돼지? 생각해보니... / 두루마리에 뭔가 그려져...
story-prompt-07200x0046c7cfevent-dialogue-block-007story-dialogue-like다리오스다리오스 / 「으응? 뭔가 단서라도... / 제발 좀 보여줘!!
story-prompt-07210x0046c81cevent-dialogue-block-007story-dialogue-like아타호는아타호는 / 「두루마리」를 보여줬다
story-prompt-07220x0046c84bevent-dialogue-block-007story-dialogue-like다리오스다리오스 / 「이것은... 으와, 굉장한 발견이다! / 제발 이 두루마리를 내게 줘!
story-prompt-13640x00484b18event-dialogue-block-012map-dialogue-like백호권 사범백호권 사범 / 「이걸 등에 지고, 여길 끝까지 / 지나가야 하네!!
story-prompt-13650x00484b6bevent-dialogue-block-012map-dialogue-like아타호아타호 / 「술을 마신데다가 / 무거운 짐까지... 괴롭군...
story-prompt-13660x00484bb2event-dialogue-block-012map-dialogue-like아타호의 밸런스를 유지하면서아타호의 밸런스를 유지하면서 / 평균대 끝까지 진행하세요
story-prompt-13670x00484bf6event-dialogue-block-012map-dialogue-like←로 몸을 왼쪽으로 기울이고,←로 몸을 왼쪽으로 기울이고, / →로 몸을 오른쪽으로 기울입니다 / ↓로 중심을 잡으면서 전진합니다
story-prompt-13680x00484c6aevent-dialogue-block-012map-dialogue-like... 스페이스키로 힘을 모았다가... 스페이스키로 힘을 모았다가 / 떼면, 점프가 가능합니다!! / 특히, 장애물을 넘을 땐 조심하세요
story-prompt-15840x004991ffevent-dialogue-block-016map-dialogue-like아타호아타호 / 「아야야...
story-prompt-15850x00499221event-dialogue-block-016map-dialogue-like린샹린샹 / 「아아...
story-prompt-15860x0049924bevent-dialogue-block-016map-dialogue-like아타호아타호 / 「린샹, 괜찮나?
story-prompt-15870x00499273event-dialogue-block-016map-dialogue-like린샹린샹 / 「네, 겨우...
story-prompt-15880x004992a1event-dialogue-block-016map-dialogue-like아타호아타호 / 「사범! 이건 도대체 / 무슨 일이요?!
story-prompt-15890x004992e5event-dialogue-block-016map-dialogue-like린샹린샹 / 「이봐요, 이건 좀 / 심하잖아요?!
story-prompt-15900x0049931eevent-dialogue-block-016map-dialogue-like역시, 그 영감은...역시, 그 영감은... / 사기꾼이었음에 / 틀림없어요!!
story-prompt-15910x00499366event-dialogue-block-016map-dialogue-like백호권 사범백호권 사범 / 「허허허, 그렇게 화내지 말게 / 그건 마지막 수련이라네
story-prompt-24990x004c76b4event-dialogue-block-022map-dialogue-like사내사내 / 「여긴, 무투가라면 꼭 한 번쯤은 / 찾게 된다는『호랑이동굴』!
story-prompt-25000x004c7708event-dialogue-block-022map-dialogue-like... 하지만, 어쩐지 자네들은... 하지만, 어쩐지 자네들은 / 이곳엔 어울리지 않는 것같군!
story-prompt-25010x004c7755event-dialogue-block-022map-dialogue-like스마슈스마슈 / 「헛소리 말라구!
story-prompt-25020x004c7786event-dialogue-block-022map-dialogue-like여자여자 / 「최근에는 도구를 사용하는 유파가 / 늘고 있지만, 권법은 기본은
story-prompt-25030x004c77dcevent-dialogue-block-022map-dialogue-like맨손이죠! 맨손 공격에 약하면,맨손이죠! 맨손 공격에 약하면, / 무기를 써도 별 볼일없죠!!
story-prompt-25040x004c782fevent-dialogue-block-022map-dialogue-like스마슈스마슈 / 「난, 맨손공격도 강하지만, / 굳이 맨손공격은 안한다구!
story-prompt-25050x004c788cevent-dialogue-block-022map-dialogue-like노인노인 / 「자네들, 열심히 수련한 모양인데 / 어때? 성과는 있었나?!
story-prompt-25060x004c78e6event-dialogue-block-022map-dialogue-like권법가권법가 / 「『주작권』의 오의『열화·폭염권』 / 은 상대를 공격한 순간, 대폭발을
story-prompt-27940x004e49dbevent-dialogue-block-026map-dialogue-like스마슈스마슈 / 「뭐, 뭐야?! / 멋대로 닫혀버리다니?!
story-prompt-27950x004e4a29event-dialogue-block-026map-dialogue-like스마슈스마슈 / 「이런, 왜 이렇게 안 열리지? / 이거 꼼짝없이 갇혀버렸군
story-prompt-27960x004e4a8bevent-dialogue-block-026map-dialogue-like스마슈스마슈 / 「어라? 왜 안 열리는 거야!? / 이봐, 문 좀 열어줘! 어서!!
story-prompt-27970x004e4af5event-dialogue-block-026map-dialogue-like스마슈스마슈 / 「제길, 꼼짝없이 갇혔군! 좋아, / 안으로 들어가 보자!!!
story-prompt-27980x004e4b56event-dialogue-block-026map-dialogue-like시험관시험관 / 「허허, 새로 들어온 모양이구만! / 한번 들어온 이상, 못 나간다네
story-prompt-32530x004ff50fevent-dialogue-block-033map-dialogue-like린샹린샹 / 「헛되이 시간 보내지 말고 / 빨리 호랑이마을로 가죠
story-prompt-32540x004ff566event-dialogue-block-033map-dialogue-like사내사내 / 「휴우... 밭일도 보통이 아니로군 / 수입도 짭짤하지 않고......
story-prompt-32550x004ff5beevent-dialogue-block-033map-dialogue-like여자여자 / 「여기 신의 산에는 당신과 같은 / 무투가들이 많이 찾아오지만,
story-prompt-32560x004ff614event-dialogue-block-033map-dialogue-like거의 대부분의 사람들이 목적도거의 대부분의 사람들이 목적도 / 달성하지 못한 채 / 산을 내려가고 말죠!
story-prompt-32570x004ff67aevent-dialogue-block-033map-dialogue-like노인노인 / 「이 산에는 신의 사자가 / 은거하고 있다는 전설이
story-prompt-41790x0053e4b4event-dialogue-block-043map-dialogue-like근육맨1호근육맨1호 / 「이엿!! / 머슬, 머슬!!
story-prompt-41800x0053e4f0event-dialogue-block-043map-dialogue-like근육맨2호근육맨2호 / 「이곳은 호랑이동굴! / 나가려는 겁니까?
story-prompt-41810x0053e53fevent-dialogue-block-043map-dialogue-like린샹린샹 / 「아타호! / 잠깐만요!!
story-prompt-41820x0053e56cevent-dialogue-block-043map-dialogue-like난, 그 영감을 혼내주지난, 그 영감을 혼내주지 / 않으면 분이 안풀릴 것같으니 / 다시 돌아가요!!
story-prompt-41830x0053e5cfevent-dialogue-block-043map-dialogue-like스마슈스마슈 / 「정말, 제멋대로인 아가씨로군!
story-prompt-41840x0053e60bevent-dialogue-block-043map-dialogue-like린샹린샹 / 「시끄러워요!!
story-prompt-41850x0053e63bevent-dialogue-block-043map-dialogue-like아타호아타호 / 「수련도 다 끝났고... / 난 무투대회에 참가하기 위해

다음 타깃

[
  "Trace the renderer consumer for inline 40 35 aa bb only if exact coordinate writes are needed.",
  "Trace the renderer consumer for inline 40 35 aa bb only if exact coordinate writes are needed.",
  "Keep the localized frames 5,4,6,0,3,7 tied to the known story event portrait display unless a broader consumer proves otherwise."
]