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

This commit is contained in:
Drew T
2026-08-11 20:58:26 -06:00
parent 1bc5589588
commit b7e9d2f2ee
7 changed files with 413 additions and 7 deletions
+59 -1
View File
@@ -7514,7 +7514,65 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_801805F
INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_8018065C);
INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_801806F0);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_801806F0(s32 a0)
{
extern u8 D_80197498[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_80197498);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_80197498);
}
}
extern void func_8012E688(s32, u16, u16);
+59 -1
View File
@@ -4872,7 +4872,65 @@ INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_801833A
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183404);
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183498);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_80183498(s32 a0)
{
extern u8 D_801B1C64[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801B1C64);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801B1C64);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
void func_801835C0(void *a0) {
+59 -1
View File
@@ -3066,7 +3066,65 @@ INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_801842B
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184318);
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_801843AC);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_801843AC(s32 a0)
{
extern u8 D_801A8B40[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801A8B40);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801A8B40);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
void func_801844D4(void *a0) {
+59 -1
View File
@@ -6034,7 +6034,65 @@ INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8018203
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8018209C);
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182130);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_80182130(s32 a0)
{
extern u8 D_8019F28C[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_8019F28C);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_8019F28C);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
void func_80182258(void *a0) {
+59 -1
View File
@@ -3655,7 +3655,65 @@ INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_8018333
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_801833A0);
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_80183434);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_80183434(s32 a0)
{
extern u8 D_801C368C[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801C368C);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801C368C);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
void func_8018355C(void *param) {
+59 -1
View File
@@ -3687,7 +3687,65 @@ INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187A8
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187AEC);
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187B80);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_80187B80(s32 a0)
{
extern u8 D_801C6FA8[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801C6FA8);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_801C6FA8);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
+59 -1
View File
@@ -3615,7 +3615,65 @@ INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_801808C
INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_80180930);
INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_801809C4);
extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2);
extern void func_8012B23C(s32 a0);
extern void func_8012B1B4(s32 a0, s32 a1);
void func_801809C4(s32 a0)
{
extern u8 D_8019AEA4[];
u16 out[4];
u16 pos[4];
u16 t0, t1, t2;
*(u16 *)(a0 + 0x5C) = 0xA810;
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34);
t0 = *(u16 *)(a0 + 0x6);
pos[0] = t0;
out[0] = t0;
t1 = *(u16 *)(a0 + 0xA);
pos[1] = t1;
out[1] = t1 - 0x18;
t2 = *(u16 *)(a0 + 0xE);
pos[2] = t2;
out[2] = t2;
func_8012CEB0((s32)out, (s32)pos, 1);
*(u16 *)(a0 + 0xA) = pos[1] - 0x10;
if (*(s16 *)(a0 + 0x70) == 0xF) {
s32 c;
c = *(s32 *)(a0 + 0x20);
*(u16 *)(c + 0x14) = 0;
*(u16 *)(a0 + 0x2) = 1;
*(u16 *)(a0 + 0x34) = 1;
*(u16 *)(a0 + 0x70) = 0;
*(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6);
*(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA);
*(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE);
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_8019AEA4);
{
s32 n = *(s32 *)(a0 + 0x6C);
while (n != 0) {
*(u16 *)(n + 0x2) = 2;
*(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10;
*(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0;
n = *(s32 *)(n + 0x6C);
}
}
*(u16 *)(a0 + 0xFC) = 0;
} else {
func_8012B23C(a0);
func_8012B1B4(a0, (s32)D_8019AEA4);
}
}
extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2);
void func_80180AEC(void *a0) {