feat(phase-21): worker gate — +4 fns x2 propagated (fleet 59.05%)

This commit is contained in:
Drew T
2026-06-21 13:50:39 -06:00
parent 7bd3fa2ee9
commit 4d00a40609
136 changed files with 489 additions and 270 deletions
+105
View File
@@ -19342,4 +19342,109 @@
} \
}
#define DEFINE_func_80156FA8() \
extern s32 func_80013294(void *a0, void *a1); \
void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3) \
{ \
s16 d[3]; \
d[0] = ((s32)param_2[0] - (s32)param_1[0]) / 3; \
d[1] = ((s32)param_2[1] - (s32)param_1[1]) / 3; \
d[2] = ((s32)param_2[2] - (s32)param_1[2]) / 3; \
param_1[3] = 0; \
if (((s32 (*)(s16 *))func_80013294)(param_1) >= 0x41) { \
if (d[0] != 0 || d[1] != 0 || d[2] != 0) { \
param_3[0] = param_2[0] - d[0]; \
param_3[1] = param_2[1] - d[1]; \
param_3[2] = param_2[2] - d[2]; \
param_3[3] = 0; \
} else { \
param_3[3] = 1; \
} \
if (d[0] != 0 || d[1] != 0 || d[2] != 0) { \
param_2[0] = param_1[0] + d[0]; \
param_2[1] = param_1[1] + d[1]; \
param_2[2] = param_1[2] + d[2]; \
param_2[3] = 0; \
return; \
} \
param_2[3] = 1; \
return; \
} \
param_3[3] = 1; \
param_2[3] = 1; \
}
#define DEFINE_func_8017742C() \
extern u8 D_8011F837; \
extern u8 D_8011F7F0; \
extern u8 D_8011F7AB; \
u32 *func_8017742C(u32 *param_1, s32 param_2, s32 param_3) { \
s16 sVar1; \
u32 uVar2; \
s32 a3 = (s32)param_1; \
register s32 t1 __asm__("$9") = param_2; \
s32 t0 = a3; \
u8 *base = &D_8011F7F0; \
*(u32 *)a3 = (a3 - 0x14) & 0xffffff | 0x3000000; \
*(u8 *)(a3 + 7) = 0x60; \
if (D_8011F837 < 0x80) { \
*(u8 *)(a3 + 4) = 0xff; \
*(u8 *)(a3 + 6) = 0x10; \
*(u8 *)(a3 + 5) = 0x10; \
} else if (D_8011F837 == 0x80) { \
switch (D_8011F7AB) { \
default: \
D_8011F7AB = 0; \
case 0: \
*(u8 *)(t0 + 4) = 0xff; \
*(u8 *)(t0 + 6) = 0x30; \
*(u8 *)(t0 + 5) = 0x30; \
break; \
case 1: \
*(u8 *)(a3 + 5) = 0xff; \
*(u8 *)(a3 + 6) = 0x30; \
*(u8 *)(a3 + 4) = 0x30; \
break; \
case 2: \
*(u8 *)(a3 + 6) = 0xff; \
*(u8 *)(a3 + 5) = 0x30; \
*(u8 *)(a3 + 4) = 0x30; \
break; \
} \
{ \
u8 *p = &D_8011F7AB; \
*p = *p + 1; \
} \
} else { \
*(u8 *)(a3 + 5) = 0xff; \
*(u8 *)(a3 + 6) = 0x10; \
*(u8 *)(a3 + 4) = 0x10; \
} \
a3 += 0x14; \
*(u16 *)(t0 + 8) = t1; \
uVar2 = (u32)base[0x47]; \
*(u16 *)(t0 + 0xc) = 8; \
sVar1 = (s16)((s32)(uVar2 * 3) >> 3); \
{ \
s32 d = param_3 + 0x48; \
*(s16 *)(t0 + 0xa) = d - sVar1; \
} \
*(s16 *)(t0 + 0xe) = sVar1; \
*(u32 *)a3 = (a3 - 0x14) & 0xffffff | 0x3000000; \
*(u8 *)(a3 + 7) = 0x60; \
*(u8 *)(a3 + 5) = 0x40; \
*(u8 *)(a3 + 4) = 0x40; \
t0 = a3; \
if (base[0x47] != 0) { \
*(u8 *)(a3 + 6) = 0xa0; \
} else { \
*(u8 *)(a3 + 6) = 0x40; \
} \
*(u16 *)(t0 + 0xc) = 8; \
*(u16 *)(t0 + 0xe) = 0x48; \
*(u16 *)(t0 + 8) = t1; \
*(s16 *)(t0 + 0xa) = param_3; \
return (u32 *)(a3 + 0x14); \
}
#endif