# Battle Display VM Static Decode

- status: `static-vm-walk-for-promoted-and-phase-table-player-actions`
- scope: opening-observed player skill families first

## Promoted Families

| actor | family | start | skill ids | confidence |
| --- | --- | --- | --- | --- |
| 아타호 | 호격권 | `0x004d6540` | `0x0a`, `0x0b`, `0x0c`, `0x0d` | `static-branch-family` |
| 아타호 | 맹호비상각 | `0x004d6640` | `0x0e`, `0x0f`, `0x10`, `0x11` | `static-branch-family` |
| 아타호 | 폭전축/퍽전축 | `0x004d66d4` | `0x12`, `0x13`, `0x14`, `0x15` | `static-branch-family` |
| 아타호 | 맹호스페셜 | `0x004d67e0` | `0x16`, `0x17`, `0x18`, `0x19` | `static-branch-family` |
| 아타호 | 비기·맹호광파참 | `0x004d6a14` | `0x1a`, `0x1b`, `0x1c`, `0x1d` | `static-branch-family` |
| 아타호 | 취호권 개인공격기 | `0x004d6bb8` | `0x1e`, `0x1f`, `0x20`, `0x21`, `0x22` | `static-repeat-loop-family` |
| 아타호 | 맹호난무 | `0x004d6df4` | `0x23`, `0x24`, `0x25`, `0x26` | `static-repeat-loop-family` |
| 아타호 | 맹호의 울부짖음 | `0x004d70a8` | `0x27`, `0x28`, `0x29`, `0x2a` | `static-branch-family` |
| 아타호 | 호포권 | `0x004d7140` | `0x2b`, `0x2c`, `0x2d`, `0x2e` | `static-branch-family` |
| 아타호 | 맹호룬룬권 | `0x004d7240` | `0x2f`, `0x30`, `0x31`, `0x32` | `static-branch-family` |
| 린샹 | 안면백조권 | `0x004db224` | `0x09`, `0x0a`, `0x0b`, `0x0c` | `display-table-phase-family` |
| 린샹 | 선렬각 | `0x004db564` | `0x0d`, `0x0e`, `0x0f`, `0x10` | `static-branch-family` |
| 린샹 | 열화폭염권 | `0x004db784` | `0x11`, `0x12`, `0x13`, `0x14` | `static-branch-family` |
| 린샹 | 암각·영상승룡파 | `0x004db828` | `0x15`, `0x16`, `0x17`, `0x18` | `static-repeat-loop-family` |
| 린샹 | 고양이달래기 | `0x004dbad0` | `0x1c`, `0x1d`, `0x1e`, `0x1f` | `static-branch-family` |
| 린샹 | 유미쌍조 | `0x004dbb54` | `0x20`, `0x21`, `0x22`, `0x23` | `static-branch-family` |
| 린샹 | 대폭진 | `0x004dbde4` | `0x24`, `0x25`, `0x26`, `0x27` | `static-branch-family` |
| 린샹 | 암각·영상뢰화 | `0x004dbf64` | `0x28`, `0x29`, `0x2a`, `0x2b` | `static-branch-family` |
| 린샹 | 회복/방어 특수기 | `0x004dc41c` | `0x31`, `0x32`, `0x33`, `0x34` | `static-shared-special-family` |
| 스마슈 | 대타격 | `0x00524874` | `0x05`, `0x06`, `0x07`, `0x08` | `static-branch-family` |
| 스마슈 | 쾌진격 | `0x005249cc` | `0x09`, `0x0a`, `0x0b`, `0x0c` | `static-branch-family` |
| 스마슈 | 비검·목단미인 | `0x00524a6c` | `0x0d`, `0x0e`, `0x0f`, `0x10` | `static-repeat-loop-family` |
| 스마슈 | 백인일섬 | `0x0052501c` | `0x14`, `0x15`, `0x16`, `0x17` | `static-branch-family` |
| 스마슈 | 인법·분신술 | `0x005250e8` | `0x18`, `0x19`, `0x1a`, `0x1b` | `static-child-display-family` |
| 스마슈 | 비검·시공단 | `0x00525544` | `0x1c`, `0x1d`, `0x1e`, `0x1f` | `static-repeat-loop-family` |

## 0xbc Movement Opcode

- handler: `0x0040e216`
- byte1: 0 means write current display object +0x1c/+0x20 directly; nonzero creates a child display VM object and writes motion deltas.
- byte2: position selector. Selectors 1..4 resolve a target slot range through 0x00433c99/0x00433dc0 before applying formulas.
- byte3: motion step divisor/count. The handler divides deltaX/deltaY by this byte and stores the child motion step.

| selector | target range | kind 1 formula | kind 2 formula | meaning | evidence |
| ---: | --- | --- | --- | --- | --- |
| `0x00` | self slot only | self.baseX(+0x8c), self.baseY(+0x90) | self.baseX(+0x8c), self.baseY(+0x90) | current battle actor base position; used as return/reset placement. | 0x0040e259 range=self +0xf2..+1; 0x0040e37e/0x0040e639 read current display +0x8c/+0x90. |
| `0x01` | resolved target range from 0x00433c99/0x00433dc0 | target.base + ((target.e6-self.e6)<<18, (target.e7-self.e7)<<19) | target.base + ((target.e6-self.e6)<<18, (target.e7-self.e7)<<19) | target-relative center/size-adjusted placement. | 0x0040e39b/0x0040e656 compute target display size delta. |
| `0x02` | resolved target range from 0x00433c99/0x00433dc0 | target.baseX + target.e6*8px, target.baseY + (target.e7-self.e7)*8px | target.baseX - self.e6*8px, target.baseY + (target.e7-self.e7)*8px | one target-side edge placement; side depends on actor kind. | 0x0040e3fc/0x0040e6b7 use target/current display width offsets. |
| `0x03` | resolved target range from 0x00433c99/0x00433dc0 | target.baseX - self.e6*8px, target.baseY + (target.e7-self.e7)*8px | target.baseX + target.e6*8px, target.baseY + (target.e7-self.e7)*8px | opposite target-side edge placement. | 0x0040e450/0x0040e706 mirror selector 2. |
| `0x04` | resolved target range from 0x00433c99/0x00433dc0 | fixedX=184px, target-relative Y | fixedX=456px, target-relative Y | side-fixed screen X with target-relative Y. | 0x0040e49f fixed 0x00b80000; 0x0040e75a fixed 0x01c80000. |
| `0x05` | special/current range; no target scan skip | X=((0x4a-self.e6)*4+0x18), Y=((0x2a-self.e7)*4+0x08) | X=((0x4a-self.e6)*4+0x18), Y=((0x2a-self.e7)*4+0x08) | screen-size/display-size based fixed placement. | 0x0040e4d9/0x0040e794 use constants 0x4a, 0x2a, 0x18, 0x08. |
| `0x06` | parent display object based | parent.baseX + (parent.e6-4)*4px, parent.baseY + (parent.e7*8-40)px | parent.baseX + (parent.e6-4)*4px, parent.baseY + (parent.e7*8-40)px | child motion/display object attached to parent with -4 X correction. | 0x0040e51a/0x0040e7d5 read child parent +0xa0 then parent +0xf2/+0xe6/+0xe7. |
| `0x07` | parent display object based | parent.baseX + (parent.e6-2)*4px, parent.baseY + (parent.e7*8-40)px | parent.baseX + (parent.e6-2)*4px, parent.baseY + (parent.e7*8-40)px | child motion/display object attached to parent with -2 X correction. | 0x0040e581/0x0040e83c read child parent +0xa0 then parent +0xf2/+0xe6/+0xe7. |

