mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-03 16:16:50 -04:00
T5.1.c7: struct_twins: UNBOUND causes from use sites, SDK as note, fixed order; ## Twins regenerated
This commit is contained in:
+5
-5
@@ -1,8 +1,8 @@
|
||||
# The struct map — the types the fleet's cast sites need (Phase 37 T1)
|
||||
|
||||
> **Generated by `tools/type_census.py` at `343b718b21` (2026-09-30T21:12:15Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
|
||||
> **Generated by `tools/type_census.py` at `7a54682a25` (2026-09-30T22:44:05Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
|
||||
|
||||
**19124 types explain 498868 of 502988 dereference sites (99.2 %); 4120 sites have a base the census could not classify; 857 types carry a width conflict.** Merges by evidence: param 38876, assign 16783, arg 10825, field 9904, ret-of 4335, return 1524, assign& 1184, arg& 270.
|
||||
**19124 types explain 498868 of 502988 dereference sites (99.2 %); 4120 sites have a base the census could not classify; 857 types carry a width conflict.** Merges by evidence: param 38876, assign 16781, arg 10825, field 9896, ret-of 4335, return 1524, assign& 1184, arg& 270.
|
||||
|
||||
| # | type | sites | bodies | fields | size ≥ | width conflicts (+sign mixes) | instance globals | pointer globals |
|
||||
|---:|---|---:|---:|---:|---:|---:|---|---|
|
||||
@@ -136,7 +136,7 @@
|
||||
| 128 | `Unkstruct_db0ee441` | 516 | 129 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 129 | `Unkstruct_290ce261` | 504 | 126 | 3 | 0xfe | 0 (+0 sign) | | |
|
||||
| 130 | `Unkstruct_d6100faa` | 504 | 126 | 3 | 0x20 | 0 (+0 sign) | | |
|
||||
| 131 | `Unkstruct_5ebcbddc` | 504 | 126 | 3 | 0xe | 0 (+0 sign) | | |
|
||||
| 131 | `Unkstruct_fc43506c` | 504 | 126 | 3 | 0xe | 0 (+0 sign) | | |
|
||||
| 132 | `Unkstruct_7cb40b10` | 500 | 500 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 133 | `Unkstruct_4e078af8` | 496 | 124 | 2 | 0x4 | 0 (+2 sign) | | |
|
||||
| 134 | `Unkstruct_494cef68` | 496 | 124 | 2 | 0x188 | 0 (+0 sign) | | |
|
||||
@@ -167,7 +167,7 @@
|
||||
| 159 | `Unkstruct_e1c73ac0` | 378 | 126 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 160 | `Unkstruct_8ba4da0a` | 378 | 126 | 3 | 0x1c | 0 (+0 sign) | | |
|
||||
| 161 | `Unkstruct_93e44aed` | 378 | 126 | 2 | 0x1c | 0 (+0 sign) | | |
|
||||
| 162 | `Unkstruct_24687968` | 378 | 126 | 3 | 0xe | 0 (+0 sign) | | |
|
||||
| 162 | `Unkstruct_8dd0822e` | 378 | 126 | 3 | 0xe | 0 (+0 sign) | | |
|
||||
| 163 | `Unkstruct_89684c99` | 375 | 125 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 164 | `Unkstruct_d0754cca` | 375 | 125 | 2 | 0x24 | 0 (+0 sign) | | |
|
||||
| 165 | `Unkstruct_89f82b52` | 372 | 124 | 3 | 0x1ca | 0 (+0 sign) | | |
|
||||
@@ -178,7 +178,7 @@
|
||||
| 170 | `Unkstruct_39de3511` | 372 | 124 | 3 | 0x12 | 0 (+0 sign) | | |
|
||||
| 171 | `Unkstruct_1b4331f0` | 369 | 123 | 3 | 0x5e | 0 (+0 sign) | | |
|
||||
| 172 | `Unkstruct_75e9a6af` | 369 | 123 | 3 | 0x10 | 0 (+0 sign) | | |
|
||||
| 173 | `Unkstruct_b39064df` | 366 | 14 | 24 | 0xa2 | 3 (+3 sign) | | |
|
||||
| 173 | `Unkstruct_c59d6379` | 366 | 14 | 24 | 0xa2 | 3 (+3 sign) | | |
|
||||
| 174 | `Unkstruct_5c635b4b` | 364 | 14 | 13 | 0x34 | 0 (+0 sign) | | |
|
||||
| 175 | `Unkstruct_800AE620` | 325 | 322 | 0 | 0x0 | 0 (+0 sign) | D_800AE620 | |
|
||||
| 176 | `Unkstruct_814e4d87` | 300 | 75 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
|
||||
+664
-71
@@ -12,6 +12,524 @@
|
||||
|
||||
<!-- generated by tools/struct_twins.py --write; regenerate, do not hand-edit -->
|
||||
|
||||
### 4cc70dd1aeae:opaque
|
||||
names: B4_80165140, B4_8017F154, B4_8018750C, B4_8018AD9C, B4_8018C334, B4_CB578, B4_SC03_014_8018A860, BYTES_800CFAD0, Blk4_8017CE90_8017CE90, Blk4_8017D5DC, Blk4_8017D7A0, Blk4_8017E808, Blk4_80180518, Blk4_801815D4, Blk4_80181EDC, Blk4_80181EDC_8017FEA0, Blk4_80182194, Blk4_80183AF4, Blk4_80183FCC, Blk4_80185D4C, Blk4_8018B4E0, Blk4_8018B5E4, Blk4_8018B948, Blk4_8018BDD0, Blk4_8018CC28, Blk4_8018CE04_80186D40, Blk4_8018CE04_80188C34, Blk4_8018CE04_8018A724, Blk4_8018FF98, Blk4_80191320_80191070, Blk4_801EC660, Blk4_9B4, Blk4_E960, Blk4_SC06_018_8018AB00, Blk4_SC07_000_8017F8B8, Block4, Col4, EffectSlot4, EffectSlot4_8017E32C, EffectSlot4_801811D4, EffectSlot4_80186494, EffectSlot4_801878E8, EffectSlot4_80189454, EffectSlot4_8018AF48, EffectSlot4_8018AF9C, EffectSlot4_8018F9C0, M4_801A0168, M4_801AE734, M4_801AEB04, Q_80138C60, Quad4_800CCB14, Quad_801EA880_8017D900, Src, V4_80181EB8, W4_80181E88, W4_td
|
||||
cause: 56 names (4 B, all members placeholders) bound to 431 distinct objects, none bound to two names: 0x800CC114, 0x800CCB14, 0x80114E7C, 0x8017D8D0, 0x8017E2AC, 0x8017E2E8, 0x8017E374, 0x8017E5A4 …; same layout as PsyQ CVECTOR, CdlLOC, no name of the row bound to it; full list: tools/struct_twins.py --show 4cc70dd1aeae:opaque
|
||||
- `B4_80165140`: 2 obj — ov_MAIN_012/0x80165140:param_1, ov_SC01_000/0x80165140:param_1
|
||||
- `B4_8017F154`: 7 obj — 0x8019E28C, 0x8019E290, 0x8019E294, 0x8019F95C, 0x8019F960, 0x8019F9A0, ov_SC06_016/0x8017F154:blk
|
||||
- `B4_8018750C`: 3 obj — 0x8018750C(arg1), ov_SC06_032/0x8018750C:p, ov_SC06_032/0x8018750C:param_2
|
||||
- `B4_8018AD9C`: 2 obj — ov_SC06_033/0x8018AD9C:param_4, ov_SC06_033/0x8018AD9C:pkt
|
||||
- `B4_8018C334`: 2 obj — ov_SC06_018/0x8018C334:p, ov_SC06_018/0x8018C334:param_2
|
||||
- `B4_CB578`: 2 obj — 0x800CC114, md_MAIN_019/0x800CB578:clr
|
||||
- `B4_SC03_014_8018A860`: 3 obj — ov_SC03_014/0x8018A860:a2, ov_SC03_014/0x8018A860:a3, ov_SC03_014/0x8018A860:s1
|
||||
- `BYTES_800CFAD0`: 1 obj — 0x80114E7C
|
||||
- `Blk4_8017CE90_8017CE90`: 9 obj — 0x8018A924, 0x8018BCA0, 0x8018D380, 0x801AE628, 0x801C11B0, 0x801D4228, 0x801EA840, ov_SC03_024/0x8017CE90:s2 (+1)
|
||||
- `Blk4_8017D5DC`: 4 obj — 0x8018E24C, 0x8018E250, 0x8018F59C, ov_SC04_010/0x8017D5DC:s0
|
||||
- `Blk4_8017D7A0`: 3 obj — 0x8019BA08, 0x8019BA0C, ov_SC05_007/0x8017D7A0:p_buf
|
||||
- `Blk4_8017E808`: 4 obj — 0x8019DBF8, 0x8019DBFC, 0x8019EFF8, 0x8019EFFC
|
||||
- `Blk4_80180518`: 14 obj — 0x8019EBCC, 0x8019EBD0, 0x8019EBD4, 0x8019FFA0, 0x8019FFA4, 0x8019FFE0, 0x8019FFE4, 0x801ABF54 (+6)
|
||||
- `Blk4_801815D4`: 5 obj — 0x80189C3C, 0x80189C58, 0x80189C74, 0x80189C90, ov_SC03_102/0x801815D4:col
|
||||
- `Blk4_80181EDC`: 5 obj — 0x801D1A8C, 0x801D1A90, 0x801D3100, 0x801D3104, ov_SC02_028/0x80181EDC:s0
|
||||
- `Blk4_80181EDC_8017FEA0`: 6 obj — 0x801A94BC, 0x801A94C0, 0x801AAAE0, 0x801AAAE4, ov_SC03_097/0x8017FEA0:s0, ov_SC03_097/0x80180304:sp10
|
||||
- `Blk4_80182194`: 8 obj — 0x8019C980, 0x8019C984, 0x801D1A94, 0x801D1A98, ov_SC02_028/0x80182194:sp10, ov_SC02_028/0x80182194:sp18, ov_SC03_101/0x801806B8:sp10, ov_SC03_101/0x801806B8:sp18
|
||||
- `Blk4_80183AF4`: 4 obj — 0x801BED14, 0x801BED18, ov_SC03_104/0x80183AF4:pos, ov_SC03_104/0x80183AF4:vel
|
||||
- `Blk4_80183FCC`: 4 obj — 0x801E2E70, 0x801E2E74, 0x801E44A4, ov_SC02_005/0x80183FCC:s2
|
||||
- `Blk4_80185D4C`: 4 obj — 0x801CF0DC, 0x801CF0E4, 0x801D0D80, ov_SC06_032/0x80185D4C:dst
|
||||
- `Blk4_8018B4E0`: 3 obj — aED994_8018B4E0, aEFD80_8018B4E0, aEFD84_8018B4E0
|
||||
- `Blk4_8018B5E4`: 3 obj — aED994_8018B5E4, aEFD80_8018B5E4, aEFD84_8018B5E4
|
||||
- `Blk4_8018B948`: 2 obj — 0x801ED9B4, ov_SC04_011/0x8018B948:ptr
|
||||
- `Blk4_8018BDD0`: 4 obj — 0x801E2F50, 0x801E2F54, 0x801E4918, 0x801E491C
|
||||
- `Blk4_8018CC28`: 4 obj — 0x801E2F58, 0x801E2F5C, 0x801E4958, 0x801E495C
|
||||
- `Blk4_8018CE04_80186D40`: 4 obj — 0x801C5B80, 0x801C5B84, 0x801C7E7C, 0x801C7E80
|
||||
- `Blk4_8018CE04_80188C34`: 4 obj — 0x801B82E0, 0x801B82E4, 0x801BCA08, 0x801BCA0C
|
||||
- `Blk4_8018CE04_8018A724`: 4 obj — 0x801EA170, 0x801EA174, 0x801EC458, 0x801EC45C
|
||||
- `Blk4_8018FF98`: 8 obj — 0x801CF1A4, 0x801CF1A8, 0x801D0E40, 0x801D0E44, 0x801D3B14, 0x801D3B18, 0x801D59F0, 0x801D59F4
|
||||
- `Blk4_80191320_80191070`: 5 obj — 0x801CF0E8, 0x801CF0F0, 0x801D0FC0, ov_SC06_032/0x80191070:col, ov_SC06_032/0x80191070:p
|
||||
- `Blk4_801EC660`: 3 obj — 0x801EC660, 0x801EC664, ov_SC01_001/0x801824EC:aD801F2A50
|
||||
- `Blk4_9B4`: 4 obj — 0x801865A8, 0x801D0620, 0x801D0624, aD_801CE7A4
|
||||
- `Blk4_E960`: 3 obj — 0x80186540, 0x801CE6E0, ov_SC07_000/0x8017E960:s0
|
||||
- `Blk4_SC06_018_8018AB00`: 5 obj — 0x801D3B08, 0x801D3B0C, 0x801D3B10, 0x801D57B0, 0x801D57B4
|
||||
- `Blk4_SC07_000_8017F8B8`: 3 obj — 0x801865C0, 0x801CE7A4, ov_SC07_000/0x8017FBE8:s0
|
||||
- `Block4`: 28 obj — 0x80191968, 0x8019196C, 0x801AD2DC, 0x801AECC8, 0x801B2BCC, 0x801B2BD0, 0x801B41C8, 0x801BFD90 (+20)
|
||||
- `Col4`: 3 obj — ov_SC06_006/0x8017ED24:buf, ov_SC06_006/0x8017ED24:param_1, ov_SC06_006/0x8017ED24:param_2
|
||||
- `EffectSlot4`: 10 obj — 0x80196D68, 0x80196DCC, 0x80196DF4, 0x80196DF8, 0x80196E28, 0x80196E2C, 0x80196E5C, 0x80196E60 (+2)
|
||||
- `EffectSlot4_8017E32C`: 10 obj — 0x8018BB0C, 0x8018BB70, 0x8018BB98, 0x8018BB9C, 0x8018BBCC, 0x8018BBD0, 0x8018BC00, 0x8018BC04 (+2)
|
||||
- `EffectSlot4_801811D4`: 10 obj — 0x801F53F4, 0x801F5458, 0x801F5480, 0x801F5484, 0x801F54B4, 0x801F54B8, 0x801F54E8, 0x801F54EC (+2)
|
||||
- `EffectSlot4_80186494`: 10 obj — 0x80198A64, 0x80198AC8, 0x80198AF0, 0x80198AF4, 0x80198B24, 0x80198B28, 0x80198B58, 0x80198B5C (+2)
|
||||
- `EffectSlot4_801878E8`: 10 obj — 0x801C3BB4, 0x801C3C18, 0x801C3C40, 0x801C3C44, 0x801C3C74, 0x801C3C78, 0x801C3CA8, 0x801C3CAC (+2)
|
||||
- `EffectSlot4_80189454`: 10 obj — 0x8018F354, 0x8018F3B8, 0x8018F3E0, 0x8018F3E4, 0x8018F414, 0x8018F418, 0x8018F448, 0x8018F44C (+2)
|
||||
- `EffectSlot4_8018AF48`: 10 obj — 0x801D714C, 0x801D71B0, 0x801D71D8, 0x801D71DC, 0x801D720C, 0x801D7210, 0x801D7240, 0x801D7244 (+2)
|
||||
- `EffectSlot4_8018AF9C`: 10 obj — 0x80190CEC, 0x80190D50, 0x80190D78, 0x80190D7C, 0x80190DAC, 0x80190DB0, 0x80190DE0, 0x80190DE4 (+2)
|
||||
- `EffectSlot4_8018F9C0`: 10 obj — 0x801EBCFC, 0x801EBD60, 0x801EBD88, 0x801EBD8C, 0x801EBDBC, 0x801EBDC0, 0x801EBDF0, 0x801EBDF4 (+2)
|
||||
- `M4_801A0168`: 4 obj — 0x801A0168, md_SC07_004/0x801A19C0:sp10, md_SC07_004/0x801A1F3C:sp10, md_SC07_004/0x801A2400:sp58
|
||||
- `M4_801AE734`: 3 obj — 0x801B0838, md_SC07_004/0x801ADA10:d, md_SC07_004/0x801AE734:t1
|
||||
- `M4_801AEB04`: 2 obj — 0x801A022C, md_SC07_004/0x801AEB04:a0
|
||||
- `Q_80138C60`: 134 obj — 0x8017D8D0, 0x8017E2AC, 0x8017E2E8, 0x8017E374, 0x8017E5A4, 0x8017E718, 0x8017E76C, 0x8017E814 (+126)
|
||||
- `Quad4_800CCB14`: 1 obj — 0x800CCB14
|
||||
- `Quad_801EA880_8017D900`: 10 obj — 0x801AE66C, 0x801AE670, 0x801AE674, 0x801C11F4, 0x801C11F8, 0x801C11FC, 0x801D426C, 0x801D4270 (+2)
|
||||
- `Src`: 1 obj — src/resident/0x800D185C:arg0
|
||||
- `V4_80181EB8`: 2 obj — 0x801CE7A8, ov_SC07_000/0x80181EB8:pv
|
||||
- `W4_80181E88`: 1 obj — ov_SC02_031/0x80181E88:a0
|
||||
- `W4_td`: 1 obj — ov_SC02_031/0x80181C2C:p
|
||||
|
||||
### 64533110def7:opaque
|
||||
names: Blk8S16, Blk8_80126940, Blk8_80180A38, D_80195AF4_t, D_80195AF6_t, ElemK, Elem_801347A0, Entry_80186A04, M8012AF0C, Node_80189244, P16, Rec_801897BC, Rec_8018A6A4, S8, S8_80172780, SV4L, SV4_8017DE40, SV4_8017E910, SV4_8017EA48, SV4_8018256C, SV4_80182818, SV4_801836B8, SV4_80186C20, SV4_8018A86C, SV4_FC6C, SV4_L_8017BEBC, SV4x_80180ACC, SV4x_80184754, SV4x_80184B30, SV4x_80184B30_801829C4, SV892CC, SV_801821E0, SVec801A8E34, SVec8_8017F694, Spawn8_80182848, Stk801395D4, Stride8_s16_80182868, Stride8_s16_80182868_80180970, TBL_80186144, V4s80147514, V8x_80180D2C, V8x_8018466C, V8x_801A3788, Vec3, Vec4s_80180F94, Vec8_c1
|
||||
cause: 46 names (8 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Obj_80189244 (0x80189244(arg0)); the other 45 bound to 124 distinct objects, none bound to two names: 0x801152A8, 0x80126940, 0x80126AF0, 0x80126B30, 0x801270A8, 0x801897BC, 0x8018A860(arg1), 0x8018BD34 …; same layout as PsyQ RECT, SVECTOR, no name of the row bound to it; full list: tools/struct_twins.py --show 64533110def7:opaque
|
||||
- `Blk8S16`: 3 obj — 0x801E9DA8, ov_SC02_011/0x80182714:base, ov_SC02_011/0x80182714:buf
|
||||
- `Blk8_80126940`: 11 obj — 0x80126940, ov_SC02_035/0x8017D130:sp10, ov_SC02_039/0x8017D110:sp10, ov_SC02_039/0x8017D110:sp18, ov_SC03_014/0x80183A54:sp10, ov_SC03_102/0x80180558:sp10, ov_SC03_105/0x8017E180:arr, ov_SC04_012/0x8017D190:sp10 (+3)
|
||||
- `Blk8_80180A38`: 2 obj — ov_SC03_102/0x80180A38:param_1, ov_SC03_102/0x80180A38:pos
|
||||
- `D_80195AF4_t`: 1 obj — 0x80195AF4
|
||||
- `D_80195AF6_t`: 2 obj — 0x80195AF6, ov_SC02_005/0x80184828:p
|
||||
- `ElemK`: 2 obj — ov_MAIN_012/0x80133CD4:base, ov_SC01_000/0x80133CD4:base
|
||||
- `Elem_801347A0`: 3 obj — 0x801152A8, ov_SC01_000/0x801347A0:arg2, ov_SC01_000/0x801347A0:pElem
|
||||
- `Entry_80186A04`: 5 obj — 0x801961B8, 0x801961E0, ov_SC02_005/0x80186A04:a2, ov_SC02_005/0x80186A04:p, ov_SC02_005/0x80186A04:t0
|
||||
- `M8012AF0C`: 4 obj — ov_SC03_001/0x8017D5F0:spB, ov_SC03_001/0x8017D5F0:spC, shared/ov/0x8012AF0C:spB, shared/ov/0x8012AF0C:spC
|
||||
- `Node_80189244`: 0 obj — used by type Obj_80189244 (0x80189244(arg0))
|
||||
- `P16`: 1 obj — ov_SC03_097/0x80180158:p
|
||||
- `Rec_801897BC`: 1 obj — 0x801897BC
|
||||
- `Rec_8018A6A4`: 3 obj — 0x8018A860(arg1), ov_SC03_014/0x8018A6A4:sp10, ov_SC03_014/0x8018A808:a0
|
||||
- `S8`: 2 obj — 0x80126AF0, 0x801270A8
|
||||
- `S8_80172780`: 3 obj — 0x80126B30, shared/ov/0x80172780:a0, shared/ov/0x80172C50:a0
|
||||
- `SV4L`: 4 obj — ov_SC06_016/0x801807C4:out1, ov_SC06_016/0x801807C4:out2, ov_SC06_016/0x801807C4:sv1, ov_SC06_016/0x801807C4:sv2
|
||||
- `SV4_8017DE40`: 1 obj — ov_SC03_007/0x8017DE40:svec_in
|
||||
- `SV4_8017E910`: 1 obj — 0x8019B5AC
|
||||
- `SV4_8017EA48`: 6 obj — 0x8018BD34, ov_SC03_007/0x8017EA48:buf, ov_SC03_007/0x8017EA48:c0, ov_SC03_007/0x8017EA48:c1, ov_SC03_007/0x8017EA48:v0, ov_SC03_007/0x8017EA48:v1
|
||||
- `SV4_8018256C`: 6 obj — 0x8018C340, ov_SC03_007/0x8018256C:buf, ov_SC03_007/0x8018256C:c0, ov_SC03_007/0x8018256C:c1, ov_SC03_007/0x8018256C:v0, ov_SC03_007/0x8018256C:v1
|
||||
- `SV4_80182818`: 1 obj — ov_SC07_002/0x80182818:sv
|
||||
- `SV4_801836B8`: 6 obj — 0x8018C524, ov_SC03_007/0x801836B8:buf, ov_SC03_007/0x801836B8:c0, ov_SC03_007/0x801836B8:c1, ov_SC03_007/0x801836B8:v0, ov_SC03_007/0x801836B8:v1
|
||||
- `SV4_80186C20`: 4 obj — ov_SC03_024/0x80186C20:out, ov_SC03_024/0x80186C20:sv, ov_SC05_006/0x8017F16C:out, ov_SC05_006/0x8017F16C:sv
|
||||
- `SV4_8018A86C`: 2 obj — ov_SC06_018/0x8018A86C:buf1, ov_SC06_018/0x8018A86C:buf2
|
||||
- `SV4_FC6C`: 2 obj — ov_SC03_007/0x8017FC6C:sv0, ov_SC03_007/0x8017FC6C:sv1
|
||||
- `SV4_L_8017BEBC`: 1 obj — ov_SC02_028/0x8017BEBC:vec
|
||||
- `SV4x_80180ACC`: 2 obj — ov_SC02_041/0x80180ACC:s0, ov_SC02_041/0x80180ACC:s1
|
||||
- `SV4x_80184754`: 2 obj — ov_SC02_017/0x80184754:a0, ov_SC02_017/0x80184754:s1
|
||||
- `SV4x_80184B30`: 2 obj — ov_SC03_090/0x80184B30:s0, ov_SC03_090/0x80184B30:s1
|
||||
- `SV4x_80184B30_801829C4`: 2 obj — ov_SC03_104/0x801829C4:s0, ov_SC03_104/0x801829C4:s1
|
||||
- `SV892CC`: 6 obj — ov_SC02_005/0x801892CC:o0, ov_SC02_005/0x801892CC:o1, ov_SC02_005/0x801892CC:o2, ov_SC02_005/0x801892CC:o3, ov_SC02_005/0x801892CC:v0, ov_SC02_005/0x801892CC:v1
|
||||
- `SV_801821E0`: 2 obj — ov_SC04_004/0x801821E0:out, ov_SC04_004/0x801821E0:v
|
||||
- `SVec801A8E34`: 1 obj — md_SC07_004/0x801A8E34:h
|
||||
- `SVec8_8017F694`: 2 obj — ov_SC06_016/0x8017F694:arg0, ov_SC06_016/0x8017F694:ptr2
|
||||
- `Spawn8_80182848`: 2 obj — ov_SC02_031/0x80182848:a1, ov_SC02_031/0x80182848:sp
|
||||
- `Stk801395D4`: 1 obj — shared/ov/0x801395D4:sp10
|
||||
- `Stride8_s16_80182868`: 1 obj — 0x801AB676
|
||||
- `Stride8_s16_80182868_80180970`: 1 obj — 0x801A4D12
|
||||
- `TBL_80186144`: 1 obj — 0x80195AF8
|
||||
- `V4s80147514`: 2 obj — shared/ov/0x80147514:arg0, shared/ov/0x80147514:buf
|
||||
- `V8x_80180D2C`: 6 obj — ov_SC03_108/0x801809A0:out, ov_SC03_108/0x801809A0:s0, ov_SC03_110/0x80180D2C:out, ov_SC03_110/0x80180D2C:s0, ov_SC03_112/0x80182944:out, ov_SC03_112/0x80182944:s0
|
||||
- `V8x_8018466C`: 2 obj — ov_SC05_001/0x8018466C:buf, ov_SC05_001/0x8018466C:s0
|
||||
- `V8x_801A3788`: 2 obj — md_SC07_003/0x801A3788:arg0, md_SC07_003/0x801A3788:s1
|
||||
- `Vec3`: 3 obj — shared/ov/0x8014964C:in, shared/ov/0x8014964C:out, shared/ov/0x8014964C:pin
|
||||
- `Vec4s_80180F94`: 3 obj — ov_SC04_015/0x80180F94:loc_10, ov_SC04_015/0x80180F94:loc_18, ov_SC04_015/0x80180F94:loc_20
|
||||
- `Vec8_c1`: 4 obj — shared/ov/0x8014FFDC:save, shared/ov/0x8014FFDC:test, shared/ov/0x801502EC:save, shared/ov/0x801502EC:test
|
||||
|
||||
### b53d46e36006:opaque
|
||||
names: B8, B8_17F474, B8_80165140, B8_801851A8, B8_8018750C, B8_8018C334, B8_8018F060, B8_801AEB04, B8_CB578, Blk8L, Blk8_8017B238_8017B238, Blk8_8017B614, Blk8_8017DAFC, Blk8_8017E224, Blk8_8017E6A4, Blk8_801809B0, Blk8_801812AC, Blk8_80181324, Blk8_801813B0, Blk8_801827C4, Blk8_80182844, Blk8_80182B08, Blk8_8018495C, Blk8_801859DC, Blk8_80186594, Blk8_801867AC, Blk8_801870AC, Blk8_8018B1B4, Blk8_80191320, Blk8_80191320_8018D05C, Blk8_820F8, Blk8_E08, Blk8_EBB8, Blk8_FE08, Blk8_func_8017E3AC, Blk8x, Copy8, ImgRect8, M8_tag, S6C, S8_80184F08, St_801E6C9C, Un8_8018613C, V8_SC06_000_8017E35C, XV8
|
||||
cause: 45 names (8 B, all members placeholders) bound to 559 distinct objects, none bound to two names: 0x80126BE0, 0x80128120, 0x80128138, 0x8017F12C, 0x8017FB08, 0x8017FB44, 0x8017FBD0, 0x8017FE00 …; full list: tools/struct_twins.py --show b53d46e36006:opaque
|
||||
- `B8`: 3 obj — 0x80128120, 0x80128138, shared/ov/0x80156B74:auStack_20
|
||||
- `B8_17F474`: 2 obj — 0x8018A790, ov_SC01_084/0x8017F474:a0
|
||||
- `B8_80165140`: 2 obj — ov_MAIN_012/0x80165140:param_1, ov_SC01_000/0x80165140:param_1
|
||||
- `B8_801851A8`: 2 obj — ov_SC03_089/0x801851A8:dst, ov_SC03_089/0x801851A8:out
|
||||
- `B8_8018750C`: 2 obj — ov_SC06_032/0x8018750C:param_1, ov_SC06_032/0x8018750C:q
|
||||
- `B8_8018C334`: 2 obj — ov_SC06_018/0x8018C334:p, ov_SC06_018/0x8018C334:param_1
|
||||
- `B8_8018F060`: 2 obj — ov_SC06_018/0x8018F060:out, ov_SC06_018/0x8018F060:pkt
|
||||
- `B8_801AEB04`: 2 obj — md_SC07_004/0x801AEB04:a0, md_SC07_004/0x801AEB04:a2
|
||||
- `B8_CB578`: 3 obj — md_MAIN_019/0x800CB578:arg0, md_MAIN_019/0x800CB578:p, md_MAIN_019/0x800CB578:pos
|
||||
- `Blk8L`: 2 obj — 0x801E9DA0, ov_SC02_011/0x80181EF4:buffer
|
||||
- `Blk8_8017B238_8017B238`: 4 obj — ov_SC01_000/0x8017B238:buf, ov_SC01_000/0x8017B238:p78C, ov_SC01_000/0x8017B238:p794, ov_SC01_000/0x8017B238:src
|
||||
- `Blk8_8017B614`: 270 obj — 0x801853BC, 0x801853C4, 0x8018F564, 0x8018F56C, 0x8018F984, 0x8018F98C, 0x8018F9D4, 0x8018F9DC (+262)
|
||||
- `Blk8_8017DAFC`: 2 obj — 0x801E06BC, ov_SC03_030/0x8017DAFC:buffer
|
||||
- `Blk8_8017E224`: 2 obj — 0x801D90F0, ov_SC01_077/0x8017E224:buffer
|
||||
- `Blk8_8017E6A4`: 2 obj — 0x80126BE0, ov_SC05_008/0x8017E6A4:buf
|
||||
- `Blk8_801809B0`: 2 obj — 0x8019C988, ov_SC03_101/0x801809B0:vec
|
||||
- `Blk8_801812AC`: 1 obj — ov_SC03_116/0x801812AC:pr
|
||||
- `Blk8_80181324`: 2 obj — 0x8018AA14, ov_SC05_018/0x80181324:local
|
||||
- `Blk8_801813B0`: 2 obj — ov_SC06_016/0x801813B0:dst, ov_SC06_016/0x801813B0:src
|
||||
- `Blk8_801827C4`: 2 obj — 0x801EE3F4, ov_SC02_017/0x801827C4:buffer
|
||||
- `Blk8_80182844`: 5 obj — 0x801E4F60, 0x801E4F68, ov_SC05_018/0x80182844:blk1, ov_SC05_018/0x80182844:blk2, ov_SC05_018/0x80182844:out
|
||||
- `Blk8_80182B08`: 2 obj — 0x801BED04, ov_SC03_104/0x80182B08:buffer
|
||||
- `Blk8_8018495C`: 2 obj — ov_SC02_017/0x8018495C:s0, ov_SC02_017/0x8018495C:s1
|
||||
- `Blk8_801859DC`: 1 obj — ov_SC02_027/0x801859DC:tmp
|
||||
- `Blk8_80186594`: 4 obj — ov_SC02_026/0x8017EF64:s0, ov_SC02_026/0x8017EF64:t0, ov_SC02_027/0x80186594:s0, ov_SC02_027/0x80186594:t0
|
||||
- `Blk8_801867AC`: 2 obj — 0x801AFBD0, ov_SC02_027/0x801867AC:sv
|
||||
- `Blk8_801870AC`: 1 obj — ov_SC02_028/0x801870AC:sv
|
||||
- `Blk8_8018B1B4`: 2 obj — 0x80194BA4, ov_SC04_011/0x8018B1B4:out
|
||||
- `Blk8_80191320`: 2 obj — ov_SC06_018/0x80191320:p, ov_SC06_018/0x80191320:src
|
||||
- `Blk8_80191320_8018D05C`: 2 obj — ov_SC06_033/0x8018D05C:p, ov_SC06_033/0x8018D05C:src
|
||||
- `Blk8_820F8`: 3 obj — 0x801CDE20, ov_SC01_005/0x801820F8:pd8, ov_SC01_005/0x801820F8:t1
|
||||
- `Blk8_E08`: 2 obj — 0x801E2E08, ov_SC02_005/0x80180E08:buf
|
||||
- `Blk8_EBB8`: 3 obj — ov_SC05_008/0x8017EBB8:copy, ov_SC05_008/0x8017EBB8:ent, ov_SC05_008/0x8017EBB8:s1
|
||||
- `Blk8_FE08`: 2 obj — 0x801E2DE0, ov_SC02_005/0x8017FE08:buffer
|
||||
- `Blk8_func_8017E3AC`: 2 obj — ov_SC02_026/0x8017E3AC:sp10, ov_SC02_026/0x8017E3AC:sp18
|
||||
- `Blk8x`: 4 obj — 0x801E2DD0, 0x801E2DE8, ov_SC02_005/0x8017F748:buffer, ov_SC02_005/0x8017FFF0:buffer
|
||||
- `Copy8`: 2 obj — ov_SC01_080/0x801819D0:a0, ov_SC01_080/0x801819D0:sp18
|
||||
- `ImgRect8`: 133 obj — 0x8017F12C, 0x8017FB08, 0x8017FB44, 0x8017FBD0, 0x8017FE00, 0x8017FF74, 0x8017FFC8, 0x80180070 (+125)
|
||||
- `M8_tag`: 1 obj — shared/ov/0x8016380C:local
|
||||
- `S6C`: 1 obj — 0x80185D6C
|
||||
- `S8_80184F08`: 32 obj — ov_SC01_077/0x80184F08:s50, ov_SC01_077/0x80184F08:s60, ov_SC01_084/0x80185E98:s50, ov_SC01_084/0x80185E98:s60, ov_SC02_000/0x8018A690:s50, ov_SC02_000/0x8018A690:s60, ov_SC02_011/0x8018F4B8:s50, ov_SC02_011/0x8018F4B8:s60 (+24)
|
||||
- `St_801E6C9C`: 2 obj — 0x801E6C9C, ov_SC02_000/0x80183098:buf
|
||||
- `Un8_8018613C`: 18 obj — ov_SC03_001/0x80188BFC:v0, ov_SC03_001/0x80188BFC:v1, ov_SC03_002/0x801846E8:v0, ov_SC03_002/0x801846E8:v1, ov_SC03_124/0x80185864:v0, ov_SC03_124/0x80185864:v1, ov_SC03_125/0x80182F6C:v0, ov_SC03_125/0x80182F6C:v1 (+10)
|
||||
- `V8_SC06_000_8017E35C`: 6 obj — ov_SC06_000/0x8017E35C:va, ov_SC06_000/0x8017E35C:vb, ov_SC06_000/0x8017E35C:vbuf, ov_SC06_000/0x8017E35C:vc, ov_SC06_000/0x8017E35C:vd, ov_SC06_000/0x8017E35C:vdbuf
|
||||
- `XV8`: 14 obj — ov_SC06_010/0x8017BEBC:va, ov_SC06_010/0x8017BEBC:vb, ov_SC06_010/0x8017BEBC:vc, ov_SC06_010/0x8017BEBC:vd, ov_SC06_010/0x8017BEBC:vd8, ov_SC06_010/0x8017BEBC:vt, ov_SC06_010/0x8017BEBC:vtp, ov_SC06_010/0x8017CAD4:va (+6)
|
||||
|
||||
### 8d605044e3bf:opaque
|
||||
names: Args_80182194, Blk8017FD54, Blk8_801A6AD0, Blk8_801AD914, Blk8_801E0764, Blk8_801E076C, Blk8_md_SC07_004_801AA9D4, Blk_80178D40, DBlock_8019F04C, D_801D0630_s, DataBlock, Data_t_80181CE0, Ent8_80188, Entry8_801A5D68, Rec8_801863EC, Rec8_801A57E8, SC05_F3E4_Tbl8, SV4U, SVec_801347A0, Stride8_u16_80182868, Stride8_u16_80182868_80180970, Tbl8_801AFF3C, Tbl_80181574, Tbl_80184F18, U16x4, UAlign8_80181F40, UAlign8_8018833C, Unk_80126940, V4U_8014C4AC, V8_SC07_002_8017C8D0, Vec4x16, Vec8_801A0E28, Vec8_801A1924, Vec8_md_SC07_003_801A3334
|
||||
cause: 34 names (8 B, all members placeholders) bound to 323 distinct objects, none bound to two names: 0x80126940, 0x8017D890, 0x8017D898, 0x8017E26C, 0x8017E274, 0x8017E2A8, 0x8017E2B0, 0x8017E334 …; full list: tools/struct_twins.py --show 8d605044e3bf:opaque
|
||||
- `Args_80182194`: 2 obj — ov_SC02_028/0x80182194:arg, ov_SC03_101/0x801806B8:arg
|
||||
- `Blk8017FD54`: 2 obj — 0x80185EB0, ov_SC07_010/0x8017FD54:param_1
|
||||
- `Blk8_801A6AD0`: 1 obj — md_SC07_004/0x801A6AD0:arg0
|
||||
- `Blk8_801AD914`: 2 obj — md_SC07_004/0x801AD914:arg1, md_SC07_004/0x801AD914:sp0
|
||||
- `Blk8_801E0764`: 2 obj — 0x801E0764, ov_SC03_030/0x8017EDD4:buf
|
||||
- `Blk8_801E076C`: 3 obj — 0x801E076C, ov_SC03_030/0x8017EEE0:local_18, ov_SC03_030/0x8017EEE0:local_20
|
||||
- `Blk8_md_SC07_004_801AA9D4`: 2 obj — md_SC07_004/0x801AA9D4:a1, md_SC07_004/0x801AA9D4:ptr
|
||||
- `Blk_80178D40`: 5 obj — ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_SC01_000/0x80178D40:Cmd_80178D40, ov_SC02_037/0x80178D40:Cmd_80178D40, ov_SC07_006/0x80178D40:Cmd_80178D40, ov_SC07_010/0x80178D40:Cmd_80178D40
|
||||
- `DBlock_8019F04C`: 2 obj — 0x8019F04C, ov_SC07_002/0x801804D4:a0
|
||||
- `D_801D0630_s`: 1 obj — 0x801D0630
|
||||
- `DataBlock`: 2 obj — ov_SC02_011/0x8018A1A4:a1, ov_SC02_011/0x8018A1A4:s0
|
||||
- `Data_t_80181CE0`: 1 obj — ov_SC03_099/0x80181CE0:buf_src
|
||||
- `Ent8_80188`: 2 obj — 0x801888CC, 0x801888EC
|
||||
- `Entry8_801A5D68`: 1 obj — md_SC07_004/0x801A5D68:buf
|
||||
- `Rec8_801863EC`: 2 obj — ov_SC02_026/0x8017EDBC:a0, ov_SC02_027/0x801863EC:a0
|
||||
- `Rec8_801A57E8`: 4 obj — 0x801AFE44, 0x801B0174, md_SC07_004/0x801AD2CC:rect, md_SC07_004/0x801ADE1C:rect
|
||||
- `SC05_F3E4_Tbl8`: 4 obj — 0x80189748, 0x8018974E, 0x801897B8, ov_SC05_001/0x8017F3E4:e
|
||||
- `SV4U`: 1 obj — ov_SC01_077/0x8018470C:svec
|
||||
- `SVec_801347A0`: 248 obj — 0x8017D890, 0x8017D898, 0x8017E26C, 0x8017E274, 0x8017E2A8, 0x8017E2B0, 0x8017E334, 0x8017E33C (+240)
|
||||
- `Stride8_u16_80182868`: 3 obj — 0x801AB670, 0x801AB672, 0x801AB674
|
||||
- `Stride8_u16_80182868_80180970`: 3 obj — 0x801A4D0C, 0x801A4D0E, 0x801A4D10
|
||||
- `Tbl8_801AFF3C`: 2 obj — 0x801AFF3C, ov_SC06_025/0x8017EA74:tbl
|
||||
- `Tbl_80181574`: 2 obj — 0x80188B88, ov_SC03_111/0x80181574:p
|
||||
- `Tbl_80184F18`: 2 obj — 0x8018EFB0, ov_SC03_118/0x80184F18:p
|
||||
- `U16x4`: 3 obj — 0x801F8EA0, md_SC07_004/0x801AE990:a0, md_SC07_004/0x801AE990:dst
|
||||
- `UAlign8_80181F40`: 4 obj — ov_SC06_020/0x80181F40:dst, ov_SC06_020/0x80181F40:param_1, ov_SC06_020/0x80181F40:src, ov_SC06_020/0x80181F40:t1
|
||||
- `UAlign8_8018833C`: 4 obj — ov_SC06_024/0x8018833C:dst, ov_SC06_024/0x8018833C:param_1, ov_SC06_024/0x8018833C:src, ov_SC06_024/0x8018833C:t1
|
||||
- `Unk_80126940`: 2 obj — 0x80126940, ov_SC03_112/0x8017E160:pos
|
||||
- `V4U_8014C4AC`: 2 obj — shared/ov/0x8014C4AC:a0, shared/ov/0x8014C4AC:a3
|
||||
- `V8_SC07_002_8017C8D0`: 2 obj — 0x8018A2E0, 0x8019F060
|
||||
- `Vec4x16`: 2 obj — 0x801850D8(arg4), ov_SC03_105/0x801850D8:obj
|
||||
- `Vec8_801A0E28`: 2 obj — 0x801F4310, md_SC07_003/0x801A0E28:sp30
|
||||
- `Vec8_801A1924`: 1 obj — md_SC07_003/0x801A1924:sp30
|
||||
- `Vec8_md_SC07_003_801A3334`: 2 obj — md_SC07_003/0x801A3334:s1, md_SC07_003/0x801A3334:s2
|
||||
|
||||
### 5f4b599a9ffa:opaque
|
||||
names: Blk20_8017D110, Buf8017BF34_8017BF34, Buf8017BF50_8017C234, Loc_80180E10, LocalStruct, LocalStruct_8018A968, Local_80180ABC, Pkt_8018626C, Prim293C, Prim80180A38, PrimBE4, PrimF790, PrimSpec80182A6C, Prim_80180BDC, Prim_SC01_077_80182268, Rec8017F39C, Rec_SC06_029_80180A70, S80143BDC, S80190C84, S80190C84L, S80190C84_8018483C, S80190C84_846B4, S845EC_in, Spawn801A143C, Sprite8_801861D8, St_8017D118, St_8017EDC4, St_80182784, St_80182784_801817E4, Struct_8017D25C, buf_8017F5BC, sprite8
|
||||
cause: 32 names (20 B, all members placeholders) bound to 56 distinct objects, none bound to two names: md_SC07_003/0x801A143C:stk, md_SC07_003/0x801A293C:prim, md_SC07_003/0x801A3490:sp, ov_SC01_005/0x8017F790:sp, ov_SC01_005/0x80180A38:sp, ov_SC01_009/0x8017F39C:rec, ov_SC01_077/0x8017F5BC:sp, ov_SC01_077/0x80181BE4:sp …; full list: tools/struct_twins.py --show 5f4b599a9ffa:opaque
|
||||
- `Blk20_8017D110`: 1 obj — ov_SC03_114/0x8017D110:sp10
|
||||
- `Buf8017BF34_8017BF34`: 1 obj — ov_SC03_105/0x8017BF34:buf
|
||||
- `Buf8017BF50_8017C234`: 1 obj — ov_SC03_002/0x8017C234:buf
|
||||
- `Loc_80180E10`: 1 obj — ov_SC03_110/0x80180E10:loc
|
||||
- `LocalStruct`: 1 obj — ov_SC02_005/0x8018D608:local_struct
|
||||
- `LocalStruct_8018A968`: 1 obj — ov_SC02_005/0x8018A968:local
|
||||
- `Local_80180ABC`: 1 obj — ov_SC03_105/0x80180ABC:local
|
||||
- `Pkt_8018626C`: 1 obj — ov_SC02_000/0x8018626C:pkt
|
||||
- `Prim293C`: 1 obj — md_SC07_003/0x801A293C:prim
|
||||
- `Prim80180A38`: 1 obj — ov_SC01_005/0x80180A38:sp
|
||||
- `PrimBE4`: 1 obj — ov_SC01_077/0x80181BE4:sp
|
||||
- `PrimF790`: 1 obj — ov_SC01_005/0x8017F790:sp
|
||||
- `PrimSpec80182A6C`: 1 obj — ov_SC04_002/0x80182A6C:prim
|
||||
- `Prim_80180BDC`: 1 obj — ov_SC04_005/0x80180BDC:sp
|
||||
- `Prim_SC01_077_80182268`: 1 obj — ov_SC01_077/0x80182A24:sp
|
||||
- `Rec8017F39C`: 1 obj — ov_SC01_009/0x8017F39C:rec
|
||||
- `Rec_SC06_029_80180A70`: 1 obj — ov_SC06_029/0x80180A70:rec
|
||||
- `S80143BDC`: 2 obj — ov_SC04_003/0x8017E07C:sp, shared/ov/0x80143BDC:sp
|
||||
- `S80190C84`: 20 obj — md_SC07_003/0x801A3490:sp, ov_SC02_000/0x80185F8C:stk, ov_SC02_011/0x80190C84:sp, ov_SC02_016/0x801815DC:sp, ov_SC02_017/0x80187178:sp10, ov_SC02_017/0x8018A428:sp, ov_SC02_041/0x80184D20:sp, ov_SC03_006/0x8018C090:sp (+12)
|
||||
- `S80190C84L`: 1 obj — ov_SC05_003/0x80181C00:sp
|
||||
- `S80190C84_8018483C`: 1 obj — ov_SC02_000/0x8018483C:sp
|
||||
- `S80190C84_846B4`: 1 obj — ov_SC01_084/0x801846B4:tmp
|
||||
- `S845EC_in`: 1 obj — ov_SC01_084/0x801845EC:in
|
||||
- `Spawn801A143C`: 1 obj — md_SC07_003/0x801A143C:stk
|
||||
- `Sprite8_801861D8`: 1 obj — ov_SC02_000/0x801861D8:spr
|
||||
- `St_8017D118`: 1 obj — ov_SC04_016/0x8017D118:st
|
||||
- `St_8017EDC4`: 2 obj — ov_SC04_016/0x8017EDC4:st, ov_SC04_016/0x8017EE20:st
|
||||
- `St_80182784`: 1 obj — ov_SC02_041/0x80182784:s
|
||||
- `St_80182784_801817E4`: 1 obj — ov_SC04_007/0x801817E4:s
|
||||
- `Struct_8017D25C`: 1 obj — ov_SC05_011/0x8017D25C:sp10
|
||||
- `buf_8017F5BC`: 1 obj — ov_SC01_077/0x8017F5BC:sp
|
||||
- `sprite8`: 4 obj — ov_SC01_077/0x8018470C:spr, ov_SC02_000/0x80187480:spr, ov_SC02_000/0x80187558:spr, ov_SC02_000/0x8018762C:spr
|
||||
|
||||
### d4b0395bb0af:opaque
|
||||
names: Blk16X, Blk16_8017ECD4, Blk16_8018A4C4, Blk16_8018A8B8, Blk16_801E2F08, Blk16_956C, Blk16_SC01_084_8017DAF8, Blk16_md_MAIN_016, Blk_800CBAD0, CB4A4_V4, DStruct, M16, Q16, Quad, Quad_8018797C, Quad_8018797C_8017F26C, Rec16_8017DDC4, Rec16_8017DDC4_8018034C, Rec16_8017DDC4_80180F08, Rec16_8017DDC4_80182244, Rec16_8018066C, S16_md_MAIN_014_800CB254, Struct16, Vec801A8E34, func_800CB0B0_Blk16, func_800CB164_Blk16, func_800CB188_Blk16, func_800CB4D8_Blk16
|
||||
cause: 28 names (16 B, all members placeholders) bound to 247 distinct objects, none bound to two names: 0x800A5E88, 0x801151D4, 0x8011F920, 0x80126948, 0x801843A4, 0x80189460, 0x8018E54C, 0x8018E96C …; full list: tools/struct_twins.py --show d4b0395bb0af:opaque
|
||||
- `Blk16X`: 4 obj — md_MAIN_039/0x800CB0B4:dstp, md_MAIN_039/0x800CB0B4:srcp, md_MAIN_039/0x800CB228:m, md_MAIN_039/0x800CB228:obj
|
||||
- `Blk16_8017ECD4`: 4 obj — 0x801A0E44, 0x801A0E54, ov_SC03_011/0x8017ECD4:va, ov_SC03_011/0x8017ECD4:vb
|
||||
- `Blk16_8018A4C4`: 2 obj — 0x801E2F38, ov_SC02_005/0x8018A4C4:blobB
|
||||
- `Blk16_8018A8B8`: 49 obj — 0x800A5E88, 0x8019510C, 0x80195144, 0x80197D30, 0x80197D68, 0x8019927C, 0x801992B4, 0x8019B244 (+41)
|
||||
- `Blk16_801E2F08`: 2 obj — 0x801E2F08, ov_SC02_005/0x80189FC4:blk16
|
||||
- `Blk16_956C`: 4 obj — ov_MAIN_012/0x8012956C:base, ov_MAIN_012/0x8012956C:dst, ov_MAIN_012/0x8012956C:sp0, ov_MAIN_012/0x8012956C:src
|
||||
- `Blk16_SC01_084_8017DAF8`: 5 obj — 0x8011F920, 0x80126948, ov_SC01_084/0x8017DAF8:dst, ov_SC01_084/0x8017DAF8:end, ov_SC01_084/0x8017DAF8:src
|
||||
- `Blk16_md_MAIN_016`: 2 obj — md_MAIN_016/0x800CB228:ent, md_MAIN_016/0x800CB228:p
|
||||
- `Blk_800CBAD0`: 2 obj — md_MAIN_028/0x800CBAD0:a0, md_MAIN_028/0x800CBAD0:v
|
||||
- `CB4A4_V4`: 3 obj — md_MAIN_027/0x800CB4A4:bak, md_MAIN_027/0x800CB4A4:s1, md_MAIN_027/0x800CB4A4:s2
|
||||
- `DStruct`: 134 obj — 0x801843A4, 0x8018E54C, 0x8018E96C, 0x8018E9BC, 0x8018ED24, 0x8018F0C4, 0x8018F2E4, 0x8018F344 (+126)
|
||||
- `M16`: 2 obj — md_MAIN_025/0x800CB300:mat, md_MAIN_025/0x800CB300:s0
|
||||
- `Q16`: 4 obj — 0x801151D4, shared/ov/0x8012A418:dst, shared/ov/0x8012A418:end, shared/ov/0x8012A418:src
|
||||
- `Quad`: 2 obj — shared/ov/0x8014DCE0:arg0, shared/ov/0x8014DCE0:buf
|
||||
- `Quad_8018797C`: 2 obj — ov_SC02_011/0x8018797C:entry, ov_SC02_011/0x8018797C:tmp
|
||||
- `Quad_8018797C_8017F26C`: 2 obj — ov_SC03_030/0x8017F26C:entry, ov_SC03_030/0x8017F26C:tmp
|
||||
- `Rec16_8017DDC4`: 1 obj — 0x801A42B8
|
||||
- `Rec16_8017DDC4_8018034C`: 1 obj — 0x801A4C38
|
||||
- `Rec16_8017DDC4_80180F08`: 1 obj — 0x801AC62C
|
||||
- `Rec16_8017DDC4_80182244`: 1 obj — 0x801AB59C
|
||||
- `Rec16_8018066C`: 1 obj — 0x80189460
|
||||
- `S16_md_MAIN_014_800CB254`: 4 obj — md_MAIN_014/0x800CB254:a0, md_MAIN_014/0x800CB254:v0, md_MAIN_028/0x800CBBA0:a0, md_MAIN_028/0x800CBBA0:v0
|
||||
- `Struct16`: 6 obj — md_MAIN_016/0x800CB158:arg0, md_MAIN_016/0x800CB158:v0, md_MAIN_016/0x800CB458:s0, md_MAIN_016/0x800CB458:v0, md_MAIN_028/0x800CBDD0:a0, md_MAIN_028/0x800CBDD0:v0
|
||||
- `Vec801A8E34`: 1 obj — md_SC07_004/0x801A8E34:st
|
||||
- `func_800CB0B0_Blk16`: 2 obj — md_MAIN_032/0x800CB0B0:s0, md_MAIN_032/0x800CB0B0:src
|
||||
- `func_800CB164_Blk16`: 2 obj — md_MAIN_014/0x800CB164:a0, md_MAIN_014/0x800CB164:obj
|
||||
- `func_800CB188_Blk16`: 2 obj — md_MAIN_032/0x800CB188:s1, md_MAIN_032/0x800CB188:v0
|
||||
- `func_800CB4D8_Blk16`: 2 obj — md_MAIN_014/0x800CB4D8:a0, md_MAIN_014/0x800CB4D8:src
|
||||
|
||||
### b85caab442ac:opaque
|
||||
names: Blk20_8016DF5C, Blk20_80180B78, Blk20_80184694, Blk32L_80133298, Blk32_80017E8C, Blk32_80180E8C, Blk32_8018287C, Blk32_80183F10, Blk32_801A5194, Blk32_801E8788, Blk32_998, Block32, Copy32, D_800D942C_entry, MTX8L_80180750, MTX8L_80181BD4, MTX8L_801821E0, MTX_L1, Mat_80167540, Mtx8_8017C910_8017E924, Mtx_8017F370, Oct_801853D0, S_md_MAIN_033_800CB3D8, Vec8, W8__md_MAIN_044
|
||||
cause: 25 names (32 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Mat_800CB658; the other 24 bound to 64 distinct objects, none bound to two names: 0x800AE620, 0x800D942C, 0x80114F24, 0x801151D4, 0x801E06C4, 0x801E06E4, 0x801E0704, 0x801E0724 …; full list: tools/struct_twins.py --show b85caab442ac:opaque
|
||||
- `Blk20_8016DF5C`: 11 obj — 0x800AE620, ov_MAIN_012/0x8016DF5C:iVar8, ov_MAIN_012/0x8016DF5C:localMatrix, ov_MAIN_012/0x8016DF5C:param_1, ov_SC01_000/0x8016DF5C:iVar8, ov_SC01_000/0x8016DF5C:localMatrix, ov_SC01_000/0x8016DF5C:param_1, ov_SC02_037/0x8016DF5C:aD800AE620 (+3)
|
||||
- `Blk20_80180B78`: 2 obj — aAE620_80180B78, ov_SC04_003/0x80180B78:m
|
||||
- `Blk20_80184694`: 2 obj — ov_SC03_029/0x80184694:aD800AE620_80184694, ov_SC03_029/0x80184694:m
|
||||
- `Blk32L_80133298`: 2 obj — shared/ov/0x80133298:a0, shared/ov/0x80133298:m
|
||||
- `Blk32_80017E8C`: 2 obj — main/0x80017E8C:arg0, main/0x80017E8C:m
|
||||
- `Blk32_80180E8C`: 2 obj — aAE620_80180E8C, ov_SC04_003/0x80180E8C:m
|
||||
- `Blk32_8018287C`: 2 obj — ov_SC02_017/0x8018287C:dst, ov_SC02_017/0x8018287C:s1
|
||||
- `Blk32_80183F10`: 2 obj — aAE620_80183F10, ov_SC04_011/0x80183F10:m
|
||||
- `Blk32_801A5194`: 1 obj — md_SC07_004/0x801A5194:arg0
|
||||
- `Blk32_801E8788`: 2 obj — 0x801E8788, ov_SC02_000/0x8018453C:s5
|
||||
- `Blk32_998`: 2 obj — ov_MAIN_012/0x8016C998:param_1, ov_MAIN_012/0x8016C998:r
|
||||
- `Block32`: 2 obj — md_MAIN_043/0x800CD404:dstp, md_MAIN_043/0x800CD404:srcp
|
||||
- `Copy32`: 10 obj — 0x801E06C4, 0x801E06E4, 0x801E0704, 0x801E0724, 0x801E0744, ov_SC03_030/0x8017E7D4:b0, ov_SC03_030/0x8017E7D4:b1, ov_SC03_030/0x8017E7D4:b2 (+2)
|
||||
- `D_800D942C_entry`: 1 obj — 0x800D942C
|
||||
- `MTX8L_80180750`: 2 obj — ov_SC04_004/0x80180750:aD800AE620, ov_SC04_004/0x80180750:m
|
||||
- `MTX8L_80181BD4`: 2 obj — ov_SC04_004/0x80181BD4:aD800AE620, ov_SC04_004/0x80181BD4:m
|
||||
- `MTX8L_801821E0`: 2 obj — ov_SC04_004/0x801821E0:aD800AE620, ov_SC04_004/0x801821E0:m
|
||||
- `MTX_L1`: 2 obj — ov_SC01_000/0x8016D1D8:mtx, ov_SC02_037/0x8016D1D8:mtx
|
||||
- `Mat_80167540`: 0 obj — used by type Mat_800CB658
|
||||
- `Mtx8_8017C910_8017E924`: 4 obj — aD800AE620, ov_SC04_002/0x801821C4:m, shared/ov/0x8017E924:aD800AE620, shared/ov/0x8017E924:mtx
|
||||
- `Mtx_8017F370`: 1 obj — ov_SC03_011/0x8017F370:m
|
||||
- `Oct_801853D0`: 2 obj — ov_SC04_011/0x801853D0:l, ov_SC04_011/0x801853D0:obj
|
||||
- `S_md_MAIN_033_800CB3D8`: 2 obj — md_MAIN_033/0x800CB3D8:ptr, md_MAIN_033/0x800CB3D8:st
|
||||
- `Vec8`: 2 obj — 0x80114F24, 0x801151D4
|
||||
- `W8__md_MAIN_044`: 2 obj — md_MAIN_044/0x800CD63C:a1, md_MAIN_044/0x800CD63C:sp20
|
||||
|
||||
### c1767d5293b8:opaque
|
||||
names: D80190448_t, Pt6_8017D65C, ResMapCol, S6, S8012D664_8012D664, S845EC_out, SV3, SV3_801802D0, SV3_8018287C, SV3_80182938, SV3_8018495C, SV3_80184C98, SV3_80184D50, SV3_80184E00, SV3_80184F48, SV3_80187654, SV3_801891E8, SV3_846B4, SV3x_80180ACC, SV3x_80184B30, SV3x_80184B30_801829C4, Trio, Vec3s16_8018388C, Vec3s16_80185380, VecB
|
||||
cause: 25 names (6 B, all members placeholders) bound to 63 distinct objects, none bound to two names: 0x800D4A5C, 0x8013E22C(arg1), 0x80190448, md_MAIN_011/0x800D04F4:sp18, ov_SC01_000/0x8012D664:s, ov_SC01_005/0x801800C0:sp, ov_SC01_077/0x80184D50:out, ov_SC01_077/0x801856F8:in …; full list: tools/struct_twins.py --show c1767d5293b8:opaque
|
||||
- `D80190448_t`: 2 obj — 0x80190448, ov_SC06_029/0x80181170:p3
|
||||
- `Pt6_8017D65C`: 2 obj — ov_SC03_121/0x8017D65C:p1, ov_SC03_121/0x8017D65C:p2
|
||||
- `ResMapCol`: 3 obj — aD_8006313A, aD_8006313C, aResourceIdMap
|
||||
- `S6`: 2 obj — 0x800D4A5C, md_MAIN_011/0x800D04F4:sp18
|
||||
- `S8012D664_8012D664`: 1 obj — ov_SC01_000/0x8012D664:s
|
||||
- `S845EC_out`: 1 obj — ov_SC01_084/0x801845EC:out
|
||||
- `SV3`: 27 obj — ov_SC01_077/0x80184D50:out, ov_SC01_077/0x801856F8:in, ov_SC01_077/0x801856F8:out, ov_SC01_084/0x80186688:in, ov_SC01_084/0x80186688:out, ov_SC02_000/0x8018A128:in, ov_SC02_000/0x8018A128:out, ov_SC02_011/0x8018C5A4:out (+19)
|
||||
- `SV3_801802D0`: 1 obj — ov_SC04_004/0x801802D0:pos
|
||||
- `SV3_8018287C`: 1 obj — ov_SC02_017/0x8018287C:out
|
||||
- `SV3_80182938`: 1 obj — ov_SC02_017/0x80182938:out
|
||||
- `SV3_8018495C`: 1 obj — ov_SC02_017/0x8018495C:out
|
||||
- `SV3_80184C98`: 1 obj — ov_SC02_011/0x80184C98:pt
|
||||
- `SV3_80184D50`: 1 obj — ov_SC02_011/0x80184D50:pt
|
||||
- `SV3_80184E00`: 3 obj — ov_SC02_011/0x80184E00:pt, ov_SC02_011/0x80184E00:sv1, ov_SC02_011/0x80184E00:sv2
|
||||
- `SV3_80184F48`: 3 obj — ov_SC02_011/0x80184F48:pt, ov_SC02_011/0x80184F48:sv1, ov_SC02_011/0x80184F48:sv2
|
||||
- `SV3_80187654`: 1 obj — ov_SC02_011/0x80187654:out
|
||||
- `SV3_801891E8`: 1 obj — ov_SC02_011/0x801891E8:pt
|
||||
- `SV3_846B4`: 1 obj — ov_SC01_084/0x801846B4:out
|
||||
- `SV3x_80180ACC`: 1 obj — ov_SC02_041/0x80180ACC:out
|
||||
- `SV3x_80184B30`: 1 obj — ov_SC03_090/0x80184B30:out
|
||||
- `SV3x_80184B30_801829C4`: 1 obj — ov_SC03_104/0x801829C4:out
|
||||
- `Trio`: 1 obj — ov_SC01_005/0x801800C0:sp
|
||||
- `Vec3s16_8018388C`: 3 obj — ov_SC03_105/0x8018388C:diff, ov_SC03_105/0x8018388C:s, ov_SC03_105/0x8018388C:s1
|
||||
- `Vec3s16_80185380`: 2 obj — ov_SC03_105/0x80185380:diff, ov_SC03_105/0x80185380:s
|
||||
- `VecB`: 1 obj — 0x8013E22C(arg1)
|
||||
|
||||
### 846e0acadd6a
|
||||
names: B8014, Blk8_80133CD4, Blk8_801463A0, Blk8_8017FF80, Blk8_8018048C, Blk8_801828E4, Blk8_SC01_077_801842C8, Blk8_SC03_001_80186B54, Blk8_SC07_007_8017D288, Blk8_SC07_007_8017D684, Blk8_md_MAIN_031, Blk8_md_SC07_003_801A3638, Blob8_80187664, Blob8_801876B0, Blob8_80189B30, Blob8_8018A47C, Blob8_8018A47C_8017DEA4, Blob8_8018A4C4, M8_801312D0, M8_8014C6F4, U8, V8
|
||||
cause: 22 names (8 B, all members placeholders) bound to 179 distinct objects, none bound to two names: 0x801152B0, 0x80126BE0, 0x80126BE8, 0x80126C38, 0x80126C40, 0x801274E8, 0x801274F0, 0x8017D7B8 …; full list: tools/struct_twins.py --show 846e0acadd6a
|
||||
- `B8014`: 2 obj — shared/ov/0x8014BDE8:s0, shared/ov/0x8014BDE8:sp10
|
||||
- `Blk8_80133CD4`: 2 obj — 0x801152B0, ov_MAIN_012/0x80133CD4:s3
|
||||
- `Blk8_801463A0`: 2 obj — 0x80126BE0, 0x80126BE8
|
||||
- `Blk8_8017FF80`: 2 obj — ov_SC05_008/0x8017FF80:v0, ov_SC05_008/0x8017FF80:v1
|
||||
- `Blk8_8018048C`: 1 obj — ov_SC06_016/0x8018048C:out
|
||||
- `Blk8_801828E4`: 6 obj — 0x801DDB48, ov_SC06_029/0x801828E4:dst, ov_SC06_029/0x801828E4:local, ov_SC06_029/0x801828E4:obj, ov_SC06_029/0x80184564:sv, ov_SC06_029/0x80184FF8:local
|
||||
- `Blk8_SC01_077_801842C8`: 2 obj — ov_SC01_077/0x801842C8:a3, ov_SC01_077/0x801842C8:v0
|
||||
- `Blk8_SC03_001_80186B54`: 4 obj — ov_SC03_001/0x80186B54:dst, ov_SC03_001/0x80186B54:ent, ov_SC03_001/0x80186B54:next, ov_SC03_001/0x80186B54:src
|
||||
- `Blk8_SC07_007_8017D288`: 2 obj — 0x801274F0, 0x801869C0
|
||||
- `Blk8_SC07_007_8017D684`: 3 obj — 0x80186A00, ov_SC07_007/0x8017D684:base, ov_SC07_007/0x8017D684:buffer
|
||||
- `Blk8_md_MAIN_031`: 2 obj — md_MAIN_031/0x800CBCD4:a2, md_MAIN_031/0x800CBCD4:a3
|
||||
- `Blk8_md_SC07_003_801A3638`: 2 obj — md_SC07_003/0x801A3638:dst, md_SC07_003/0x801A3638:src
|
||||
- `Blob8_80187664`: 2 obj — 0x801E2EF0, ov_SC02_005/0x80187664:tmp
|
||||
- `Blob8_801876B0`: 2 obj — 0x801E2EF8, ov_SC02_005/0x801876B0:tmp
|
||||
- `Blob8_80189B30`: 4 obj — 0x80126C38, 0x80126C40, 0x801E2F00, ov_SC02_005/0x80189B30:blob
|
||||
- `Blob8_8018A47C`: 4 obj — 0x801E2F28, 0x801E2F48, ov_SC02_005/0x8018A47C:tmp, ov_SC02_005/0x8018A658:tmp
|
||||
- `Blob8_8018A47C_8017DEA4`: 4 obj — 0x801274E8, 0x80185C5C, 0x80185C64, ov_SC07_010/0x8017DEA4:tmp
|
||||
- `Blob8_8018A4C4`: 2 obj — 0x801E2F30, ov_SC02_005/0x8018A4C4:blobA
|
||||
- `M8_801312D0`: 126 obj — 0x8017D7B8, 0x8017E194, 0x8017E1D0, 0x8017E25C, 0x8017E48C, 0x8017E600, 0x8017E654, 0x8017E6FC (+118)
|
||||
- `M8_8014C6F4`: 1 obj — shared/ov/0x8014C6F4:a
|
||||
- `U8`: 2 obj — shared/ov/0x80172358:a0, shared/ov/0x80172358:a1
|
||||
- `V8`: 2 obj — shared/ov/0x8012AE00:sp18, shared/ov/0x8012AE00:sp20
|
||||
|
||||
### ce8acea75f2c
|
||||
names: Blk12, Prim126, PrimC59C, PrimC974, PrimCF90, PrimD538, PrimDF98, Prim_8017C710_t3f3d6beb, Prim_8017CD9C, Prim_8017CDF0, Prim_8017FB38, Prim_SC02_011_80180FE4, Prim_SC02_031_8017F5B4, Prim_SC03_014_8017FA5C, Prim_SC03_092_8017CE58, Prim_SC03_116_8017BF14, Prim_SC06_000_8017E35C, Prim_SC06_000_8017EF68, Prim_SC06_029_8017C954
|
||||
cause: 19 names (12 B, all members placeholders) bound to 38 distinct objects, none bound to two names: main/0x8002B00C:d, main/0x8002B00C:s, ov_SC01_077/0x8017C974:end, ov_SC01_077/0x8017C974:prim, ov_SC01_080/0x8017C59C:end, ov_SC01_080/0x8017C59C:prim, ov_SC02_000/0x8017D538:end, ov_SC02_000/0x8017D538:prim …; full list: tools/struct_twins.py --show ce8acea75f2c
|
||||
- `Blk12`: 2 obj — main/0x8002B00C:d, main/0x8002B00C:s
|
||||
- `Prim126`: 2 obj — ov_SC03_003/0x8017C6F4:end, ov_SC03_003/0x8017C6F4:prim
|
||||
- `PrimC59C`: 2 obj — ov_SC01_080/0x8017C59C:end, ov_SC01_080/0x8017C59C:prim
|
||||
- `PrimC974`: 2 obj — ov_SC01_077/0x8017C974:end, ov_SC01_077/0x8017C974:prim
|
||||
- `PrimCF90`: 2 obj — ov_SC02_005/0x8017CF90:end, ov_SC02_005/0x8017CF90:prim
|
||||
- `PrimD538`: 2 obj — ov_SC02_000/0x8017D538:end, ov_SC02_000/0x8017D538:prim
|
||||
- `PrimDF98`: 2 obj — ov_SC03_028/0x8017DF98:end, ov_SC03_028/0x8017DF98:prim
|
||||
- `Prim_8017C710_t3f3d6beb`: 2 obj — shared/ov/0x8017C710:part, shared/ov/0x8017C710:prim
|
||||
- `Prim_8017CD9C`: 2 obj — ov_SC05_002/0x8017CD9C:part, ov_SC05_002/0x8017CD9C:prim
|
||||
- `Prim_8017CDF0`: 2 obj — shared/ov/0x8017CDF0:part, shared/ov/0x8017CDF0:prim
|
||||
- `Prim_8017FB38`: 2 obj — ov_SC03_111/0x8017FB38:part, ov_SC03_111/0x8017FB38:prim
|
||||
- `Prim_SC02_011_80180FE4`: 2 obj — ov_SC02_011/0x80180FE4:part, ov_SC02_011/0x80180FE4:prim
|
||||
- `Prim_SC02_031_8017F5B4`: 2 obj — ov_SC02_031/0x8017F5B4:part, ov_SC02_031/0x8017F5B4:prim
|
||||
- `Prim_SC03_014_8017FA5C`: 2 obj — ov_SC03_014/0x8017FA5C:part, ov_SC03_014/0x8017FA5C:prim
|
||||
- `Prim_SC03_092_8017CE58`: 2 obj — ov_SC03_092/0x8017CE58:part, ov_SC03_092/0x8017CE58:prim
|
||||
- `Prim_SC03_116_8017BF14`: 2 obj — ov_SC03_116/0x8017BF14:part, ov_SC03_116/0x8017BF14:prim
|
||||
- `Prim_SC06_000_8017E35C`: 2 obj — ov_SC06_000/0x8017E35C:part, ov_SC06_000/0x8017E35C:prim
|
||||
- `Prim_SC06_000_8017EF68`: 2 obj — ov_SC06_000/0x8017EF68:part, ov_SC06_000/0x8017EF68:prim
|
||||
- `Prim_SC06_029_8017C954`: 2 obj — ov_SC06_029/0x8017C954:part, ov_SC06_029/0x8017C954:prim
|
||||
|
||||
### 142564f85464:opaque
|
||||
names: D_801D0660_s, Ent_80186AE4, P4, Pair4_801B02DC, Prim4_8017DD28, Prim4_801E46A0, Prim4_801E9BE0, Prim4_801EFA40, Rec4, S9E, U16x2, U16x2L, U16x2N, UV_80181574
|
||||
cause: 14 names (4 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Desc_80181574 (ov_SC03_111/0x80181574:d, ov_SC03_111/0x80181574:desc); the other 13 bound to 21 distinct objects, none bound to two names: 0x8011511A, 0x801202A0, 0x80185D5A, 0x80185D9E, 0x8018A3C0, 0x8018A3C2, 0x801B02DC, 0x801B02DE …; full list: tools/struct_twins.py --show 142564f85464:opaque
|
||||
- `D_801D0660_s`: 2 obj — 0x801D0660, 0x801D0662
|
||||
- `Ent_80186AE4`: 2 obj — 0x801202A0, ov_SC02_000/0x80186AE4:p
|
||||
- `P4`: 1 obj — 0x80185D5A
|
||||
- `Pair4_801B02DC`: 2 obj — 0x801B02DC, 0x801B02DE
|
||||
- `Prim4_8017DD28`: 1 obj — ov_MAIN_012/0x8017DD28:q
|
||||
- `Prim4_801E46A0`: 1 obj — md_SC03_135/0x801E46A0:q
|
||||
- `Prim4_801E9BE0`: 2 obj — 0x8011511A, md_SC04_027/0x801E9BE0:q
|
||||
- `Prim4_801EFA40`: 1 obj — md_SC05_026/0x801EFA40:q
|
||||
- `Rec4`: 2 obj — 0x8018A3C0, 0x8018A3C2
|
||||
- `S9E`: 1 obj — 0x80185D9E
|
||||
- `U16x2`: 2 obj — md_SC07_004/0x801AE408:s1, md_SC07_004/0x801AE408:tmp
|
||||
- `U16x2L`: 2 obj — md_SC07_004/0x801AE520:s1, md_SC07_004/0x801AE520:tmp
|
||||
- `U16x2N`: 2 obj — md_SC07_004/0x801AB818:s1, md_SC07_004/0x801AB818:tmp
|
||||
- `UV_80181574`: 0 obj — used by type Desc_80181574 (ov_SC03_111/0x80181574:d, ov_SC03_111/0x80181574:desc)
|
||||
|
||||
### 6c480babe175:opaque
|
||||
names: CdFileLoc, Cmd_801805C8, M8_8016B6BC, Pair8_8017DDC4, Pair8_8017DDC4_8018034C, Pair8_8017DDC4_80180F08, Pair8_8017DDC4_80182244, Pair_801B5E30, Rec8, Rec_80189AEC, S_D2394B, Struct_8017E784, Struct_80184C18, Tbl8_8017FC44
|
||||
cause: 14 names (8 B, all members placeholders) bound to 160 distinct objects, none bound to two names: 0x800D2394(arg5), 0x800D3764, 0x800D3768, 0x801804C4, 0x80180EA0, 0x80180EDC, 0x80180F68, 0x80181198 …; full list: tools/struct_twins.py --show 6c480babe175:opaque
|
||||
- `CdFileLoc`: 7 obj — 0x800D3764, 0x800D3768, src/resident/0x800CFE60:cdFileLocTable, src/resident/0x800D0214:cdFileLocTable, src/resident/0x800D02D0:cdFileLocTable, src/resident/0x800D0488:cdFileLocTable, cdFileLocTable
|
||||
- `Cmd_801805C8`: 2 obj — ov_SC03_095/0x801805C8:arg0, ov_SC03_095/0x801805C8:ptr
|
||||
- `M8_8016B6BC`: 134 obj — 0x801804C4, 0x80180EA0, 0x80180EDC, 0x80180F68, 0x80181198, 0x8018130C, 0x80181360, 0x80181408 (+126)
|
||||
- `Pair8_8017DDC4`: 1 obj — 0x801D0120
|
||||
- `Pair8_8017DDC4_8018034C`: 1 obj — 0x801D30D8
|
||||
- `Pair8_8017DDC4_80180F08`: 1 obj — 0x801B2EB0
|
||||
- `Pair8_8017DDC4_80182244`: 1 obj — 0x801DA750
|
||||
- `Pair_801B5E30`: 1 obj — 0x801B5E30
|
||||
- `Rec8`: 2 obj — 0x8019F074, 0x8019F078
|
||||
- `Rec_80189AEC`: 2 obj — 0x801F0020, 0x801F00A0
|
||||
- `S_D2394B`: 1 obj — 0x800D2394(arg5)
|
||||
- `Struct_8017E784`: 2 obj — ov_SC03_096/0x8017E784:a0, ov_SC03_096/0x8017E784:ptr
|
||||
- `Struct_80184C18`: 2 obj — 0x80183B84, 0x80184C18
|
||||
- `Tbl8_8017FC44`: 3 obj — 0x80189380, ov_SC03_092/0x8017FA74:rec, ov_SC03_092/0x8017FC44:p
|
||||
|
||||
### 03b738d15c44
|
||||
names: Unkstruct_8017E2EC_2, Unkstruct_8017F8A8_2, Unkstruct_80181658_2, Unkstruct_80187B34_2, Unkstruct_80187EDC_2, Unkstruct_8018CD04_2, Unkstruct_8018F02C_2, Unkstruct_801AF368_2, VMask, W_8018893C, W_S40_8018B238, W_S40_8018B238_80187EA0
|
||||
cause: 12 names (4 B, all members placeholders); 8 bound to no object (UNBOUND), used only by: md_SC07_004/0x801AF368, ov_SC03_114/0x8017E2EC, ov_SC04_011/0x8018F02C, ov_SC04_016/0x8017F8A8, ov_SC06_000/0x80187B34, ov_SC06_006/0x80181658, ov_SC06_018/0x8018CD04, ov_SC06_032/0x80187EDC; the other 4 bound to 4 distinct objects, none bound to two names: main/0x80039308:q, ov_SC03_001/0x8018B238:ot, ov_SC03_124/0x80187EA0:ot, ov_SC03_124/0x8018893C:out; full list: tools/struct_twins.py --show 03b738d15c44
|
||||
- `Unkstruct_8017E2EC_2`: 0 obj — used by ov_SC03_114/0x8017E2EC
|
||||
- `Unkstruct_8017F8A8_2`: 0 obj — used by ov_SC04_016/0x8017F8A8
|
||||
- `Unkstruct_80181658_2`: 0 obj — used by ov_SC06_006/0x80181658
|
||||
- `Unkstruct_80187B34_2`: 0 obj — used by ov_SC06_000/0x80187B34
|
||||
- `Unkstruct_80187EDC_2`: 0 obj — used by ov_SC06_032/0x80187EDC
|
||||
- `Unkstruct_8018CD04_2`: 0 obj — used by ov_SC06_018/0x8018CD04
|
||||
- `Unkstruct_8018F02C_2`: 0 obj — used by ov_SC04_011/0x8018F02C
|
||||
- `Unkstruct_801AF368_2`: 0 obj — used by md_SC07_004/0x801AF368
|
||||
- `VMask`: 1 obj — main/0x80039308:q
|
||||
- `W_8018893C`: 1 obj — ov_SC03_124/0x8018893C:out
|
||||
- `W_S40_8018B238`: 1 obj — ov_SC03_001/0x8018B238:ot
|
||||
- `W_S40_8018B238_80187EA0`: 1 obj — ov_SC03_124/0x80187EA0:ot
|
||||
|
||||
### 245ecac205e6:opaque
|
||||
names: MainSlot, Rec12, Rec12_801888F4, Rec801944E8, S12_801AD700, S12_801AD914, S801563EC, S_80182618, Vec12_8017F370
|
||||
cause: 9 names (12 B, all members placeholders) bound to 275 distinct objects, none bound to two names: 0x801563EC(ret), 0x8017DC68, 0x8017E644, 0x8017E680, 0x8017E70C, 0x8017E93C, 0x8017EAB0, 0x8017EB04 …; same layout as PsyQ VECTOR, no name of the row bound to it; full list: tools/struct_twins.py --show 245ecac205e6:opaque
|
||||
- `MainSlot`: 1 obj — main/main:p
|
||||
- `Rec12`: 134 obj — 0x8017DC68, 0x8017E644, 0x8017E680, 0x8017E70C, 0x8017E93C, 0x8017EAB0, 0x8017EB04, 0x8017EBAC (+126)
|
||||
- `Rec12_801888F4`: 1 obj — 0x8018F560
|
||||
- `Rec801944E8`: 1 obj — 0x801944E8
|
||||
- `S12_801AD700`: 1 obj — md_SC07_004/0x801AD700:sp10
|
||||
- `S12_801AD914`: 1 obj — md_SC07_004/0x801AD914:sp10
|
||||
- `S801563EC`: 134 obj — 0x801563EC(ret), 0x8017F364, 0x8017FD40, 0x8017FD7C, 0x8017FE08, 0x80180038, 0x801801AC, 0x80180200 (+126)
|
||||
- `S_80182618`: 1 obj — ov_SC04_002/0x80182618:tmp
|
||||
- `Vec12_8017F370`: 1 obj — ov_SC03_011/0x8017F370:v
|
||||
|
||||
### 7db7d8817dcc
|
||||
names: Blk4_80029774, Blk4_8018048C, Blk4_801A40CC, Blk4_SC03_097_8017D898, Blk4_md_SC07_004_801ACE5C, S4_800CD054, Unkstruct_801A01E8, W_8016BFD0
|
||||
cause: 8 names (4 B, all members placeholders) bound to 23 distinct objects, none bound to two names: 0x800BA2B8, 0x8019E28C, 0x801A01B4, 0x801A01E8, 0x801A0218, 0x801A021C, 0x801A0220, 0x801A94C4 …; full list: tools/struct_twins.py --show 7db7d8817dcc
|
||||
- `Blk4_80029774`: 2 obj — 0x800BA2B8, main/0x80029774:dst
|
||||
- `Blk4_8018048C`: 3 obj — 0x8019E28C, ov_SC06_016/0x8018048C:p, ov_SC06_016/0x8018048C:q
|
||||
- `Blk4_801A40CC`: 4 obj — 0x801A01B4, 0x801AFEF8, md_SC07_004/0x801A40CC:p, md_SC07_004/0x801A40CC:q
|
||||
- `Blk4_SC03_097_8017D898`: 3 obj — 0x801A94C4, 0x801A94C8, ov_SC03_097/0x80180158:b1
|
||||
- `Blk4_md_SC07_004_801ACE5C`: 6 obj — 0x801A0218, 0x801A021C, 0x801A0220, 0x801F8D1C, 0x801F8D5C, md_SC07_004/0x801ACE5C:p
|
||||
- `S4_800CD054`: 1 obj — md_MAIN_043/0x800CD054:dp
|
||||
- `Unkstruct_801A01E8`: 1 obj — 0x801A01E8
|
||||
- `W_8016BFD0`: 3 obj — ov_SC01_000/0x8016BFD0:a1, ov_SC01_000/0x8016BFD0:a2, ov_SC01_000/0x8016BFD0:a4
|
||||
|
||||
### 8da756678e6d
|
||||
names: Bc8_80180E0C, Packed8, S80126B38, S80172C50, UnalignedPair, up
|
||||
cause: 6 names (8 B, all members placeholders) bound to 13 distinct objects, none bound to two names: 0x80126B30, 0x80126B38, 0x80126C98, 0x8014CB9C(arg0), 0x80172C50(arg0), 0x801869B4, 0x801869BC, ov_SC03_030/0x80180E0C:dst …; full list: tools/struct_twins.py --show 8da756678e6d
|
||||
- `Bc8_80180E0C`: 3 obj — 0x801869B4, 0x801869BC, ov_SC03_030/0x80180E0C:dst
|
||||
- `Packed8`: 2 obj — 0x80126C98, 0x8014CB9C(arg0)
|
||||
- `S80126B38`: 3 obj — 0x80126B38, shared/ov/0x801733FC:a1, shared/ov/0x80173460:a1
|
||||
- `S80172C50`: 2 obj — 0x80126B30, 0x80172C50(arg0)
|
||||
- `UnalignedPair`: 1 obj — shared/ov/0x8014C8F0:arg0
|
||||
- `up`: 2 obj — shared/ov/0x8014C8C8:dst, shared/ov/0x8014C8C8:src
|
||||
|
||||
### 92bd6306b11d
|
||||
names: Blk12_80180BE0, Blk12_801854C4, Blk12_80185E68, Blk12_820F8, Elm12, Rsc12
|
||||
cause: 6 names (12 B, all members placeholders) bound to 11 distinct objects, none bound to two names: 0x80064D49, 0x80064D4A, 0x801B8770, 0x801CDD30, 0x801D55AC, 0x801DA910, ov_SC01_005/0x801820F8:pd12, ov_SC01_005/0x801820F8:t0 …; full list: tools/struct_twins.py --show 92bd6306b11d
|
||||
- `Blk12_80180BE0`: 2 obj — ov_SC05_018/0x80180BE0:out, ov_SC05_018/0x80180BE0:v
|
||||
- `Blk12_801854C4`: 2 obj — 0x801B8770, ov_SC04_018/0x801854C4:a0
|
||||
- `Blk12_80185E68`: 2 obj — 0x801D55AC, 0x801DA910
|
||||
- `Blk12_820F8`: 3 obj — 0x801CDD30, ov_SC01_005/0x801820F8:pd12, ov_SC01_005/0x801820F8:t0
|
||||
- `Elm12`: 1 obj — 0x80064D49
|
||||
- `Rsc12`: 1 obj — 0x80064D4A
|
||||
|
||||
### 6ef8724a7464
|
||||
names: F20T, Obj20_80178D40, S801593E4, Sub_80155800_80155800, Sub_8015CD20
|
||||
cause: 5 names (20 B, all members placeholders); 3 bound to no object (UNBOUND), used only by: type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …), type Ent_80155800_80155800 (shared/ov/0x80155800:arg0), type P10 (0x80126B58, shared/ov/0x80144B9C:p10); the other 2 bound to 3 distinct objects, none bound to two names: ov_MAIN_012/0x8015CD20:sp, ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1; full list: tools/struct_twins.py --show 6ef8724a7464
|
||||
- `F20T`: 0 obj — used by type P10 (0x80126B58, shared/ov/0x80144B9C:p10)
|
||||
- `Obj20_80178D40`: 0 obj — used by type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …)
|
||||
- `S801593E4`: 2 obj — ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1
|
||||
- `Sub_80155800_80155800`: 0 obj — used by type Ent_80155800_80155800 (shared/ov/0x80155800:arg0)
|
||||
- `Sub_8015CD20`: 1 obj — ov_MAIN_012/0x8015CD20:sp
|
||||
|
||||
### 313fe9a920e0
|
||||
names: A098Rec, Struct800D2E20, Struct800D2E6C, Struct800D3104
|
||||
cause: 4 names (26 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type A098Ctx (0x8003A098(arg0)); the other 3 bound to 3 distinct objects, none bound to two names: 0x800D2E20(arg0), 0x800D2E6C(arg0), 0x800D3104(arg0); full list: tools/struct_twins.py --show 313fe9a920e0
|
||||
- `A098Rec`: 0 obj — used by type A098Ctx (0x8003A098(arg0))
|
||||
- `Struct800D2E20`: 1 obj — 0x800D2E20(arg0)
|
||||
- `Struct800D2E6C`: 1 obj — 0x800D2E6C(arg0)
|
||||
- `Struct800D3104`: 1 obj — 0x800D3104(arg0)
|
||||
|
||||
### 9865e09a793d
|
||||
names: Blk3_8017D730, Blk3_801E40A8, Blk3_801E95E8, Blk3_801EF448
|
||||
cause: 4 names (3 B, all members placeholders) bound to 8 distinct objects, none bound to two names: 0x80183F30, 0x801E26C0, 0x801E7C00, 0x801EDA60, md_SC03_135/0x801E40A8:arr, md_SC04_027/0x801E95E8:arr, md_SC05_026/0x801EF448:arr, ov_MAIN_012/0x8017D730:arr; full list: tools/struct_twins.py --show 9865e09a793d
|
||||
- `Blk3_8017D730`: 2 obj — 0x80183F30, ov_MAIN_012/0x8017D730:arr
|
||||
- `Blk3_801E40A8`: 2 obj — 0x801E26C0, md_SC03_135/0x801E40A8:arr
|
||||
- `Blk3_801E95E8`: 2 obj — 0x801E7C00, md_SC04_027/0x801E95E8:arr
|
||||
- `Blk3_801EF448`: 2 obj — 0x801EDA60, md_SC05_026/0x801EF448:arr
|
||||
|
||||
### a0f7100333b8:opaque
|
||||
names: Prim4_8017E978, Prim4_8017E978_8018B478, Rec4_801891F4, UV_80185214
|
||||
cause: 4 names (4 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Prim_80185214 (ov_SC06_029/0x80185214:prim); the other 3 bound to 5 distinct objects, none bound to two names: 0x801891F4, 0x801891F6, ov_SC01_005/0x8017E978:p, ov_SC03_001/0x8018B478:p, ov_SC06_025/0x80180F70:base; same layout as PsyQ DVECTOR, no name of the row bound to it; full list: tools/struct_twins.py --show a0f7100333b8:opaque
|
||||
- `Prim4_8017E978`: 1 obj — ov_SC01_005/0x8017E978:p
|
||||
- `Prim4_8017E978_8018B478`: 1 obj — ov_SC03_001/0x8018B478:p
|
||||
- `Rec4_801891F4`: 3 obj — 0x801891F4, 0x801891F6, ov_SC06_025/0x80180F70:base
|
||||
- `UV_80185214`: 0 obj — used by type Prim_80185214 (ov_SC06_029/0x80185214:prim)
|
||||
|
||||
### afc6a8e495a5:opaque
|
||||
names: Box_80133784, Ent_8018A224, Rec_8017ECD4, Rec_EDC0
|
||||
cause: 4 names (8 B, all members placeholders) bound to 273 distinct objects, none bound to two names: 0x8017D890, 0x8017D894, 0x8017E26C, 0x8017E270, 0x8017E2A8, 0x8017E2AC, 0x8017E334, 0x8017E338 …; full list: tools/struct_twins.py --show afc6a8e495a5:opaque
|
||||
- `Box_80133784`: 267 obj — 0x8017D890, 0x8017D894, 0x8017E26C, 0x8017E270, 0x8017E2A8, 0x8017E2AC, 0x8017E334, 0x8017E338 (+259)
|
||||
- `Ent_8018A224`: 1 obj — 0x8018A224(arg0)
|
||||
- `Rec_8017ECD4`: 1 obj — 0x801853A8
|
||||
- `Rec_EDC0`: 4 obj — 0x80185094, 0x80185098, 0x801AAD6C, ov_SC07_001/0x8017EDC0:rec
|
||||
|
||||
### ceca4ea3ade1:opaque
|
||||
names: Cam8012E138, SV3_SC07_002_801829F0, Src_8013B598_8013B598, Src_8013B6A0_8013B6A0
|
||||
cause: 4 names (6 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC01_000/0x8013B598:a1, ov_SC01_000/0x8013B6A0:src, ov_SC07_002/0x801829F0:sv, shared/ov/0x8012E138:cam; full list: tools/struct_twins.py --show ceca4ea3ade1:opaque
|
||||
- `Cam8012E138`: 1 obj — shared/ov/0x8012E138:cam
|
||||
- `SV3_SC07_002_801829F0`: 1 obj — ov_SC07_002/0x801829F0:sv
|
||||
- `Src_8013B598_8013B598`: 1 obj — ov_SC01_000/0x8013B598:a1
|
||||
- `Src_8013B6A0_8013B6A0`: 1 obj — ov_SC01_000/0x8013B6A0:src
|
||||
|
||||
### f1dcb3a42fc8
|
||||
names: Rec_801825D8, Rec_80184FF8, S8012C658, S8017FF9C_sp
|
||||
cause: 4 names (20 B, all members placeholders) bound to 5 distinct objects, none bound to two names: ov_SC02_011/0x801890C8:sp, ov_SC04_003/0x8017FF9C:sp, ov_SC06_029/0x801825D8:rec, ov_SC06_029/0x80184FF8:rec, shared/ov/0x8012C658:sp; full list: tools/struct_twins.py --show f1dcb3a42fc8
|
||||
@@ -20,26 +538,13 @@ cause: 4 names (20 B, all members placeholders) bound to 5 distinct objects, non
|
||||
- `S8012C658`: 2 obj — ov_SC02_011/0x801890C8:sp, shared/ov/0x8012C658:sp
|
||||
- `S8017FF9C_sp`: 1 obj — ov_SC04_003/0x8017FF9C:sp
|
||||
|
||||
### b519bad67107:opaque
|
||||
names: Local_8017EE34, Local_80181C84, Local_801870E8
|
||||
cause: 3 names (20 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80181C84:local, ov_SC03_105/0x80183D38:local, ov_SC03_105/0x801870E8:local; full list: tools/struct_twins.py --show b519bad67107:opaque
|
||||
- `Local_8017EE34`: 2 obj — ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80183D38:local
|
||||
- `Local_80181C84`: 1 obj — ov_SC03_105/0x80181C84:local
|
||||
- `Local_801870E8`: 1 obj — ov_SC03_105/0x801870E8:local
|
||||
|
||||
### c80fac242f04
|
||||
names: Mat801A8E34, Mat_80183C9C, Mtx_A8CE0
|
||||
cause: 3 names (32 B, all members placeholders) bound to 4 distinct objects, none bound to two names: md_SC07_004/0x801A8CE0:mtx, md_SC07_004/0x801A8E34:buf, ov_SC06_000/0x80183C9C:mat; full list: tools/struct_twins.py --show c80fac242f04
|
||||
- `Mat801A8E34`: 1 obj — md_SC07_004/0x801A8E34:buf
|
||||
- `Mat_80183C9C`: 1 obj — ov_SC06_000/0x80183C9C:mat
|
||||
- `Mtx_A8CE0`: 2 obj — md_SC07_004/0x801A8CE0:mtx, __attribute__(ret)
|
||||
|
||||
### 9ba0ae408dd4
|
||||
names: Drv_8017E330, Drv_8017E550, Drv_8017E878
|
||||
cause: 3 names (56 B, all members placeholders) bound to 6 distinct objects, none bound to two names: 0x801F80E4, ov_SC06_006/0x8017E330:p, ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:p, ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p; full list: tools/struct_twins.py --show 9ba0ae408dd4
|
||||
- `Drv_8017E330`: 2 obj — 0x801F80E4, ov_SC06_006/0x8017E330:p
|
||||
- `Drv_8017E550`: 2 obj — ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:p
|
||||
- `Drv_8017E878`: 2 obj — ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p
|
||||
### ff66866c62b0
|
||||
names: Ent_80183280, Unkstruct_801824D4, Unkstruct_80182560, Unkstruct_801E5894
|
||||
cause: 4 names (4 B, all members placeholders) bound to 4 distinct objects, none bound to two names: 0x80183280(arg0), md_SC02_009/0x801E5894:a0, ov_SC06_000/0x801824D4:a0, ov_SC06_000/0x80182560:arg0; full list: tools/struct_twins.py --show ff66866c62b0
|
||||
- `Ent_80183280`: 1 obj — 0x80183280(arg0)
|
||||
- `Unkstruct_801824D4`: 1 obj — ov_SC06_000/0x801824D4:a0
|
||||
- `Unkstruct_80182560`: 1 obj — ov_SC06_000/0x80182560:arg0
|
||||
- `Unkstruct_801E5894`: 1 obj — md_SC02_009/0x801E5894:a0
|
||||
|
||||
### 8944ddcbe454:opaque
|
||||
names: Blk36_800296F8, Blob36, SW20
|
||||
@@ -48,6 +553,34 @@ cause: 3 names (36 B, all members placeholders) bound to 6 distinct objects, non
|
||||
- `Blob36`: 2 obj — 0x80078E50, src/resident/0x800D185C:arg0
|
||||
- `SW20`: 1 obj — 0x800D4B70
|
||||
|
||||
### 9568f57fb00f:opaque
|
||||
names: OtBlk_80180894, OtBlk_80182890_8018FB5C, OtBlk_8018FE0C
|
||||
cause: 3 names (20 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x800A651C; full list: tools/struct_twins.py --show 9568f57fb00f:opaque
|
||||
- `OtBlk_80180894`: 1 obj — 0x800A651C
|
||||
- `OtBlk_80182890_8018FB5C`: 1 obj — D_800A651C_v
|
||||
- `OtBlk_8018FE0C`: 1 obj — aD800A651C
|
||||
|
||||
### 9ba0ae408dd4
|
||||
names: Drv_8017E330, Drv_8017E550, Drv_8017E878
|
||||
cause: 3 names (56 B, all members placeholders) bound to 6 distinct objects, none bound to two names: 0x801F80E4, ov_SC06_006/0x8017E330:p, ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:p, ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p; full list: tools/struct_twins.py --show 9ba0ae408dd4
|
||||
- `Drv_8017E330`: 2 obj — 0x801F80E4, ov_SC06_006/0x8017E330:p
|
||||
- `Drv_8017E550`: 2 obj — ov_SC06_006/0x8017E550:a0, ov_SC06_006/0x8017E550:p
|
||||
- `Drv_8017E878`: 2 obj — ov_SC06_006/0x8017E878:a0, ov_SC06_006/0x8017E878:p
|
||||
|
||||
### a5b3b6c549ea
|
||||
names: Blk32u, Entry_8016E95C, Quad_td
|
||||
cause: 3 names (32 B, all members placeholders) bound to 6 distinct objects, none bound to two names: 0x80063AEC, 0x80075840, 0x80115218, ov_SC01_000/0x8016E95C:p, ov_SC05_010/0x80180108:arg0, ov_SC07_010/0x8017FA94:quad; full list: tools/struct_twins.py --show a5b3b6c549ea
|
||||
- `Blk32u`: 2 obj — 0x80063AEC, 0x80075840
|
||||
- `Entry_8016E95C`: 3 obj — 0x80115218, ov_SC01_000/0x8016E95C:p, ov_SC05_010/0x80180108:arg0
|
||||
- `Quad_td`: 1 obj — ov_SC07_010/0x8017FA94:quad
|
||||
|
||||
### b519bad67107:opaque
|
||||
names: Local_8017EE34, Local_80181C84, Local_801870E8
|
||||
cause: 3 names (20 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80181C84:local, ov_SC03_105/0x80183D38:local, ov_SC03_105/0x801870E8:local; full list: tools/struct_twins.py --show b519bad67107:opaque
|
||||
- `Local_8017EE34`: 2 obj — ov_SC03_105/0x8017EE34:local, ov_SC03_105/0x80183D38:local
|
||||
- `Local_80181C84`: 1 obj — ov_SC03_105/0x80181C84:local
|
||||
- `Local_801870E8`: 1 obj — ov_SC03_105/0x801870E8:local
|
||||
|
||||
### c2ba48790859
|
||||
names: W8, W8_, func_8002EE64_b
|
||||
cause: 3 names (1 B, all members placeholders) bound to 4 distinct objects, none bound to two names: 0x80076242, 0x80076243, main/0x8002EE64:b; full list: tools/struct_twins.py --show c2ba48790859
|
||||
@@ -55,35 +588,18 @@ cause: 3 names (1 B, all members placeholders) bound to 4 distinct objects, none
|
||||
- `W8_`: 1 obj — D_80076242_
|
||||
- `func_8002EE64_b`: 1 obj — main/0x8002EE64:b
|
||||
|
||||
### ac91ae2d8aa0:opaque
|
||||
names: S800D22E4, vec
|
||||
cause: 2 names (28 B, all members placeholders) bound to 77 distinct objects, none bound to two names: 0x800D22E4(arg0), 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0 …; full list: tools/struct_twins.py --show ac91ae2d8aa0:opaque
|
||||
- `S800D22E4`: 1 obj — 0x800D22E4(arg0)
|
||||
- `vec`: 76 obj — 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0, md_SC07_004/0x801AC940:a1 (+68)
|
||||
### f39ecda931df:opaque
|
||||
names: Rec_md_MAIN_047_800CCBC0, UAlign12_80181F40, UAlign12_8018833C
|
||||
cause: 3 names (12 B, all members placeholders) bound to 6 distinct objects, none bound to two names: md_MAIN_047/0x800CCBC0:e, md_MAIN_047/0x800CCBC0:q, ov_SC06_020/0x80181F40:a2, ov_SC06_020/0x80181F40:param_1, ov_SC06_024/0x8018833C:a2, ov_SC06_024/0x8018833C:param_1; full list: tools/struct_twins.py --show f39ecda931df:opaque
|
||||
- `Rec_md_MAIN_047_800CCBC0`: 2 obj — md_MAIN_047/0x800CCBC0:e, md_MAIN_047/0x800CCBC0:q
|
||||
- `UAlign12_80181F40`: 2 obj — ov_SC06_020/0x80181F40:a2, ov_SC06_020/0x80181F40:param_1
|
||||
- `UAlign12_8018833C`: 2 obj — ov_SC06_024/0x8018833C:a2, ov_SC06_024/0x8018833C:param_1
|
||||
|
||||
### 82c6e3650290:opaque
|
||||
names: Gte8_8017F2FC, Rec_80180808
|
||||
cause: 2 names (8 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x801B1B50, ov_SC02_021/0x8017F2FC:sp10, ov_SC06_025/0x80180808:rec; full list: tools/struct_twins.py --show 82c6e3650290:opaque
|
||||
- `Gte8_8017F2FC`: 1 obj — ov_SC02_021/0x8017F2FC:sp10
|
||||
- `Rec_80180808`: 2 obj — 0x801B1B50, ov_SC06_025/0x80180808:rec
|
||||
|
||||
### aa66418d079c:opaque
|
||||
names: Blk16_80126940, Pos16_8018743C
|
||||
cause: 2 names (16 B, all members placeholders) bound to 3 distinct objects, none bound to two names: ov_SC06_000/0x80181AB4:sp10, ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to; full list: tools/struct_twins.py --show aa66418d079c:opaque
|
||||
- `Blk16_80126940`: 1 obj — ov_SC06_000/0x80181AB4:sp10
|
||||
- `Pos16_8018743C`: 2 obj — ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to
|
||||
|
||||
### 1dd90dc86138
|
||||
names: Ent80183F28, Ent_80184058
|
||||
cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x80183F28(arg0), 0x80184058(arg0); full list: tools/struct_twins.py --show 1dd90dc86138
|
||||
- `Ent80183F28`: 1 obj — 0x80183F28(arg0)
|
||||
- `Ent_80184058`: 1 obj — 0x80184058(arg0)
|
||||
|
||||
### d60a32e09c91
|
||||
names: P8, S72
|
||||
cause: 2 names (8 B, all members placeholders) bound to 5 distinct objects, none bound to two names: 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2E, 0x80185D72; full list: tools/struct_twins.py --show d60a32e09c91
|
||||
- `P8`: 4 obj — 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2E
|
||||
- `S72`: 1 obj — 0x80185D72
|
||||
### 00bfd8673c28
|
||||
names: Panel_8017E978_8017E1AC, Panel_801E46A0
|
||||
cause: 2 names (32 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x80115134, 0x8017E1AC(arg1), ov_SC01_009/0x8017E1AC:w; full list: tools/struct_twins.py --show 00bfd8673c28
|
||||
- `Panel_8017E978_8017E1AC`: 2 obj — 0x8017E1AC(arg1), ov_SC01_009/0x8017E1AC:w
|
||||
- `Panel_801E46A0`: 1 obj — 0x80115134
|
||||
|
||||
### 08944be666a1
|
||||
names: Sub8017EBC4, Sub_80181BA0
|
||||
@@ -91,35 +607,23 @@ cause: 2 names (20 B, all members placeholders) bound to 3 distinct objects, non
|
||||
- `Sub8017EBC4`: 2 obj — ov_SC06_029/0x8017EBC4:func_8012C1B8, ov_SC06_029/0x8017EBC4:sp
|
||||
- `Sub_80181BA0`: 1 obj — ov_SC04_011/0x80181BA0:p
|
||||
|
||||
### 474e1fa40ab6
|
||||
names: Actor_8017E550, Actor_8017E878
|
||||
cause: 2 names (156 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x8017E550(arg0), 0x8017E878(arg0); full list: tools/struct_twins.py --show 474e1fa40ab6
|
||||
- `Actor_8017E550`: 1 obj — 0x8017E550(arg0)
|
||||
- `Actor_8017E878`: 1 obj — 0x8017E878(arg0)
|
||||
|
||||
### 12fe36cd7e07
|
||||
names: Struct801E79D8, Struct801EF318
|
||||
cause: 2 names (16 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x801E2498, 0x801E79D8, 0x801EF318; full list: tools/struct_twins.py --show 12fe36cd7e07
|
||||
- `Struct801E79D8`: 1 obj — 0x801E79D8
|
||||
- `Struct801EF318`: 2 obj — 0x801E2498, 0x801EF318
|
||||
|
||||
### c6e867e46e6f
|
||||
names: V16x4, Vec4s16_8018423C
|
||||
cause: 2 names (8 B, all members placeholders) bound to 7 distinct objects, none bound to two names: 0x80188984, ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:b; full list: tools/struct_twins.py --show c6e867e46e6f
|
||||
- `V16x4`: 3 obj — 0x80188984, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:b
|
||||
- `Vec4s16_8018423C`: 4 obj — ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec
|
||||
### 1dd90dc86138
|
||||
names: Ent80183F28, Ent_80184058
|
||||
cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x80183F28(arg0), 0x80184058(arg0); full list: tools/struct_twins.py --show 1dd90dc86138
|
||||
- `Ent80183F28`: 1 obj — 0x80183F28(arg0)
|
||||
- `Ent_80184058`: 1 obj — 0x80184058(arg0)
|
||||
|
||||
### 64db0612c4d4
|
||||
names: Work_801832E0, Work_80183634
|
||||
cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x801832E0(arg0), 0x80183634(arg0); full list: tools/struct_twins.py --show 64db0612c4d4
|
||||
- `Work_801832E0`: 1 obj — 0x801832E0(arg0)
|
||||
- `Work_80183634`: 1 obj — 0x80183634(arg0)
|
||||
|
||||
### cc89b444f3c5
|
||||
names: EntA, Ent_SC07_010_8017AE2C
|
||||
cause: 2 names (256 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:p, ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p; full list: tools/struct_twins.py --show cc89b444f3c5
|
||||
- `EntA`: 2 obj — ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:p
|
||||
- `Ent_SC07_010_8017AE2C`: 2 obj — ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p
|
||||
### 1f2e73d77112
|
||||
names: Rec801806C8_s, Rec80182744_s
|
||||
cause: 2 names (12 B, all members placeholders); 2 bound to no object (UNBOUND), used only by: type Rec801806C8 (0x8018E344, ov_SC02_017/0x801806C8:a0), type Rec80182744 (0x8018BCD8, ov_SC03_029/0x80182744:a0); full list: tools/struct_twins.py --show 1f2e73d77112
|
||||
- `Rec801806C8_s`: 0 obj — used by type Rec801806C8 (0x8018E344, ov_SC02_017/0x801806C8:a0)
|
||||
- `Rec80182744_s`: 0 obj — used by type Rec80182744 (0x8018BCD8, ov_SC03_029/0x80182744:a0)
|
||||
|
||||
### 2816963b1259
|
||||
names: Obj800D302C, Struct800D2FEC
|
||||
@@ -133,8 +637,97 @@ cause: 2 names (72 B, all members placeholders) bound to 4 distinct objects, non
|
||||
- `Voice336A8`: 2 obj — 0x800A4988, main/0x800336A8:vo
|
||||
- `VoiceF80`: 2 obj — main/0x80030F80:e, main/0x80030F80:i
|
||||
|
||||
### 474e1fa40ab6
|
||||
names: Actor_8017E550, Actor_8017E878
|
||||
cause: 2 names (156 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x8017E550(arg0), 0x8017E878(arg0); full list: tools/struct_twins.py --show 474e1fa40ab6
|
||||
- `Actor_8017E550`: 1 obj — 0x8017E550(arg0)
|
||||
- `Actor_8017E878`: 1 obj — 0x8017E878(arg0)
|
||||
|
||||
### 5f9112725d5b
|
||||
names: Src80172E20, StructB58_8017FAFC
|
||||
cause: 2 names (16 B, all members placeholders) bound to 4 distinct objects, none bound to two names: 0x80126B58, 0x80127508, ov_SC06_020/0x8017FAFC:b58, shared/ov/0x80172E20:p; full list: tools/struct_twins.py --show 5f9112725d5b
|
||||
- `Src80172E20`: 2 obj — 0x80127508, shared/ov/0x80172E20:p
|
||||
- `StructB58_8017FAFC`: 2 obj — 0x80126B58, ov_SC06_020/0x8017FAFC:b58
|
||||
|
||||
### 64db0612c4d4
|
||||
names: Work_801832E0, Work_80183634
|
||||
cause: 2 names (236 B, all members placeholders) bound to 2 distinct objects, none bound to two names: 0x801832E0(arg0), 0x80183634(arg0); full list: tools/struct_twins.py --show 64db0612c4d4
|
||||
- `Work_801832E0`: 1 obj — 0x801832E0(arg0)
|
||||
- `Work_80183634`: 1 obj — 0x80183634(arg0)
|
||||
|
||||
### 82c6e3650290:opaque
|
||||
names: Gte8_8017F2FC, Rec_80180808
|
||||
cause: 2 names (8 B, all members placeholders) bound to 3 distinct objects, none bound to two names: 0x801B1B50, ov_SC02_021/0x8017F2FC:sp10, ov_SC06_025/0x80180808:rec; full list: tools/struct_twins.py --show 82c6e3650290:opaque
|
||||
- `Gte8_8017F2FC`: 1 obj — ov_SC02_021/0x8017F2FC:sp10
|
||||
- `Rec_80180808`: 2 obj — 0x801B1B50, ov_SC06_025/0x80180808:rec
|
||||
|
||||
### 927525df50d4
|
||||
names: E_13BD74, E_13C08C_8013C08C
|
||||
cause: 2 names (16 B, all members placeholders) bound to 2 distinct objects, none bound to two names: ov_MAIN_012/0x8013BD74:a0, shared/ov/0x8013C08C:a0; full list: tools/struct_twins.py --show 927525df50d4
|
||||
- `E_13BD74`: 1 obj — ov_MAIN_012/0x8013BD74:a0
|
||||
- `E_13C08C_8013C08C`: 1 obj — shared/ov/0x8013C08C:a0
|
||||
|
||||
### 9c8d61900c8d
|
||||
names: PRIM_8018FE20, Prim_8017DAC4
|
||||
cause: 2 names (56 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC04_011/0x8018FE20:pp, ov_SC04_011/0x8018FE20:prim, shared/ov/0x8017DAC4:prim, shared/ov/0x8017DAC4:q; full list: tools/struct_twins.py --show 9c8d61900c8d
|
||||
- `PRIM_8018FE20`: 2 obj — ov_SC04_011/0x8018FE20:pp, ov_SC04_011/0x8018FE20:prim
|
||||
- `Prim_8017DAC4`: 2 obj — shared/ov/0x8017DAC4:prim, shared/ov/0x8017DAC4:q
|
||||
|
||||
### 9dec8574d64e
|
||||
names: Actor4C, actor4c
|
||||
cause: 2 names (428 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Actor4C (0x80126748, 0x80126848, shared/ov/0x8015444C:arg0 …); the other 1 bound to 5 distinct objects, none bound to two names: 0x80126748, 0x80126848, shared/ov/0x8015444C:arg0, shared/ov/0x8015444C:op, shared/ov/0x8015444C:p; full list: tools/struct_twins.py --show 9dec8574d64e
|
||||
- `Actor4C`: 5 obj — 0x80126748, 0x80126848, shared/ov/0x8015444C:arg0, shared/ov/0x8015444C:op, shared/ov/0x8015444C:p
|
||||
- `actor4c`: 0 obj — used by type Actor4C (0x80126748, 0x80126848, shared/ov/0x8015444C:arg0 …)
|
||||
|
||||
### a3d1be6495e4
|
||||
names: Rec027, Rec_8017C738
|
||||
cause: 2 names (12 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Blk027 (0x801D3148, 0x801D9F40, ov_SC02_027/0x8017BFEC:dst …); the other 1 bound to 4 distinct objects, none bound to two names: 0x801D3148, ov_SC02_027/0x8017C738:a0, ov_SC02_027/0x8017C738:p, ov_SC02_027/0x8017C738:q; full list: tools/struct_twins.py --show a3d1be6495e4
|
||||
- `Rec027`: 0 obj — used by type Blk027 (0x801D3148, 0x801D9F40, ov_SC02_027/0x8017BFEC:dst …)
|
||||
- `Rec_8017C738`: 4 obj — 0x801D3148, ov_SC02_027/0x8017C738:a0, ov_SC02_027/0x8017C738:p, ov_SC02_027/0x8017C738:q
|
||||
|
||||
### aa66418d079c:opaque
|
||||
names: Blk16_80126940, Pos16_8018743C
|
||||
cause: 2 names (16 B, all members placeholders) bound to 3 distinct objects, none bound to two names: ov_SC06_000/0x80181AB4:sp10, ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to; full list: tools/struct_twins.py --show aa66418d079c:opaque
|
||||
- `Blk16_80126940`: 1 obj — ov_SC06_000/0x80181AB4:sp10
|
||||
- `Pos16_8018743C`: 2 obj — ov_SC06_029/0x8018743C:from, ov_SC06_029/0x8018743C:to
|
||||
|
||||
### ac91ae2d8aa0:opaque
|
||||
names: S800D22E4, vec
|
||||
cause: 2 names (28 B, all members placeholders) bound to 77 distinct objects, none bound to two names: 0x800D22E4(arg0), 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0 …; full list: tools/struct_twins.py --show ac91ae2d8aa0:opaque
|
||||
- `S800D22E4`: 1 obj — 0x800D22E4(arg0)
|
||||
- `vec`: 76 obj — 0x8012931C(arg0), 0x8012AD80(arg0), 0x80185238(arg0), 0x801879E8(arg0), md_SC07_004/0x801A72DC:a0, md_SC07_004/0x801ABC8C:a0, md_SC07_004/0x801AC234:a0, md_SC07_004/0x801AC940:a1 (+68)
|
||||
|
||||
### c6e867e46e6f
|
||||
names: V16x4, Vec4s16_8018423C
|
||||
cause: 2 names (8 B, all members placeholders) bound to 7 distinct objects, none bound to two names: 0x80188984, ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:b; full list: tools/struct_twins.py --show c6e867e46e6f
|
||||
- `V16x4`: 3 obj — 0x80188984, ov_SC06_025/0x8017F664:a, ov_SC06_025/0x8017F664:b
|
||||
- `Vec4s16_8018423C`: 4 obj — ov_SC03_105/0x8018423C:out, ov_SC03_105/0x8018423C:pos, ov_SC03_105/0x8018423C:tmp, ov_SC03_105/0x8018423C:vec
|
||||
|
||||
### c80fac242f04
|
||||
names: Mat801A8E34, Mat_80183C9C
|
||||
cause: 2 names (32 B, all members placeholders) bound to 2 distinct objects, none bound to two names: md_SC07_004/0x801A8E34:buf, ov_SC06_000/0x80183C9C:mat; full list: tools/struct_twins.py --show c80fac242f04
|
||||
- `Mat801A8E34`: 1 obj — md_SC07_004/0x801A8E34:buf
|
||||
- `Mat_80183C9C`: 1 obj — ov_SC06_000/0x80183C9C:mat
|
||||
|
||||
### cc89b444f3c5
|
||||
names: EntA, Ent_SC07_010_8017AE2C
|
||||
cause: 2 names (256 B, all members placeholders) bound to 4 distinct objects, none bound to two names: ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:p, ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p; full list: tools/struct_twins.py --show cc89b444f3c5
|
||||
- `EntA`: 2 obj — ov_SC07_010/0x8017E5B8:func_8012C588, ov_SC07_010/0x8017E5B8:p
|
||||
- `Ent_SC07_010_8017AE2C`: 2 obj — ov_SC07_010/0x8017E70C:func_8012C588, ov_SC07_010/0x8017E70C:p
|
||||
|
||||
### d60a32e09c91
|
||||
names: P8, S72
|
||||
cause: 2 names (8 B, all members placeholders) bound to 5 distinct objects, none bound to two names: 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2E, 0x80185D72; full list: tools/struct_twins.py --show d60a32e09c91
|
||||
- `P8`: 4 obj — 0x80185D28, 0x80185D2A, 0x80185D2C, 0x80185D2E
|
||||
- `S72`: 1 obj — 0x80185D72
|
||||
|
||||
### f94245c68571
|
||||
names: S_8013BC7C_8013BC7C, T68_8017FC44
|
||||
cause: 2 names (108 B, all members placeholders) bound to 2 distinct objects, none bound to two names: ov_SC01_000/0x8013BC7C:arg0, ov_SC03_092/0x8017FC44:a0; full list: tools/struct_twins.py --show f94245c68571
|
||||
- `S_8013BC7C_8013BC7C`: 1 obj — ov_SC01_000/0x8013BC7C:arg0
|
||||
- `T68_8017FC44`: 1 obj — ov_SC03_092/0x8017FC44:a0
|
||||
|
||||
## Dead kept
|
||||
- Unkstruct_80126B58 — defined in the generated `head_types` block of include/struct_types.h; `--fold-dead` never edits generated text (T5.1.c3b)
|
||||
- LineF2_8018F694 — used only inside a multi-line macro body in ov_SC06_018/032/033 (census cannot see it); deleting it broke cc1 (`undeclared`), T5.1.c3b
|
||||
- actor4c — tag of Actor4C, named only by its own self-pointer member `unk20`; the self-reference needs the tag
|
||||
- actor4c_8015444C — tag of Actor4C_8015444C_t9f81a8d5, same self-pointer `unk20` reason
|
||||
|
||||
+103
-27
@@ -7,9 +7,12 @@ This tool joins each name to the objects it is bound to in the source, and class
|
||||
|
||||
SEPARATE every name is bound to >= 1 object and no object is bound to two names of the class -> a `### <lhash>` section
|
||||
SHARED two or more names bound to the same object -> not listed; printed as a fold candidate with the shared object
|
||||
SDK the base layout hash equals a Sony PsyQ struct's (PSYQ names defined in the canonical type files / include/, hashed
|
||||
by the census's own parser and Resolver) -> not listed (folded onto the SDK name elsewhere)
|
||||
UNBOUND some name has no bound object (dead / definition-only / macro-only) -> not listed, no per-name evidence exists
|
||||
UNBOUND some name has no bound object (definition-only / member-only / macro-only) -> a `### <lhash>` section whose cause
|
||||
cites the use sites of the unbound names (U: the functions using them, the types naming them as a member or alias);
|
||||
a class none of whose cites carries an address is not written and is reported (T5.1.c7)
|
||||
SDK is not a class but a note (T5.1.c7): the base layout hash equals a Sony PsyQ struct's (PSYQ names defined in the canonical
|
||||
type files / include/, hashed by the census's own parser and Resolver); the SDK-named defs themselves were folded in T5.1.c6,
|
||||
the placeholders left in the row are classified by their bindings like any other and the cause names the SDK layout
|
||||
Rows: dup_gating.tsv's tier-2 rows plus the ones the current `## Twins` list takes out of it (type_census.json), so --write is
|
||||
idempotent.
|
||||
|
||||
@@ -23,6 +26,8 @@ Objects (the binding a use of the name establishes; scanned from src/**/*.{c,h}
|
||||
A same routine address + same local / slot, across binaries (the copies edited apart by levers and pins)
|
||||
AG a global used by the routine at one address, counted only across binaries (per-overlay instances of one table)
|
||||
F a member of an aggregate (no address)
|
||||
U a use site, no object (evidence for UNBOUND only): the using function (<binary>/0x<addr>) or, outside a function, the
|
||||
name the enclosing file-scope declaration defines (a struct naming it as a member, an alias typedef)
|
||||
Each G/L object is joined to its struct_map cluster through <census>/body_base_type.json when present (`--sites` run).
|
||||
|
||||
Usage:
|
||||
@@ -129,6 +134,12 @@ def addr_of(fn):
|
||||
def scan_file(rel, text, wanted, sink):
|
||||
"""append (name, key, cite, where) for every binding of a wanted name in one file"""
|
||||
text = COMMENT.sub(lambda m: re.sub(r"[^\n]", " ", m.group(0)), text)
|
||||
# a macro whose body names a wanted type: each use of the macro inside a function is a use (U) of that type
|
||||
macros = {}
|
||||
for m in re.finditer(r"(?m)^[ \t]*#[ \t]*define[ \t]+(\w+)((?:.*\\\n)*.*)$", text):
|
||||
hit = set(re.findall(r"[A-Za-z_]\w*", m.group(2))) & wanted
|
||||
if hit:
|
||||
macros[m.group(1)] = hit
|
||||
text = re.sub(r"(?m)^[ \t]*#.*$", "", text)
|
||||
toks, lines, ln, last = [], [], 1, 0
|
||||
for m in TOK.finditer(text):
|
||||
@@ -143,6 +154,7 @@ def scan_file(rel, text, wanted, sink):
|
||||
knr = None # (fn, [param idents]) between a K&R definition's `)` and its `{`
|
||||
hdrpend, fnpend, body0 = [], [], 0 # sink indexes of a header's P bindings / a body's L+P bindings; body start token
|
||||
used_by, s0 = collections.defaultdict(set), len(sink) # D_ symbol -> addresses of this file's functions using it
|
||||
upend = [] # (name, where) of wanted names used outside a function: owner = the declaration's defined name
|
||||
stmt = 0
|
||||
n = len(toks)
|
||||
for i, t in enumerate(toks):
|
||||
@@ -171,6 +183,7 @@ def scan_file(rel, text, wanted, sink):
|
||||
fn, fn_depth = knr[0], 1
|
||||
if depth == 0 and fn:
|
||||
fnpend, hdrpend, body0 = hdrpend, [], i
|
||||
upend = [] # a definition's header: its params are P bindings, not declaration uses
|
||||
knr = None
|
||||
depth += 1
|
||||
stmt = i + 1
|
||||
@@ -209,10 +222,23 @@ def scan_file(rel, text, wanted, sink):
|
||||
if t == ";":
|
||||
if depth == 0 and not parens and not knr:
|
||||
hdrpend = []
|
||||
if depth == 0 and not parens:
|
||||
owner = toks[i - 1] if i and not knr and re.match(r"[A-Za-z_]\w*$", toks[i - 1]) else None
|
||||
for nm, wh in upend:
|
||||
if owner and owner != nm:
|
||||
sink.append((nm, ("U", owner), owner, wh))
|
||||
upend = []
|
||||
stmt = i + 1
|
||||
continue
|
||||
if t in macros and fn:
|
||||
for nm in macros[t]:
|
||||
sink.append((nm, ("U", f"{binary}/{addr_of(fn)}"), f"{binary}/{addr_of(fn)}", f"{rel}:{lines[i]}"))
|
||||
if t not in wanted:
|
||||
continue
|
||||
if fn:
|
||||
sink.append((t, ("U", f"{binary}/{addr_of(fn)}"), f"{binary}/{addr_of(fn)}", f"{rel}:{lines[i]}"))
|
||||
else:
|
||||
upend.append((t, f"{rel}:{lines[i]}"))
|
||||
if stmt < n and toks[stmt] == "typedef":
|
||||
continue
|
||||
j = i + 1
|
||||
@@ -288,9 +314,8 @@ def struct_map_join(census):
|
||||
return g, loc, True
|
||||
|
||||
|
||||
def collect(census):
|
||||
rows = load_rows(census)
|
||||
wanted = {nm for r in rows for nm in r["names"]}
|
||||
def scan_all(wanted):
|
||||
"""name -> key -> [cite, [where]] over src/ and include/"""
|
||||
sink = []
|
||||
files = sorted(p for d in ("src", "include") for p in (REPO / d).rglob("*") if p.suffix in (".c", ".h") and p.is_file())
|
||||
for p in files:
|
||||
@@ -301,10 +326,22 @@ def collect(census):
|
||||
if not set(re.findall(r"[A-Za-z_]\w*", text)) & wanted:
|
||||
continue
|
||||
scan_file(rel, text, wanted, sink)
|
||||
bind = collections.defaultdict(dict) # name -> key -> (cite, [where])
|
||||
bind = collections.defaultdict(dict)
|
||||
for name, key, cite, where in sink:
|
||||
e = bind[name].setdefault(key, [cite, []])
|
||||
e[1].append(where)
|
||||
return bind
|
||||
|
||||
|
||||
def collect(census):
|
||||
rows = load_rows(census)
|
||||
wanted = {nm for r in rows for nm in r["names"]}
|
||||
bind = scan_all(wanted) # name -> key -> (cite, [where])
|
||||
# a type naming an unbound name as a member / alias (U owner): its own bound objects locate the use (one level)
|
||||
unb = {nm for nm in wanted if not any(k[0] not in ("F", "AG", "U") for k in bind.get(nm, {}))}
|
||||
owners = {k[1] for nm in unb for k in bind.get(nm, {}) if k[0] == "U" and "/" not in k[1]}
|
||||
obind = scan_all(owners) if owners else {}
|
||||
owner_objs = {o: cites(obind.get(o, {}), cap=3) for o in owners}
|
||||
psyq = psyq_layouts()
|
||||
out = []
|
||||
for r in rows:
|
||||
@@ -315,32 +352,63 @@ def collect(census):
|
||||
for key in bind.get(nm, {}):
|
||||
if key[0] == "AG":
|
||||
owners[key[:2]].add((nm, key[2]))
|
||||
elif key[0] != "F":
|
||||
elif key[0] not in ("F", "U"):
|
||||
owners[key].add((nm, None))
|
||||
shared = {k: {nm for nm, _ in v} for k, v in owners.items()
|
||||
if len({nm for nm, _ in v}) > 1 and (k[0] != "AG" or len({b for _, b in v}) > 1)}
|
||||
unbound = [nm for nm in r["names"] if not any(k[0] not in ("F", "AG") for k in bind.get(nm, {}))]
|
||||
klass = "SDK" if sdk else "SHARED" if shared else "UNBOUND" if unbound else "SEPARATE"
|
||||
out.append(dict(r, klass=klass, sdk=sdk, shared=shared, unbound=unbound,
|
||||
unbound = [nm for nm in r["names"] if not any(k[0] not in ("F", "AG", "U") for k in bind.get(nm, {}))]
|
||||
klass = "SHARED" if shared else "UNBOUND" if unbound else "SEPARATE"
|
||||
out.append(dict(r, klass=klass, sdk=sdk, shared=shared, unbound=unbound, owner_objs=owner_objs,
|
||||
bind={nm: bind.get(nm, {}) for nm in r["names"]}))
|
||||
return out
|
||||
|
||||
|
||||
def cites(objs, cap=MAX_CITES):
|
||||
cs = sorted({c for k, (c, _) in objs.items() if k[0] != "F"}, key=lambda c: ("0x" not in c, c))
|
||||
def has_addr(ci):
|
||||
return "0x" in ci or re.search(r"80[0-9A-Fa-f]{6}", ci) is not None
|
||||
|
||||
|
||||
def cites(objs, cap=MAX_CITES, kinds=None):
|
||||
cs = sorted({c for k, (c, _) in objs.items() if (k[0] in kinds if kinds else k[0] not in ("F", "U"))},
|
||||
key=lambda c: (not has_addr(c), c))
|
||||
return cs[:cap], len(cs)
|
||||
|
||||
|
||||
def uses(c, nm):
|
||||
"""an unbound name's use-site cites: the using functions, the types naming it (member / alias) with their own objects"""
|
||||
def one(ci):
|
||||
if "/" in ci:
|
||||
return ci
|
||||
cs, total = c["owner_objs"].get(ci, ([], 0))
|
||||
return f"type {ci}" + (f" ({', '.join(cs)}{' …' if total > len(cs) else ''})" if cs else "")
|
||||
return sorted({one(ci) for k, (ci, _) in c["bind"][nm].items() if k[0] == "U"}, key=lambda x: (not has_addr(x), x))
|
||||
|
||||
|
||||
def section(c):
|
||||
"""the `### <lhash>` text, or None when its cause would carry no address (UNBOUND without addressed use sites)"""
|
||||
names = sorted(c["names"])
|
||||
allc = sorted({ci for nm in names for k, (ci, _) in c["bind"][nm].items() if k[0] != "F"})
|
||||
unb = set(c["unbound"]) if c["klass"] == "UNBOUND" else set()
|
||||
allc = sorted({ci for nm in names if nm not in unb for k, (ci, _) in c["bind"][nm].items() if k[0] not in ("F", "U")})
|
||||
addr = [x for x in allc if "0x" in x]
|
||||
nobj = len(allc)
|
||||
lines = [f"### {c['lhash']}", "names: " + ", ".join(names),
|
||||
f"cause: {len(names)} names ({c['size']} B, all members placeholders) bound to {nobj} distinct objects, none bound to two "
|
||||
f"names: {', '.join(addr[:MAX_CITES])}{' …' if len(addr) > MAX_CITES else ''}; "
|
||||
f"full list: tools/struct_twins.py --show {c['lhash']}"]
|
||||
head = f"cause: {len(names)} names ({c['size']} B, all members placeholders)"
|
||||
bound = (f"bound to {len(allc)} distinct objects, none bound to two names: {', '.join(addr[:MAX_CITES])}"
|
||||
f"{' …' if len(addr) > MAX_CITES else ''}")
|
||||
if unb:
|
||||
ua = sorted({u for nm in unb for u in uses(c, nm) if has_addr(u)})
|
||||
if not ua and not addr:
|
||||
return None
|
||||
cause = (f"{head}; {len(unb)} bound to no object (UNBOUND), used only by: {', '.join(ua[:MAX_CITES]) or 'no addressed site'}"
|
||||
f"{' …' if len(ua) > MAX_CITES else ''}" + (f"; the other {len(names) - len(unb)} {bound}" if len(unb) < len(names) else ""))
|
||||
else:
|
||||
cause = f"{head} {bound}"
|
||||
if c["sdk"]:
|
||||
cause += f"; same layout as PsyQ {', '.join(c['sdk'])}, no name of the row bound to it"
|
||||
lines = [f"### {c['lhash']}", "names: " + ", ".join(names), cause + f"; full list: tools/struct_twins.py --show {c['lhash']}"]
|
||||
for nm in names:
|
||||
if nm in unb:
|
||||
us = uses(c, nm)
|
||||
lines.append(f"- `{nm}`: 0 obj — used by {', '.join(us[:MAX_CITES]) if us else 'nothing outside its definition'}"
|
||||
f"{f' (+{len(us) - MAX_CITES})' if len(us) > MAX_CITES else ''}")
|
||||
continue
|
||||
cs, total = cites(c["bind"][nm])
|
||||
more = f" (+{total - len(cs)})" if total > len(cs) else ""
|
||||
lines.append(f"- `{nm}`: {total} obj — {', '.join(cs)}{more}")
|
||||
@@ -354,9 +422,13 @@ def write(classes):
|
||||
sys.exit("struct_twins: no `## Twins` heading in docs/struct-twins.md")
|
||||
rest = re.search(r"(?m)^## ", text[m.end():])
|
||||
end = m.end() + rest.start() if rest else len(text)
|
||||
body = "\n\n".join(section(c) for c in classes if c["klass"] == "SEPARATE")
|
||||
# fixed order (rows move between dup_gating.tsv and the listed set as the doc changes): most names first, then lhash
|
||||
secs = [(c, section(c)) for c in sorted(classes, key=lambda c: (-len(c["names"]), c["lhash"]))
|
||||
if c["klass"] in ("SEPARATE", "UNBOUND")]
|
||||
body = "\n\n".join(s for _c, s in secs if s)
|
||||
body = ("<!-- generated by tools/struct_twins.py --write; regenerate, do not hand-edit -->\n\n" + body + "\n\n") if body else "\n"
|
||||
TWINS_DOC.write_text(text[:m.end()] + "\n" + body + text[end:])
|
||||
return [s for s in secs if s[1]], [c for c, s in secs if not s]
|
||||
|
||||
|
||||
def main():
|
||||
@@ -382,8 +454,8 @@ def main():
|
||||
f"{' struct_map ' + ','.join(sm[:4]) if sm else ''}")
|
||||
return
|
||||
cnt = collections.Counter(c["klass"] for c in classes)
|
||||
print(f"struct_twins: {len(classes)} tier-2 rows · SEPARATE {cnt['SEPARATE']} · SHARED {cnt['SHARED']} · SDK {cnt['SDK']} · "
|
||||
f"UNBOUND {cnt['UNBOUND']}")
|
||||
print(f"struct_twins: {len(classes)} tier-2 rows · SEPARATE {cnt['SEPARATE']} · SHARED {cnt['SHARED']} · "
|
||||
f"UNBOUND {cnt['UNBOUND']} · (SDK layout {sum(1 for c in classes if c['sdk'])})")
|
||||
for c in classes:
|
||||
if c["klass"] == "SHARED":
|
||||
def cite_of(k, nm):
|
||||
@@ -392,13 +464,17 @@ def main():
|
||||
ci = cite_of(k, min(v)) + (f" (routine {k[1]})" if k[0] in ("A", "AG") else "")
|
||||
print(f" SHARED {c['lhash']} ({len(c['names'])} names, {len(c['shared'])} shared objects): e.g. {ci} <- {', '.join(sorted(v)[:6])}"
|
||||
f"{' …' if len(v) > 6 else ''}")
|
||||
elif c["klass"] == "SDK":
|
||||
print(f" SDK {c['lhash']} ({len(c['names'])} names) layout of {', '.join(c['sdk'])}")
|
||||
elif c["klass"] == "UNBOUND":
|
||||
print(f" UNBOUND {c['lhash']} ({len(c['names'])} names): {', '.join(c['unbound'][:6])}{' …' if len(c['unbound']) > 6 else ''}")
|
||||
noaddr = [nm for nm in c["unbound"] if not any(has_addr(u) for u in uses(c, nm))]
|
||||
print(f" UNBOUND {c['lhash']} ({len(c['names'])} names): {', '.join(c['unbound'][:6])}{' …' if len(c['unbound']) > 6 else ''}"
|
||||
+ (f"; no addressed use: {', '.join(noaddr)}" if noaddr else ""))
|
||||
if c["sdk"] and c["klass"] != "SEPARATE":
|
||||
print(f" {c['lhash']}: same layout as PsyQ {', '.join(c['sdk'])}")
|
||||
if a.write:
|
||||
write(classes)
|
||||
print(f"struct_twins: wrote {cnt['SEPARATE']} `### <lhash>` sections to docs/struct-twins.md ## Twins")
|
||||
done, left = write(classes)
|
||||
print(f"struct_twins: wrote {len(done)} `### <lhash>` sections to docs/struct-twins.md ## Twins")
|
||||
for c in left:
|
||||
print(f" NOT WRITTEN {c['lhash']}: no address in any bound object or use site of {', '.join(c['unbound'])}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user