feat(phase-30 S48-T6): propagate func_80185064 to its zero-crack siblings

This commit is contained in:
Drew T
2026-08-12 12:53:05 -06:00
parent c4836a4abf
commit b7956de9fd
6 changed files with 300 additions and 6 deletions
+50 -1
View File
@@ -8022,7 +8022,56 @@ void func_80189194(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_801891DC);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_801891DC;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_80189C68(s32 a0);
extern void func_80189B3C(s32 a0);
extern s32 func_80189CD4(void);
extern void func_80189E1C(s32 a0);
void func_801891DC(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_80189C68(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_80189B3C(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_80189CD4)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_80189E1C(a0);
}
}
}
/* func_80189304 — entity state-kick #0xB.
+50 -1
View File
@@ -6162,7 +6162,56 @@ void func_8017DE58(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_8017DEA0);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_8017DEA0;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_8017E960(s32 a0);
extern void func_8017E888(s32 a0);
extern void func_8017E9CC(s32);
extern void func_8017EB04(s32 a0);
void func_8017DEA0(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_8017E960(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_8017E888(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_8017E9CC)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_8017EB04(a0);
}
}
}
/* func_8017DFC8 — entity state-kick #0xB.
+50 -1
View File
@@ -4307,7 +4307,56 @@ void func_8017FF70(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8017C294", func_8017FFB8);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_8017FFB8;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_80180A78(s32 a0);
extern void func_801809A0(s32 a0);
extern void func_80180AE4(s32);
extern void func_80180C1C(s32 a0);
void func_8017FFB8(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_80180A78(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_801809A0(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_80180AE4)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_80180C1C(a0);
}
}
}
+50 -1
View File
@@ -3562,7 +3562,56 @@ void func_8017DF68(s32 a0)
}
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017DFB0);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_8017DFB0;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_8017EA70(s32 a0);
extern void func_8017E998(s32 a0);
extern void func_8017EADC(s32);
extern void func_8017EC14(s32 a0);
void func_8017DFB0(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_8017EA70(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_8017E998(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_8017EADC)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_8017EC14(a0);
}
}
}
/* func_8017E0D8 — entity state-kick #0xB.
+50 -1
View File
@@ -5201,7 +5201,56 @@ void func_80181C98(s32 a0)
}
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_80181CE0);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_80181CE0;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_801827A0(s32 a0);
extern void func_801826C8(s32 a0);
extern void func_8018280C(s32);
extern void func_80182944(s32 a0);
void func_80181CE0(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_801827A0(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_801826C8(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_8018280C)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_80182944(a0);
}
}
}
/* func_80181E08 — entity state-kick #0xB.
+50 -1
View File
@@ -3599,7 +3599,56 @@ void func_8017E518(s32 a0)
}
INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017BEBC", func_8017E560);
typedef struct {
SVECTOR_8016E7C8 v[4]; /* 0x00 */
s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */
u8 f6; /* 0x38 */
u8 pad[7]; /* -> 0x40 */
} Prim_8016E7C8_8017E560;
extern s32 func_8012B8E4(s32 arg0, s32 arg1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
extern void func_8017F020(s32 a0);
extern void func_8017EF48(s32 a0);
extern void func_8017F08C(s32);
extern void func_8017F1C4(s32 a0);
void func_8017E560(s32 a0) {
s32 v;
s32 flags;
v = func_8012B8E4(a0, 0xA);
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += v;
if ((*(s32 *)(a0 + 0xDC) & 0x20) != 0) {
if ((u32)(*(s32 *)(a0 + 0x1C) - 10) < 0xD) {
func_8017F020(a0);
}
} else {
if (*(s32 *)(a0 + 0x1C) == 0x16) {
func_8017EF48(a0);
}
if (*(s32 *)(a0 + 0x1C) < 0x10) {
((void (*)(s32))func_8017F08C)(a0);
}
}
if (func_8012BEE8(a0) != 0) {
flags = *(s32 *)(a0 + 0xDC);
if (flags & 1) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFFE;
*(s16 *)(a0 + 2) = 3;
} else if (flags & 0x10) {
*(s32 *)(a0 + 0xDC) = flags & 0xFFFFFFEF;
*(s16 *)(a0 + 2) = 3;
} else if (func_8012BD3C(a0, 0x400, 0x4000) == 0) {
*(s16 *)(a0 + 2) = 5;
} else {
*(s32 *)(a0 + 0x1C) = 0x1E;
func_8017F1C4(a0);
}
}
}
/* func_8017E688 — entity state-kick #0xB.