## Display VM Runner

- runner: `0x00402321`
- dispatch table: `0x00440538`
- cursor field: `display object +0x40`
- summary: 0x00402321 resets 0x55a1b8, reads the opcode byte from display object +0x40, dispatches through 0x00440538[opcode], and repeats until a handler sets the stop flag.

## Motion Opcode Consumers

| opcode | handler | length | role | fields | summary |
| --- | --- | ---: | --- | --- | --- |
| `0x1e` | `0x004043c5` | 4 | simple x/y acceleration movement consumer | +0x80/+0x84 target, +0x68/+0x6c acceleration, +0x74/+0x78 velocity, +0x1c/+0x20 position | Compares x/y position against target, adjusts velocity by acceleration sign, then adds velocity to position. |
| `0x2c` | `0x004058fb` | 4 | axis-flag acceleration movement consumer | byte1 bits 0x01 x, 0x02 y, 0x04 z; +0x80/+0x84/+0x88 target; +0x68/+0x6c/+0x70 acceleration; +0x74/+0x78/+0x7c velocity; +0x1c/+0x20/+0x24 position | Same target-seeking acceleration as 0x1e, but per-axis selectable and includes z/height. |
| `0x2d` | `0x00405a09` | 4 | trigonometric oscillation/orbit movement consumer | byte1 low bits select axes; byte1 high bits mode 0 additive, mode 8 base-relative; +0x8c/+0x8e/+0x90 angle; +0x92/+0x94/+0x96 amplitude; +0x80/+0x84/+0x88 base | Uses 0x428070/0x42819b sine/cosine-like helpers to offset or set x/y/z. |
| `0x2e` | `0x00405bde` | 12 | angle field producer | dword operands at script +4/+8 feed 0x4282bb; byte1 bits select +0x8c/+0x8e/+0x90 destination | Computes an angle from two 32-bit operands and writes it into one or more trigonometric motion angle fields. |
| `0xbc` | `0x0040e216` | 4 | direct placement / child linear motion producer | byte1 mode, byte2 position selector, byte3 step divisor; writes +0x80/+0x84 target and +0x74/+0x78 step on child motion objects | Grounded selector formulas are listed separately in movementOpcode0xbc. |
| `0xc0` | `0x0040ec00` | 4 | bounded axis-flag movement consumer | byte1 bits 0x01 x, 0x02 y, 0x04 z; same target/velocity fields as 0x2c plus boundary helpers 0x416c77/0x4173db | Moves selected axes using velocity/acceleration and clamps or bounces against calculated display bounds. |

## Resource/Descriptor Opcode Flow

| opcode | handler | callee | length | role | summary |
| --- | --- | --- | ---: | --- | --- |
| `0x60` | `0x00407c93` | `0x00430130` | 4 | reset display resource/list state | Clears 0x574531/0x574543/0x4576e8/0x574533, sets default visible slots 0x574538={0x11,0x12,0x13}, initializes order bytes 0x574540 and clears cached tile/state rows 0x574550..0x574554. |
| `0x61` | `0x00407caa` | `0x0043022d` | 4 | rebuild/refresh active display resources | Walks active resource slots, copies descriptor state through 0x402360, frees stale objects through 0x435c9d, and creates display VM objects with runner 0x402321 from descriptor table entries. |
| `0x62` | `0x00407cc1` | `0x00431fe8` | 4 | register actor/resource id | Uses script byte1 as a resource/actor id. If absent from the active resource list, it appends it and creates display VM objects from the 0x442d95 descriptor pointer table. |
| `0x63` | `0x00407ce5` | `0x00432541` | 4 | unregister actor/resource id | Uses script byte1 to remove matching active resource entries, free their display objects, compact the active list, and rebuild remaining display VM objects. |
| `0x64` | `0x00407d09` | `-` | 8 | place/update active resource object | Matches active display object +0x16 against script byte6 (or 0xff wildcard), calls 0x424cd6 mode 2, writes tile position +0xe8/+0xea and fixed-point x/y/z from script words +2/+4, then maps byte7 to object +0x68 state selector. |

## Descriptor Table Sample

- descriptor pointer table: `0x00442d95`
- active resource count: `0x004576e8`
- sample: index `0x2a`, entry `0x00442e3d`, descriptor `0x004f81e0`, CNS `zm_mk1.cns`
- first dwords: `0x004f8260`, `0x004f8280`, `0x004f82fc`, `0x004f8294`, `0x004f82f8`
- note: The descriptor begins with pointers/fields and an embedded CNS filename, so it is not just a flat frame sequence.

## Decoded Frame/Sound Summary

| actor | skill | skill id | phase | start | frames | 0x24 WLK | 0xc2 WLK | movement | repeat | stop |
| --- | --- | ---: | ---: | --- | --- | --- | --- | --- | --- | --- |
| 아타호 | 호격권 | `0x0a` | `0x14` | `0x004d6540` | 21, 22, 25, 26, 26, 0 | WLK id 06 | WLK id 00 |  |  | idle/end marker at 0x004d662c |
| 아타호 | 호격권 | `0x0b` | `0x15` | `0x004d6540` | 21, 22, 25, 26, 26, 0 | WLK id 06 | WLK id 00 |  |  | idle/end marker at 0x004d662c |
| 아타호 | 호격권 | `0x0c` | `0x16` | `0x004d6540` | 21, 22, 23, 24, 25, 26, 26, 0 | WLK id 18, WLK id 06 | WLK id 00 |  |  | idle/end marker at 0x004d662c |
| 아타호 | 호격권 | `0x0d` | `0x17` | `0x004d6540` | 21, 22, 23, 24, 23, 24, 23, 24, 25, 26, 26, 0 | WLK id 18, WLK id 18, WLK id 18, WLK id 06 | WLK id 00 |  |  | idle/end marker at 0x004d662c |
| 아타호 | 맹호비상각 | `0x0e` | `0x18` | `0x004d6640` | 7, 0 | WLK id 16 | WLK id 04 | movement/s1/d32, movement/s0/d0 |  | idle/end marker at 0x004d66c8 |
| 아타호 | 맹호비상각 | `0x0f` | `0x19` | `0x004d6640` | 7, 0 | WLK id 16 | WLK id 04 | movement/s1/d24, movement/s0/d0 |  | idle/end marker at 0x004d66c8 |
| 아타호 | 맹호비상각 | `0x10` | `0x1a` | `0x004d6640` | 7, 0 | WLK id 16 | WLK id 04 | movement/s1/d16, movement/s0/d0 |  | idle/end marker at 0x004d66c8 |
| 아타호 | 맹호비상각 | `0x11` | `0x1b` | `0x004d6640` | 7, 0 | WLK id 16 | WLK id 04 | movement/s1/d8, movement/s0/d0 |  | idle/end marker at 0x004d66c8 |
| 아타호 | 폭전축 | `0x12` | `0x1c` | `0x004d66d4` | 3, 4, 4, 5, 6, 6, 3, 4, 0 |  | WLK id 05 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d67c8 |
| 아타호 | 폭전축 | `0x13` | `0x1d` | `0x004d66d4` | 3, 4, 4, 5, 6, 6, 3, 4, 0 |  | WLK id 05 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d67c8 |
| 아타호 | 퍽전축 | `0x14` | `0x1e` | `0x004d66d4` | 3, 4, 4, 5, 6, 6, 3, 4, 0 |  | WLK id 05, WLK id 04 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d67c8 |
| 아타호 | 폭전축 | `0x15` | `0x1f` | `0x004d66d4` | 3, 4, 4, 5, 6, 6, 3, 4, 0 |  | WLK id 05, WLK id 04, WLK id 03 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d67c8 |
| 아타호 | 맹호스페셜 | `0x16` | `0x20` | `0x004d67e0` | 12, 13, 21, 22, 25, 26, 26, 0, 8, 9, 10, 11, 11, 0 |  | WLK id 03, WLK id 03, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004d6a08 |
| 아타호 | 맹호스페셜 | `0x17` | `0x21` | `0x004d67e0` | 12, 13, 21, 22, 25, 26, 26, 0, 7, 0 |  | WLK id 03, WLK id 03, WLK id 05 | movement/s2/d4, movement/s0/d0 |  | idle/end marker at 0x004d6a08 |
| 아타호 | 맹호스페셜 | `0x18` | `0x22` | `0x004d67e0` | 12, 13, 21, 22, 25, 26, 26, 0, 8, 9, 10, 11, 11, 3, 4, 5, 6, 3, 4, 0 |  | WLK id 03, WLK id 03, WLK id 04, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004d6a08 |
| 아타호 | 맹호스페셜 | `0x19` | `0x23` | `0x004d67e0` | 12, 13, 21, 22, 25, 26, 26, 0, 12, 13, 13, 0, 21, 22, 25, 26, 26, 8, 9, 10, 11, 11, 3, 4, 5, 6, 7, 0 |  | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 05, WLK id 04, WLK id 05 | movement/s2/d4, movement/s0/d0 |  | idle/end marker at 0x004d6a08 |
| 아타호 | 비기·맹호광파참 | `0x1a` | `0x24` | `0x004d6a14` | 0, 18, 19, 20, 20, 20, 0 | WLK id 22, WLK id 17 | WLK id 03, WLK id 03, WLK id 03 | movement/s4/d0, movement/s0/d0 |  | idle/end marker at 0x004d6b7c |
| 아타호 | 비기·맹호광파참 | `0x1b` | `0x25` | `0x004d6a14` | 0, 18, 19, 20, 20, 20, 0 | WLK id 22, WLK id 17 | WLK id 03, WLK id 03, WLK id 03 | movement/s4/d0, movement/s0/d0 |  | idle/end marker at 0x004d6b7c |
| 아타호 | 비기·맹호광파참 | `0x1c` | `0x26` | `0x004d6a14` | 0, 18, 19, 20, 20, 20, 20, 0 | WLK id 22, WLK id 17 | WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s4/d0, movement/s0/d0 |  | idle/end marker at 0x004d6b7c |
| 아타호 | 비기·맹호광파참 | `0x1d` | `0x27` | `0x004d6a14` | 0, 18, 19, 20, 20, 20, 20, 20, 0 | WLK id 22, WLK id 17 | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s4/d0, movement/s0/d0 |  | idle/end marker at 0x004d6b7c |
| 아타호 | 조금 취한 철권 | `0x1e` | `0x28` | `0x004d6bb8` | 43, 42, 43, 42, 41, 40, 0, 12, 13, 0 | WLK id 23, WLK id 23 | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d6ddc |
| 아타호 | 지옥 다리후리기 | `0x1f` | `0x29` | `0x004d6bb8` | 43, 42, 43, 42, 41, 40, 0, 0, 0, 51, 52, 52, 0 | WLK id 23, WLK id 23 | WLK id 18 | movement/s3/d0, movement/s0/d0 | 5@0x004d6c6c | idle/end marker at 0x004d6ddc |
| 아타호 | 만취한 철권 | `0x20` | `0x2a` | `0x004d6bb8` | 43, 42, 43, 42, 41, 40, 0, 21, 22, 25, 26, 0 | WLK id 23, WLK id 23 | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d6ddc |
| 아타호 | 염가열소 | `0x21` | `0x2b` | `0x004d6bb8` | 43, 42, 43, 42, 41, 40, 0, 0, 35, 36, 37, 38, 0 | WLK id 23, WLK id 23 | WLK id 21 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d6ddc |
| 아타호 | 인사불성 철권 | `0x22` | `0x2c` | `0x004d6bb8` | 43, 42, 43, 42, 41, 40, 0, 0, 27, 28, 39, 39, 3, 4, 0 | WLK id 23, WLK id 23 | WLK id 05 | movement/s3/d0, movement/s0/d0 | 12@0x004d6d78, 12@0x004d6da8 | idle/end marker at 0x004d6ddc |
| 아타호 | 맹호난무 | `0x23` | `0x2d` | `0x004d6df4` | 13, 25, 26, 24, 27, 28, 39, 39, 4, 3, 0 | WLK id 18, WLK id 18 | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d709c |
| 아타호 | 맹호난무 | `0x24` | `0x2e` | `0x004d6df4` | 13, 25, 26, 24, 27, 28, 39, 39, 39, 4, 3, 0 | WLK id 18, WLK id 18 | WLK id 04 | movement/s0/d0 | 3@0x004d6ec4, 4@0x004d6edc | idle/end marker at 0x004d709c |
| 아타호 | 맹호난무 | `0x25` | `0x2f` | `0x004d6df4` | 13, 25, 26, 24, 27, 28, 39, 39, 39, 39, 4, 3, 0 | WLK id 18, WLK id 18 | WLK id 05 | movement/s0/d0 | 6@0x004d6ec4, 8@0x004d6edc | idle/end marker at 0x004d709c |
| 아타호 | 맹호난무 | `0x26` | `0x30` | `0x004d6df4` | 13, 25, 26, 24, 27, 28, 27, 28, 27, 28, 27, 28, 39, 39, 39, 39, 4, 3, 0 | WLK id 18, WLK id 18, WLK id 53 | WLK id 05 | movement/s0/d0 | 6@0x004d6ec4, 8@0x004d6edc | idle/end marker at 0x004d709c |
| 아타호 | 맹호의 울부짖음 | `0x27` | `0x31` | `0x004d70a8` | 35, 36, 37, 38, 0 | WLK id 06 | WLK id 00 | movement/s0/d0 |  | idle/end marker at 0x004d7134 |
| 아타호 | 맹호의 울부짖음 | `0x28` | `0x32` | `0x004d70a8` | 35, 36, 37, 38, 0 | WLK id 06 | WLK id 00 | movement/s0/d0 |  | idle/end marker at 0x004d7134 |
| 아타호 | 맹호의 울부짖음 | `0x29` | `0x33` | `0x004d70a8` | 35, 36, 37, 38, 0 | WLK id 06 | WLK id 00 | movement/s0/d0 |  | idle/end marker at 0x004d7134 |
| 아타호 | 맹호의 울부짖음 | `0x2a` | `0x34` | `0x004d70a8` | 35, 36, 37, 38, 0 | WLK id 06 | WLK id 00 | movement/s0/d0 |  | idle/end marker at 0x004d7134 |
| 아타호 | 호포권 | `0x2b` | `0x35` | `0x004d7140` | 18, 19, 20, 0 | WLK id 22 | WLK id 03 |  |  | idle/end marker at 0x004d7230 |
| 아타호 | 호포권 | `0x2c` | `0x36` | `0x004d7140` | 18, 19, 20, 0 | WLK id 22 | WLK id 04 |  |  | idle/end marker at 0x004d7230 |
| 아타호 | 호포권 | `0x2d` | `0x37` | `0x004d7140` | 18, 19, 20, 0 | WLK id 22 | WLK id 04 |  |  | idle/end marker at 0x004d7230 |
| 아타호 | 호포권 | `0x2e` | `0x38` | `0x004d7140` | 18, 19, 20, 0 | WLK id 22 | WLK id 05 |  |  | idle/end marker at 0x004d7230 |
| 아타호 | 맹호룬룬권 | `0x2f` | `0x39` | `0x004d7240` | 44, 45, 46, 47, 44, 48, 49, 50, 0 | WLK id 32 | WLK id 03, WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d7370 |
| 아타호 | 맹호룬룬권 | `0x30` | `0x3a` | `0x004d7240` | 44, 45, 46, 47, 44, 48, 49, 50, 12, 13, 0 | WLK id 32 | WLK id 03, WLK id 03, WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d7370 |
| 아타호 | 맹호룬룬권 | `0x31` | `0x3b` | `0x004d7240` | 44, 45, 46, 47, 44, 48, 49, 50, 12, 13, 25, 26, 0 | WLK id 32 | WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004d7370 |
| 아타호 | 맹호룬룬권 | `0x32` | `0x3c` | `0x004d7240` | 44, 45, 46, 47, 44, 48, 49, 50, 12, 13, 25, 26, 8, 9, 10, 11, 0 | WLK id 32 | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004d7370 |
| 린샹 | 안면백조권 | `0x09` | `0x13` | `0x004db224` | 6, 7, 8, 9, 9, 16, 17, 18, 19, 19, 6, 7, 8, 9, 9, 3 |  | WLK id 03, WLK id 03, WLK id 03 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004db54c |
| 린샹 | 안면백조권 | `0x0a` | `0x14` | `0x004db224` | 6, 7, 8, 9, 9, 16, 17, 18, 19, 19, 33, 34, 38, 39, 39, 3 |  | WLK id 03, WLK id 03, WLK id 04 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004db54c |
| 린샹 | 안면백조권 | `0x0b` | `0x15` | `0x004db224` | 6, 7, 8, 9, 9, 16, 17, 18, 19, 19, 33, 34, 35, 36, 37, 35, 34, 41, 40, 3 |  | WLK id 03, WLK id 03, WLK id 04 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004db54c |
| 린샹 | 안면백조권 | `0x0c` | `0x16` | `0x004db224` | 6, 7, 8, 9, 9, 16, 17, 18, 19, 19, 33, 34, 38, 39, 39, 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 |  | WLK id 03, WLK id 03, WLK id 04, WLK id 05 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004db54c |
| 린샹 | 선렬각 | `0x0d` | `0x17` | `0x004db564` | 12, 13, 10, 11, 14, 15, 15, 3 |  | WLK id 03, WLK id 03, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004db748 |
| 린샹 | 선렬각 | `0x0e` | `0x18` | `0x004db564` | 12, 13, 10, 11, 14, 15, 12, 13, 13, 3 |  | WLK id 03, WLK id 03, WLK id 03, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004db748 |
| 린샹 | 선렬각 | `0x0f` | `0x19` | `0x004db564` | 12, 13, 10, 11, 14, 15, 12, 13, 10, 11, 11, 3 |  | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 04 | movement/s0/d0 |  | idle/end marker at 0x004db748 |
| 린샹 | 선렬각 | `0x10` | `0x1a` | `0x004db564` | 12, 13, 10, 11, 14, 15, 12, 13, 10, 11, 12, 13, 3 |  | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 05 | movement/s2/d4, movement/s0/d0 |  | idle/end marker at 0x004db748 |
| 린샹 | 열화폭염권 | `0x11` | `0x1b` | `0x004db784` | 22, 23, 23, 3 | WLK id 07 | WLK id 05 |  |  | idle/end marker at 0x004db81c |
| 린샹 | 열화폭염권 | `0x12` | `0x1c` | `0x004db784` | 22, 23, 23, 23, 3 | WLK id 07, WLK id 07 | WLK id 05 |  |  | idle/end marker at 0x004db81c |
| 린샹 | 열화폭염권 | `0x13` | `0x1d` | `0x004db784` | 22, 23, 23, 23, 23, 3 | WLK id 07, WLK id 07, WLK id 07 | WLK id 05 |  |  | idle/end marker at 0x004db81c |
| 린샹 | 열화폭염권 | `0x14` | `0x1e` | `0x004db784` | 22, 23, 23, 23, 23, 23, 23, 3 | WLK id 07, WLK id 07, WLK id 07, WLK id 07, WLK id 07 | WLK id 05 |  |  | idle/end marker at 0x004db81c |
| 린샹 | 암각·영상승룡파 | `0x15` | `0x1f` | `0x004db828` | 33, 34, 38, 39, 3 | WLK id 21 | WLK id 03 | movement/s3/d0, movement/s0/d0 | 3@0x004db8a4 | idle/end marker at 0x004db960 |
| 린샹 | 암각·영상승룡파 | `0x16` | `0x20` | `0x004db828` | 33, 34, 38, 39, 39, 3 | WLK id 21 | WLK id 03, WLK id 03 | movement/s3/d0, movement/s0/d0 | 3@0x004db8a4 | idle/end marker at 0x004db960 |
| 린샹 | 암각·영상승룡파 | `0x17` | `0x21` | `0x004db828` | 33, 34, 38, 39, 39, 39, 3 | WLK id 21 | WLK id 03, WLK id 03, WLK id 03 | movement/s3/d0, movement/s0/d0 | 3@0x004db8a4 | idle/end marker at 0x004db960 |
| 린샹 | 암각·영상승룡파 | `0x18` | `0x22` | `0x004db828` | 33, 34, 38, 39, 39, 39, 39, 3 | WLK id 21 | WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s3/d0, movement/s0/d0 | 3@0x004db8a4, 5@0x004db924 | idle/end marker at 0x004db960 |
| 린샹 | 고양이달래기 | `0x1c` | `0x26` | `0x004dbad0` | 24, 25, 3 |  | WLK id 35 |  |  | idle/end marker at 0x004dbb3c |
| 린샹 | 고양이달래기 | `0x1d` | `0x27` | `0x004dbad0` | 24, 25, 3 |  | WLK id 35 |  |  | idle/end marker at 0x004dbb3c |
| 린샹 | 고양이달래기 | `0x1e` | `0x28` | `0x004dbad0` | 24, 25, 3 |  | WLK id 35 |  |  | idle/end marker at 0x004dbb3c |
| 린샹 | 고양이달래기 | `0x1f` | `0x29` | `0x004dbad0` | 24, 25, 3 |  | WLK id 35 |  |  | idle/end marker at 0x004dbb3c |
| 린샹 | 유미쌍조 | `0x20` | `0x2a` | `0x004dbb54` | 33, 34, 35, 36, 37, 35, 34, 3 |  | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004dbdb8 |
| 린샹 | 유미쌍조 | `0x21` | `0x2b` | `0x004dbb54` | 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 |  | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004dbdb8 |
| 린샹 | 유미쌍조 | `0x22` | `0x2c` | `0x004dbb54` | 33, 34, 35, 36, 37, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 |  | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004dbdb8 |
| 린샹 | 유미쌍조 | `0x23` | `0x2d` | `0x004dbb54` | 33, 34, 35, 36, 37, 35, 36, 37, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 |  | WLK id 03 | movement/s0/d0 |  | idle/end marker at 0x004dbdb8 |
| 린샹 | 대폭진 | `0x24` | `0x2e` | `0x004dbde4` | 31, 31, 32, 32, 32, 3 |  | WLK id 29 |  |  | idle/end marker at 0x004dbf34 |
| 린샹 | 대폭진 | `0x25` | `0x2f` | `0x004dbde4` | 31, 31, 32, 32, 32, 3 |  | WLK id 29 |  |  | idle/end marker at 0x004dbf34 |
| 린샹 | 대폭진 | `0x26` | `0x30` | `0x004dbde4` | 31, 31, 32, 32, 32, 3 |  | WLK id 29 |  |  | idle/end marker at 0x004dbf34 |
| 린샹 | 대폭진 | `0x27` | `0x31` | `0x004dbde4` | 31, 31, 31, 32, 32, 32, 3 | WLK id 29 | WLK id 29 |  |  | idle/end marker at 0x004dbf34 |
| 린샹 | 암각·영상뢰화 | `0x28` | `0x32` | `0x004dbf64` | 8, 9, 16, 17, 18, 19, 33, 34, 35, 36, 37, 35, 34, 3 | WLK id 18, WLK id 18 | WLK id 09 | movement/s0/d0 |  | idle/end marker at 0x004dc298 |
| 린샹 | 암각·영상뢰화 | `0x29` | `0x33` | `0x004dbf64` | 8, 9, 16, 17, 18, 19, 6, 7, 8, 9, 16, 17, 18, 19, 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 | WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 09 | movement/s0/d0 |  | idle/end marker at 0x004dc298 |
| 린샹 | 암각·영상뢰화 | `0x2a` | `0x34` | `0x004dbf64` | 8, 9, 16, 17, 18, 19, 6, 7, 8, 9, 16, 17, 18, 19, 10, 11, 14, 15, 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 | WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 09 | movement/s0/d0 |  | idle/end marker at 0x004dc298 |
| 린샹 | 암각·영상뢰화 | `0x2b` | `0x35` | `0x004dbf64` | 8, 9, 16, 17, 18, 19, 6, 7, 8, 9, 16, 17, 18, 19, 10, 11, 12, 13, 14, 15, 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 | WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 09 | movement/s0/d0 |  | idle/end marker at 0x004dc298 |
| 린샹 | 기공회복 | `0x31` | `0x3b` | `0x004dc41c` | 29, 30, 31, 32, 3 | WLK id 10 |  |  |  | idle/end marker at 0x004dc494 |
| 린샹 | 기공독치료 | `0x32` | `0x3c` | `0x004dc41c` | 29, 30, 31, 32, 3 | WLK id 10 |  |  |  | idle/end marker at 0x004dc494 |
| 린샹 | 기공대회복 | `0x33` | `0x3d` | `0x004dc41c` | 29, 30, 31, 32, 3 | WLK id 10 |  |  |  | idle/end marker at 0x004dc494 |
| 린샹 | 수경 | `0x34` | `0x3e` | `0x004dc41c` | 29, 30, 31, 32, 3 | WLK id 10 |  |  |  | idle/end marker at 0x004dc494 |
| 스마슈 | 대타격 | `0x05` | `0x0f` | `0x00524874` | 19, 20, 21, 22, 22, 2 |  | WLK id 20 | movement/s0/d0 |  | idle/end marker at 0x005249c0 |
| 스마슈 | 대타격 | `0x06` | `0x10` | `0x00524874` | 19, 20, 21, 22, 22, 2 |  | WLK id 20 | movement/s0/d0 |  | idle/end marker at 0x005249c0 |
| 스마슈 | 대타격 | `0x07` | `0x11` | `0x00524874` | 19, 20, 21, 22, 22, 2 |  | WLK id 20 | movement/s0/d0 |  | idle/end marker at 0x005249c0 |
| 스마슈 | 대타격 | `0x08` | `0x12` | `0x00524874` | 19, 20, 21, 22, 22, 2 |  | WLK id 20 | movement/s0/d0 |  | idle/end marker at 0x005249c0 |
| 스마슈 | 쾌진격 | `0x09` | `0x13` | `0x005249cc` | 7, 8, 9, 2 |  | WLK id 24 | movement/s1/d20, movement/s0/d0 |  | idle/end marker at 0x00524a60 |
| 스마슈 | 쾌진격 | `0x0a` | `0x14` | `0x005249cc` | 7, 8, 9, 2 |  | WLK id 24 | movement/s1/d16, movement/s0/d0 |  | idle/end marker at 0x00524a60 |
| 스마슈 | 쾌진격 | `0x0b` | `0x15` | `0x005249cc` | 7, 8, 9, 2 |  | WLK id 24 | movement/s1/d12, movement/s0/d0 |  | idle/end marker at 0x00524a60 |
| 스마슈 | 쾌진격 | `0x0c` | `0x16` | `0x005249cc` | 7, 8, 9, 2 |  | WLK id 24 | movement/s2/d8, movement/s0/d0 |  | idle/end marker at 0x00524a60 |
| 스마슈 | 비검·목단미인 | `0x0d` | `0x17` | `0x00524a6c` | 26, 27, 28, 29, 2, 2 | WLK id 18 | WLK id 04 | movement/s2/d0, movement/s3/d0, movement/s0/d0 | 2@0x00524aa0 | idle/end marker at 0x00524be4 |
| 스마슈 | 비검·목단미인 | `0x0e` | `0x18` | `0x00524a6c` | 26, 27, 28, 29, 26, 27, 28, 29, 2, 2 | WLK id 18, WLK id 18 | WLK id 04 | movement/s2/d0, movement/s3/d0, movement/s0/d0 | 2@0x00524aa0, 2@0x00524ad4 | idle/end marker at 0x00524be4 |
| 스마슈 | 비검·목단미인 | `0x0f` | `0x19` | `0x00524a6c` | 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 2, 2 | WLK id 18, WLK id 18, WLK id 18 | WLK id 04 | movement/s2/d0, movement/s3/d0, movement/s0/d0 | 2@0x00524aa0, 2@0x00524ad4, 2@0x00524b08 | idle/end marker at 0x00524be4 |
| 스마슈 | 비검·목단미인 | `0x10` | `0x1a` | `0x00524a6c` | 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 2, 2 | WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 04 | movement/s2/d0, movement/s3/d0, movement/s0/d0 | 2@0x00524aa0, 2@0x00524ad4, 2@0x00524b08, 4@0x00524b3c | idle/end marker at 0x00524be4 |
| 스마슈 | 백인일섬 | `0x14` | `0x1e` | `0x0052501c` | 10, 11, 12, 13, 2 |  | WLK id 20 |  |  | idle/end marker at 0x005250dc |
| 스마슈 | 백인일섬 | `0x15` | `0x1f` | `0x0052501c` | 10, 11, 12, 13, 2 |  | WLK id 20 |  |  | idle/end marker at 0x005250dc |
| 스마슈 | 백인일섬 | `0x16` | `0x20` | `0x0052501c` | 10, 11, 12, 13, 2 |  | WLK id 20 |  |  | idle/end marker at 0x005250dc |
| 스마슈 | 백인일섬 | `0x17` | `0x21` | `0x0052501c` | 10, 11, 12, 13, 2 |  | WLK id 20 |  |  | idle/end marker at 0x005250dc |
| 스마슈 | 인법·분신술 | `0x18` | `0x22` | `0x005250e8` | 6, 4, 40, 41, 41, 41, 41, 41, 40, 4, 6, 2 | WLK id 15, WLK id 16 | WLK id 03, WLK id 03 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x00525318 |
| 스마슈 | 인법·분신술 | `0x19` | `0x23` | `0x005250e8` | 6, 4, 40, 41, 41, 41, 41, 41, 41, 40, 4, 6, 2 | WLK id 15, WLK id 16 | WLK id 03, WLK id 03, WLK id 03 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x00525318 |
| 스마슈 | 인법·분신술 | `0x1a` | `0x24` | `0x005250e8` | 6, 4, 40, 41, 41, 41, 41, 41, 41, 41, 40, 4, 6, 2 | WLK id 15, WLK id 16 | WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x00525318 |
| 스마슈 | 인법·분신술 | `0x1b` | `0x25` | `0x005250e8` | 6, 4, 40, 41, 41, 41, 41, 41, 41, 41, 41, 40, 4, 6, 2 | WLK id 15, WLK id 16 | WLK id 03, WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x00525318 |
| 스마슈 | 비검·시공단 | `0x1c` | `0x26` | `0x00525544` | 2, 21, 22, 2 | WLK id 17 | WLK id 03 |  |  | idle/end marker at 0x0052571c |
| 스마슈 | 비검·시공단 | `0x1d` | `0x27` | `0x00525544` | 21, 22, 16, 17, 17, 2 | WLK id 17 | WLK id 03 |  |  | idle/end marker at 0x0052571c |
| 스마슈 | 비검·시공단 | `0x1e` | `0x28` | `0x00525544` | 21, 22, 16, 17, 21, 23, 24, 25, 22, 22, 2 | WLK id 17 | WLK id 04 |  |  | idle/end marker at 0x0052571c |
| 스마슈 | 비검·시공단 | `0x1f` | `0x29` | `0x00525544` | 21, 22, 16, 17, 21, 21, 22, 16, 17, 17, 26, 27, 28, 29, 2, 2 | WLK id 17 | WLK id 04 |  | 2@0x005255c0 | idle/end marker at 0x0052571c |
| 아타호 | 정권 | `0x01` | `0x0b` | `0x004d6398` | 12, 13, 0 |  | WLK id 04 |  |  | idle/end marker at 0x004d63c8 |
| 아타호 | 돌려차기 | `0x02` | `0x0c` | `0x004d63d4` | 8, 9, 10, 11, 0 |  | WLK id 04 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d641c |
| 아타호 | 던지기 | `0x03` | `0x0d` | `0x004d6428` | 51, 52, 0 |  | WLK id 18 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004d6460 |
| 아타호 | 다리후리기 | `0x04` | `0x0e` | `0x004d646c` | 51, 52, 0 |  | WLK id 03 |  |  | idle/end marker at 0x004d649c |
| 아타호 | 마시기 | `0x05` | `0x0f` | `0x004d64a8` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d6534 |
| 아타호 | 마시기 | `0x06` | `0x10` | `0x004d64a8` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d6534 |
| 아타호 | 마시기 | `0x07` | `0x11` | `0x004d64a8` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d6534 |
| 아타호 | 마시기 | `0x08` | `0x12` | `0x004d64a8` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d6534 |
| 아타호 | 마시기 | `0x09` | `0x13` | `0x004d64a8` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d6534 |
| 아타호 | 비기·맹호유성각 | `0x33` | `0x3d` | `0x004d737c` | 0, 0 | WLK id 16, WLK id 27 | WLK id 07 | movement/s0/d0 |  | idle/end marker at 0x004d7484 |
| 아타호 | 비기·맹호유성각 | `0x34` | `0x3e` | `0x004d737c` | 0, 0 | WLK id 16, WLK id 27 | WLK id 07 | movement/s0/d0 |  | idle/end marker at 0x004d7484 |
| 아타호 | 비기·맹호유성각 | `0x35` | `0x3f` | `0x004d737c` | 0, 0 | WLK id 16, WLK id 27 | WLK id 07 | movement/s0/d0 |  | idle/end marker at 0x004d7484 |
| 아타호 | 비기·맹호유성각 | `0x36` | `0x40` | `0x004d737c` | 0, 0 | WLK id 16, WLK id 27 | WLK id 07 | movement/s0/d0 |  | idle/end marker at 0x004d7484 |
| 아타호 | 주구격 | `0x37` | `0x41` | `0x004d7544` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 35, 36, 37, 38, 0 | WLK id 23, WLK id 23, WLK id 23, WLK id 31 | WLK id 18 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x004d7718 |
| 아타호 | 취호염무 | `0x38` | `0x42` | `0x004d7544` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 35, 36, 37, 38, 0 | WLK id 23, WLK id 23, WLK id 23, WLK id 21 | WLK id 07 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x004d7718 |
| 아타호 | 노익장 대폭발 | `0x39` | `0x43` | `0x004d7544` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 40, 52, 52, 52, 52, 52, 52, 52, 0 | WLK id 23, WLK id 23, WLK id 23, WLK id 06, WLK id 07, WLK id 07, WLK id 07, WLK id 07, WLK id 07, WLK id 29 | WLK id 00 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x004d7718 |
| 아타호 | 도주 | `0x3a` | `0x44` | `0x004d7724` | 0 |  |  |  |  | idle/end marker at 0x004d7734 |
| 아타호 | 방어 | `0x3b` | `0x45` | `0x004d7740` | 0, 2 | WLK id 11 |  |  |  | idle/end marker at 0x004d775c |
| 아타호 | 기합일발 | `0x3c` | `0x46` | `0x004d7768` | 0, 52 | WLK id 22 |  |  |  | idle/end marker at 0x004d7790 |
| 아타호 | 천조족 | `0x3d` | `0x47` | `0x004d779c` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d7854 |
| 아타호 | 천조족 | `0x3e` | `0x48` | `0x004d779c` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d7854 |
| 아타호 | 주 백약지장 | `0x3f` | `0x49` | `0x004d7860` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d7918 |
| 아타호 | 천조족 | `0x40` | `0x4a` | `0x004d779c` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d7854 |
| 아타호 | 천조족 | `0x41` | `0x4b` | `0x004d779c` | 40, 41, 42, 43, 42, 43, 42, 43, 41, 40, 40, 0 | WLK id 23, WLK id 23, WLK id 23 |  |  |  | idle/end marker at 0x004d7854 |
| 린샹 | 손톱공격 | `0x01` | `0x0b` | `0x004db064` | 20, 21, 22, 23, 23, 3 |  | WLK id 03 |  |  | idle/end marker at 0x004db0ac |
| 린샹 | 하이킥 | `0x02` | `0x0c` | `0x004db0b8` | 10, 11, 11, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db0f0 |
| 린샹 | 미들킥 | `0x03` | `0x0d` | `0x004db0fc` | 12, 13, 13, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db134 |
| 린샹 | 로 킥 | `0x04` | `0x0e` | `0x004db140` | 14, 15, 15, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db188 |
| 린샹 | 도발 | `0x05` | `0x0f` | `0x004daf28` | 51, 52, 53, 51, 52, 53, 51, 52, 53, 54, 4, 5, 4 |  |  | movement/s0/d0 |  | idle/end marker at 0x004daf9c |
| 린샹 | 꼬챙이 꿰기 | `0x06` | `0x10` | `0x004db1cc` | 20, 21, 22, 23, 23, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db218 |
| 린샹 | 꼬챙이 꿰기 | `0x07` | `0x11` | `0x004db1cc` | 20, 21, 22, 23, 23, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db218 |
| 린샹 | 꼬챙이 꿰기 | `0x08` | `0x12` | `0x004db1cc` | 20, 21, 22, 23, 23, 3 |  | WLK id 04 |  |  | idle/end marker at 0x004db218 |
| 린샹 | 빙조권 | `0x19` | `0x23` | `0x004db828` | 33, 34, 38, 39, 39, 39, 39, 3 | WLK id 21 | WLK id 03, WLK id 03, WLK id 03, WLK id 03 | movement/s3/d0, movement/s0/d0 | 3@0x004db8a4, 5@0x004db924 | idle/end marker at 0x004db960 |
| 린샹 | 흑영권 | `0x1a` | `0x24` | `0x004db96c` | 6, 7, 8, 9, 9, 3 | WLK id 18 | WLK id 08 |  |  | idle/end marker at 0x004db9e0 |
| 린샹 | 맹호열지조 | `0x1b` | `0x25` | `0x004db9ec` | 29, 30, 31, 32, 32, 3 |  | WLK id 17 | movement/s3/d0, movement/s0/d0 |  | idle/end marker at 0x004dba58 |
| 린샹 | 창룡파 | `0x2c` | `0x36` | `0x004dbf40` | 6, 7, 8, 9, 16, 17, 18, 19, 6, 7, 8, 9, 16, 17, 18, 19, 10, 11, 12, 13, 14, 15, 33, 34, 35, 36, 37, 35, 34, 42, 42, 41, 40, 3 | WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 09 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x004dc298 |
| 린샹 | 환영각 | `0x2d` | `0x37` | `0x004dc2a4` | 20, 21, 22, 23, 23, 3 | WLK id 18 | WLK id 08 |  |  | idle/end marker at 0x004dc300 |
| 린샹 | 맹호단공아 | `0x2e` | `0x38` | `0x004dc30c` | 12, 13, 3 |  | WLK id 05 | movement/s3/d8, movement/s0/d0 |  | idle/end marker at 0x004dc34c |
| 린샹 | 도주 | `0x2f` | `0x39` | `0x004dc358` | 43, 44, 45, 46, 22, 23, 23, 3 | WLK id 31 | WLK id 05 |  |  | idle/end marker at 0x004dc3d4 |
| 린샹 | 방어 | `0x30` | `0x3a` | `0x004dc3e0` | 3 |  |  |  |  | idle/end marker at 0x004dc3f0 |
| 스마슈 | 베기 | `0x01` | `0x0b` | `0x00524790` | 20, 21, 22, 2 |  | WLK id 03 |  |  | idle/end marker at 0x005247e0 |
| 스마슈 | 마구베기 | `0x02` | `0x0c` | `0x00524790` | 20, 21, 22, 2 |  | WLK id 03 |  |  | idle/end marker at 0x005247e0 |
| 스마슈 | 마구베기 | `0x03` | `0x0d` | `0x005247ec` | 23, 24, 25, 22, 22, 2 |  | WLK id 04 |  |  | idle/end marker at 0x0052484c |
| 스마슈 | 마구베기 | `0x04` | `0x0e` | `0x005247ec` | 23, 24, 25, 22, 22, 2 |  | WLK id 04 |  |  | idle/end marker at 0x0052484c |
| 스마슈 | 정열의 붉은마검 | `0x11` | `0x1b` | `0x00524a6c` | 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 2, 2 | WLK id 18, WLK id 18, WLK id 18, WLK id 18 | WLK id 04 | movement/s2/d0, movement/s3/d0, movement/s0/d0 | 2@0x00524aa0, 2@0x00524ad4, 2@0x00524b08, 4@0x00524b3c | idle/end marker at 0x00524be4 |
| 스마슈 | 절사어면 | `0x12` | `0x1c` | `0x00524c70` | 23, 24, 25, 22, 2 |  | WLK id 07 | movement/s0/d0 |  | idle/end marker at 0x00524cd8 |
| 스마슈 | 난도질 | `0x13` | `0x1d` | `0x00524ce4` | 7, 8, 9, 9, 9, 12, 13, 13, 18, 18, 2 |  | WLK id 20, WLK id 20, WLK id 20, WLK id 03 | movement/s4/d0, movement/s2/d12, movement/s0/d0 |  | idle/end marker at 0x00524dc8 |
| 스마슈 | 열시섬 | `0x20` | `0x2a` | `0x00525540` | 21, 22, 16, 17, 21, 21, 22, 16, 17, 17, 26, 27, 28, 29, 2, 2 | WLK id 17 | WLK id 04 |  | 2@0x005255c0 | idle/end marker at 0x0052571c |
| 스마슈 | 냉도투무 | `0x21` | `0x2b` | `0x00525728` | 10, 11, 12, 13, 2 | WLK id 18 | WLK id 04 | movement/s5/d0, movement/s0/d0 |  | idle/end marker at 0x00525788 |
| 스마슈 | 투신의 춤 | `0x22` | `0x2c` | `0x00525794` | 12, 13, 16, 17, 12, 13, 13, 2 | WLK id 18 | WLK id 08 |  |  | idle/end marker at 0x00525820 |
| 스마슈 | 도주 | `0x23` | `0x2d` | `0x0052582c` | 26, 27, 28, 29, 32, 32, 26, 27, 28, 29, 3, 3, 26, 27, 28, 29, 30, 30, 2 | WLK id 18, WLK id 18, WLK id 18 | WLK id 05, WLK id 05, WLK id 05 | movement/s5/d0, movement/s0/d0 | 3@0x00525838, 3@0x005258a0, 3@0x00525908 | idle/end marker at 0x00525974 |
| 스마슈 | 방어 | `0x24` | `0x2e` | `0x00525980` | 0 |  |  |  |  | idle/end marker at 0x00525990 |
| 스마슈 | 눈요기 | `0x25` | `0x2f` | `0x0052599c` | 2 | WLK id 11 |  |  |  | idle/end marker at 0x005259b0 |
| 스마슈 | 인법·몸감추기 | `0x26` | `0x30` | `0x005259bc` | 3 | WLK id 22 |  |  |  | idle/end marker at 0x005259d0 |
| 스마슈 | 신격방어 | `0x27` | `0x31` | `0x005259dc` | 6, 4, 40, 41 | WLK id 32 |  |  |  | idle/end marker at 0x00525a14 |

