Bound Tier2 stock BuildingType remap seam

This commit is contained in:
Jan Petykiewicz 2026-04-19 14:45:57 -07:00
commit 58e9effb83
2 changed files with 41 additions and 0 deletions

View file

@ -776,6 +776,28 @@ Working rule:
in this strip that still matters to Tier-2 is `0x00419559`, and it is simply the later clone
pass stamping the chosen seed-row id onto the new row. So the queue no longer needs another
generic `+0x173` writer sweep before returning to the actual bank-byte owner.
The `Port00` / `Warehouse00` name mystery is narrower than that bank-byte owner now too.
Direct recovery shows `0x00419680` constructing `gpdBuildingTypeDB` at `0x0062b2fc` by
storing vtable `0x005c9718`, and the surrounding `.rdata` descriptor at `0x005c9718` is the
`%1*.bty` table `{ 0x00416950, 0x00416ce0, 0x004168e0, "%1*.bty", ... }`. That same vtable is
used by the ordinary DB load path at `0x0044431c`, which calls slot `+0x04 = 0x00416ce0`,
while `0x00416950` iterates live rows and calls slot `+0x08 = 0x004168e0` as the per-entry
cleanup path. Inside `0x00416ce0`, the stock building-type loader rewrites only the bare
source names `port` (`0x005c8f94`) and `warehouse` (`0x005c8e4c`) to `Port00`
(`0x005c96a0`) and `Warehouse00` (`0x005c9694`) before scanning the live candidate collection
`0x0062b268`; when it finds the matching candidate row, it seeds `[row+0x173]` from the live
candidate row id at `0x00416ded` and then re-enters `0x00518900`. So the queue no longer
needs a generic hidden late writer for the `00` names themselves: that remap is already owned
by the stock `.bty` load callback. The remaining Tier-2 source question is now the row-family
choice and later bank selection above that remap, especially the shifted `00` families
(`35/43` vs `10/18`) and the still-fixed `01..11` run families (`45..55` / `56..66`).
The checked-in stock source report agrees with that split too:
`artifacts/exports/rt3-1.06/building-type-sources.json` still shows only bare source stems
`port` and `warehouse`, while `port00..11` and `warehouse00..11` stay in
`named_binding_comparison.binding_only_canonical_stems`. So the queue no longer needs more
stock `BuildingTypes/*.bty` discovery for the numbered families either; the remaining `01..11`
source work belongs under scenario/live candidate-table projection and row-family choice above
the already-grounded bare-name remap.
The direct `+0xba/+0xbb` writer census is narrower now too. The obvious newly surfaced stores
at `0x004ecd42/0x004ecdaa` and `0x004ed5d5/0x004ed625` are only shell-side portrait/string
refresh helpers: they walk a separate id-keyed collection through `0x0053f830`, free and