From 5fcb110a2e129f1791cccfc58b9a2c7f8449f399 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 30 Sep 2026 13:25:02 -0600 Subject: [PATCH] T5.1.c3b: SDK fold: 140 MATRIX-shaped defs onto MATRIX; drop unused tag EntD820; --fold-class :sdk works --- docs/struct-map.md | 2 +- include/struct_types.h | 91 ++++---- src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c | 4 +- src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c | 4 +- src/ov_SC03_112/ov_SC03_112_jr_8017C294.c | 4 +- src/shared/engine_types.h | 242 +++++++++------------- tools/lift_types.py | 3 +- 7 files changed, 150 insertions(+), 200 deletions(-) diff --git a/docs/struct-map.md b/docs/struct-map.md index f66c3875e4..80df8944cb 100644 --- a/docs/struct-map.md +++ b/docs/struct-map.md @@ -1,6 +1,6 @@ # The struct map — the types the fleet's cast sites need (Phase 37 T1) -> **Generated by `tools/type_census.py` at `83d8b742b` (2026-09-30T19:14:02Z); 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_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. +> **Generated by `tools/type_census.py` at `a5c63c425` (2026-09-30T19:24:59Z); 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_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. **19124 types explain 498868 of 502986 dereference sites (99.2 %); 4118 sites have a base the census could not classify; 857 types carry a width conflict.** Merges by evidence: param 38876, assign 16786, arg 10825, field 9909, ret-of 4330, return 1524, assign& 1184, arg& 270. diff --git a/include/struct_types.h b/include/struct_types.h index d15e66123e..04a57b29ff 100644 --- a/include/struct_types.h +++ b/include/struct_types.h @@ -492,7 +492,7 @@ typedef struct { } Src_8013B6A0; typedef struct { s16 vx, vy; } DVECTOR; typedef DVECTOR DVEC2_C974_8017BA3C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974; +typedef MATRIX MTX_C974; typedef struct { u16 x, y, z, w; } Pt_8017D87C; @@ -861,33 +861,33 @@ typedef struct { u8 unk0[4]; } M4_801AE734; typedef struct { u8 unk0[4]; } M4_801AEB04; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801E2B14; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801E5124; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801E8054; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801E805C; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801EA664; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801EDED4; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801EF99C; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801F04DC; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801F1F94; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_md_SC07_003; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_800CB4E4; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_800CB910; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_800CBD54; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801A1B28; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801A8990; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801AA7E4; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801AACD4; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801AAF8C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_801ADC40; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974_801E3540; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974_801E8A80; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974_801EE8E0; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C974_801F03C0; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_CB578; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_CF90_801A3624; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_md_MAIN_039; +typedef MATRIX MATRIX_801EDED4; +typedef MATRIX MATRIX_801EDED4_801E2B14; +typedef MATRIX MATRIX_801EDED4_801E5124; +typedef MATRIX MATRIX_801EDED4_801E8054; +typedef MATRIX MATRIX_801EDED4_801E805C; +typedef MATRIX MATRIX_801EDED4_801EA664; +typedef MATRIX MATRIX_801EDED4_801EDED4; +typedef MATRIX MATRIX_801EDED4_801EF99C; +typedef MATRIX MATRIX_801EDED4_801F04DC; +typedef MATRIX MATRIX_801EDED4_801F1F94; +typedef MATRIX MATRIX_md_SC07_003; +typedef MATRIX MTX_800CB4E4; +typedef MATRIX MTX_800CB910; +typedef MATRIX MTX_800CBD54; +typedef MATRIX MTX_801A1B28; +typedef MATRIX MTX_801A8990; +typedef MATRIX MTX_801AA7E4; +typedef MATRIX MTX_801AACD4; +typedef MATRIX MTX_801AAF8C; +typedef MATRIX MTX_801ADC40; +typedef MATRIX MTX_C974_801E3540; +typedef MATRIX MTX_C974_801E8A80; +typedef MATRIX MTX_C974_801EE8E0; +typedef MATRIX MTX_C974_801F03C0; +typedef MATRIX MTX_CB578; +typedef MATRIX MTX_CF90_801A3624; +typedef MATRIX MTX_md_MAIN_039; typedef struct { u8 mat[0x14]; u32 zz[3] __attribute__((aligned(4))); @@ -899,17 +899,17 @@ typedef struct { s16 m[3][4]; } Mat_CB6A0; struct Mid { u32 gray[4]; u32 code; u8 bmode; }; typedef struct { s32 w[8]; } Mtx32_801A2400; typedef struct { s32 w[8]; } Mtx32_801A3180; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A3B18; +typedef MATRIX Mtx32_801A3B18; typedef struct { s32 w[8]; } Mtx32_801A3D60; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A4D58; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A4DFC; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A52DC; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A54F0; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_801A5698; +typedef MATRIX Mtx32_801A4D58; +typedef MATRIX Mtx32_801A4DFC; +typedef MATRIX Mtx32_801A52DC; +typedef MATRIX Mtx32_801A54F0; +typedef MATRIX Mtx32_801A5698; typedef struct { s32 w[8]; } Mtx32_801A90D8; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32b; +typedef MATRIX Mtx32b; typedef struct { Blk16X q0; Blk16X q1; s32 pad_20, pad_24; } Mtx40; -typedef struct { s16 m[3][3]; s32 t[3]; } MtxX; +typedef MATRIX MtxX; typedef struct { s16 m[9]; s16 pad; @@ -919,8 +919,8 @@ typedef struct { Mtx_800CD27C mt; /* 0x00 */ s32 rest[2]; /* 0x20..0x27 — frame padding, never touched */ } MtxBuf_800CD27C; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_801A6184; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_801AEC38; +typedef MATRIX Mtx_801A6184; +typedef MATRIX Mtx_801AEC38; typedef struct { s16 m[3][3]; s16 t[3]; s16 pad[4]; } Mtx_A8CE0 __attribute__((aligned(8))); typedef struct { s32 next; u8 pad[0xC]; } Node_801F28E0; typedef Node_801F28E0 Node_801E5AAC; @@ -1940,7 +1940,7 @@ typedef struct { u32 term; /* +0x24 */ } LineG4; typedef LineG4 LineG4_80016C28; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8001EFE0; +typedef MATRIX MATRIX_8001EFE0; typedef struct { /* 0x50 */ u32 flg; MATRIX_8001EFE0 coord; @@ -1954,7 +1954,7 @@ typedef struct { s16 pad; s32 t[3]; } MTX_139C8; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8001FC08; +typedef MATRIX MTX_8001FC08; typedef struct { MTX_8001FC08 a; MTX_8001FC08 b; } MTX2_8001FC08; typedef struct { /* 0x00 */ s32 attr; @@ -1973,13 +1973,10 @@ typedef struct { /* 0xA8 */ s16 *lp; /* 0xAC */ s32 cnt; } LOC_8001FC08; -typedef struct { - /* 0x00 */ s16 m[3][3]; - /* 0x14 */ s32 t[3]; -} MTX_80020248; +typedef MATRIX MTX_80020248; typedef struct { MTX_80020248 *p; s32 unused; } MH; -typedef struct { s16 m[3][3]; s32 t[3]; } MT_EA14; -typedef struct { s16 m[3][3]; s32 t[3]; } MX221A8; +typedef MATRIX MT_EA14; +typedef MATRIX MX221A8; typedef struct { /* 0x00 */ s32 flg; /* 0x04 */ MX221A8 coord; @@ -1990,7 +1987,7 @@ typedef struct { } CD221A8; struct MainSlot { s32 unk0; s32 unk4; s32 unk8; }; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MtxDA34; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_80021D38; +typedef MATRIX Mtx_80021D38; typedef struct { /* 0x0 */ u8 b0; /* 0x1 */ u8 b1; diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c b/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c index af6cbcd2c4..823f2d8285 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c @@ -3482,14 +3482,14 @@ void func_8017E024(s32 a0) Vec_8017E024 vin; /* sp+0x28 */ Vec_8017E024 vout; /* sp+0x38 */ Vec_8017E024 res; /* sp+0x48 */ - struct Mtx_8017E024 m; /* sp+0x58 */ + Mtx_8017E024 m; /* sp+0x58 */ s32 flag; /* sp+0x78 */ s32 *g; s32 owner; /* 32-byte aligned block move: 8x lw/sw in two groups of four (MAX_MOVE_REGS == 4). * The pseudo holding &m survives as $s1 and is reused for the three uses below. */ - m = *(struct Mtx_8017E024 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); + m = *(Mtx_8017E024 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); g = &D_80126B58; if (*(u16 *)(a0 + 0xFE) < 2) { diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c b/src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c index b9672d685b..507ba7939c 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c @@ -3197,12 +3197,12 @@ void func_8017DB0C(s32 a0) Vec_8017DB0C vin; Vec_8017DB0C vout; Vec_8017DB0C res; - struct Mtx_8017DB0C m; + Mtx_8017DB0C m; s32 flag; s32 *g; s32 owner; - m = *(struct Mtx_8017DB0C *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); + m = *(Mtx_8017DB0C *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); g = &D_80126B58; if (*(u16 *)(a0 + 0xFE) < 2) { diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8017C294.c b/src/ov_SC03_112/ov_SC03_112_jr_8017C294.c index 787c25e159..0d03be022b 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_8017C294.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_8017C294.c @@ -3712,7 +3712,7 @@ void func_8017EBE4(s32 a0) Vec_8017EBE4 vin; /* sp+0x28 */ Vec_8017EBE4 vout; /* sp+0x38 */ Vec_8017EBE4 res; /* sp+0x48 */ - struct Mtx_8017EBE4 m; /* sp+0x58 */ + Mtx_8017EBE4 m; /* sp+0x58 */ s32 flag; /* sp+0x78 */ s32 *g; s32 owner; @@ -3720,7 +3720,7 @@ void func_8017EBE4(s32 a0) /* 32-byte aligned block move: 8x lw/sw in two groups of four (MAX_MOVE_REGS == 4). * The pseudo holding &m survives as $s1 and is reused for the three uses below. */ - m = *(struct Mtx_8017EBE4 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); + m = *(Mtx_8017EBE4 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34); g = &D_80126B58; if (*(u16 *)(a0 + 0xFE) < 2) { diff --git a/src/shared/engine_types.h b/src/shared/engine_types.h index 0a69631161..68b6bd3c6e 100644 --- a/src/shared/engine_types.h +++ b/src/shared/engine_types.h @@ -751,7 +751,7 @@ typedef struct { s16 x, y; } Pair_8013AD38; typedef Pair_8013AD38 Hw4; typedef struct { char _b[8]; } M8; typedef struct { char _b[8]; } M8_801312D0; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX2; +typedef MATRIX MATRIX2; typedef struct { short m[3][3]; short pad; s32 t[3]; } MATRIX_8016E7C8; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MATRIX_8017E6D8; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_801749C8; @@ -2015,7 +2015,7 @@ typedef struct Gs_80078E78 { } Gs_80078E78; typedef Vec32 LVec1CDC; typedef struct { char _b[8]; } M8_8014C6F4; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX2_8017CDF0; +typedef MATRIX MATRIX2_8017CDF0; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MATRIX_8017C290; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MATRIX_8017E72C; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_L; @@ -2055,7 +2055,7 @@ typedef struct { u32 dst; /* 0x0C */ s32 n; /* 0x10 */ } Morph_8017DC1C; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx35C; +typedef MATRIX Mtx35C; typedef struct { s32 w[8]; } Mtx8_8017C910; typedef struct { s32 w[8]; } Mtx8_8017C910_8017D7F0; typedef struct { s32 w[8]; } Mtx8_8017C910_8017D9EC; @@ -2076,54 +2076,18 @@ typedef struct { s32 w[8]; } Mtx8_8017DE10_8017E878; typedef struct { s32 w[8]; } Mtx8_8017DE10_8017EA24; typedef struct { s32 w[8]; } Mtx8_8017DE10_8017EE3C; typedef struct { s32 w[8]; } Mtx8_8017DE10_8017FBC8; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017C218; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017D030; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017D0F8; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017D2F4; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017D408; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017DF10; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017E22C; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8017E3F0; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_801801E8; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_8018077C; -typedef struct { - s16 m[3][3]; - s32 t[3]; -} Mtx_8017C218_80182348; +typedef MATRIX Mtx_8017C218; +typedef MATRIX Mtx_8017C218_8017C218; +typedef MATRIX Mtx_8017C218_8017D030; +typedef MATRIX Mtx_8017C218_8017D0F8; +typedef MATRIX Mtx_8017C218_8017D2F4; +typedef MATRIX Mtx_8017C218_8017D408; +typedef MATRIX Mtx_8017C218_8017DF10; +typedef MATRIX Mtx_8017C218_8017E22C; +typedef MATRIX Mtx_8017C218_8017E3F0; +typedef MATRIX Mtx_8017C218_801801E8; +typedef MATRIX Mtx_8017C218_8018077C; +typedef MATRIX Mtx_8017C218_80182348; typedef struct { u8 pad[0x154]; u16 f154; @@ -3637,7 +3601,7 @@ typedef struct { u32 w; } W_8018BCD4; typedef DVECTOR XDV2; typedef PolyFT3 XFT3; typedef PolyFT4 XFT4; -typedef struct { s16 m[3][3]; s32 t[3]; } XMTX2; +typedef MATRIX XMTX2; typedef Part XPart; typedef struct { u32 w0, w1, w2; } XPrim; typedef SVECTOR XSV2; @@ -3666,7 +3630,7 @@ typedef struct { s16 f2; s16 f4; } D80190448_t; -typedef struct { short m[3][3]; long t[3]; } MATRIX_80188114; +typedef MATRIX MATRIX_80188114; typedef struct Rec80182744_s Rec80182744; /* --- lift_types.py fleet lift --- */ @@ -3739,9 +3703,9 @@ struct Fr_80187368 { }; typedef struct Fr_80187368 Fr_8018C190; struct Mtx32_80184008 { s32 w[8]; }; -struct Mtx_8017DB0C { s16 m[3][3]; s32 t[3]; }; -struct Mtx_8017E024 { s16 m[3][3]; s32 t[3]; }; -struct Mtx_8017EBE4 { s16 m[3][3]; s32 t[3]; }; +typedef MATRIX Mtx_8017DB0C; +typedef MATRIX Mtx_8017E024; +typedef MATRIX Mtx_8017EBE4; struct PrimBE4 { s16 f0, f2, f4, f6, f8, fA, fC, fE; s32 f10; }; struct PrimSpec80182A6C { s16 f0, f2, f4, f6, f8, fA, fC, fE; @@ -4469,17 +4433,17 @@ typedef union { s32 plain; struct { s32 idx : 15; } bf; } LoopVar; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8017D5C8; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8017D5C8_8017D5C8; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8017D5C8_8017EE98; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8017D5C8_801814E4; -typedef struct { short m[3][3]; int t[3]; } MATRIX_8017DBC4; -typedef struct { short m[3][3]; long t[3]; } MATRIX_8017F98C; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_80181228; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_80182800; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_80187A30; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8018985C; -typedef struct { s16 m[3][3]; s32 t[3]; } MATRIX_8018DA64; +typedef MATRIX MATRIX_8017D5C8; +typedef MATRIX MATRIX_8017D5C8_8017D5C8; +typedef MATRIX MATRIX_8017D5C8_8017EE98; +typedef MATRIX MATRIX_8017D5C8_801814E4; +typedef MATRIX MATRIX_8017DBC4; +typedef MATRIX MATRIX_8017F98C; +typedef MATRIX MATRIX_80181228; +typedef MATRIX MATRIX_80182800; +typedef MATRIX MATRIX_80187A30; +typedef MATRIX MATRIX_8018985C; +typedef MATRIX MATRIX_8018DA64; typedef struct { s16 m[10]; s32 x; @@ -4498,57 +4462,57 @@ typedef struct { s32 y; s32 z; } MB_80185B04; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX80180FE4; +typedef MATRIX MTX80180FE4; typedef struct { s32 w[8]; } MTX8L_80180750; typedef struct { s32 w[8]; } MTX8L_80181BD4; typedef struct { s32 w[5]; s32 p5; s32 p6; s32 p7; } MTX8L_801821E0; typedef struct { s32 a, b, c, d, e, f, g, h; } MTX8_80185648; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_1A30; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_1A30_80184BFC; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_1A30_80185434; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_1A30_8018F734; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017BEBC; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017D7C0; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017D7C0_8017F19C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017D7C0_8017F340; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017D7C0_8017F65C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017DB80; +typedef MATRIX MTX_1A30; +typedef MATRIX MTX_1A30_80184BFC; +typedef MATRIX MTX_1A30_80185434; +typedef MATRIX MTX_1A30_8018F734; +typedef MATRIX MTX_8017BEBC; +typedef MATRIX MTX_8017D7C0; +typedef MATRIX MTX_8017D7C0_8017F19C; +typedef MATRIX MTX_8017D7C0_8017F340; +typedef MATRIX MTX_8017D7C0_8017F65C; +typedef MATRIX MTX_8017DB80; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017DE40; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017E4D8; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017EA48; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017F55C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017F700; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8017FA1C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80180F7C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80181394; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80181574; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80181708; -typedef struct { short m[3][3]; long t[3]; } MTX_80181824; +typedef MATRIX MTX_8017F55C; +typedef MATRIX MTX_8017F700; +typedef MATRIX MTX_8017FA1C; +typedef MATRIX MTX_80180F7C; +typedef MATRIX MTX_80181394; +typedef MATRIX MTX_80181574; +typedef MATRIX MTX_80181708; +typedef MATRIX MTX_80181824; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8018256C; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_80182CB8; -typedef struct { short m[3][3]; long t[3]; } MTX_80182D80; -typedef struct { short m[3][3]; long t[3]; } MTX_80182D80_80181DE0; -typedef struct { short m[3][3]; long t[3]; } MTX_80182D80_80185774; -typedef struct { short m[3][3]; long t[3]; } MTX_80182D80_801863A4; +typedef MATRIX MTX_80182D80; +typedef MATRIX MTX_80182D80_80181DE0; +typedef MATRIX MTX_80182D80_80185774; +typedef MATRIX MTX_80182D80_801863A4; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_801836B8; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80184F18; -typedef struct { short m[3][3]; long t[3]; } MTX_801851A8; -typedef struct { short m[3][3]; long t[3]; } MTX_801851A8_80182D18; -typedef struct { short m[3][3]; long t[3]; } MTX_801851A8_80184E84; -typedef struct { short m[3][3]; long t[3]; } MTX_801851A8_80185D2C; -typedef struct { short m[3][3]; long t[3]; } MTX_801875E4; -typedef struct { short m[3][3]; long t[3]; } MTX_801875E4_8018848C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80187714; -typedef struct { short m[3][3]; long t[3]; } MTX_80187C64; -typedef struct { short m[3][3]; long t[3]; } MTX_80188B0C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_8018FE20; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C59C; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_C6F4; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_D538; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_EDF8; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_FD64; -typedef struct { s16 m[3][3]; s32 t[3]; } MT_8017EC4C; +typedef MATRIX MTX_80184F18; +typedef MATRIX MTX_801851A8; +typedef MATRIX MTX_801851A8_80182D18; +typedef MATRIX MTX_801851A8_80184E84; +typedef MATRIX MTX_801851A8_80185D2C; +typedef MATRIX MTX_801875E4; +typedef MATRIX MTX_801875E4_8018848C; +typedef MATRIX MTX_80187714; +typedef MATRIX MTX_80187C64; +typedef MATRIX MTX_80188B0C; +typedef MATRIX MTX_8018FE20; +typedef MATRIX MTX_C59C; +typedef MATRIX MTX_C6F4; +typedef MATRIX MTX_D538; +typedef MATRIX MTX_DF98; +typedef MATRIX MTX_EDF8; +typedef MATRIX MTX_FD64; +typedef MATRIX MT_8017EC4C; typedef struct { s32 w[8]; } Mat32L; typedef struct { s32 w[8]; } Mat32_8017E2BC; typedef struct { s32 w[8]; } Mat32_8017E910; @@ -4562,7 +4526,7 @@ typedef struct { u16 fa; /* 0x0a */ } MatEntry_80187B04; typedef struct { s16 m[16]; } Mat_80183C9C; -typedef struct { s16 m[3][3]; s32 t[3]; } Mat_80187A04; +typedef MATRIX Mat_80187A04; typedef struct { s16 x; s16 y; @@ -4589,14 +4553,14 @@ typedef struct { s32 extra; } Msg_80187050; typedef struct { s32 w[8]; } Mtx32_80180088; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_80182938; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_80183A28; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_80185480; +typedef MATRIX Mtx32_80182938; +typedef MATRIX Mtx32_80183A28; +typedef MATRIX Mtx32_80185480; typedef struct { s32 w[8]; } Mtx32_80186A34; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx32_80187654; +typedef MATRIX Mtx32_80187654; typedef struct { s32 w[8]; } Mtx8; typedef struct { s32 w[8]; } Mtx8_80189E18; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx8_8018AF58; +typedef MATRIX Mtx8_8018AF58; typedef struct { s16 m[3][3]; s16 pad; @@ -4609,31 +4573,19 @@ typedef struct { u8 _gap2[52]; /* sp+0x64..0x98 : never referenced by an instruction */ } Frame1; typedef struct { s32 m[5]; s32 t[3]; } MtxW; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_8017D278; -typedef struct { - s16 m[3][3]; /* +0x00, padded to 0x14 */ - s32 t[3]; /* +0x14 +0x18 +0x1C */ -} Mtx_8017DC24; -typedef struct { short m[3][3]; long t[3]; } Mtx_8017DECC; -typedef struct { short m[3][3]; long t[3]; } Mtx_8017E3F0; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_8017E8A0; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_8017E95C; +typedef MATRIX Mtx_8017D278; +typedef MATRIX Mtx_8017DC24; +typedef MATRIX Mtx_8017DECC; +typedef MATRIX Mtx_8017E3F0; +typedef MATRIX Mtx_8017E8A0; +typedef MATRIX Mtx_8017E95C; typedef struct { s32 w[8]; } Mtx_8017F370; -typedef struct { - s16 m[3][3]; /* +0x00, padded to 0x14 */ - s32 t[3]; /* +0x14 +0x18 +0x1C */ -} Mtx_8017F6A8; -typedef struct { short m[3][3]; long t[3]; } Mtx_8017FC10; -typedef struct { - s16 m[3][3]; /* +0x00, padded to 0x14 */ - s32 t[3]; /* +0x14 +0x18 +0x1C */ -} Mtx_8018012C; +typedef MATRIX Mtx_8017F6A8; +typedef MATRIX Mtx_8017FC10; +typedef MATRIX Mtx_8018012C; typedef struct { s32 w[8]; } Mtx_80180C38; -typedef struct { s16 m[3][3]; s32 t[3]; } Mtx_801812AC; -typedef struct { - s16 m[3][3]; /* +0x00, padded to 0x14 */ - s32 t[3]; /* +0x14 +0x18 +0x1C */ -} Mtx_80185C0C; +typedef MATRIX Mtx_801812AC; +typedef MATRIX Mtx_80185C0C; typedef struct { s16 m[9]; /* 0x00 */ s16 pad; /* 0x12 */ @@ -6228,7 +6180,7 @@ typedef struct { s16 f6; } D_80195AF6_t; struct Ent_SC07_010_8017AE2C { u8 pad[0xDC]; s32 unkDC; u8 pad_E0[0x1C]; u16 unkFC; }; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_CF90; +typedef MATRIX MTX_CF90; typedef struct { u8 pad_00[0x20]; void *f_20; @@ -6665,7 +6617,7 @@ typedef struct { } Ent_80180AE8; typedef struct { u16 x, y, z, pad; s32 w1, w2; } Ent_801DFBF8; typedef struct { u16 x; s16 y; s16 z; u16 pad; s32 w1, w2; } Ent_801DFBF8_SC06_029_80182334; -typedef struct EntD820 +typedef struct { u16 f0; u16 f2; @@ -6729,13 +6681,13 @@ typedef struct { s32 f8; } Local_801870E8; typedef struct { Blk8L_SC06_027_8017D104 pad; Blk8L_SC06_027_8017D104 a; Blk8L_SC06_027_8017D104 b; } Locs; -typedef struct { s16 m[3][3]; s32 t[3]; } M32_8017F154; -typedef struct { s16 m[3][3]; s32 t[3]; } M32_80188094; +typedef MATRIX M32_8017F154; +typedef MATRIX M32_80188094; typedef struct { u8 b[8]; } M8_SC02_005_8017F7CC; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017FE38; typedef struct { s16 m[3][3]; s16 pad; s32 t[3]; } MTX_8017FE38_80183FE0; -typedef struct { short m[3][3]; long t[3]; } MTX_80183940; -typedef struct { short m[3][3]; long t[3]; } MTX_85810; +typedef MATRIX MTX_80183940; +typedef MATRIX MTX_85810; typedef struct { s32 m[8]; } Mtx8_8017DE10_8017E710_SC03_006_8018450C; typedef struct { s32 w[8]; } Mtx_8018A0E0; typedef struct { u8 pad[0x3C]; s32 x3C; s32 x40; s32 x44; s32 x48; s32 x4C; s32 x50; } OB; @@ -7214,8 +7166,8 @@ typedef struct { } buf_80189888; /* --- lift_types.py --census (P38 T5.1.c2, batch md) --- */ -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801E2B1C; -typedef struct { short m[3][3]; long t[3]; } MATRIX_801EDED4_801EF98C; +typedef MATRIX MATRIX_801EDED4_801E2B1C; +typedef MATRIX MATRIX_801EDED4_801EF98C; typedef struct { s32 m[8]; } Mat_800CB658; typedef SVECTOR SVECTOR_801EDED4_801E2B1C; typedef SVECTOR SVECTOR_801EDED4_801EF98C; diff --git a/tools/lift_types.py b/tools/lift_types.py index c8384845b6..7285e51a6a 100644 --- a/tools/lift_types.py +++ b/tools/lift_types.py @@ -1034,7 +1034,8 @@ def fold_plan(tsv, only, exclude, want_tier1, want_sdk): for sname, smem, _sd in ss: grp = {n for d in defs if d.get("lhash") == lh and (_sdk_ev(d, smem) or sname in d["names"]) for n in d["names"] + ([d["tag"]] if d["tag"] else [])} - if not grp or grp == {sname} or (only and not any(c["names"] & grp for c in classes)): + if not grp or grp == {sname} or (only and lh + ":sdk" not in only + and not any(c["names"] & grp for c in classes)): continue hit = [c for c in classes if c["names"] & grp] if hit: