Merge pull request #191 from jiangzhengwenjz/sub_804F284

'real' match sub_804F284
This commit is contained in:
PikalaxALT 2019-12-20 14:50:14 -05:00 committed by GitHub
commit 72bd838403
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -365,41 +365,58 @@ static const u8 sTradeMonSpriteCoords[][2] = {
{0x17, 0x12},
};
// No idea if a 4D array is correct
static const u8 gUnknown_8261E5A[][2][6][2] = {
static const u8 gUnknown_8261E5A[][2][2] = {
{
{
{0x05, 0x04},
{0x0c, 0x04},
{0x05, 0x09},
{0x0c, 0x09},
{0x05, 0x0e},
{0x0c, 0x0e}
}, {
{0x14, 0x04},
{0x1b, 0x04},
{0x14, 0x09},
{0x1b, 0x09},
{0x14, 0x0e},
{0x1b, 0x0e}
}
}, {
{
{0x01, 0x03},
{0x08, 0x03},
{0x01, 0x08},
{0x08, 0x08},
{0x01, 0x0d},
{0x08, 0x0d}
}, {
{0x10, 0x03},
{0x17, 0x03},
{0x10, 0x08},
{0x17, 0x08},
{0x10, 0x0d},
{0x17, 0x0d}
}
}
{0x05, 0x04},
{0x0c, 0x04},
},
{
{0x05, 0x09},
{0x0c, 0x09},
},
{
{0x05, 0x0e},
{0x0c, 0x0e}
},
{
{0x14, 0x04},
{0x1b, 0x04},
},
{
{0x14, 0x09},
{0x1b, 0x09},
},
{
{0x14, 0x0e},
{0x1b, 0x0e},
},
};
static const u8 gUnknown_8261E72[][2][2] = {
{
{0x01, 0x03},
{0x08, 0x03},
},
{
{0x01, 0x08},
{0x08, 0x08},
},
{
{0x01, 0x0d},
{0x08, 0x0d}
},
{
{0x10, 0x03},
{0x17, 0x03},
},
{
{0x10, 0x08},
{0x17, 0x08},
},
{
{0x10, 0x0d},
{0x17, 0x0d},
},
};
static const u8 sTradeUnknownSpriteCoords[][4] = {
@ -2328,78 +2345,28 @@ static void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5)
sTradeMenuResourcesPtr->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2;
}
#ifdef NONMATCHING
// Instruction swap when setting r5 and r4
static void sub_804F284(u8 whichParty)
{
s32 i;
for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++)
{
const u8 (*r5)[2];
const u8 (*r4)[2];
u32 r0 = 3 * whichParty;
const u8 (*r1)[2][2] = gUnknown_8261E5A;
r5 = r1[r0];
r4 = gUnknown_8261E72[r0];
sub_804F08C(
whichParty,
i,
gUnknown_8261E5A[0][whichParty][i][0],
gUnknown_8261E5A[0][whichParty][i][1],
gUnknown_8261E5A[1][whichParty][i][0],
gUnknown_8261E5A[1][whichParty][i][1]
r5[i][0],
r5[i][1],
r4[i][0],
r4[i][1]
);
}
}
#else
NAKED
static void sub_804F284(u8 whichParty)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tsub sp, 0x8\n"
"\tlsls r0, 24\n"
"\tlsrs r6, r0, 24\n"
"\tmovs r7, 0\n"
"\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
"\tldr r0, [r0]\n"
"\tadds r0, 0x36\n"
"\tadds r0, r6\n"
"\tldrb r0, [r0]\n"
"\tcmp r7, r0\n"
"\tbge _0804F2D4\n"
"\tlsls r0, r6, 1\n"
"\tadds r0, r6\n"
"\tldr r1, _0804F2E0 @ =gUnknown_8261E5A\n"
"\tlsls r0, 2\n"
"\tadds r5, r0, r1\n"
"\tldr r1, _0804F2E4 @ =gUnknown_8261E5A+24\n"
"\tadds r4, r0, r1\n"
"_0804F2AA:\n"
"\tlsls r1, r7, 24\n"
"\tlsrs r1, 24\n"
"\tldrb r2, [r5]\n"
"\tldrb r3, [r5, 0x1]\n"
"\tldrb r0, [r4]\n"
"\tstr r0, [sp]\n"
"\tldrb r0, [r4, 0x1]\n"
"\tstr r0, [sp, 0x4]\n"
"\tadds r0, r6, 0\n"
"\tbl sub_804F08C\n"
"\tadds r5, 0x2\n"
"\tadds r4, 0x2\n"
"\tadds r7, 0x1\n"
"\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
"\tldr r0, [r0]\n"
"\tadds r0, 0x36\n"
"\tadds r0, r6\n"
"\tldrb r0, [r0]\n"
"\tcmp r7, r0\n"
"\tblt _0804F2AA\n"
"_0804F2D4:\n"
"\tadd sp, 0x8\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0804F2DC: .4byte sTradeMenuResourcesPtr\n"
"_0804F2E0: .4byte gUnknown_8261E5A\n"
"_0804F2E4: .4byte gUnknown_8261E5A+24");
}
#endif //NONMATCHING
static void sub_804F2E8(u8 whichParty)
{