From cceec3b8ead4f5b6be2d37f462557f9e0ea2bc86 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 18 Jul 2026 12:16:04 -0600 Subject: [PATCH] feat(phase-29 crack-wave): type-lift SVec/Fr_801670E4 -> engine_types.h (func_801670E4 sweep enabler) --- src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.c | 14 -------------- src/shared/engine_types.h | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.c b/src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.c index 34df0ee57..671c42af7 100644 --- a/src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.c +++ b/src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.c @@ -5104,21 +5104,7 @@ INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8015AE2C", func_8016706 // @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel. -typedef struct { s16 x, y, z, pad; } SVec_801670E4; /* 8 bytes */ -typedef struct { - /* 0x00 */ u16 cx, cy, cz; - /* 0x06 */ u16 _p06; - /* 0x08 */ u16 a8[4]; - /* 0x10 */ s32 pos[3]; - /* 0x1C */ s32 _p1C; - /* 0x20 */ SVec_801670E4 v[4]; - /* 0x40 */ struct { u8 r, g, b, cd; } col[4]; - /* 0x50 */ u32 code; - /* 0x54 */ s32 _p54; - /* 0x58 */ u8 m1[0x20]; - /* 0x78 */ u8 m2[0x20]; -} Fr_801670E4; /* 0x98 bytes -> sp+0x10 .. sp+0xA8 */ extern void func_80149350(s32); extern void func_800D20C0(void *a0, void *a1, s32 a2); diff --git a/src/shared/engine_types.h b/src/shared/engine_types.h index 0ce7dcff9..6497aca9e 100644 --- a/src/shared/engine_types.h +++ b/src/shared/engine_types.h @@ -625,3 +625,19 @@ typedef struct { u8 pad44[0x10]; } Ent_956C; + +/* Phase-29 crack-wave lift (func_801670E4 family) */ +typedef struct { s16 x, y, z, pad; } SVec_801670E4; /* 8 bytes */ +typedef struct { + /* 0x00 */ u16 cx, cy, cz; + /* 0x06 */ u16 _p06; + /* 0x08 */ u16 a8[4]; + /* 0x10 */ s32 pos[3]; + /* 0x1C */ s32 _p1C; + /* 0x20 */ SVec_801670E4 v[4]; + /* 0x40 */ struct { u8 r, g, b, cd; } col[4]; + /* 0x50 */ u32 code; + /* 0x54 */ s32 _p54; + /* 0x58 */ u8 m1[0x20]; + /* 0x78 */ u8 m2[0x20]; +} Fr_801670E4; /* 0x98 bytes -> sp+0x10 .. sp+0xA8 */