## Notes

- This is static bytecode walking, not runtime sampling.
- Entry start pre-effect audit status: pass (0 clear candidates after current corrections).
- Promoted rows are the player skill families whose VM stream reaches an idle/end marker with the currently decoded opcode set.
- Fallback/payload-only player rows are now looked up through per-actor display VM pointer tables indexed by phase = skillId + 0x0a.
- 0xbc handler is statically grounded at 0x0040e216. byte1=0 performs direct +0x1c/+0x20 placement, byte1>0 allocates a child display VM object and stores target +0x80/+0x84 plus per-step delta +0x74/+0x78.
- 0x08 is a variable-length display-object init list. It writes byte/word/dword fields until an 0xff terminator; dword +0x28 is a packed sprite/frame selector.
- 0x0a is a branch table. It reads a byte from the display object at script byte1 offset, clamps it to script byte2 count, and jumps to one of the following dword pointers.
- 0x20 binds a resource/context pointer into object +0x64, sets +0x62=1, and marks the display object with flag 0x04000000.
- 0x2b resolves an effect/resource handle by calling 0x427730 with the script word operand and stores the returned handle in display object +0x58.
- 0xbc byte2 is a position selector. selector 0 returns to the actor base position, 1..4 are target-relative placements, 5 is a screen-size fixed placement, and 6..7 attach child objects to the parent display object.
- 0xbc byte3 is a motion step divisor/count. The handler divides target-current delta by byte3 for child motion; it is not an arbitrary speed label.
- 0x1e/0x2c/0xc0 consume the target/velocity fields that prior setup opcodes write. 0xc0 is the bounded variant and calls display-boundary helpers.
- 0x2d/0x2e form a separate trigonometric motion pair: 0x2e computes angle fields, 0x2d applies sine/cosine-like offsets.
- 0x60..0x64 are descriptor/resource-list opcodes. They create and update display VM objects from the 0x00442d95 descriptor pointer table; they are not simple frame opcodes.
- 0x06 is grounded as a repeat-loop instruction at handler 0x004024cc. It stores the loop target in display object +0x3c and the repeat counter in +0x60; downstream timeline builders expand the loop body where needed.
- 0x4b is decoded as a 4-byte display-list cleanup: it walks a list slot and frees objects whose kind/priority mask matches the operand.
- 0x1f is grounded as child/parent display-object linkage: current +0xa4 receives the object in current +0x58, and that linked object +0xa0 points back to current.
- 0x42 is grounded as parent battle actor binding: it writes display object +0xa8 from battle actor table 0x0059db30, using either current object +0xf2 or an explicit script actor slot.
- 0x25 is grounded as a submode dispatch. The observed 0xf1 form in 비기·맹호유성각 calls 0x0042976b, which scans the 16-entry global effect slot table at 0x58d618..0x58d622, clears active flags, and invokes each slot object's vtable update/free callbacks.
- The frame sequence here is based on 0x21 frame-write instructions. Runtime samples can show the previous frame at a sound/damage cursor, so the runtime trace and static write stream are offset by one cursor step in places.
- Speed-scaling skills are visible in movement/gate fields: 아타호 맹호비상각 uses gate/divisor 32,24,16,8 by skill level, and 스마슈 쾌진격 uses movement divisor 20,16,12,8.
- 아타호 비기·맹호유성각 is not a normal direct-hit actor motion. The main actor VM starts WLK/effect control and spawns child VM 0x004d7490, matching the observed full-screen flying/meteor-style effect.
