Battle Result Layer Trace Review
공격자 action VM의 0xc2 결과음과 피격 대상 result object script, target+0x6e 데미지 샘플을 분리해 추적한 결과.
statustarget-result-layer-static-grounded
target script rows31
runtime result rows0
damage rows0
Conclusions
- `a6 -> 0x433f0e`가 payload hit unit을 고르고 target+0x6d/+0x6e에 결과를 만드는 정적 경로와 맞물린다.
- `0xc2`는 공격자 action VM 안에 있지만, 실제 데미지 표시와 피격 프레임 유지는 target result object script에서 별도로 진행된다.
- `0x00454578`에는 actor sideFlags(+0x62) bit 0x20 / 0x08 조건분기가 있다. 후속 result display/helper 분석에서 0x20은 full miss, 0x08은 guard/glancing chip-result 표시 경로로 승격됐다.
- 0xc2 consumer의 +0x10 alt operand 경로와 palette flash/fade child script가 critical presentation으로 승격된다.
Target Tail Usage
| tail VA | count | frames | families | statuses | damage values | time ms |
|---|
Target Script Blocks
| start | label | meaning | frames | WLK | helpers |
|---|---|---|---|---|---|
| 0x00454558 | idle-frame0-loop | 대기 프레임 0을 유지하는 루프 | [0] | - | [] |
| 0x00454560 | idle-jump-entry | 런타임 첫 피격 전/단발 피격에서 cursor가 머무는 진입점 | [0] | - | [] |
| 0x00454578 | result-branch | 피격 결과 플래그 0x20/0x08 분기. 0x20은 full miss, 0x08은 guard/glancing chip result로 승격 | [4] | - | [2] |
| 0x00454594 | branch-0x20-full-miss | 0x20 full-miss 표시 경로: effect WLK id 12 + helper 0x05 | [0] | WLK id 12 | [5] |
| 0x004545ac | branch-0x08-guard-glancing | 0x08 guard/glancing chip-result 표시 경로: effect WLK id 11 + helper 0x16 | [0] | WLK id 11 | [22] |
| 0x004545c4 | common-result-prelude | 공통 피격 반응 전처리/플래그 조작 | [] | - | [] |
| 0x004545d0 | hit-frame4-loop | 피격 프레임 4 유지/흔들림 루프. 반복타 런타임 결과가 주로 여기에 찍힘 | [4] | - | [7] |
Result Branch Paths
0x20/0x08 분기는 후속 display/helper 분석으로 full miss / guard-glancing chip result 표시 경로까지 승격됐다. 이 페이지는 정적 EXE 분기와 결과 스크립트만 근거로 삼는다.
| block | VA | op | summary | bytes |
|---|---|---|---|---|
| result-branch | 0x00454578 | 0x13 | if mode=0xc6 field=0x62 mask/value=0x20 -> 0x0045459c | 13 c6 62 20 9c 45 45 00 |
| result-branch | 0x00454580 | 0x13 | if mode=0xc6 field=0x62 mask/value=0x08 -> 0x004545b4 | 13 c6 62 08 b4 45 45 00 |
| result-branch | 0x00454588 | 0xbd | helper id 0x02 | bd 02 00 00 |
| result-branch | 0x0045458c | 0x21 | set target frame=4, gate=8, mode=1 | 21 01 08 00 00 00 04 00 |
| branch-0x20-full-miss | 0x00454594 | 0x03 | jump -> 0x004545c4 | 03 00 00 00 c4 45 45 00 |
| branch-0x20-full-miss | 0x0045459c | 0x24 | effect/cast cue WLK id 12 | 24 01 00 0c |
| branch-0x20-full-miss | 0x004545a0 | 0xbd | helper id 0x05 | bd 05 00 00 |
| branch-0x20-full-miss | 0x004545a4 | 0x21 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
| branch-0x08-guard-glancing | 0x004545ac | 0x03 | jump -> 0x004545c4 | 03 00 00 00 c4 45 45 00 |
| branch-0x08-guard-glancing | 0x004545b4 | 0x24 | effect/cast cue WLK id 11 | 24 01 00 0b |
| branch-0x08-guard-glancing | 0x004545b8 | 0xbd | helper id 0x16 | bd 16 00 00 |
| branch-0x08-guard-glancing | 0x004545bc | 0x21 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
Runtime Hit Pairing
| phase | hit | damage ms | damage | target frame | target VA | WLK | sound delta | sound script |
|---|
Sound Role Cross-check
| WLK | 0x24 effect | 0xc2 normal | 0xc2 alt | display branch | runtime | role |
|---|---|---|---|---|---|---|
| WLK id 01 | 0 | 0 | 0 | 0 | 0 | |
| WLK id 04 | 0 | 39 | 0 | 0 | 0 | 0xc2 normal heavy/body hit. 맹호스페셜 후반부에서 EXE operand로 확인됨. |
| WLK id 05 | 0 | 22 | 0 | 0 | 0 | 0xc2 normal finisher/heavy hit. 맹호스페셜/선렬각 마지막 결과음에서 EXE operand로 확인됨. |
| WLK id 06 | 9 | 0 | 0 | 0 | 0 | 0x24 cast/effect cue. 호격권/맹호의 울부짖음 계열 시전음 후보. |
| WLK id 12 | 0 | 0 | 0 | 1 | 0 | target result branch에서 0x20 full miss / HP-apply skip의 MISS helper 0x05와 함께 선택된다. |
| WLK id 13 | 0 | 0 | 0 | 0 | 0 | |
| WLK id 15 | 4 | 0 | 0 | 0 | 0 | 0x24 clone/cast cue. 인법·분신술 계열. |
| WLK id 25 | 0 | 0 | 0 | 0 | 0 | |
| WLK id 36 | 0 | 0 | 0 | 0 | 0 |
Target Script Decode
| VA | op | name | len | summary | bytes |
|---|---|---|---|---|---|
| 0x00454558 | 0x21 | sprite/frame write | 8 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
| 0x00454560 | 0x03 | jump | 8 | jump -> 0x00454558 | 03 00 00 00 58 45 45 00 |
| 0x00454568 | 0x21 | sprite/frame write | 8 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
| 0x00454570 | 0x03 | jump | 8 | jump -> 0x00454568 | 03 00 00 00 68 45 45 00 |
| 0x00454578 | 0x13 | conditional branch | 8 | if mode=0xc6 field=0x62 mask/value=0x20 -> 0x0045459c | 13 c6 62 20 9c 45 45 00 |
| 0x00454580 | 0x13 | conditional branch | 8 | if mode=0xc6 field=0x62 mask/value=0x08 -> 0x004545b4 | 13 c6 62 08 b4 45 45 00 |
| 0x00454588 | 0xbd | helper dispatch | 4 | helper id 0x02 | bd 02 00 00 |
| 0x0045458c | 0x21 | sprite/frame write | 8 | set target frame=4, gate=8, mode=1 | 21 01 08 00 00 00 04 00 |
| 0x00454594 | 0x03 | jump | 8 | jump -> 0x004545c4 | 03 00 00 00 c4 45 45 00 |
| 0x0045459c | 0x24 | effect/cast cue | 4 | effect/cast cue WLK id 12 | 24 01 00 0c |
| 0x004545a0 | 0xbd | helper dispatch | 4 | helper id 0x05 | bd 05 00 00 |
| 0x004545a4 | 0x21 | sprite/frame write | 8 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
| 0x004545ac | 0x03 | jump | 8 | jump -> 0x004545c4 | 03 00 00 00 c4 45 45 00 |
| 0x004545b4 | 0x24 | effect/cast cue | 4 | effect/cast cue WLK id 11 | 24 01 00 0b |
| 0x004545b8 | 0xbd | helper dispatch | 4 | helper id 0x16 | bd 16 00 00 |
| 0x004545bc | 0x21 | sprite/frame write | 8 | set target frame=0, gate=8, mode=1 | 21 01 08 00 00 00 00 00 |
| 0x004545c4 | 0xad | actor flag set/clear | 8 | actor flag mode=0x00, mask=0x00000004 | ad 00 00 00 04 00 00 00 |
| 0x004545cc | 0x01 | yield/end marker | 4 | yield/end marker | 01 00 00 00 |
| 0x004545d0 | 0x03 | jump | 8 | jump -> 0x004545cc | 03 00 00 00 cc 45 45 00 |
| 0x004545d8 | 0x21 | sprite/frame write | 8 | set target frame=4, gate=8, mode=1 | 21 01 08 00 00 00 04 00 |
| 0x004545e0 | 0xbd | helper dispatch | 4 | helper id 0x07 | bd 07 00 00 |
| 0x004545e4 | 0x12 | arith/write | 8 | arith/write mode=0x80, field=0x00, imm=67108864 | 12 80 00 00 00 00 00 04 |
| 0x004545ec | 0x21 | sprite/frame write | 8 | set target frame=4, gate=2, mode=1 | 21 01 02 00 00 00 04 00 |
| 0x004545f4 | 0x12 | arith/write | 8 | arith/write mode=0x87, field=0x00, imm=268435456 | 12 87 00 00 00 00 00 10 |
| 0x004545fc | 0x21 | sprite/frame write | 8 | set target frame=4, gate=2, mode=1 | 21 01 02 00 00 00 04 00 |
| 0x00454604 | 0x12 | arith/write | 8 | arith/write mode=0x80, field=0x00, imm=67108864 | 12 80 00 00 00 00 00 04 |
| 0x0045460c | 0x21 | sprite/frame write | 8 | set target frame=4, gate=2, mode=1 | 21 01 02 00 00 00 04 00 |
| 0x00454614 | 0x12 | arith/write | 8 | arith/write mode=0x87, field=0x00, imm=268435456 | 12 87 00 00 00 00 00 10 |
| 0x0045461c | 0x21 | sprite/frame write | 8 | set target frame=4, gate=2, mode=1 | 21 01 02 00 00 00 04 00 |
| 0x00454624 | 0x12 | arith/write | 8 | arith/write mode=0x80, field=0x00, imm=67108864 | 12 80 00 00 00 00 00 04 |
| 0x0045462c | 0xad | actor flag set/clear | 8 | actor flag mode=0x00, mask=0x00000020 | ad 00 00 00 20 00 00 00 |
Next Steps
- critical actor+0x62 bit 0x10 -> `0xc2` byte+3 -> WLK id 14 -> palette flash/fade child script 경로는 확정됐다. 남은 것은 브라우저 runner에서 VM tick을 wall-clock ms로 환산하는 미세 타이밍이다.
- 상태이상 성공 샘플이 있으면 payload unit byte7(status) -> target+0x6c -> target result branch/WLK 여부를 분리할 수 있다.
- 브라우저 runner는 full miss/guard-glancing-chip/critical result presentation을 분리해도 된다. MISS는 WLK id 12/helper 0x05, guard/glancing은 WLK id 11/helper 0x16, critical은 WLK id 14/palette flash로 분리한다.