Fakematch a function
This commit is contained in:
committed by
Marcus Huderle
parent
75b4e9ac70
commit
0d5a0b58fa
+119
-646
@@ -741,711 +741,184 @@ static u8 sub_80E7B54(void)
|
|||||||
return gUnknown_03001160;
|
return gUnknown_03001160;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
|
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
|
||||||
{
|
{
|
||||||
// r9 = which
|
u16 i, j;
|
||||||
u16 i;
|
|
||||||
u16 j;
|
|
||||||
u8 linkPlayerCount;
|
u8 linkPlayerCount;
|
||||||
u16 language;
|
u8 tableId;
|
||||||
u16 otNameLanguage;
|
|
||||||
u16 nicknameLanguage;
|
|
||||||
u32 version;
|
|
||||||
u8 dcMail1;
|
|
||||||
u8 dcMail2;
|
|
||||||
u8 r1_80e7b54;
|
|
||||||
struct DayCareMail *recordMixingMail;
|
|
||||||
struct RecordMixingDayCareMail *_src;
|
struct RecordMixingDayCareMail *_src;
|
||||||
|
u8 which0, which1;
|
||||||
|
void *ptr;
|
||||||
u8 sp04[4];
|
u8 sp04[4];
|
||||||
u8 sp08[4];
|
u8 sp08[4];
|
||||||
struct RecordMixingDayCareMail *sp0c[4]; // -> sp+48
|
struct RecordMixingDayCareMail *sp0c[4];
|
||||||
u8 sp1c[4][2]; // [][0] -> sp+4c, [][1] -> sp+50
|
u8 sp1c[4][2];
|
||||||
u8 sp24[4][2];
|
u8 sp24[4][2];
|
||||||
// sp+2c = src
|
|
||||||
// sp+30 = recordSize
|
|
||||||
u8 sp34;
|
u8 sp34;
|
||||||
u16 oldSeed;
|
u16 oldSeed;
|
||||||
bool32 anyRS; // sp+3c
|
bool32 anyRS;
|
||||||
|
|
||||||
oldSeed = Random2();
|
oldSeed = Random2();
|
||||||
SeedRng2(gLinkPlayers[0].trainerId);
|
SeedRng2(gLinkPlayers[0].trainerId);
|
||||||
linkPlayerCount = GetLinkPlayerCount();
|
linkPlayerCount = GetLinkPlayerCount();
|
||||||
for (i = 0; i < 4; i ++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
sp04[i] = 0xFF;
|
sp04[i] = 0xFF;
|
||||||
sp08[i] = 0;
|
sp08[i] = 0;
|
||||||
sp1c[i][0] = 0;
|
sp1c[i][0] = 0;
|
||||||
sp1c[i][1] = 0;
|
sp1c[i][1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
anyRS = Link_AnyPartnersPlayingRubyOrSapphire();
|
anyRS = Link_AnyPartnersPlayingRubyOrSapphire();
|
||||||
for (i = 0; i < GetLinkPlayerCount(); i ++) // r8 = i
|
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||||
{
|
{
|
||||||
// sp+54 = linkPlayerCount << 16
|
u32 language, version;
|
||||||
// sp+44 = which * recordSize
|
|
||||||
_src = (void *)src + i * recordSize; // r7
|
_src = (void *)src + i * recordSize;
|
||||||
language = gLinkPlayers[i].language; // r9
|
language = gLinkPlayers[i].language;
|
||||||
version = (u8)gLinkPlayers[i].version; // sp+40
|
version = gLinkPlayers[i].version & 0xFF;
|
||||||
for (j = 0; j < _src->unk_70; j ++)
|
for (j = 0; j < _src->numDaycareMons; j ++)
|
||||||
{
|
{
|
||||||
// r10 = ~0x10
|
u16 otNameLanguage, nicknameLanguage;
|
||||||
recordMixingMail = &_src->unk_00[j];
|
struct DayCareMail *recordMixingMail = &_src->mail[j];
|
||||||
if (recordMixingMail->mail.itemId != ITEM_NONE)
|
|
||||||
|
if (!recordMixingMail->message.itemId)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (anyRS)
|
||||||
{
|
{
|
||||||
if (anyRS)
|
if (StringLength(recordMixingMail->OT_name) <= 5)
|
||||||
{
|
{
|
||||||
if (StringLength(recordMixingMail->OT_name) <= 5)
|
otNameLanguage = LANGUAGE_JAPANESE;
|
||||||
{
|
|
||||||
otNameLanguage = LANGUAGE_JAPANESE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StripExtCtrlCodes(recordMixingMail->OT_name);
|
|
||||||
otNameLanguage = language;
|
|
||||||
}
|
|
||||||
if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
|
|
||||||
{
|
|
||||||
StripExtCtrlCodes(recordMixingMail->monName);
|
|
||||||
nicknameLanguage = LANGUAGE_JAPANESE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nicknameLanguage = language;
|
|
||||||
}
|
|
||||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
|
||||||
{
|
|
||||||
recordMixingMail->language_maybe = otNameLanguage;
|
|
||||||
recordMixingMail->unknown = nicknameLanguage;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (language == LANGUAGE_JAPANESE)
|
else
|
||||||
{
|
{
|
||||||
if (IsStringJapanese(recordMixingMail->OT_name))
|
StripExtCtrlCodes(recordMixingMail->OT_name);
|
||||||
{
|
otNameLanguage = language;
|
||||||
recordMixingMail->language_maybe = LANGUAGE_JAPANESE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
recordMixingMail->language_maybe = GAME_LANGUAGE;
|
|
||||||
}
|
|
||||||
if (IsStringJapanese(recordMixingMail->monName))
|
|
||||||
{
|
|
||||||
recordMixingMail->unknown = LANGUAGE_JAPANESE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
recordMixingMail->unknown = GAME_LANGUAGE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
|
||||||
|
{
|
||||||
|
StripExtCtrlCodes(recordMixingMail->monName);
|
||||||
|
nicknameLanguage = LANGUAGE_JAPANESE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nicknameLanguage = language;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||||
|
{
|
||||||
|
recordMixingMail->gameLanguage = otNameLanguage;
|
||||||
|
recordMixingMail->monLanguage = nicknameLanguage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (language == LANGUAGE_JAPANESE)
|
||||||
|
{
|
||||||
|
if (IsStringJapanese(recordMixingMail->OT_name))
|
||||||
|
recordMixingMail->gameLanguage = LANGUAGE_JAPANESE;
|
||||||
|
else
|
||||||
|
recordMixingMail->gameLanguage = GAME_LANGUAGE;
|
||||||
|
|
||||||
|
if (IsStringJapanese(recordMixingMail->monName))
|
||||||
|
recordMixingMail->monLanguage = LANGUAGE_JAPANESE;
|
||||||
|
else
|
||||||
|
recordMixingMail->monLanguage = GAME_LANGUAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sp34 = 0;
|
sp34 = 0;
|
||||||
for (i = 0; i < linkPlayerCount; i ++)
|
for (i = 0; i < linkPlayerCount; i++)
|
||||||
{
|
{
|
||||||
_src = (void *)src + i * recordSize; // r7
|
_src = (void *)src + i * recordSize;
|
||||||
if (_src->unk_70 != 0)
|
if (_src->numDaycareMons == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < _src->numDaycareMons; j ++)
|
||||||
{
|
{
|
||||||
for (j = 0; j < _src->unk_70; j ++)
|
if (!_src->holdsItem[j])
|
||||||
{
|
sp1c[i][j] = 1;
|
||||||
if (_src->unk_74[j] == 0)
|
|
||||||
{
|
|
||||||
sp1c[i][j] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
i = 0;
|
|
||||||
for (j = 0; j < linkPlayerCount; j ++)
|
j = 0;
|
||||||
|
for (i = 0; i < linkPlayerCount; i++)
|
||||||
{
|
{
|
||||||
_src = (void *)src + j * recordSize;
|
_src = (void *)src + i * recordSize;
|
||||||
if (sp1c[j][0] == TRUE || sp1c[j][1] == TRUE)
|
if (sp1c[i][0] == TRUE || sp1c[i][1] == TRUE)
|
||||||
|
sp34++;
|
||||||
|
|
||||||
|
if (sp1c[i][0] == TRUE && sp1c[i][1] == FALSE)
|
||||||
{
|
{
|
||||||
sp34 ++;
|
sp24[j][0] = i;
|
||||||
|
sp24[j][1] = 0;
|
||||||
|
j++;
|
||||||
}
|
}
|
||||||
if (sp1c[j][0] == TRUE && sp1c[j][1] == FALSE)
|
else if (sp1c[i][0] == FALSE && sp1c[i][1] == TRUE)
|
||||||
{
|
{
|
||||||
sp24[i][0] = j;
|
sp24[j][0] = i;
|
||||||
sp24[i][1] = 0;
|
sp24[j][1] = 1;
|
||||||
i ++;
|
j++;
|
||||||
}
|
}
|
||||||
else if (sp1c[j][0] == FALSE && sp1c[j][1] == TRUE)
|
else if (sp1c[i][0] == TRUE && sp1c[i][1] == TRUE)
|
||||||
{
|
{
|
||||||
sp24[i][0] = j;
|
u32 var1, var2;
|
||||||
sp24[i][1] = 0;
|
|
||||||
i ++;
|
sp24[j][0] = i;
|
||||||
}
|
var1 = sub_80E7A9C(&_src->mail[0]);
|
||||||
else if (sp1c[j][0] == TRUE && sp1c[j][1] == TRUE)
|
var2 = sub_80E7A9C(&_src->mail[1]);
|
||||||
{
|
if (!var1 && var2)
|
||||||
sp24[i][0] = j;
|
|
||||||
dcMail1 = sub_80E7A9C(&_src->unk_00[0]);
|
|
||||||
dcMail2 = sub_80E7A9C(&_src->unk_00[1]);
|
|
||||||
if (!dcMail1 && dcMail2)
|
|
||||||
{
|
{
|
||||||
sp24[i][1] = 1;
|
register u8 one asm("r0") = 1; // boo, a fakematch
|
||||||
|
sp24[j][1] = one;
|
||||||
}
|
}
|
||||||
else if ((dcMail1 && dcMail2) || (!dcMail1 && !dcMail2))
|
else if ((var1 && var2) || (!var1 && !var2))
|
||||||
{
|
{
|
||||||
sp24[i][1] = Random2() % 2;
|
sp24[j][1] = Random2() % 2;
|
||||||
}
|
}
|
||||||
else
|
else if (var1 && !var2)
|
||||||
{
|
{
|
||||||
sp24[i][1] = 0;
|
sp24[j][1] = 0;
|
||||||
}
|
}
|
||||||
i ++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < 4; i ++)
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
_src = &src[which * recordSize];
|
_src = &src[which * recordSize];
|
||||||
sp0c[i] = _src;
|
sp0c[i] = _src;
|
||||||
}
|
}
|
||||||
r1_80e7b54 = sub_80E7B54() % 3;
|
|
||||||
|
tableId = sub_80E7B54() % 3;
|
||||||
switch (sp34)
|
switch (sp34)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
sub_80E7AA4(src, recordSize, sp24, 0, 1);
|
sub_80E7AA4(src, recordSize, sp24, 0, 1);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFB8[r1_80e7b54][0], gUnknown_0858CFB8[r1_80e7b54][1]);
|
which0 = gUnknown_0858CFB8[tableId][0];
|
||||||
break;
|
which1 = gUnknown_0858CFB8[tableId][1];
|
||||||
case 4:
|
sub_80E7AA4(src, recordSize, sp24, which0, which1);
|
||||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][0], gUnknown_0858CFBE[r1_80e7b54][1]);
|
break;
|
||||||
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][2], gUnknown_0858CFBE[r1_80e7b54][3]);
|
case 4:
|
||||||
break;
|
ptr = sp24;
|
||||||
|
which0 = gUnknown_0858CFBE[tableId][0];
|
||||||
|
which1 = gUnknown_0858CFBE[tableId][1];
|
||||||
|
sub_80E7AA4(src, recordSize, ptr, which0, which1);
|
||||||
|
which0 = gUnknown_0858CFBE[tableId][2];
|
||||||
|
which1 = gUnknown_0858CFBE[tableId][3];
|
||||||
|
sub_80E7AA4(src, recordSize, ptr, which0, which1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_src = (void *)src + which * recordSize;
|
_src = (void *)src + which * recordSize;
|
||||||
memcpy(&gSaveBlock1Ptr->daycare.mons[0].misc.mail, &_src->unk_00[0], sizeof(struct DayCareMail));
|
memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DayCareMail));
|
||||||
memcpy(&gSaveBlock1Ptr->daycare.mons[1].misc.mail, &_src->unk_00[1], sizeof(struct DayCareMail));
|
memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DayCareMail));
|
||||||
SeedRng(oldSeed);
|
SeedRng(oldSeed);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
NAKED
|
|
||||||
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
|
|
||||||
{
|
|
||||||
asm_unified("\tpush {r4-r7,lr}\n"
|
|
||||||
"\tmov r7, r10\n"
|
|
||||||
"\tmov r6, r9\n"
|
|
||||||
"\tmov r5, r8\n"
|
|
||||||
"\tpush {r5-r7}\n"
|
|
||||||
"\tsub sp, 0x58\n"
|
|
||||||
"\tstr r0, [sp, 0x2C]\n"
|
|
||||||
"\tstr r1, [sp, 0x30]\n"
|
|
||||||
"\tlsls r2, 24\n"
|
|
||||||
"\tlsrs r2, 24\n"
|
|
||||||
"\tmov r9, r2\n"
|
|
||||||
"\tbl Random2\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tstr r0, [sp, 0x38]\n"
|
|
||||||
"\tldr r0, =gLinkPlayers\n"
|
|
||||||
"\tldrh r0, [r0, 0x4]\n"
|
|
||||||
"\tbl SeedRng2\n"
|
|
||||||
"\tbl GetLinkPlayerCount\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r4, r0, 24\n"
|
|
||||||
"\tmovs r0, 0\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"\tmov r1, sp\n"
|
|
||||||
"\tadds r1, 0x1C\n"
|
|
||||||
"\tstr r1, [sp, 0x4C]\n"
|
|
||||||
"\tmov r2, sp\n"
|
|
||||||
"\tadds r2, 0x1D\n"
|
|
||||||
"\tstr r2, [sp, 0x50]\n"
|
|
||||||
"\tmov r3, sp\n"
|
|
||||||
"\tadds r3, 0xC\n"
|
|
||||||
"\tstr r3, [sp, 0x48]\n"
|
|
||||||
"\tmovs r7, 0xFF\n"
|
|
||||||
"\tadd r3, sp, 0x8\n"
|
|
||||||
"\tmovs r2, 0\n"
|
|
||||||
"\tadds r6, r1, 0\n"
|
|
||||||
"\tldr r5, [sp, 0x50]\n"
|
|
||||||
"_080E7BB0:\n"
|
|
||||||
"\tmov r1, sp\n"
|
|
||||||
"\tadd r1, r8\n"
|
|
||||||
"\tadds r1, 0x4\n"
|
|
||||||
"\tldrb r0, [r1]\n"
|
|
||||||
"\torrs r0, r7\n"
|
|
||||||
"\tstrb r0, [r1]\n"
|
|
||||||
"\tmov r1, r8\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tstrb r2, [r0]\n"
|
|
||||||
"\tlsls r1, 1\n"
|
|
||||||
"\tadds r0, r6, r1\n"
|
|
||||||
"\tstrb r2, [r0]\n"
|
|
||||||
"\tadds r1, r5, r1\n"
|
|
||||||
"\tstrb r2, [r1]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"\tcmp r0, 0x3\n"
|
|
||||||
"\tbls _080E7BB0\n"
|
|
||||||
"\tbl Link_AnyPartnersPlayingRubyOrSapphire\n"
|
|
||||||
"\tstr r0, [sp, 0x3C]\n"
|
|
||||||
"\tmovs r2, 0\n"
|
|
||||||
"\tmov r8, r2\n"
|
|
||||||
"\tlsls r4, 16\n"
|
|
||||||
"\tstr r4, [sp, 0x54]\n"
|
|
||||||
"\tldr r0, [sp, 0x30]\n"
|
|
||||||
"\tmov r3, r9\n"
|
|
||||||
"\tmuls r3, r0\n"
|
|
||||||
"\tstr r3, [sp, 0x44]\n"
|
|
||||||
"\tb _080E7D04\n"
|
|
||||||
"\t.pool\n"
|
|
||||||
"_080E7BF8:\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tmuls r0, r1\n"
|
|
||||||
"\tldr r2, [sp, 0x2C]\n"
|
|
||||||
"\tadds r7, r2, r0\n"
|
|
||||||
"\tldr r1, =gLinkPlayers\n"
|
|
||||||
"\tmov r3, r8\n"
|
|
||||||
"\tlsls r0, r3, 3\n"
|
|
||||||
"\tsubs r0, r3\n"
|
|
||||||
"\tlsls r0, 2\n"
|
|
||||||
"\tadds r0, r1\n"
|
|
||||||
"\tldrh r1, [r0, 0x1A]\n"
|
|
||||||
"\tmov r9, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tstr r0, [sp, 0x40]\n"
|
|
||||||
"\tmovs r6, 0\n"
|
|
||||||
"\tldr r0, [r7, 0x70]\n"
|
|
||||||
"\tcmp r6, r0\n"
|
|
||||||
"\tbcs _080E7CFA\n"
|
|
||||||
"\tmovs r2, 0x10\n"
|
|
||||||
"\tnegs r2, r2\n"
|
|
||||||
"\tmov r10, r2\n"
|
|
||||||
"_080E7C24:\n"
|
|
||||||
"\tlsls r0, r6, 3\n"
|
|
||||||
"\tsubs r0, r6\n"
|
|
||||||
"\tlsls r0, 3\n"
|
|
||||||
"\tadds r5, r7, r0\n"
|
|
||||||
"\tldrh r0, [r5, 0x20]\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbeq _080E7CEE\n"
|
|
||||||
"\tldr r3, [sp, 0x3C]\n"
|
|
||||||
"\tcmp r3, 0\n"
|
|
||||||
"\tbeq _080E7C9A\n"
|
|
||||||
"\tadds r4, r5, 0\n"
|
|
||||||
"\tadds r4, 0x24\n"
|
|
||||||
"\tadds r0, r4, 0\n"
|
|
||||||
"\tbl StringLength\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tcmp r0, 0x5\n"
|
|
||||||
"\tbhi _080E7C54\n"
|
|
||||||
"\tmovs r4, 0x1\n"
|
|
||||||
"\tb _080E7C5C\n"
|
|
||||||
"\t.pool\n"
|
|
||||||
"_080E7C54:\n"
|
|
||||||
"\tadds r0, r4, 0\n"
|
|
||||||
"\tbl StripExtCtrlCodes\n"
|
|
||||||
"\tmov r4, r9\n"
|
|
||||||
"_080E7C5C:\n"
|
|
||||||
"\tldrh r1, [r5, 0x2C]\n"
|
|
||||||
"\tldr r0, =0x000015fc\n"
|
|
||||||
"\tcmp r1, r0\n"
|
|
||||||
"\tbne _080E7C74\n"
|
|
||||||
"\tadds r0, r5, 0\n"
|
|
||||||
"\tadds r0, 0x2C\n"
|
|
||||||
"\tbl StripExtCtrlCodes\n"
|
|
||||||
"\tmovs r1, 0x1\n"
|
|
||||||
"\tb _080E7C76\n"
|
|
||||||
"\t.pool\n"
|
|
||||||
"_080E7C74:\n"
|
|
||||||
"\tmov r1, r9\n"
|
|
||||||
"_080E7C76:\n"
|
|
||||||
"\tldr r0, [sp, 0x40]\n"
|
|
||||||
"\tsubs r0, 0x1\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbhi _080E7CEE\n"
|
|
||||||
"\tadds r2, r5, 0\n"
|
|
||||||
"\tadds r2, 0x37\n"
|
|
||||||
"\tmovs r0, 0xF\n"
|
|
||||||
"\tands r4, r0\n"
|
|
||||||
"\tldrb r0, [r2]\n"
|
|
||||||
"\tmov r3, r10\n"
|
|
||||||
"\tands r0, r3\n"
|
|
||||||
"\torrs r0, r4\n"
|
|
||||||
"\tlsls r1, 4\n"
|
|
||||||
"\tmovs r3, 0xF\n"
|
|
||||||
"\tands r0, r3\n"
|
|
||||||
"\torrs r0, r1\n"
|
|
||||||
"\tstrb r0, [r2]\n"
|
|
||||||
"\tb _080E7CEE\n"
|
|
||||||
"_080E7C9A:\n"
|
|
||||||
"\tmov r0, r9\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbne _080E7CEE\n"
|
|
||||||
"\tadds r0, r5, 0\n"
|
|
||||||
"\tadds r0, 0x24\n"
|
|
||||||
"\tbl IsStringJapanese\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbeq _080E7CBA\n"
|
|
||||||
"\tadds r0, r5, 0\n"
|
|
||||||
"\tadds r0, 0x37\n"
|
|
||||||
"\tldrb r1, [r0]\n"
|
|
||||||
"\tmov r2, r10\n"
|
|
||||||
"\tands r1, r2\n"
|
|
||||||
"\tmovs r2, 0x1\n"
|
|
||||||
"\tb _080E7CC6\n"
|
|
||||||
"_080E7CBA:\n"
|
|
||||||
"\tadds r0, r5, 0\n"
|
|
||||||
"\tadds r0, 0x37\n"
|
|
||||||
"\tldrb r1, [r0]\n"
|
|
||||||
"\tmov r3, r10\n"
|
|
||||||
"\tands r1, r3\n"
|
|
||||||
"\tmovs r2, 0x2\n"
|
|
||||||
"_080E7CC6:\n"
|
|
||||||
"\torrs r1, r2\n"
|
|
||||||
"\tstrb r1, [r0]\n"
|
|
||||||
"\tadds r4, r0, 0\n"
|
|
||||||
"\tadds r0, r5, 0\n"
|
|
||||||
"\tadds r0, 0x2C\n"
|
|
||||||
"\tbl IsStringJapanese\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbeq _080E7CE2\n"
|
|
||||||
"\tldrb r0, [r4]\n"
|
|
||||||
"\tmovs r1, 0xF\n"
|
|
||||||
"\tands r1, r0\n"
|
|
||||||
"\tmovs r0, 0x10\n"
|
|
||||||
"\tb _080E7CEA\n"
|
|
||||||
"_080E7CE2:\n"
|
|
||||||
"\tldrb r0, [r4]\n"
|
|
||||||
"\tmovs r1, 0xF\n"
|
|
||||||
"\tands r1, r0\n"
|
|
||||||
"\tmovs r0, 0x20\n"
|
|
||||||
"_080E7CEA:\n"
|
|
||||||
"\torrs r1, r0\n"
|
|
||||||
"\tstrb r1, [r4]\n"
|
|
||||||
"_080E7CEE:\n"
|
|
||||||
"\tadds r0, r6, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r6, r0, 16\n"
|
|
||||||
"\tldr r0, [r7, 0x70]\n"
|
|
||||||
"\tcmp r6, r0\n"
|
|
||||||
"\tbcc _080E7C24\n"
|
|
||||||
"_080E7CFA:\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"_080E7D04:\n"
|
|
||||||
"\tbl GetLinkPlayerCount\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r0, 24\n"
|
|
||||||
"\tcmp r8, r0\n"
|
|
||||||
"\tbcs _080E7D12\n"
|
|
||||||
"\tb _080E7BF8\n"
|
|
||||||
"_080E7D12:\n"
|
|
||||||
"\tmovs r0, 0\n"
|
|
||||||
"\tstr r0, [sp, 0x34]\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"\tldr r1, [sp, 0x54]\n"
|
|
||||||
"\tlsrs r0, r1, 16\n"
|
|
||||||
"\tldr r2, [sp, 0x34]\n"
|
|
||||||
"\tcmp r2, r0\n"
|
|
||||||
"\tbcs _080E7D70\n"
|
|
||||||
"\tadds r5, r0, 0\n"
|
|
||||||
"_080E7D24:\n"
|
|
||||||
"\tldr r3, [sp, 0x30]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tmuls r0, r3\n"
|
|
||||||
"\tldr r1, [sp, 0x2C]\n"
|
|
||||||
"\tadds r7, r1, r0\n"
|
|
||||||
"\tldr r0, [r7, 0x70]\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbeq _080E7D62\n"
|
|
||||||
"\tmovs r6, 0\n"
|
|
||||||
"\tcmp r6, r0\n"
|
|
||||||
"\tbcs _080E7D62\n"
|
|
||||||
"\tadds r3, r7, 0\n"
|
|
||||||
"\tadds r3, 0x74\n"
|
|
||||||
"\tldr r2, [sp, 0x4C]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tlsls r1, r0, 1\n"
|
|
||||||
"\tmovs r4, 0x1\n"
|
|
||||||
"_080E7D46:\n"
|
|
||||||
"\tlsls r0, r6, 1\n"
|
|
||||||
"\tadds r0, r3, r0\n"
|
|
||||||
"\tldrh r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbne _080E7D56\n"
|
|
||||||
"\tadds r0, r6, r1\n"
|
|
||||||
"\tadds r0, r2, r0\n"
|
|
||||||
"\tstrb r4, [r0]\n"
|
|
||||||
"_080E7D56:\n"
|
|
||||||
"\tadds r0, r6, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r6, r0, 16\n"
|
|
||||||
"\tldr r0, [r7, 0x70]\n"
|
|
||||||
"\tcmp r6, r0\n"
|
|
||||||
"\tbcc _080E7D46\n"
|
|
||||||
"_080E7D62:\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"\tcmp r8, r5\n"
|
|
||||||
"\tbcc _080E7D24\n"
|
|
||||||
"_080E7D70:\n"
|
|
||||||
"\tmovs r6, 0\n"
|
|
||||||
"\tmov r8, r6\n"
|
|
||||||
"\tldr r1, [sp, 0x54]\n"
|
|
||||||
"\tcmp r1, 0\n"
|
|
||||||
"\tbeq _080E7E64\n"
|
|
||||||
"\tadd r2, sp, 0x24\n"
|
|
||||||
"\tmov r10, r2\n"
|
|
||||||
"\tmovs r3, 0x25\n"
|
|
||||||
"\tadd r3, sp\n"
|
|
||||||
"\tmov r9, r3\n"
|
|
||||||
"_080E7D84:\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tmuls r0, r1\n"
|
|
||||||
"\tldr r2, [sp, 0x2C]\n"
|
|
||||||
"\tadds r7, r2, r0\n"
|
|
||||||
"\tmov r3, r8\n"
|
|
||||||
"\tlsls r1, r3, 1\n"
|
|
||||||
"\tldr r2, [sp, 0x4C]\n"
|
|
||||||
"\tadds r0, r2, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbeq _080E7DA6\n"
|
|
||||||
"\tldr r3, [sp, 0x50]\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbne _080E7DB0\n"
|
|
||||||
"_080E7DA6:\n"
|
|
||||||
"\tldr r0, [sp, 0x34]\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r0, 24\n"
|
|
||||||
"\tstr r0, [sp, 0x34]\n"
|
|
||||||
"_080E7DB0:\n"
|
|
||||||
"\tldr r2, [sp, 0x4C]\n"
|
|
||||||
"\tadds r0, r2, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbne _080E7DD4\n"
|
|
||||||
"\tldr r3, [sp, 0x50]\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tldrb r2, [r0]\n"
|
|
||||||
"\tcmp r2, 0\n"
|
|
||||||
"\tbne _080E7DD4\n"
|
|
||||||
"_080E7DC4:\n"
|
|
||||||
"\tlsls r1, r6, 1\n"
|
|
||||||
"\tmov r3, r10\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tmov r3, r8\n"
|
|
||||||
"\tstrb r3, [r0]\n"
|
|
||||||
"\tadd r1, r9\n"
|
|
||||||
"\tstrb r2, [r1]\n"
|
|
||||||
"\tb _080E7E4E\n"
|
|
||||||
"_080E7DD4:\n"
|
|
||||||
"\tldr r2, [sp, 0x4C]\n"
|
|
||||||
"\tadds r0, r2, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0\n"
|
|
||||||
"\tbne _080E7DE8\n"
|
|
||||||
"\tldr r3, [sp, 0x50]\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tldrb r2, [r0]\n"
|
|
||||||
"\tcmp r2, 0x1\n"
|
|
||||||
"\tbeq _080E7DC4\n"
|
|
||||||
"_080E7DE8:\n"
|
|
||||||
"\tldr r2, [sp, 0x4C]\n"
|
|
||||||
"\tadds r0, r2, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbne _080E7E54\n"
|
|
||||||
"\tldr r3, [sp, 0x50]\n"
|
|
||||||
"\tadds r0, r3, r1\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tcmp r0, 0x1\n"
|
|
||||||
"\tbne _080E7E54\n"
|
|
||||||
"\tlsls r5, r6, 1\n"
|
|
||||||
"\tmov r1, r10\n"
|
|
||||||
"\tadds r0, r1, r5\n"
|
|
||||||
"\tmov r2, r8\n"
|
|
||||||
"\tstrb r2, [r0]\n"
|
|
||||||
"\tadds r0, r7, 0\n"
|
|
||||||
"\tbl sub_80E7A9C\n"
|
|
||||||
"\tadds r4, r0, 0\n"
|
|
||||||
"\tlsls r4, 24\n"
|
|
||||||
"\tlsrs r4, 24\n"
|
|
||||||
"\tadds r0, r7, 0\n"
|
|
||||||
"\tadds r0, 0x38\n"
|
|
||||||
"\tbl sub_80E7A9C\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r1, r0, 24\n"
|
|
||||||
"\tcmp r4, 0\n"
|
|
||||||
"\tbne _080E7E30\n"
|
|
||||||
"\tcmp r1, 0\n"
|
|
||||||
"\tbeq _080E7E34\n"
|
|
||||||
"\tmov r3, r9\n"
|
|
||||||
"\tadds r1, r3, r5\n"
|
|
||||||
"\tmovs r0, 0x1\n"
|
|
||||||
"\tstrb r0, [r1]\n"
|
|
||||||
"\tb _080E7E4E\n"
|
|
||||||
"_080E7E30:\n"
|
|
||||||
"\tcmp r1, 0\n"
|
|
||||||
"\tbeq _080E7E48\n"
|
|
||||||
"_080E7E34:\n"
|
|
||||||
"\tbl Random2\n"
|
|
||||||
"\tmov r1, r9\n"
|
|
||||||
"\tadds r2, r1, r5\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tmovs r1, 0x1\n"
|
|
||||||
"\tands r0, r1\n"
|
|
||||||
"\tstrb r0, [r2]\n"
|
|
||||||
"\tb _080E7E4E\n"
|
|
||||||
"_080E7E48:\n"
|
|
||||||
"\tmov r2, r9\n"
|
|
||||||
"\tadds r0, r2, r5\n"
|
|
||||||
"\tstrb r1, [r0]\n"
|
|
||||||
"_080E7E4E:\n"
|
|
||||||
"\tadds r0, r6, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r6, r0, 16\n"
|
|
||||||
"_080E7E54:\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r3, r0, 16\n"
|
|
||||||
"\tmov r8, r3\n"
|
|
||||||
"\tldr r1, [sp, 0x54]\n"
|
|
||||||
"\tcmp r0, r1\n"
|
|
||||||
"\tbcc _080E7D84\n"
|
|
||||||
"_080E7E64:\n"
|
|
||||||
"\tmovs r2, 0\n"
|
|
||||||
"\tmov r8, r2\n"
|
|
||||||
"\tldr r3, [sp, 0x44]\n"
|
|
||||||
"\tlsls r0, r3, 4\n"
|
|
||||||
"\tsubs r0, r3\n"
|
|
||||||
"\tlsls r0, 3\n"
|
|
||||||
"\tldr r1, [sp, 0x2C]\n"
|
|
||||||
"\tadds r7, r1, r0\n"
|
|
||||||
"\tldr r1, [sp, 0x48]\n"
|
|
||||||
"_080E7E76:\n"
|
|
||||||
"\tmov r2, r8\n"
|
|
||||||
"\tlsls r0, r2, 2\n"
|
|
||||||
"\tadds r0, r1, r0\n"
|
|
||||||
"\tstr r7, [r0]\n"
|
|
||||||
"\tmov r0, r8\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tlsls r0, 16\n"
|
|
||||||
"\tlsrs r0, 16\n"
|
|
||||||
"\tmov r8, r0\n"
|
|
||||||
"\tcmp r0, 0x3\n"
|
|
||||||
"\tbls _080E7E76\n"
|
|
||||||
"\tbl sub_80E7B54\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r0, 24\n"
|
|
||||||
"\tmovs r1, 0x3\n"
|
|
||||||
"\tbl __umodsi3\n"
|
|
||||||
"\tlsls r0, 24\n"
|
|
||||||
"\tlsrs r1, r0, 24\n"
|
|
||||||
"\tldr r3, [sp, 0x34]\n"
|
|
||||||
"\tcmp r3, 0x3\n"
|
|
||||||
"\tbeq _080E7EC8\n"
|
|
||||||
"\tcmp r3, 0x3\n"
|
|
||||||
"\tbgt _080E7EAE\n"
|
|
||||||
"\tcmp r3, 0x2\n"
|
|
||||||
"\tbeq _080E7EB6\n"
|
|
||||||
"\tb _080E7F1C\n"
|
|
||||||
"_080E7EAE:\n"
|
|
||||||
"\tldr r0, [sp, 0x34]\n"
|
|
||||||
"\tcmp r0, 0x4\n"
|
|
||||||
"\tbeq _080E7EE8\n"
|
|
||||||
"\tb _080E7F1C\n"
|
|
||||||
"_080E7EB6:\n"
|
|
||||||
"\tadd r2, sp, 0x24\n"
|
|
||||||
"\tmovs r0, 0x1\n"
|
|
||||||
"\tstr r0, [sp]\n"
|
|
||||||
"\tldr r0, [sp, 0x2C]\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tmovs r3, 0\n"
|
|
||||||
"\tbl sub_80E7AA4\n"
|
|
||||||
"\tb _080E7F1C\n"
|
|
||||||
"_080E7EC8:\n"
|
|
||||||
"\tldr r0, =gUnknown_0858CFB8\n"
|
|
||||||
"\tlsls r1, 1\n"
|
|
||||||
"\tadds r2, r1, r0\n"
|
|
||||||
"\tldrb r3, [r2]\n"
|
|
||||||
"\tadds r0, 0x1\n"
|
|
||||||
"\tadds r1, r0\n"
|
|
||||||
"\tldrb r0, [r1]\n"
|
|
||||||
"\tadd r2, sp, 0x24\n"
|
|
||||||
"\tstr r0, [sp]\n"
|
|
||||||
"\tldr r0, [sp, 0x2C]\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tbl sub_80E7AA4\n"
|
|
||||||
"\tb _080E7F1C\n"
|
|
||||||
"\t.pool\n"
|
|
||||||
"_080E7EE8:\n"
|
|
||||||
"\tadd r6, sp, 0x24\n"
|
|
||||||
"\tldr r4, =gUnknown_0858CFBE\n"
|
|
||||||
"\tlsls r5, r1, 2\n"
|
|
||||||
"\tadds r0, r5, r4\n"
|
|
||||||
"\tldrb r3, [r0]\n"
|
|
||||||
"\tadds r0, r4, 0x1\n"
|
|
||||||
"\tadds r0, r5, r0\n"
|
|
||||||
"\tldrb r0, [r0]\n"
|
|
||||||
"\tstr r0, [sp]\n"
|
|
||||||
"\tldr r0, [sp, 0x2C]\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tadds r2, r6, 0\n"
|
|
||||||
"\tbl sub_80E7AA4\n"
|
|
||||||
"\tadds r0, r4, 0x2\n"
|
|
||||||
"\tadds r0, r5, r0\n"
|
|
||||||
"\tldrb r3, [r0]\n"
|
|
||||||
"\tadds r4, 0x3\n"
|
|
||||||
"\tadds r5, r4\n"
|
|
||||||
"\tldrb r0, [r5]\n"
|
|
||||||
"\tstr r0, [sp]\n"
|
|
||||||
"\tldr r0, [sp, 0x2C]\n"
|
|
||||||
"\tldr r1, [sp, 0x30]\n"
|
|
||||||
"\tadds r2, r6, 0\n"
|
|
||||||
"\tbl sub_80E7AA4\n"
|
|
||||||
"_080E7F1C:\n"
|
|
||||||
"\tldr r1, [sp, 0x2C]\n"
|
|
||||||
"\tldr r2, [sp, 0x44]\n"
|
|
||||||
"\tadds r7, r1, r2\n"
|
|
||||||
"\tldr r4, =gSaveBlock1Ptr\n"
|
|
||||||
"\tldr r0, [r4]\n"
|
|
||||||
"\tmovs r3, 0xC2\n"
|
|
||||||
"\tlsls r3, 6\n"
|
|
||||||
"\tadds r0, r3\n"
|
|
||||||
"\tadds r1, r7, 0\n"
|
|
||||||
"\tmovs r2, 0x38\n"
|
|
||||||
"\tbl memcpy\n"
|
|
||||||
"\tldr r0, [r4]\n"
|
|
||||||
"\tldr r1, =0x0000310c\n"
|
|
||||||
"\tadds r0, r1\n"
|
|
||||||
"\tadds r1, r7, 0\n"
|
|
||||||
"\tadds r1, 0x38\n"
|
|
||||||
"\tmovs r2, 0x38\n"
|
|
||||||
"\tbl memcpy\n"
|
|
||||||
"\tldr r0, [sp, 0x38]\n"
|
|
||||||
"\tbl SeedRng\n"
|
|
||||||
"\tadd sp, 0x58\n"
|
|
||||||
"\tpop {r3-r5}\n"
|
|
||||||
"\tmov r8, r3\n"
|
|
||||||
"\tmov r9, r4\n"
|
|
||||||
"\tmov r10, r5\n"
|
|
||||||
"\tpop {r4-r7}\n"
|
|
||||||
"\tpop {r0}\n"
|
|
||||||
"\tbx r0\n"
|
|
||||||
"\t.pool");
|
|
||||||
}
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
static void ReceiveGiftItem(u16 *item, u8 which)
|
static void ReceiveGiftItem(u16 *item, u8 which)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user