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

This commit is contained in:
Drew T
2026-08-12 18:28:00 -06:00
parent 62081315ab
commit 46a2bf56af
5 changed files with 192 additions and 6 deletions
+2 -2
View File
@@ -253,7 +253,7 @@ build/src/ov_SC02_000/ov_SC02_000_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (
build/src/ov_SC02_000/ov_SC02_000_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_000/ov_SC02_000_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
build/src/ov_SC02_000/ov_SC02_000_jr_8017AE2C.o: JTBL_PADS := 0,0,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14,+0x34,+0x54,+0x74
build/src/ov_SC02_000/ov_SC02_000_jr_8017EA84.o: JTBL_PADS := 0,4,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x38,+0x58
build/src/ov_SC02_000/ov_SC02_000_jr_8017EA84.o: JTBL_PADS := 0,4,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x38,+0x58,+0x78
build/src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_000/ov_SC02_000_jr_801808C4.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_000/ov_SC02_000_jr_80180D6C.o: JTBL_PADS := 0,0,0,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40,+0x60,+0x80,+0xa0
@@ -293,7 +293,7 @@ build/src/ov_SC02_003/ov_SC02_003_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (
build/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_003/ov_SC02_003_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
build/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.o: JTBL_PADS := 0,0,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14,+0x34,+0x54,+0x74
build/src/ov_SC02_003/ov_SC02_003_jr_8017EA84.o: JTBL_PADS := 0,4,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x38,+0x58
build/src/ov_SC02_003/ov_SC02_003_jr_8017EA84.o: JTBL_PADS := 0,4,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x38,+0x58,+0x78
build/src/ov_SC02_003/ov_SC02_003_jr_8017FCB0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_003/ov_SC02_003_jr_801808C4.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
build/src/ov_SC02_003/ov_SC02_003_jr_80180D6C.o: JTBL_PADS := 0,0,0,0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40,+0x60,+0x80,+0xa0
+1 -1
View File
@@ -170,7 +170,7 @@ segments:
- [0xbe764, data, tail17]
- [0xbe768, .rodata, ov_SC02_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe7fc, .rodata, ov_SC02_000_jr_8017EA84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe874, data, tail18]
- [0xbe894, data, tail18]
- [0xbe924, .rodata, ov_SC02_000_jr_8017FB24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe984, data, tail19]
+1 -1
View File
@@ -170,7 +170,7 @@ segments:
- [0xbe764, data, tail17]
- [0xbe768, .rodata, ov_SC02_003_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe7fc, .rodata, ov_SC02_003_jr_8017EA84] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe874, data, tail18]
- [0xbe894, data, tail18]
- [0xbe924, .rodata, ov_SC02_003_jr_8017FB24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe944, .rodata, ov_SC02_003_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
- [0xbe984, data, tail19]
+94 -1
View File
@@ -3237,7 +3237,100 @@ void func_8017EA84(s32 a0)
}
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017EA84", func_8017F390);
extern u16 D_80126B66;
extern s32 D_801270C8;
extern s32 D_801270CC;
extern s32 D_801E8008;
extern char D_801A6534[];
extern char D_801A7054[];
extern char D_8018E6B0[];
extern void func_8012A828(s32 a0, void *a1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
extern void func_8012B14C(s32 a0, s32 a1);
extern void func_8012CBA4(s32 a0);
extern void func_8012C098(void *a0);
extern void func_8012C218(void *a0);
void func_8017F390(s32 a0)
{
u16 state;
u16 t;
s32 v0;
state = *(u16 *)(a0 + 0x34);
switch (state) {
case 0:
v0 = (s32) *(s16 *)&D_80126B66 - (s32) *(s16 *)(a0 + 0xE);
if (v0 < 0) {
v0 = -v0;
}
if (v0 < 0x171) {
t = state + 1;
*(u16 *)(a0 + 0x34) = t;
func_8012A828(a0, &D_801A7054);
*(s32 *)(a0 + 0x1C) = 0x1E;
}
return;
case 1:
if (*(s32 *)(a0 + 0x1C) == 0x14) {
D_801270C8 = 1;
}
if (func_8012BEE8(a0) == 0) {
return;
}
t = *(u16 *)(a0 + 0x34) + 1;
*(u16 *)(a0 + 0x34) = t;
func_8012A828(a0, &D_801A6534);
*(s32 *)(a0 + 0x1C) = 0;
return;
case 2:
*(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1;
{
s32 p20 = *(s32 *)(a0 + 0x20);
v0 = func_8012B608(*(s16 *)(p20 + 0x12), 0x800, 4);
}
{
s32 p20b = *(s32 *)(a0 + 0x20);
*(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + v0;
}
if (*(s32 *)(a0 + 0x1C) >= 8) {
func_8012B14C(a0, (s32) D_8018E6B0);
v0 = ((s32 (*)(s32)) func_8012CBA4)(a0);
D_801E8008 = v0;
if (v0 == 0 || (v0 & 0x4000) != 0) {
*(s32 *)(a0 + 4) = *(s32 *)(a0 + 0x38);
*(s32 *)(a0 + 8) = *(s32 *)(a0 + 0x3C);
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40);
}
}
*(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1;
if (*(s32 *)(a0 + 0x1C) >= 0x100) {
switch ((s32)((u32)*(u16 *)(a0 + 0x70) << 0x10) >> 0x18) {
case 0:
case 1:
case 2:
case 5:
case 6:
func_8012C098((void *)a0);
return;
case 3:
case 7:
func_8012C218((void *)a0);
break;
case 4:
D_801270CC = D_801270CC - 1;
func_8012C218((void *)a0);
break;
}
}
return;
}
}
// @class: plumbing
+94 -1
View File
@@ -3237,7 +3237,100 @@ void func_8017EA84(s32 a0)
}
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8017EA84", func_8017F390);
extern u16 D_80126B66;
extern s32 D_801270C8;
extern s32 D_801270CC;
extern s32 D_801E8008;
extern char D_801A6534[];
extern char D_801A7054[];
extern char D_8018E6B0[];
extern void func_8012A828(s32 a0, void *a1);
extern s32 func_8012BEE8(s32 a0);
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
extern void func_8012B14C(s32 a0, s32 a1);
extern void func_8012CBA4(s32 a0);
extern void func_8012C098(void *a0);
extern void func_8012C218(void *a0);
void func_8017F390(s32 a0)
{
u16 state;
u16 t;
s32 v0;
state = *(u16 *)(a0 + 0x34);
switch (state) {
case 0:
v0 = (s32) *(s16 *)&D_80126B66 - (s32) *(s16 *)(a0 + 0xE);
if (v0 < 0) {
v0 = -v0;
}
if (v0 < 0x171) {
t = state + 1;
*(u16 *)(a0 + 0x34) = t;
func_8012A828(a0, &D_801A7054);
*(s32 *)(a0 + 0x1C) = 0x1E;
}
return;
case 1:
if (*(s32 *)(a0 + 0x1C) == 0x14) {
D_801270C8 = 1;
}
if (func_8012BEE8(a0) == 0) {
return;
}
t = *(u16 *)(a0 + 0x34) + 1;
*(u16 *)(a0 + 0x34) = t;
func_8012A828(a0, &D_801A6534);
*(s32 *)(a0 + 0x1C) = 0;
return;
case 2:
*(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1;
{
s32 p20 = *(s32 *)(a0 + 0x20);
v0 = func_8012B608(*(s16 *)(p20 + 0x12), 0x800, 4);
}
{
s32 p20b = *(s32 *)(a0 + 0x20);
*(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + v0;
}
if (*(s32 *)(a0 + 0x1C) >= 8) {
func_8012B14C(a0, (s32) D_8018E6B0);
v0 = ((s32 (*)(s32)) func_8012CBA4)(a0);
D_801E8008 = v0;
if (v0 == 0 || (v0 & 0x4000) != 0) {
*(s32 *)(a0 + 4) = *(s32 *)(a0 + 0x38);
*(s32 *)(a0 + 8) = *(s32 *)(a0 + 0x3C);
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40);
}
}
*(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1;
if (*(s32 *)(a0 + 0x1C) >= 0x100) {
switch ((s32)((u32)*(u16 *)(a0 + 0x70) << 0x10) >> 0x18) {
case 0:
case 1:
case 2:
case 5:
case 6:
func_8012C098((void *)a0);
return;
case 3:
case 7:
func_8012C218((void *)a0);
break;
case 4:
D_801270CC = D_801270CC - 1;
func_8012C218((void *)a0);
break;
}
}
return;
}
}
// @class: plumbing