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

This commit is contained in:
Drew T
2026-08-12 18:26:34 -06:00
parent c2374589c4
commit db2f5fefb3
3 changed files with 252 additions and 6 deletions
+84 -2
View File
@@ -1786,7 +1786,6 @@ extern void func_8016A700(void *a0);
extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_801840A0[])(void);
extern void func_8016AB30(void *a0);
@@ -3611,7 +3610,90 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8017BEBC", func_8017DB38);
extern void func_8017DDFC(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8017DD30(void *a0);
void func_8017DB38(void *a0) {
extern s32 D_8019BD18;
extern s16 D_80191B6C[];
extern s16 D_80191B70;
extern s16 D_80191B72;
extern s16 D_80191B74;
extern u16 D_80126B66;
extern u16 D_80126B62;
extern u16 D_80126B5E;
s16 state = *(s16 *)((u8 *)a0 + 0x70);
s32 invalid = 0;
switch (state) {
case 0:
case 1: {
s16 lim = (*(s16 *)&D_80126B66);
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
if (lim < pos) {
if (pos + D_80191B6C[state] < lim) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 2: {
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
s16 lim = (*(s16 *)&D_80126B66);
if (lim > pos) {
if (lim < pos + D_80191B70) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 3: {
s16 p1 = *(s16 *)((u8 *)a0 + 0xA);
s16 t1 = (*(s16 *)&D_80126B62);
if (t1 > p1 && t1 < p1 + D_80191B72) {
/* valid */
} else {
s16 t2 = (*(s16 *)&D_80126B5E);
s16 p2 = *(s16 *)((u8 *)a0 + 0x6);
if (t2 < p2 && p2 + D_80191B74 < t2) {
/* valid */
} else {
invalid = 1;
}
}
break;
}
}
if (invalid || D_8019BD18 != 0) {
func_8017DDFC(0x12F);
*(s16 *)((u8 *)a0 + 0xFC) = 0;
func_8012AD44((s32 *)a0, 1);
} else {
s16 t = *(s16 *)((u8 *)a0 + 0xFE);
if (t < 0x70) {
*(s16 *)((u8 *)a0 + 0xFE) = t + 0x10;
}
}
func_8017DD30(a0);
}
extern s32 D_8019BD18;
void func_8017DCD0(void) {
+84 -2
View File
@@ -1786,7 +1786,6 @@ extern void func_8016A700(void *a0);
extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80183C20[])(void);
extern void func_8016AB30(void *a0);
@@ -4435,7 +4434,90 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8017BEBC", func_8017F044);
extern void func_8017F308(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8017F23C(void *a0);
void func_8017F044(void *a0) {
extern s32 D_8019A7D0;
extern s16 D_80192A40[];
extern s16 D_80192A44;
extern s16 D_80192A46;
extern s16 D_80192A48;
extern u16 D_80126B66;
extern u16 D_80126B62;
extern u16 D_80126B5E;
s16 state = *(s16 *)((u8 *)a0 + 0x70);
s32 invalid = 0;
switch (state) {
case 0:
case 1: {
s16 lim = (*(s16 *)&D_80126B66);
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
if (lim < pos) {
if (pos + D_80192A40[state] < lim) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 2: {
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
s16 lim = (*(s16 *)&D_80126B66);
if (lim > pos) {
if (lim < pos + D_80192A44) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 3: {
s16 p1 = *(s16 *)((u8 *)a0 + 0xA);
s16 t1 = (*(s16 *)&D_80126B62);
if (t1 > p1 && t1 < p1 + D_80192A46) {
/* valid */
} else {
s16 t2 = (*(s16 *)&D_80126B5E);
s16 p2 = *(s16 *)((u8 *)a0 + 0x6);
if (t2 < p2 && p2 + D_80192A48 < t2) {
/* valid */
} else {
invalid = 1;
}
}
break;
}
}
if (invalid || D_8019A7D0 != 0) {
func_8017F308(0x12F);
*(s16 *)((u8 *)a0 + 0xFC) = 0;
func_8012AD44((s32 *)a0, 1);
} else {
s16 t = *(s16 *)((u8 *)a0 + 0xFE);
if (t < 0x70) {
*(s16 *)((u8 *)a0 + 0xFE) = t + 0x10;
}
}
func_8017F23C(a0);
}
extern s32 D_8019A7D0;
void func_8017F1DC(void) {
+84 -2
View File
@@ -1786,7 +1786,6 @@ extern void func_8016A700(void *a0);
extern s32 func_8016A73C(s32 arg0);
extern s32 func_8016A8FC(s32 a0);
extern void func_8016A890(s32 arg0);
extern u16 D_80126B5E;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80189000[])(void);
extern void func_8016AB30(void *a0);
@@ -3814,7 +3813,90 @@ extern void func_8012AD44(s32 *a0, s16 a1);
}
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_8017F9BC);
extern void func_8017FC80(s32 a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8017FBB4(void *a0);
void func_8017F9BC(void *a0) {
extern s32 D_801AAAD8;
extern s16 D_8019AE44[];
extern s16 D_8019AE48;
extern s16 D_8019AE4A;
extern s16 D_8019AE4C;
extern u16 D_80126B66;
extern u16 D_80126B62;
extern u16 D_80126B5E;
s16 state = *(s16 *)((u8 *)a0 + 0x70);
s32 invalid = 0;
switch (state) {
case 0:
case 1: {
s16 lim = (*(s16 *)&D_80126B66);
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
if (lim < pos) {
if (pos + D_8019AE44[state] < lim) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 2: {
s16 pos = *(s16 *)((u8 *)a0 + 0xE);
s16 lim = (*(s16 *)&D_80126B66);
if (lim > pos) {
if (lim < pos + D_8019AE48) {
/* valid */
} else {
invalid = 1;
}
} else {
invalid = 1;
}
break;
}
case 3: {
s16 p1 = *(s16 *)((u8 *)a0 + 0xA);
s16 t1 = (*(s16 *)&D_80126B62);
if (t1 > p1 && t1 < p1 + D_8019AE4A) {
/* valid */
} else {
s16 t2 = (*(s16 *)&D_80126B5E);
s16 p2 = *(s16 *)((u8 *)a0 + 0x6);
if (t2 < p2 && p2 + D_8019AE4C < t2) {
/* valid */
} else {
invalid = 1;
}
}
break;
}
}
if (invalid || D_801AAAD8 != 0) {
func_8017FC80(0x12F);
*(s16 *)((u8 *)a0 + 0xFC) = 0;
func_8012AD44((s32 *)a0, 1);
} else {
s16 t = *(s16 *)((u8 *)a0 + 0xFE);
if (t < 0x70) {
*(s16 *)((u8 *)a0 + 0xFE) = t + 0x10;
}
}
func_8017FBB4(a0);
}
extern s32 D_801AAAD8;