phase-36: S104 s104_e21 — func_80037FC4 banked at 0 through the whole-object gate + propagated — e21 sibling: the same two loops

This commit is contained in:
Drew T
2026-09-11 03:13:09 -06:00
parent ec28cb7d88
commit cc27144fa6
3 changed files with 192 additions and 201 deletions
+11 -21
View File
@@ -2368,27 +2368,22 @@ void func_80037FC4(void)
extern void func_8003C23C(s32, s32);
extern void func_8003B250(s32, void *);
register u8 *p __asm__("$16"); // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B tus9)
u8 *p;
s32 i;
u32 mask;
u8 *base;
if (D_800A4F1D == 0) {
func_80038A58();
}
i = 0;
mask = 0xFFF9FFFF;
p = D_800C6E2E;
do {
for (i = 0; i < 0x10; i++) {
p = &D_800C6E2E[i * 0x60];
if (p[-4] != 0 && p[-1] == 0 && p[0] != 0) {
func_8003D3B4(i, 8);
*(u32 *)(p - 0x4A) &= mask;
*(u32 *)(p - 0x4A) &= ~0x60000;
p[0] = 0;
}
i++;
p += 0x60;
} while (i < 0x10);
}
if ((D_800A2B98 & 0xFFFF) != 0) {
func_8003C23C(0, D_800A2B98 & 0xFFFF);
@@ -2401,19 +2396,14 @@ void func_80037FC4(void)
}
base = D_800C6DD0;
i = 0;
p = base + 0x5E;
do {
if (p[-4] != 0 && p[-1] != 0) {
for (i = 0; i < 0x10; i++, base += 0x60) {
if (base[0x5A] != 0 && base[0x5D] != 0) {
func_8003B250(i, base + 0x10);
*(u32 *)(p - 0x4A) = 0;
p[-1] = 0;
p[0] = 0;
*(u32 *)(base + 0x14) = 0;
base[0x5D] = 0;
base[0x5E] = 0;
}
i++;
p += 0x60;
base += 0x60;
} while (i < 0x10);
}
if ((D_800C7D20 & 0xFFFF) != 0) {
func_8003C23C(1, D_800C7D20 & 0xFFFF);