# Event/Object VM 분석 기준

이 문서는 Scene/Event VM과 수동 맵 이동 분석의 현재 기준점을 정리한다.
맵 이동은 자동 scene 전환으로 승격하지 않고, 플레이어 입력/상호작용으로 시작되는 수동 trigger를 기본 전제로 둔다.

## 현재 확정 기준

- object VM dispatcher: `0x00402321`
- `0x2f` prompt/text command handler: `0x00405c79`
- `0x84` prompt-completion wait handler: `0x0040ae7e`
- prompt callback: `0x0041b66d`
- prompt choice subopcode `0x18`: `0x0041d61b`
- `0x13` conditional branch handler: `0x0040353e`
- compare helper: `0x0040370a`
- resource command VM runner: `0x00423a2f`
- resource opcode `0x10` map loader handler: `0x0042449c`

## 남기는 근간 산출물

- `out/active_object_script_inventory.json`
  - active object script 전체 재고.
  - text/prompt, manual movement opcode, unknown script 분류의 기준.
- `out/object_payload_442c75_callers.*`
  - `0x442c75` 수동 상호작용 payload caller 추적 기준.
- `out/manual_movement_trigger_bridge.*`
  - 수동 movement trigger와 object script 사이의 기존 연결 근거.
- `out/resource_command_vm_bridge_review.*`
  - resource runner와 opcode `0x10` map loader의 기준 근거.
  - field-map CNS refs 173/173이 map loader record임은 확정.
  - 수동 이동 trigger의 목적지 선택 proof는 없음.
- `out/manual_route_like_script_review.*`
  - route-like prompt를 가진 수동 object script 5개와 manual control script 분류.
- `out/manual_route_control_opcode_review.*`
  - route-like prompt script 안의 `0x2f -> 0x84 -> 0x13` 흐름.
  - `40 18 3a 02` choice marker가 `+0x3a`에 선택 결과를 기록.
  - `0x13` target 5/5는 reset/jump이며 target map loader가 아님.
- `out/opcode13_choice_branch_review.*`
  - `0x13` 전체 사용 분포.
  - `mode=0xc1/test=0x013a`는 112회 등장하는 보편적인 선택 결과 분기.
- `out/dan_rank_system_review.*`
  - 엔딩 단 평가 소비자.
  - `0x13 41 64` 분기 13개는 `+0x64` 단수 selector를 `12..0`과 비교한다.
  - `13단 전설의 맹호`는 분기 target이 아니라 branch miss/fallthrough 경로로 본다.
  - `0x10 41 64` writer 후보 12개는 같은 slot을 건드리지만, 아직 정확한 점수 공식/조건 flag로 승격하지 않는다.

## 현재 비승격 항목

- scene이 자동으로 map transition을 일으킨다는 주장.
- route-like prompt script의 target map proof.
- nearby CNS/resource proximity만으로 source map 또는 target map을 확정하는 해석.
- raw `0x3f` field-map reference를 실행되는 resource package executor로 승격하는 해석.
- opcode `0x13` 자체를 map transition opcode로 보는 해석.

## 정리한 중간 산출물

다음 파일들은 현재 근거 체계에서 직접 쓰이지 않는 중간 스캔으로 보고 제거한다.
필요하면 대응 `tools/` 스캐너를 새로 만들거나 복구해서 다시 생성한다.

- `out/active_object_map_context_review.*`
- `out/active_object_opcode24_chains.*`
- `out/active_resource_package_executor_review.*`
- `tools/build_active_object_map_context_review.py`
- `tools/summarize_active_object_opcode24_chains.py`
- `tools/build_active_resource_package_executor_review.py`

## 다음 분석 시작점

1. `manual_route_control_opcode_review`에서 `0x13` fallthrough와 target branch를 분리해 본다.
2. `0x12 +0x00ec`, `0x11 +0x00e8`, `0x55/0x65/0x66/0x67`이 실제 object 위치, script pointer, action gate를 어떻게 바꾸는지 handler 단위로 더 확정한다.
3. 목표 맵 proof가 나오기 전까지는 map transition으로 승격하지 않는다.
4. 단 평가 경로에서는 `+0x64` 소비자는 확정하지만, writer 주변 조건 gate를 해독하기 전까지 “최종 단수 공식”으로 승격하지 않는다.
