mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
feat(phase-21): worker gate — +4 fns x2 propagated (fleet 59.05%)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user