mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-28 03:34:22 -05:00
Fakematch sub_8007AA4
This commit is contained in:
163
src/text2.c
163
src/text2.c
@@ -1939,14 +1939,15 @@ void sub_8007958(struct UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 co
|
||||
s32 r6;
|
||||
u32 r9;
|
||||
struct unkStruct_80B8824 dataLOL;
|
||||
s32 lol;
|
||||
|
||||
r5 = &a0[a1];
|
||||
r9 = gUnknown_80B853C[color & 0xf];
|
||||
r9 = gUnknown_80B853C[color & 0xF];
|
||||
|
||||
r4 = y / 8;
|
||||
|
||||
dest = r5->unk18 + ((r5->unk4 * r4 + x / 8) * 8);
|
||||
dest += (r4 * -8 + y);
|
||||
dest = r5->unk18 + (((r5->unk4 * r4) + (x / 8)) * 8);
|
||||
dest += (r4 * -8) + y;
|
||||
r6 = x / 8;
|
||||
|
||||
if (y / 8 >= r5->unk8)
|
||||
@@ -1955,7 +1956,7 @@ void sub_8007958(struct UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 co
|
||||
dataLOL = gUnknown_80B8824;
|
||||
|
||||
for (; a4 > 0; a4 -= 8) {
|
||||
s32 lol = a4;
|
||||
lol = a4;
|
||||
if (lol > 7)
|
||||
lol = 8;
|
||||
|
||||
@@ -1999,122 +2000,48 @@ void nullsub_157(void)
|
||||
{
|
||||
}
|
||||
|
||||
NAKED // https://decomp.me/scratch/xE2Tn
|
||||
// https://decomp.me/scratch/4tFKb
|
||||
void sub_8007AA4(struct UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color)
|
||||
{
|
||||
asm_unified(
|
||||
"push {r4-r7,lr}\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tmov r6, r8\n"
|
||||
"\tpush {r6,r7}\n"
|
||||
"\tsub sp, 0x20\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tadds r5, r3, 0\n"
|
||||
"\tldr r7, [sp, 0x3C]\n"
|
||||
"\tldr r3, [sp, 0x40]\n"
|
||||
"\tlsls r2, r1, 3\n"
|
||||
"\tadds r2, r1\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tadds r4, r0, r2\n"
|
||||
"\tldr r1, _08007B28\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"\tands r3, r0\n"
|
||||
"\tlsls r3, 2\n"
|
||||
"\tadds r3, r1\n"
|
||||
"\tldr r0, [r3]\n"
|
||||
"\tldr r1, _08007B2C\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmov r12, r1\n"
|
||||
"\tmov r1, sp\n"
|
||||
"\tldr r0, _08007B30\n"
|
||||
"\tldm r0!, {r2,r3,r6}\n"
|
||||
"\tstm r1!, {r2,r3,r6}\n"
|
||||
"\tldm r0!, {r2,r3,r6}\n"
|
||||
"\tstm r1!, {r2,r3,r6}\n"
|
||||
"\tldm r0!, {r2,r3}\n"
|
||||
"\tstm r1!, {r2,r3}\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tcmp r5, 0\n"
|
||||
"\tbge _08007AE8\n"
|
||||
"\tadds r0, r5, 0x7\n"
|
||||
"_08007AE8:\n"
|
||||
"\tasrs r3, r0, 3\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tldrsh r6, [r4, r0]\n"
|
||||
"\tmov r8, r6\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tmuls r0, r3\n"
|
||||
"\tmov r2, r9\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbge _08007AFC\n"
|
||||
"\tadds r2, 0x7\n"
|
||||
"_08007AFC:\n"
|
||||
"\tasrs r2, 3\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tlsls r0, 5\n"
|
||||
"\tldr r1, [r4, 0x18]\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tlsls r0, r3, 3\n"
|
||||
"\tsubs r0, r5, r0\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tands r0, r6\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadd r0, sp\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmov r6, r12\n"
|
||||
"\tands r6, r0\n"
|
||||
"\tmov r12, r6\n"
|
||||
"\tcmp r2, r8\n"
|
||||
"\tbge _08007B6E\n"
|
||||
"\tb _08007B48\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08007B28: .4byte gUnknown_80B853C\n"
|
||||
"_08007B2C: .4byte 0x11111111\n"
|
||||
"_08007B30: .4byte gUnknown_80B8848\n"
|
||||
"_08007B34:\n"
|
||||
"\tadds r5, 0x1\n"
|
||||
"\tadds r1, 0x4\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tands r0, r5\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08007B46\n"
|
||||
"\tldr r0, [r4, 0x20]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadds r1, r0\n"
|
||||
"_08007B46:\n"
|
||||
"\tsubs r7, 0x1\n"
|
||||
"_08007B48:\n"
|
||||
"\tcmp r7, 0\n"
|
||||
"\tble _08007B6E\n"
|
||||
"\tmovs r2, 0x8\n"
|
||||
"\tldrsh r0, [r4, r2]\n"
|
||||
"\tcmp r3, r0\n"
|
||||
"\tbge _08007B6E\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tmov r6, r12\n"
|
||||
"\torrs r0, r6\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tldr r0, [r4, 0x3C]\n"
|
||||
"\tcmp r0, r1\n"
|
||||
"\tbls _08007B64\n"
|
||||
"\tstr r1, [r4, 0x3C]\n"
|
||||
"_08007B64:\n"
|
||||
"\tldr r0, [r4, 0x40]\n"
|
||||
"\tcmp r0, r1\n"
|
||||
"\tbcs _08007B34\n"
|
||||
"\tstr r1, [r4, 0x40]\n"
|
||||
"\tb _08007B34\n"
|
||||
"_08007B6E:\n"
|
||||
"\tadd sp, 0x20\n"
|
||||
"\tpop {r3,r4}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
s32 r2;
|
||||
s32 r3;
|
||||
struct UnkTextStruct1 *r4;
|
||||
u32 ip;
|
||||
u32 *dest;
|
||||
struct unkStruct_80B8848 dataLOL;
|
||||
|
||||
r4 = &a0[a1];
|
||||
ip = gUnknown_80B853C[color & 0xF] + 0x11111111;
|
||||
asm("":::"r8");
|
||||
dataLOL = gUnknown_80B8848;
|
||||
a4++; a4--;
|
||||
r3 = y / 8;
|
||||
|
||||
dest = r4->unk18 + ((r4->unk4 * r3 + x / 8) * 8);
|
||||
r2 = x / 8;
|
||||
dest += r3 * -8 + y;
|
||||
ip &= dataLOL.arr[x & 7];
|
||||
|
||||
if (r2 >= r4->unk4)
|
||||
return;
|
||||
goto thecheck;
|
||||
label:
|
||||
y++;
|
||||
dest++;
|
||||
if ((y % 8) == 0)
|
||||
dest += r4->unk20;
|
||||
a4--;
|
||||
thecheck:
|
||||
if (a4 <= 0 || r3 >= r4->unk8)
|
||||
return;
|
||||
|
||||
dest[0] |= ip;
|
||||
|
||||
if (r4->unk3C > dest)
|
||||
r4->unk3C = dest;
|
||||
if (r4->unk40 < dest)
|
||||
r4->unk40 = dest;
|
||||
goto label;
|
||||
}
|
||||
|
||||
void sub_8007B7C(u32 a0, s32 x, s32 y, s32 a3, u32 color)
|
||||
|
||||
Reference in New Issue
Block a user