mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-30 15:36:55 -04:00
feat(phase-31): S79 #9 (5) — main: func_8002AC98 (114 ins) banked: the generic arm's val = r + b routed through a fresh s32 temp ({ s32 xt = r + b; val = xt; }, with b widened to s32) so expand_binop's target==op1 swap does not fire — the same lever as func_80015608; gate_main BYTE-IDENTICAL 143dbb89
This commit is contained in:
@@ -21166,7 +21166,87 @@ void func_8002AC00(s32 a0)
|
|||||||
*(u16*)(s0 - 2) = (u16)v0;
|
*(u16*)(s0 - 2) = (u16)v0;
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE_ASM("asm/nonmatchings/800", func_8002AC98);
|
extern s32 func_800291B4(s32);
|
||||||
|
extern u16 D_800A6588[];
|
||||||
|
extern u8 D_8010F46C[];
|
||||||
|
extern u8 D_80078EBA;
|
||||||
|
void func_8002AC98(void)
|
||||||
|
{
|
||||||
|
register u16 *base __asm__("$20");
|
||||||
|
s16 i;
|
||||||
|
s16 val;
|
||||||
|
s32 t;
|
||||||
|
s32 r;
|
||||||
|
s32 idx;
|
||||||
|
s16 rc;
|
||||||
|
s32 b;
|
||||||
|
base = D_800A6588;
|
||||||
|
if (D_80078EBA == 0)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 0x40; i++)
|
||||||
|
{
|
||||||
|
t = func_800291B4(((s16) i) + 0x63) & 0xF;
|
||||||
|
if (t != 0)
|
||||||
|
{
|
||||||
|
r = rand() & 0x1F;
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
rc = r;
|
||||||
|
if ((rc != 0) && (rc != 0xB))
|
||||||
|
{
|
||||||
|
b = base[i] - 0xB;
|
||||||
|
{ s32 xt = r + b; val = xt; }
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = ((s16) base[i]) >> 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if (r != 0)
|
||||||
|
{
|
||||||
|
b = base[i] - 0xB;
|
||||||
|
{ s32 xt = r + b; val = xt; }
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
rc = r;
|
||||||
|
if ((rc != 0) && (rc != 0xB))
|
||||||
|
{
|
||||||
|
b = base[i] - 0xB;
|
||||||
|
{ s32 xt = r + b; val = xt; }
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = base[i] * 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = i + 1;
|
||||||
|
if (val < (*((s16 *) (&D_8010F46C[idx * 8]))))
|
||||||
|
{
|
||||||
|
base[i] = *((s16 *) (&D_8010F46C[idx * 8]));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (((*((s16 *) (&D_8010F46C[idx * 8]))) * 4) < val)
|
||||||
|
{
|
||||||
|
rc = 4;
|
||||||
|
base[i] = (*((s16 *) (&D_8010F46C[idx * 8]))) * rc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base[i] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s32 func_8002AE60(void) {
|
s32 func_8002AE60(void) {
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|||||||
Reference in New Issue
Block a user