FillBattleTowerTrainerParty

This commit is contained in:
jiangzhengwenjz 2019-11-10 07:04:21 +08:00
parent 895a09a263
commit 5acaa57a2a

View File

@ -527,7 +527,6 @@ void GetBattleTowerTrainerName(u8 *dest)
dest[i] = EOS;
}
#ifdef NONMATCHING // r6/r7 swap
static void FillBattleTowerTrainerParty(void)
{
s32 partyIndex;
@ -593,9 +592,12 @@ static void FillBattleTowerTrainerParty(void)
else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
{
// Load E-Reader trainer's party.
for (partyIndex = 0; partyIndex < 3; partyIndex++)
CreateBattleTowerMon(&gEnemyParty[partyIndex], &gSaveBlock2Ptr->battleTower.ereaderTrainer.party[partyIndex]);
return;
do
{
for (partyIndex = 0; partyIndex < 3; partyIndex++)
CreateBattleTowerMon(&gEnemyParty[partyIndex], &gSaveBlock2Ptr->battleTower.ereaderTrainer.party[partyIndex]);
return;
} while (0);
}
else
{
@ -652,7 +654,7 @@ static void FillBattleTowerTrainerParty(void)
// Ensure this pokemon's held item isn't a duplicate.
for (i = 0; i < partyIndex; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE
&& GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
break;
}
@ -700,384 +702,6 @@ static void FillBattleTowerTrainerParty(void)
}
}
}
#else
NAKED
static void FillBattleTowerTrainerParty(void)
{
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, 0x28\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp, 0x18]\n"
"\tmovs r1, 0x3C\n"
"\tstr r1, [sp, 0x1C]\n"
"\tadd r4, sp, 0xC\n"
"\tmovs r0, 0xFF\n"
"\tstrb r0, [r4]\n"
"\tbl ZeroEnemyPartyMons\n"
"\tldr r1, _080E6210 @ =gSaveBlock2Ptr\n"
"\tldr r0, [r1]\n"
"\tldr r2, _080E6214 @ =0x0000056c\n"
"\tadds r0, r2\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x13\n"
"\tbhi _080E6218\n"
"\tmovs r3, 0x6\n"
"\tstr r3, [sp, 0x14]\n"
"\tb _080E62F4\n"
"\t.align 2, 0\n"
"_080E6210: .4byte gSaveBlock2Ptr\n"
"_080E6214: .4byte 0x0000056c\n"
"_080E6218:\n"
"\tcmp r0, 0x1D\n"
"\tbhi _080E6226\n"
"\tmovs r0, 0x9\n"
"\tstr r0, [sp, 0x14]\n"
"\tmovs r1, 0x1E\n"
"\tstr r1, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E6226:\n"
"\tcmp r0, 0x27\n"
"\tbhi _080E6234\n"
"\tmovs r2, 0xC\n"
"\tstr r2, [sp, 0x14]\n"
"\tmovs r3, 0x3C\n"
"\tstr r3, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E6234:\n"
"\tcmp r0, 0x31\n"
"\tbhi _080E6242\n"
"\tmovs r0, 0xF\n"
"\tstr r0, [sp, 0x14]\n"
"\tmovs r1, 0x5A\n"
"\tstr r1, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E6242:\n"
"\tcmp r0, 0x3B\n"
"\tbhi _080E6250\n"
"\tmovs r2, 0x12\n"
"\tstr r2, [sp, 0x14]\n"
"\tmovs r3, 0x78\n"
"\tstr r3, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E6250:\n"
"\tcmp r0, 0x45\n"
"\tbhi _080E625E\n"
"\tmovs r0, 0x15\n"
"\tstr r0, [sp, 0x14]\n"
"\tmovs r1, 0x96\n"
"\tstr r1, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E625E:\n"
"\tcmp r0, 0x4F\n"
"\tbhi _080E626C\n"
"\tmovs r2, 0x1F\n"
"\tstr r2, [sp, 0x14]\n"
"\tmovs r3, 0xB4\n"
"\tstr r3, [sp, 0x18]\n"
"\tb _080E62F4\n"
"_080E626C:\n"
"\tcmp r0, 0x63\n"
"\tbhi _080E627E\n"
"\tmovs r0, 0x1F\n"
"\tstr r0, [sp, 0x14]\n"
"\tmovs r1, 0xC8\n"
"\tstr r1, [sp, 0x18]\n"
"\tmovs r2, 0x64\n"
"\tstr r2, [sp, 0x1C]\n"
"\tb _080E62F4\n"
"_080E627E:\n"
"\tcmp r0, 0xC8\n"
"\tbne _080E62B0\n"
"\tmovs r6, 0\n"
"\tadds r4, r1, 0\n"
"_080E6286:\n"
"\tmovs r0, 0x64\n"
"\tmuls r0, r6\n"
"\tldr r1, _080E62A8 @ =gEnemyParty\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x2C\n"
"\tadds r2, r6, 0\n"
"\tmuls r2, r1\n"
"\tldr r3, _080E62AC @ =0x000004d4\n"
"\tadds r2, r3\n"
"\tldr r1, [r4]\n"
"\tadds r1, r2\n"
"\tbl CreateBattleTowerMon\n"
"\tadds r6, 0x1\n"
"\tcmp r6, 0x2\n"
"\tble _080E6286\n"
"\tb _080E64A6\n"
"\t.align 2, 0\n"
"_080E62A8: .4byte gEnemyParty\n"
"_080E62AC: .4byte 0x000004d4\n"
"_080E62B0:\n"
"\tmovs r6, 0\n"
"_080E62B2:\n"
"\tmovs r0, 0x64\n"
"\tmuls r0, r6\n"
"\tldr r1, _080E62E4 @ =gEnemyParty\n"
"\tadds r0, r1\n"
"\tldr r1, _080E62E8 @ =gSaveBlock2Ptr\n"
"\tldr r1, [r1]\n"
"\tldr r3, _080E62EC @ =0x0000056c\n"
"\tadds r2, r1, r3\n"
"\tldrb r3, [r2]\n"
"\tmovs r2, 0xA4\n"
"\tmuls r2, r3\n"
"\tldr r3, _080E62F0 @ =0xffffc144\n"
"\tadds r2, r3\n"
"\tadds r1, r2\n"
"\tmovs r2, 0x2C\n"
"\tmuls r2, r6\n"
"\tadds r2, 0x1C\n"
"\tadds r1, r2\n"
"\tbl CreateBattleTowerMon\n"
"\tadds r6, 0x1\n"
"\tcmp r6, 0x2\n"
"\tble _080E62B2\n"
"\tb _080E64A6\n"
"\t.align 2, 0\n"
"_080E62E4: .4byte gEnemyParty\n"
"_080E62E8: .4byte gSaveBlock2Ptr\n"
"_080E62EC: .4byte 0x0000056c\n"
"_080E62F0: .4byte 0xffffc144\n"
"_080E62F4:\n"
"\tldr r2, _080E6314 @ =gSaveBlock2Ptr\n"
"\tldr r0, [r2]\n"
"\tldr r1, _080E6318 @ =0x0000055c\n"
"\tadds r0, r1\n"
"\tldrb r1, [r0]\n"
"\tmovs r0, 0x1\n"
"\tands r0, r1\n"
"\tadds r1, r2, 0\n"
"\tcmp r0, 0\n"
"\tbeq _080E6320\n"
"\tldr r2, _080E631C @ =gBattleTowerLevel100Mons\n"
"\tmov r10, r2\n"
"\tmovs r3, 0x64\n"
"\tstr r3, [sp, 0x10]\n"
"\tb _080E6328\n"
"\t.align 2, 0\n"
"_080E6314: .4byte gSaveBlock2Ptr\n"
"_080E6318: .4byte 0x0000055c\n"
"_080E631C: .4byte gBattleTowerLevel100Mons\n"
"_080E6320:\n"
"\tldr r0, _080E6378 @ =gBattleTowerLevel50Mons\n"
"\tmov r10, r0\n"
"\tmovs r2, 0x32\n"
"\tstr r2, [sp, 0x10]\n"
"_080E6328:\n"
"\tldr r2, _080E637C @ =gBattleTowerTrainers\n"
"\tldr r0, [r1]\n"
"\tldr r3, _080E6380 @ =0x0000056c\n"
"\tadds r0, r3\n"
"\tldrb r1, [r0]\n"
"\tlsls r0, r1, 2\n"
"\tadds r0, r1\n"
"\tlsls r0, 2\n"
"\tadds r0, r2\n"
"\tldrb r0, [r0, 0x4]\n"
"\tstr r0, [sp, 0x20]\n"
"\tmovs r6, 0\n"
"_080E6340:\n"
"\tbl Random\n"
"\tmovs r1, 0xFF\n"
"\tands r1, r0\n"
"\tldr r2, [sp, 0x1C]\n"
"\tadds r0, r1, 0\n"
"\tmuls r0, r2\n"
"\tasrs r0, 8\n"
"\tldr r3, [sp, 0x18]\n"
"\tadds r7, r0, r3\n"
"\tldr r0, [sp, 0x20]\n"
"\tcmp r0, 0\n"
"\tbeq _080E636A\n"
"\tlsls r0, r7, 4\n"
"\tadd r0, r10\n"
"\tldrb r0, [r0, 0x3]\n"
"\tldr r1, [sp, 0x20]\n"
"\tands r0, r1\n"
"\tcmp r0, r1\n"
"\tbeq _080E636A\n"
"\tb _080E64A0\n"
"_080E636A:\n"
"\tmovs r5, 0\n"
"\tlsls r0, r7, 4\n"
"\tmov r2, r10\n"
"\tadds r3, r0, r2\n"
"\tmovs r4, 0\n"
"\tb _080E6388\n"
"\t.align 2, 0\n"
"_080E6378: .4byte gBattleTowerLevel50Mons\n"
"_080E637C: .4byte gBattleTowerTrainers\n"
"_080E6380: .4byte 0x0000056c\n"
"_080E6384:\n"
"\tadds r4, 0x64\n"
"\tadds r5, 0x1\n"
"_080E6388:\n"
"\tcmp r5, r6\n"
"\tbge _080E63A2\n"
"\tldr r1, _080E64B8 @ =gEnemyParty\n"
"\tadds r0, r4, r1\n"
"\tmovs r1, 0xB\n"
"\tmovs r2, 0\n"
"\tstr r3, [sp, 0x24]\n"
"\tbl GetMonData\n"
"\tldr r3, [sp, 0x24]\n"
"\tldrh r2, [r3]\n"
"\tcmp r0, r2\n"
"\tbne _080E6384\n"
"_080E63A2:\n"
"\tcmp r5, r6\n"
"\tbne _080E64A0\n"
"\tmovs r5, 0\n"
"\tcmp r5, r6\n"
"\tbge _080E63F0\n"
"\tldr r3, _080E64BC @ =sBattleTowerHeldItems\n"
"\tmov r9, r3\n"
"\tlsls r0, r7, 4\n"
"\tadd r0, r10\n"
"\tmov r8, r0\n"
"\tmovs r3, 0\n"
"_080E63B8:\n"
"\tldr r0, _080E64B8 @ =gEnemyParty\n"
"\tadds r4, r3, r0\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0xC\n"
"\tmovs r2, 0\n"
"\tstr r3, [sp, 0x24]\n"
"\tbl GetMonData\n"
"\tldr r3, [sp, 0x24]\n"
"\tcmp r0, 0\n"
"\tbeq _080E63E8\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0xC\n"
"\tmovs r2, 0\n"
"\tbl GetMonData\n"
"\tmov r2, r8\n"
"\tldrb r1, [r2, 0x2]\n"
"\tlsls r1, 1\n"
"\tadd r1, r9\n"
"\tldr r3, [sp, 0x24]\n"
"\tldrh r1, [r1]\n"
"\tcmp r0, r1\n"
"\tbeq _080E63F0\n"
"_080E63E8:\n"
"\tadds r3, 0x64\n"
"\tadds r5, 0x1\n"
"\tcmp r5, r6\n"
"\tblt _080E63B8\n"
"_080E63F0:\n"
"\tcmp r5, r6\n"
"\tbne _080E64A0\n"
"\tmovs r5, 0\n"
"\tcmp r5, r6\n"
"\tbge _080E6412\n"
"\tadd r0, sp, 0x4\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, r7\n"
"\tbeq _080E6412\n"
"\tadd r1, sp, 0x4\n"
"_080E6404:\n"
"\tadds r1, 0x2\n"
"\tadds r5, 0x1\n"
"\tcmp r5, r6\n"
"\tbge _080E6412\n"
"\tldrh r0, [r1]\n"
"\tcmp r0, r7\n"
"\tbne _080E6404\n"
"_080E6412:\n"
"\tcmp r5, r6\n"
"\tbne _080E64A0\n"
"\tlsls r0, r6, 1\n"
"\tadd r0, sp\n"
"\tadds r0, 0x4\n"
"\tstrh r7, [r0]\n"
"\tmovs r3, 0x64\n"
"\tadds r0, r6, 0\n"
"\tmuls r0, r3\n"
"\tldr r1, _080E64B8 @ =gEnemyParty\n"
"\tadds r0, r1\n"
"\tlsls r4, r7, 4\n"
"\tmov r3, r10\n"
"\tadds r2, r4, r3\n"
"\tldrh r1, [r2]\n"
"\tldrb r2, [r2, 0xC]\n"
"\tstr r2, [sp]\n"
"\tldr r2, [sp, 0x10]\n"
"\tldr r3, [sp, 0x14]\n"
"\tbl CreateMonWithEVSpread\n"
"\tmovs r5, 0\n"
"\tadds r0, r6, 0x1\n"
"\tmov r9, r0\n"
"\tmov r8, r4\n"
"\tmovs r0, 0x64\n"
"\tadds r7, r6, 0\n"
"\tmuls r7, r0\n"
"\tmov r0, r10\n"
"\tadds r0, 0x4\n"
"\tadds r4, r0\n"
"\tldr r3, _080E64B8 @ =gEnemyParty\n"
"_080E6452:\n"
"\tldrh r1, [r4]\n"
"\tlsls r2, r5, 24\n"
"\tlsrs r2, 24\n"
"\tadds r0, r7, r3\n"
"\tstr r3, [sp, 0x24]\n"
"\tbl SetMonMoveSlot\n"
"\tldrh r0, [r4]\n"
"\tldr r3, [sp, 0x24]\n"
"\tcmp r0, 0xDA\n"
"\tbne _080E646E\n"
"\tmovs r0, 0\n"
"\tmov r1, sp\n"
"\tstrb r0, [r1, 0xC]\n"
"_080E646E:\n"
"\tadds r4, 0x2\n"
"\tadds r5, 0x1\n"
"\tcmp r5, 0x3\n"
"\tble _080E6452\n"
"\tmovs r2, 0x64\n"
"\tadds r4, r6, 0\n"
"\tmuls r4, r2\n"
"\tldr r3, _080E64B8 @ =gEnemyParty\n"
"\tadds r4, r3\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0x20\n"
"\tadd r2, sp, 0xC\n"
"\tbl SetMonData\n"
"\tmov r0, r8\n"
"\tadd r0, r10\n"
"\tldrb r2, [r0, 0x2]\n"
"\tlsls r2, 1\n"
"\tldr r0, _080E64BC @ =sBattleTowerHeldItems\n"
"\tadds r2, r0\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0xC\n"
"\tbl SetMonData\n"
"\tmov r6, r9\n"
"_080E64A0:\n"
"\tcmp r6, 0x3\n"
"\tbeq _080E64A6\n"
"\tb _080E6340\n"
"_080E64A6:\n"
"\tadd sp, 0x28\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.align 2, 0\n"
"_080E64B8: .4byte gEnemyParty\n"
"_080E64BC: .4byte sBattleTowerHeldItems");
}
#endif //NONMATCHING
static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
{
@ -1134,7 +758,7 @@ static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 bat
if (i != *numValid)
return;
if (heldItem != 0)
if (heldItem != ITEM_NONE)
{
for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++);
if (i != *numValid)