feat: model ADV coroutines and retained effect teardown

This commit is contained in:
gamer147
2026-07-10 09:45:43 -04:00
parent 54bd9a7006
commit d9611a03b1
19 changed files with 474 additions and 222 deletions

View File

@@ -35,7 +35,7 @@ where `disp = 0x9b24c + op*4` (word index `0x26c93 + op`; e.g. `ctx[0x26e3f]=0x4
3. For each real `(op, handler_va)`:
- `create_function` at `handler_va` if none exists.
- **Preserve good names:** if the function already has a non-`FUN_`/`LAB_` name (e.g.
`gfx_op_0x215_register_query`, `sleep_op_0xc8`), do **not** rename — only ensure a plate comment
`gfx_op_0x215_query_source_slot`, `sleep_op_0xc8`), do **not** rename — only ensure a plate comment
records the opcode. Rename only raw `FUN_xxxx`/`LAB_xxxx``op_0xNN_handler`.
- `set_plate_comment`: `opcode 0xNN dispatch handler; resolved via ctx[0x26c93+op] in FUN_00413860`.
4. Emit `build/op-handler-map.json` (`{ "0x1ac": {"handler": "0x427fb0", "name": "..."}, ... }`).

View File

@@ -51,8 +51,9 @@ is a known library function." **Small by design** (a handful to low-dozens), not
- Task 1: report the newly-named count; spot-check 23 (e.g. does `FUN_0047f280` now carry a
`std::map`-family name? does a known `operator new` site read named?).
- Task 2 (if taken): decompile `gfx_op_0x215_register_query` — its `gfx_registry_map_find(...)` /
`FUN_0047f280` call should read as the curated `std_map_find`; `--lint` clean; 0 clobbers.
- Task 2 (if taken): do not classify `0x47f280` or `0x42cf70` as generic STL helpers. Later RE proved
they are purpose-specific `gfx_object_query_source_slot` and `vm_lvalue_descriptor_hash_insert`;
decompile `gfx_op_0x215_query_source_slot` to verify the former remains named; `--lint` clean; 0 clobbers.
- `save_program` succeeds.
## Scope & boundaries