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:
@@ -203,3 +203,48 @@ HP 42 000 with levels at 25 000 / 10 000 and a lock-on release cycle
|
||||
|
||||
One record, `Generic`, one field — the **name** `eff_n0071` with an empty value.
|
||||
An effect id and nothing else. Not identified.
|
||||
|
||||
## ✅ Mining the 277: what the base-solver's index actually contains (2026-08-27)
|
||||
|
||||
277 rows over **190 distinct functions** (a function can read more than one
|
||||
block). Classified:
|
||||
|
||||
**🔴 The tool's false-positive mode, now named.** 107 rows solve to a base on a
|
||||
**64K boundary** — a bare `addis rX, r0, 0xHHHH` with no `addi` of its own, so any
|
||||
scatter of displacements votes for it. **82 of them are `0x820B0000`**, and they
|
||||
are ~60 near-identical functions in `0x8281xxxx–0x8284xxxx` all "naming" the same
|
||||
`rou_e007 rou_e010 rou_e015 …` list. Read a round base with its resolution ratio,
|
||||
never on its own. The 170 rows with a non-zero low half are the trustworthy set.
|
||||
|
||||
**Already owned** (the index re-derives them, which is the point): the unit
|
||||
loader `sub_82341A20` (217), stage settings `sub_8230D1F8` (129), `PlayerParams`
|
||||
`sub_822F9498` (90), the hangar `sub_822AE628` (81), squadron orders
|
||||
(`sub_82320B48` → `ORDER_WINGMAN_*`), missile guidance (`sub_8236B608`,
|
||||
`sub_8237BB78` → `st1_up_aperture` etc., [[weapon-datasheet-static]]), shell
|
||||
movement (`sub_82261F70` → `Spiral_BeginTime`, [[weapon-struct-runtime]]),
|
||||
substructures (`sub_823479B8` → `ParentStructureID`), and six camera/fog readers
|
||||
(`sub_825F2CF0`, `sub_825F2F88`, `sub_8247DFC0`, `sub_823B2620`, `sub_82222E70`,
|
||||
`sub_822C7480`).
|
||||
|
||||
**🔑 The find: `sub_8233C368` reads the AI behaviour table.** `r28`, base
|
||||
`0x8208583C`, 20 names — **`Enumerate_AIs`**, `FiringLength`, `GuardLength`,
|
||||
`AutoGuardLength`, `CounterLength`, `MusterLength`, … [[stage-mission-tables]]
|
||||
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 `0x8208583C` also serves `sub_82338EE0` (97 names,
|
||||
`Weapon TargetType SpecialWeaponType ReticleType IsCharging …`) — the **weapon**
|
||||
datasheet loader, likewise not previously named.
|
||||
|
||||
**Other unowned blocks the index surfaces** (measured, not investigated):
|
||||
`sub_822215D0` (205/206, `PGHUD_*` / `PGREMAIN_NUM%d` / `PGTIMER_NUM%d` — HUD
|
||||
part names; [[mission-script-manifest]] mentions `PGHUD_SUBTARGET` only),
|
||||
`sub_822814D8` + `sub_8227A3A0` (`STAGE_RESULT`, `stage_num_shoot_down_aircrafts`,
|
||||
`EX_OVERVIEW` — results/leaderboard fields), `sub_822E3EC8`
|
||||
(`g_mWorldViewProjection`, `NormalMap`, `GlossinessMap` — engine shader/material
|
||||
slots), `sub_823C0260` + `sub_823AE908` (`Boss16CollisionBody01…`,
|
||||
`rou_e901_body_02_c` — the S16 boss collision parts, cross-linking the `Guardian`
|
||||
object above), and `sub_822AFA50` (`roh_n001_menu1_cam_pos` — menu camera tags).
|
||||
|
||||
🟡 None of those five were opened; the index says what each names, not what each
|
||||
means.
|
||||
|
||||
Reference in New Issue
Block a user