re: mining the base-solver index -- a false-positive mode named, and the AI-table reader found
277 rows over 190 distinct functions (a function can read several blocks). name_block_bases.py extended with a confidence split. The tool's false-positive mode, measured and named: 107 of 277 rows solve to a base on a 64K boundary -- a bare "addis rX, r0, 0xHHHH" with no addi, so any scatter of displacements votes for it. 82 are 0x820B0000: about 60 near-identical functions in 0x8281xxxx-0x8284xxxx all "naming" the same rou_e0NN list. The 170 rows with a non-zero low half are the trustworthy set. A round base is not automatically wrong -- sub_822215D0 sits on 0x820A0000 and resolves 205/206 -- so read the ratio, not the base. The index re-derives every loader we already knew (unit 217, stage settings 129, PlayerParams 90, hangar 81, squadron orders, missile guidance, shell movement, substructures, six camera/fog readers) -- that is the control. The find: sub_8233C368 reads the AI behaviour table. r28, base 0x8208583C, 20 names -- Enumerate_AIs, FiringLength, GuardLength, AutoGuardLength, CounterLength, MusterLength. stage-mission-tables.md owns those field names on the data side, but Enumerate_AIs appears in no document and no reader was known; the corpus carries the AI tail of Maneuver as NEEDS-HUMAN/runtime. It is statically reachable after all. The same base also serves sub_82338EE0 (97 names, Weapon TargetType SpecialWeaponType ReticleType IsCharging ...) -- the weapon datasheet loader, also not previously named. Five unowned blocks surfaced and NOT opened: PGHUD_*/PGREMAIN_NUM HUD part names (205/206), STAGE_RESULT/stage_num_shoot_down_aircrafts/EX_OVERVIEW, g_mWorldViewProjection/NormalMap/GlossinessMap engine material slots, Boss16Collision* (cross-links the S16 Guardian object), and roh_n001_menu1_cam_pos menu camera tags. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -5082,3 +5082,46 @@ noise floor (stack frames) and are excluded.
|
||||
🟡 Not settled: how the 11 curve samples are *applied* (the loader names the
|
||||
records; the interpolation is downstream); the remaining 255 of the 277 solved
|
||||
functions are listed but unexamined; what selects `Booster` (unchanged).
|
||||
|
||||
---
|
||||
|
||||
## ✅ 2026-08-27 — mining the base-solver index: a false-positive mode named, and the AI-table reader found
|
||||
|
||||
Item (a). 277 rows over **190 distinct functions** (a function can read several
|
||||
blocks). `name_block_bases.py` extended with a confidence split; artefact
|
||||
**+11/−0**, byte-identical across two runs.
|
||||
|
||||
🔴 **The tool's false-positive mode, now measured and named.** **107 of 277** rows
|
||||
solve to a base on a **64K boundary** — a bare `addis rX, r0, 0xHHHH` with no
|
||||
`addi`, so any scatter of displacements votes for it. **82 are `0x820B0000`**:
|
||||
~60 near-identical functions in `0x8281xxxx–0x8284xxxx` all "naming" the same
|
||||
`rou_e007 rou_e010 …` list. **The 170 rows with a non-zero low half are the
|
||||
trustworthy set.** ⚠️ A round base is not automatically wrong — `sub_822215D0`
|
||||
sits on `0x820A0000` and resolves 205/206 — so read the ratio, not the base.
|
||||
|
||||
✅ **Already owned, and the index re-derives them** (that is the control): the
|
||||
unit loader (217), stage settings (129), `PlayerParams` (90), hangar (81),
|
||||
squadron orders, missile guidance, shell movement, substructures, six camera/fog
|
||||
readers.
|
||||
|
||||
🔑 **The find: `sub_8233C368` reads the AI behaviour table** — `r28`, base
|
||||
`0x8208583C`, 20 names: **`Enumerate_AIs`**, `FiringLength`, `GuardLength`,
|
||||
`AutoGuardLength`, `CounterLength`, `MusterLength`, … `stage-mission-tables.md`
|
||||
owns those *field* names on the data side; **`Enumerate_AIs` appears in no
|
||||
document and no reader was known** — the corpus carries the AI tail of `Maneuver`
|
||||
as 🟡 NEEDS-HUMAN/runtime. **It is statically reachable after all.** The same base
|
||||
also serves `sub_82338EE0` (97 names, `Weapon TargetType SpecialWeaponType
|
||||
ReticleType IsCharging …`) — the weapon datasheet loader, also not previously
|
||||
named.
|
||||
|
||||
❔ **Five unowned blocks surfaced, none opened:** `sub_822215D0` (205/206,
|
||||
`PGHUD_*`/`PGREMAIN_NUM%d` HUD part names), `sub_822814D8` + `sub_8227A3A0`
|
||||
(`STAGE_RESULT`, `stage_num_shoot_down_aircrafts`, `EX_OVERVIEW`),
|
||||
`sub_822E3EC8` (`g_mWorldViewProjection`, `NormalMap`, `GlossinessMap` — engine
|
||||
material slots), `sub_823C0260` + `sub_823AE908` (`Boss16Collision*`,
|
||||
cross-linking the S16 `Guardian` object), `sub_822AFA50`
|
||||
(`roh_n001_menu1_cam_pos` — menu camera tags).
|
||||
|
||||
🟡 Not settled: the index says what each function *names*, not what each *means*
|
||||
— nothing above was opened. And the 107 low-confidence rows were flagged, not
|
||||
re-solved with a stricter method.
|
||||
|
||||
Reference in New Issue
Block a user