chore(decomp): commit in-tree banked work before the serial lane

This commit is contained in:
Drew T
2026-08-25 21:11:18 -06:00
parent 8e4b491aff
commit dd0538ae05
3 changed files with 118 additions and 12 deletions
+2 -10
View File
@@ -2787,7 +2787,7 @@ extern void func_80182C10(void);
extern void func_80182D04(s32 a0);
extern void func_80182EB0();
extern void func_801831EC(void);
extern void func_80183748();
extern void func_80183748(void *a0);
/* ---- scalars ------------------------------------------------------------------ */
extern u16 D_800B99D8;
@@ -4493,15 +4493,7 @@ s32 param_1;
}
extern s32 D_801EDA1C;
extern s32 func_80182B00(s32 arg0);
void func_80180890(s32 arg0) {
if (func_80182B00(arg0) != 0 || D_801EDA1C != 0) {
*(s16 *)(arg0 + 2) = 1;
}
}
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8017D2DC", func_80180890);
extern void (*D_80188E10[])(void);
+65 -1
View File
@@ -4914,7 +4914,71 @@ void func_80181938(void *a0) {
}
INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181A80);
extern u8 D_801202A0[];
extern void *D_80126CC8;
extern u8 D_801B72B4[];
extern u8 D_801B6914[];
extern void func_8001C214(s32 a0, s32 a1);
extern void func_80180D68(void);
void func_80181A80(void *a0) {
u16 state = *(u16 *)((s32)a0 + 0x34);
switch (state) {
case 4:
{
u8 *p = D_801202A0;
s32 i;
for (i = 0; i < 0x60; i++, p += 0x10C) {
if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) {
func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B72B4);
*(u16 *)((s32)a0 + 0x5C) = 0x8800;
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400;
*(s16 *)((s32)a0 + 0x34) = 3;
}
}
/* fall through */
}
case 0:
if (D_80126CC8 == a0) {
u16 t0 = *(u16 *)((s32)a0 + 0x88);
u16 t1 = *(u16 *)((s32)a0 + 0x8A);
u16 t2 = *(u16 *)((s32)a0 + 0x8C);
*(s16 *)((s32)a0 + 0x34) = 1;
*(s16 *)((s32)a0 + 0x5C) = 0;
*(u16 *)((s32)a0 + 0x6) = t0;
*(u16 *)((s32)a0 + 0xA) = t1;
*(u16 *)((s32)a0 + 0xE) = t2;
func_80180D68();
}
break;
case 1:
break;
case 2:
{
u8 *p = D_801202A0;
s32 i;
for (i = 0; i < 0x60; i++, p += 0x10C) {
if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) {
func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B6914);
*(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040;
*(u16 *)((s32)a0 + 0x5C) = 0x9000;
*(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400;
*(s16 *)((s32)a0 + 0x34) = 0;
}
}
break;
}
case 3:
break;
default:
break;
}
}
extern void (*D_801B4DA8[])(void);
+51 -1
View File
@@ -4689,7 +4689,57 @@ void func_8017E520(s32 a0) {
}
INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017E5B8);
void func_8017E5B8(s32 a0, s32 a1) {
register s32 self __asm__("$2") = a0;
register s32 tmp __asm__("$3") = a1 * 8;
register s32 c0 __asm__("$4") = 0x1E;
register s32 c1 __asm__("$5") = self;
register s32 off __asm__("$17");
register s32 k2 __asm__("$18");
register s32 k1 __asm__("$19");
register s32 i __asm__("$20");
register s32 base __asm__("$21");
register s32 p __asm__("$16");
extern s32 func_8012C588(s32 a0, s32 a1);
extern void func_80015954(s32 a0, s32 a1);
extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32);
extern s16 D_80185D28[];
extern s16 D_80185D2A[];
extern s16 D_80185D2C[];
extern s16 D_80185D2E[];
extern u16 D_80185D5A[];
i = 0;
off = tmp;
base = (s32) D_80185D28;
__asm__ __volatile__("" : : "r"(tmp));
k1 = -0xE3;
__asm__ __volatile__("" : : "r"(k1));
k2 = -0x155;
func_80146A6C(c0, (void *)c1, *(s16 *)((s32)D_80185D28 + off),
*(s16 *)((s32)D_80185D2A + off),
*(s16 *)((s32)D_80185D2C + off), 0, 0);
do {
p = func_8012C588(0x3A6, 0);
if (p != 0) {
func_80015954(off + base, p + 4);
*(s16 *)(p + 0xFC) = *(u16 *)((s32)D_80185D5A +
(*(s16 *)((s32)D_80185D2E + off) << 2)) + k2;
*(s32 *)(p + 0xDC) = 0;
}
p = func_8012C588(0x3A6, 0);
if (p != 0) {
func_80015954(off + base, p + 4);
*(s16 *)(p + 0xFC) = *(u16 *)((s32)D_80185D5A +
(*(s16 *)((s32)D_80185D2E + off) << 2)) + k1;
*(s32 *)(p + 0xDC) = 1;
}
k1 += 0xAA;
i++;
k2 += 0xAA;
} while (i < 4);
}
extern void func_80015954(s32 a0, s32 a1);
extern s32 func_8012C588(s32 a0, s32 a1);