{"version":1,"kind":"hwanse-battle-display-opcode-semantics-review","source":"Hwanse2.exe","status":"remaining-display-opcodes-audited","runtimeUsed":false,"summary":{"auditedOpcodes":8,"grounded":8,"partiallyGrounded":0,"decodedRows":4016},"interpretationNotes":["0x10 is no longer treated as a vague placement helper; it is a byte field operation opcode.","0xbd no longer means cleanup in the narrow sense.  It is a helper-call dispatch through 0x00411730/0x00454c10; some helpers perform cleanup-like behavior, but most spawn or control visuals.","0xbf/0xc1 are state barriers.  They should not be converted directly to fixed milliseconds without runtime calibration.","0x25 0xf1 is not a sprite/effect resource selector. It is a global effect-slot flush/update control used after child-effect swarm creation."],"rows":[{"opcode":"0x10","status":"grounded","semantic":"byte-width field operation","handlerVaHex":"0x00402d2e","evidence":"handler selects source by mode&0x30, destination by mode&0xc0, applies shared operation helper 0x00402f6f, then writes byte/dword by destination group","count":24,"remaining":"visual label 없음; dataflow role is grounded","example":{"owner":"아타호","skill":"비기·맹호유성각","vaHex":"0x004d73a0","bytes":"10 b0 58 59","summary":"byte field op dest:display.byte[+0x58] = source:parentActor.byte[+0x59]","semanticCategory":"byte-field-op"}},{"opcode":"0x11","status":"grounded","semantic":"child/display field operation","handlerVaHex":"0x0040308c","evidence":"child/display object field writes use the same display field layout as helper child scripts; used for helper position/motion setup","count":52,"remaining":"field names are functional labels from repeated consumers, not source-symbol names","example":{"owner":"스마슈","skill":"인법·분신술","vaHex":"0x00525130","bytes":"11 80 92 00 02 00 00 00","summary":"display/child field +0x92, imm=0x00000002 (3.05176e-05px), mode=0x80","semanticCategory":"child/display-field-op"}},{"opcode":"0x12","status":"grounded","semantic":"dword display/actor field operation","handlerVaHex":"0x0040308c","evidence":"direct frame writes to +0x28 and repeated x/y/velocity/target field writes tie the field map to actor/helper motion","count":460,"remaining":"field names are functional labels from repeated consumers, not source-symbol names","example":{"owner":"아타호","skill":"호격권","vaHex":"0x004d659c","bytes":"12 81 1c 00 00 00 10 00","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","semanticCategory":"dword-field-op"}},{"opcode":"0x24","status":"grounded","semantic":"effect/cast WLK cue or effect handle helper","handlerVaHex":"0x004045a0","evidence":"217 0x24 effect cue calls; mode 0x01/arg1 0 resolves WLK/effect cue through 0x0042af73 and stores a handle","count":194,"remaining":"whether a cue is best described as cast sound or helper/effect sound is presentation-level, not stream-boundary uncertainty","example":{"owner":"아타호","skill":"호격권","vaHex":"0x004d65a4","bytes":"24 01 00 06","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","semanticCategory":"effect/cast-wlk-cue"}},{"opcode":"0x25","status":"grounded","semantic":"effect-control submode dispatch / global effect-slot flush-update","handlerVaHex":"0x004047c1","evidence":"submodes 0x00/0x01/0x80/0x81/0xf1 dispatch to known callees; 0xf1 calls 0x0042976b, which scans 16 global effect slots at 0x58d618..0x58d622, clears active flags, and invokes each slot object's vtable update/free callbacks after 비기·맹호유성각 helper 79 child-effect swarm","count":4,"remaining":"presentation name can vary, but the control role is grounded","example":{"owner":"아타호","skill":"비기·맹호유성각","vaHex":"0x004d745c","bytes":"25 f1 00 00","summary":"effect-control submode=0xf1 operand=0x0000; flush/update global effect slots 0x58d618..0x58d622; used after 비기·맹호유성각 helper 79 child-effect swarm","semanticCategory":"effect-slot-control"}},{"opcode":"0xbd","status":"grounded","semantic":"helper-call dispatch","handlerVaHex":"0x0040eab3","evidence":"0xbd handler calls 0x411730; dispatcher reads script[1] and calls dword ptr [0x454c10 + id*4].","count":144,"usedHelperIds":85,"decodedChildScripts":85,"remaining":"helper visual behaviors are classified by child script/spawn tree; opcode dispatch itself is grounded","example":{"owner":"아타호","skill":"호격권","vaHex":"0x004d65d0","bytes":"bd 70 00 00","summary":"helper-call id=112; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","semanticCategory":"helper-call"}},{"opcode":"0xbf","status":"grounded","semantic":"display/actor busy barrier","handlerVaHex":"0x0040ecdb","evidence":"wait opcode review classifies 0xbf by surrounding actor flag/result signatures; it advances when active actor/display busy state clears","count":217,"semanticClassCounts":{"actor-flag-barrier":24,"actor-flag-busy-barrier":44,"inverse-actor-flag-barrier":4,"pierce-motion-actor-flag-barrier":8,"pre-result-actor-flag-barrier":23,"result-reaction-barrier":173},"remaining":"browser ms conversion remains approximate because this is a state barrier, not a fixed delay","example":{"owner":"아타호","skill":"호격권","vaHex":"0x004d6618","bytes":"bf 00 00 00","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","semanticCategory":"display-state-barrier"}},{"opcode":"0xc1","status":"grounded","semantic":"actor flag barrier","handlerVaHex":"0x0040edb5","evidence":"mask distribution {'0x00000002': 51, '0x00000200': 8}; mode distribution {'0': 55, '1': 4}","count":59,"remaining":"browser ms conversion remains approximate because this is a flag barrier, not a fixed delay","example":{"owner":"아타호","skill":"호격권","vaHex":"0x004d65fc","bytes":"c1 00 00 00 02 00 00 00","summary":"actor flag barrier mode=0, mask=0x00000002","semanticCategory":"actor-flag-barrier"}}]}