mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
chore(phase-30 S47): record the data-bundled family class — reach-57 banked, 56 siblings blocked
The reach-57 exemplar func_801EDC18 is banked and R22-green, but its family sweep returned 0/56. 54 of 56 failed 'parse error before buffer': the remapped sibling carries neither the draft's own Blk8 typedef nor any declaration of the per-member data symbol. Two gaps. (1) family_remap does not gather draft typedefs — the T7-S1 class, named a phase ago and still unbuilt; cdecl.strip_provided_typedefs is NOT the culprit, it correctly keeps a typedef the target lacks, so the loss is in unit extraction. (2) NEW: this family's data is PER-MEMBER — each sibling's .s carries its own rodata bytes, so a symbol remap cannot produce it; the bytes must be decoded per member and emitted as that member's definition. No existing tool does this. Bounded: 116 of 12,583 .s files are data-bundled. The md_* module TUs cannot fall back on the shared Blk8 (engine_types.h:497) because they include only common.h — tu_scope is 53 entries there versus 4,190 for an overlay.
This commit is contained in:
@@ -452,6 +452,29 @@ alias only on the demote path when the file's OWN comment says staged drafts arr
|
||||
burned three attempts on a 44-member class by inferring the shape instead of reading ONE failing
|
||||
draft, which took 90 seconds when I finally did it.
|
||||
|
||||
## ⚠ THE DATA-BUNDLED FAMILY CLASS — reach-57 exemplar BANKED, its 56 siblings BLOCKED (S47)
|
||||
`func_801EDC18` is banked and R22-green (cookbook §160a-c). Its family sweep returned **0/56**, and
|
||||
the cause is structural, not codegen: **54 of 56 failed `parse error before 'buffer'`.**
|
||||
The remapped sibling draft carries NEITHER the draft's `typedef struct { char c[8]; } Blk8;` NOR any
|
||||
declaration of the per-member data symbol:
|
||||
|
||||
extern int func_80171D78(u32, void *);
|
||||
void func_801E2860(u32 arg0) { Blk8 buffer; buffer = D_801E25EC; ... } <- both undeclared
|
||||
|
||||
**Two distinct gaps, one of them NEW:**
|
||||
1. **`family_remap` does not gather the draft's own typedefs** — the T7-S1 "typedef/macro gather"
|
||||
class, named a phase ago and still unbuilt. (`cdecl.strip_provided_typedefs` is NOT the culprit —
|
||||
it correctly KEEPS a typedef the target TU lacks. The loss is upstream, in unit extraction.)
|
||||
2. **NEW: this family's data is PER-MEMBER.** The exemplar needed `const Blk8 D_801ED98C = {{...}}`
|
||||
because the `.s` rodata block IS the definition (§160c). Every sibling has its OWN symbol with
|
||||
its OWN bytes, so a symbol remap cannot produce it — the bytes must be decoded from each
|
||||
member's `.s` and emitted as that member's definition. **No existing tool does this.**
|
||||
**Scope:** 116 of 12,583 `.s` files are data-bundled (§160b), so this class is real but bounded.
|
||||
**Why the md_* TUs cannot use the shared type:** they include only `common.h`; `engine_types.h`
|
||||
arrives via `engine_core.h`, which they do not include (`tu_scope` = 53 entries vs 4,190 for an
|
||||
overlay). `Blk8` already exists at `engine_types.h:497` but is unreachable from there.
|
||||
**Do NOT retry this sweep until a tool emits per-member data definitions + carries the typedef.**
|
||||
|
||||
## ▶ RESUME HERE — D (and the leftovers below)
|
||||
**C is DONE.** For reference, the command was:
|
||||
`.venv/bin/python tools/dedup_extend.py --binaries ov_SC03_107,ov_MAIN_012,ov_SC02_037`
|
||||
|
||||
Reference in New Issue
Block a user