summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pokemon.c1022
1 files changed, 7 insertions, 1015 deletions
diff --git a/src/pokemon.c b/src/pokemon.c
index 9c2532243..152e8e1df 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -4404,13 +4404,6 @@ static bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask,
}
}
-#ifdef NONMATCHING
-/*
- * This is nonmatching due to:
- * 1) the compiler's insistence on avoiding the u8 cast when loading gMain.inBattle
- * 2) niche difference in the first loop
- * 3) tail merge (there're still logical differences inside switch which are not noticed? )
- */
bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
{
u32 data;
@@ -4421,6 +4414,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
u8 r10 = 6;
u32 i;
s32 sp18 = 0;
+ u8 holdEffect;
u8 battlerId = 4;
u16 heldItem;
u8 curEffect;
@@ -4431,13 +4425,13 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
if (heldItem == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- /*holdEffect = */gEnigmaBerries[gBattlerInMenuId].holdEffect;
+ holdEffect = gEnigmaBerries[gBattlerInMenuId].holdEffect;
else
- /*holdEffect = */gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
}
else
{
- /*holdEffect = */ItemId_GetHoldEffect(heldItem);
+ holdEffect = ItemId_GetHoldEffect(heldItem);
}
gPotentialItemEffectBattler = gBattlerInMenuId;
if (gMain.inBattle)
@@ -4445,9 +4439,9 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
gActiveBattler = gBattlerInMenuId;
for (cmdIndex = GetBattlerSide(gActiveBattler) != B_SIDE_PLAYER;
cmdIndex < gBattlersCount;
- cmdIndex += 2) // for/while seems to be identical here
+ cmdIndex += 2)
{
- if (gBattlerPartyIndexes[cmdIndex] == partyIndex) // why is gBattlerPartyIndexes reloaded?
+ if (gBattlerPartyIndexes[cmdIndex] == partyIndex)
{
battlerId = cmdIndex;
break;
@@ -4590,8 +4584,7 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
for (tmp = 0; tmp < MAX_MON_MOVES; tmp++)
{
data = GetMonData(mon, MON_DATA_PP1 + tmp, NULL);
- curMoveId = GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL);
- if (data != CalculatePPWithBonus(curMoveId, GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp))
+ if (data != CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + tmp, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), tmp))
retVal = FALSE;
}
r10++;
@@ -4678,1007 +4671,6 @@ bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
}
return retVal;
}
-#else
-__attribute__((naked))
-bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- mov r8, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- str r1, [sp]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- str r3, [sp, 0x8]\n\
- movs r0, 0x1\n\
- str r0, [sp, 0x10]\n\
- movs r1, 0x6\n\
- mov r10, r1\n\
- movs r2, 0\n\
- str r2, [sp, 0x18]\n\
- movs r0, 0x4\n\
- str r0, [sp, 0x1C]\n\
- mov r0, r8\n\
- movs r1, 0xC\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xAF\n\
- beq _08042458\n\
- bl ItemId_GetHoldEffect\n\
-_08042458:\n\
- ldr r1, _080424B0 @ =gPotentialItemEffectBattler\n\
- ldr r0, _080424B4 @ =gBattlerInMenuId\n\
- ldrb r2, [r0]\n\
- strb r2, [r1]\n\
- ldr r0, _080424B8 @ =gMain\n\
- ldr r1, _080424BC @ =0x00000439\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0\n\
- beq _080424F8\n\
- ldr r0, _080424C0 @ =gActiveBattler\n\
- strb r2, [r0]\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- negs r1, r0\n\
- orrs r1, r0\n\
- lsrs r1, 31\n\
- str r1, [sp, 0xC]\n\
- ldr r0, _080424C4 @ =gBattlersCount\n\
- ldr r4, [sp]\n\
- subs r4, 0xD\n\
- ldrb r0, [r0]\n\
- cmp r1, r0\n\
- bge _08042504\n\
- ldr r2, _080424C8 @ =gBattlerPartyIndexes\n\
- lsls r0, r1, 1\n\
- adds r0, r2\n\
- ldrh r3, [r0]\n\
- ldr r1, [sp, 0x4]\n\
- lsls r0, r1, 16\n\
- lsrs r1, r0, 16\n\
- adds r5, r0, 0\n\
- cmp r3, r1\n\
- bne _080424CC\n\
- ldr r2, [sp, 0xC]\n\
- str r2, [sp, 0x1C]\n\
- b _08042504\n\
- .align 2, 0\n\
-_080424B0: .4byte gPotentialItemEffectBattler\n\
-_080424B4: .4byte gBattlerInMenuId\n\
-_080424B8: .4byte gMain\n\
-_080424BC: .4byte 0x00000439\n\
-_080424C0: .4byte gActiveBattler\n\
-_080424C4: .4byte gBattlersCount\n\
-_080424C8: .4byte gBattlerPartyIndexes\n\
-_080424CC:\n\
- ldr r0, [sp, 0xC]\n\
- adds r0, 0x2\n\
- str r0, [sp, 0xC]\n\
- ldr r0, _080424F4 @ =gBattlersCount\n\
- ldr r1, [sp, 0xC]\n\
- ldrb r0, [r0]\n\
- cmp r1, r0\n\
- bge _08042504\n\
- lsls r0, r1, 1\n\
- adds r0, r2\n\
- ldrh r1, [r0]\n\
- lsrs r0, r5, 16\n\
- cmp r1, r0\n\
- bne _080424CC\n\
- ldr r2, [sp, 0xC]\n\
- lsls r0, r2, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- b _08042504\n\
- .align 2, 0\n\
-_080424F4: .4byte gBattlersCount\n\
-_080424F8:\n\
- ldr r0, _08042520 @ =gActiveBattler\n\
- strb r1, [r0]\n\
- movs r0, 0x4\n\
- str r0, [sp, 0x1C]\n\
- ldr r4, [sp]\n\
- subs r4, 0xD\n\
-_08042504:\n\
- lsls r0, r4, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xA5\n\
- bhi _08042578\n\
- ldr r1, _08042524 @ =gItemEffectTable\n\
- lsls r0, r4, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08042528\n\
- ldr r1, [sp]\n\
- cmp r1, 0xAF\n\
- beq _0804252E\n\
- b _08042578\n\
- .align 2, 0\n\
-_08042520: .4byte gActiveBattler\n\
-_08042524: .4byte gItemEffectTable\n\
-_08042528:\n\
- ldr r2, [sp]\n\
- cmp r2, 0xAF\n\
- bne _0804257C\n\
-_0804252E:\n\
- ldr r0, _08042550 @ =gMain\n\
- ldr r1, _08042554 @ =0x00000439\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042560\n\
- ldr r0, _08042558 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _0804255C @ =gEnigmaBerries+0x8\n\
- adds r0, r1\n\
- b _0804257C\n\
- .align 2, 0\n\
-_08042550: .4byte gMain\n\
-_08042554: .4byte 0x00000439\n\
-_08042558: .4byte gActiveBattler\n\
-_0804255C: .4byte gEnigmaBerries+0x8\n\
-_08042560:\n\
- ldr r0, _0804256C @ =gSaveBlock1Ptr\n\
- ldr r0, [r0]\n\
- ldr r2, _08042570 @ =0x00003108\n\
- adds r2, r0, r2\n\
- str r2, [sp, 0x14]\n\
- b _0804257E\n\
- .align 2, 0\n\
-_0804256C: .4byte gSaveBlock1Ptr\n\
-_08042570: .4byte 0x00003108\n\
-_08042574:\n\
- movs r0, 0\n\
- b _08042BD8\n\
-_08042578:\n\
- movs r0, 0x1\n\
- b _08042BD8\n\
-_0804257C:\n\
- str r0, [sp, 0x14]\n\
-_0804257E:\n\
- movs r0, 0\n\
- str r0, [sp, 0xC]\n\
-_08042582:\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0x5\n\
- bls _0804258A\n\
- b _08042BCA\n\
-_0804258A:\n\
- lsls r0, r1, 2\n\
- ldr r1, _08042594 @ =_08042598\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08042594: .4byte _08042598\n\
- .align 2, 0\n\
-_08042598:\n\
- .4byte _080425B0\n\
- .4byte _0804264C\n\
- .4byte _080426A8\n\
- .4byte _08042708\n\
- .4byte _08042850\n\
- .4byte _08042A6A\n\
-_080425B0:\n\
- ldr r0, [sp, 0x14]\n\
- ldr r1, [sp, 0xC]\n\
- adds r2, r0, r1\n\
- ldrb r1, [r2]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- adds r5, r2, 0\n\
- cmp r0, 0\n\
- beq _080425F4\n\
- ldr r0, _0804263C @ =gMain\n\
- ldr r2, _08042640 @ =0x00000439\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080425F4\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x4\n\
- beq _080425F4\n\
- ldr r1, _08042644 @ =gBattleMons\n\
- movs r0, 0x58\n\
- ldr r2, [sp, 0x1C]\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080425F4\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
-_080425F4:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x30\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0804261C\n\
- ldr r1, _08042644 @ =gBattleMons\n\
- ldr r0, _08042648 @ =gActiveBattler\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 13\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0804261C\n\
- movs r1, 0\n\
- str r1, [sp, 0x10]\n\
-_0804261C:\n\
- ldrb r1, [r5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042628\n\
- b _08042BCA\n\
-_08042628:\n\
- ldr r2, _08042644 @ =gBattleMons\n\
- ldr r0, _08042648 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x19]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- b _080426F2\n\
- .align 2, 0\n\
-_0804263C: .4byte gMain\n\
-_08042640: .4byte 0x00000439\n\
-_08042644: .4byte gBattleMons\n\
-_08042648: .4byte gActiveBattler\n\
-_0804264C:\n\
- ldr r0, [sp, 0x14]\n\
- ldr r1, [sp, 0xC]\n\
- adds r2, r0, r1\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF0\n\
- ands r0, r1\n\
- adds r5, r2, 0\n\
- cmp r0, 0\n\
- beq _08042678\n\
- ldr r2, _080426A0 @ =gBattleMons\n\
- ldr r0, _080426A4 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x1A]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0xB\n\
- bgt _08042678\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_08042678:\n\
- ldrb r1, [r5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042684\n\
- b _08042BCA\n\
-_08042684:\n\
- ldr r2, _080426A0 @ =gBattleMons\n\
- ldr r0, _080426A4 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x1B]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0xB\n\
- ble _0804269C\n\
- b _08042BCA\n\
-_0804269C:\n\
- b _08042832\n\
- .align 2, 0\n\
-_080426A0: .4byte gBattleMons\n\
-_080426A4: .4byte gActiveBattler\n\
-_080426A8:\n\
- ldr r1, [sp, 0x14]\n\
- ldr r0, [sp, 0xC]\n\
- adds r2, r1, r0\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF0\n\
- ands r0, r1\n\
- adds r5, r2, 0\n\
- cmp r0, 0\n\
- beq _080426D4\n\
- ldr r2, _08042700 @ =gBattleMons\n\
- ldr r0, _08042704 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x1E]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0xB\n\
- bgt _080426D4\n\
- movs r1, 0\n\
- str r1, [sp, 0x10]\n\
-_080426D4:\n\
- ldrb r1, [r5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080426E0\n\
- b _08042BCA\n\
-_080426E0:\n\
- ldr r2, _08042700 @ =gBattleMons\n\
- ldr r0, _08042704 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x1C]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
-_080426F2:\n\
- cmp r0, 0xB\n\
- ble _080426F8\n\
- b _08042BCA\n\
-_080426F8:\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
- b _08042BCA\n\
- .align 2, 0\n\
-_08042700: .4byte gBattleMons\n\
-_08042704: .4byte gActiveBattler\n\
-_08042708:\n\
- ldr r0, [sp, 0x14]\n\
- ldr r1, [sp, 0xC]\n\
- adds r2, r0, r1\n\
- ldrb r1, [r2]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- adds r5, r2, 0\n\
- cmp r0, 0\n\
- beq _0804273A\n\
- ldr r4, _08042838 @ =gSideTimers\n\
- ldr r0, _0804283C @ =gActiveBattler\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- ldrb r0, [r1, 0x4]\n\
- cmp r0, 0\n\
- bne _0804273A\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_0804273A:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042756\n\
- mov r0, r8\n\
- movs r1, 0x38\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0x64\n\
- beq _08042756\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
-_08042756:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042776\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x4]\n\
- movs r2, 0x7\n\
- ldr r3, [sp, 0x1C]\n\
- bl sub_8042BE8\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08042776\n\
- movs r1, 0\n\
- str r1, [sp, 0x10]\n\
-_08042776:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042796\n\
- ldr r2, _08042840 @ =0x00000f88\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x4]\n\
- ldr r3, [sp, 0x1C]\n\
- bl sub_8042BE8\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08042796\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_08042796:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080427B6\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x4]\n\
- movs r2, 0x10\n\
- ldr r3, [sp, 0x1C]\n\
- bl sub_8042BE8\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080427B6\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
-_080427B6:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080427D6\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x4]\n\
- movs r2, 0x20\n\
- ldr r3, [sp, 0x1C]\n\
- bl sub_8042BE8\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080427D6\n\
- movs r1, 0\n\
- str r1, [sp, 0x10]\n\
-_080427D6:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080427F6\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x4]\n\
- movs r2, 0x40\n\
- ldr r3, [sp, 0x1C]\n\
- bl sub_8042BE8\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080427F6\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_080427F6:\n\
- ldrb r1, [r5]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042802\n\
- b _08042BCA\n\
-_08042802:\n\
- ldr r0, _08042844 @ =gMain\n\
- ldr r1, _08042848 @ =0x00000439\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042814\n\
- b _08042BCA\n\
-_08042814:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x4\n\
- bne _0804281C\n\
- b _08042BCA\n\
-_0804281C:\n\
- ldr r1, _0804284C @ =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042832\n\
- b _08042BCA\n\
-_08042832:\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
- b _08042BCA\n\
- .align 2, 0\n\
-_08042838: .4byte gSideTimers\n\
-_0804283C: .4byte gActiveBattler\n\
-_08042840: .4byte 0x00000f88\n\
-_08042844: .4byte gMain\n\
-_08042848: .4byte 0x00000439\n\
-_0804284C: .4byte gBattleMons\n\
-_08042850:\n\
- ldr r1, [sp, 0x14]\n\
- ldr r2, [sp, 0xC]\n\
- adds r0, r1, r2\n\
- ldrb r7, [r0]\n\
- movs r0, 0x20\n\
- ands r0, r7\n\
- cmp r0, 0\n\
- beq _080428B6\n\
- movs r0, 0xDF\n\
- ands r7, r0\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- ldr r0, _080428DC @ =gPPUpGetMask\n\
- ldr r1, [sp, 0x8]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- ands r5, r0\n\
- lsls r0, r1, 1\n\
- lsrs r5, r0\n\
- adds r1, 0xD\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r4, 0\n\
- ldr r2, [sp, 0x8]\n\
- bl CalculatePPWithBonus\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r5, 0x2\n\
- bhi _080428B6\n\
- cmp r0, 0x4\n\
- bls _080428B6\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_080428B6:\n\
- movs r0, 0\n\
- mov r9, r0\n\
- cmp r7, 0\n\
- bne _080428C0\n\
- b _08042BCA\n\
-_080428C0:\n\
- movs r0, 0x1\n\
- ands r0, r7\n\
- cmp r0, 0\n\
- bne _080428CA\n\
- b _08042A5C\n\
-_080428CA:\n\
- mov r1, r9\n\
- cmp r1, 0x7\n\
- bls _080428D2\n\
- b _08042A5C\n\
-_080428D2:\n\
- lsls r0, r1, 2\n\
- ldr r1, _080428E0 @ =_080428E4\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080428DC: .4byte gPPUpGetMask\n\
-_080428E0: .4byte _080428E4\n\
- .align 2, 0\n\
-_080428E4:\n\
- .4byte _08042904\n\
- .4byte _08042904\n\
- .4byte _08042934\n\
- .4byte _08042996\n\
- .4byte _08042A5C\n\
- .4byte _08042A5C\n\
- .4byte _08042A5C\n\
- .4byte _08042A4A\n\
-_08042904:\n\
- mov r0, r8\n\
- bl GetMonEVCount\n\
- lsls r0, 16\n\
- ldr r1, _0804292C @ =0x01fd0000\n\
- cmp r0, r1\n\
- bls _08042914\n\
- b _08042578\n\
-_08042914:\n\
- ldr r0, _08042930 @ =sGetMonDataEVConstants\n\
- add r0, r9\n\
- ldrb r1, [r0]\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- cmp r5, 0x63\n\
- bls _0804292A\n\
- b _08042A5C\n\
-_0804292A:\n\
- b _08042A3A\n\
- .align 2, 0\n\
-_0804292C: .4byte 0x01fd0000\n\
-_08042930: .4byte sGetMonDataEVConstants\n\
-_08042934:\n\
- movs r0, 0x10\n\
- ands r0, r7\n\
- cmp r0, 0\n\
- beq _08042952\n\
- mov r0, r8\n\
- movs r1, 0x39\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08042968\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- b _080429F4\n\
-_08042952:\n\
- mov r0, r8\n\
- movs r1, 0x39\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _08042968\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- b _080429F4\n\
-_08042968:\n\
- mov r0, r8\n\
- movs r1, 0x3A\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- mov r0, r8\n\
- movs r1, 0x39\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r4, r0\n\
- beq _08042986\n\
- movs r0, 0\n\
- str r0, [sp, 0x10]\n\
-_08042986:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- movs r0, 0xEF\n\
- ands r7, r0\n\
- b _08042A5C\n\
-_08042996:\n\
- movs r0, 0x2\n\
- ands r0, r7\n\
- cmp r0, 0\n\
- bne _080429FA\n\
- movs r6, 0\n\
- movs r1, 0x1\n\
- add r10, r1\n\
-_080429A4:\n\
- adds r1, r6, 0\n\
- adds r1, 0x11\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- adds r1, r6, 0\n\
- adds r1, 0xD\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r2, r6, 24\n\
- lsrs r2, 24\n\
- adds r0, r4, 0\n\
- bl CalculatePPWithBonus\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r5, r0\n\
- beq _080429EA\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
-_080429EA:\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- ble _080429A4\n\
- mov r1, r10\n\
- lsls r0, r1, 24\n\
-_080429F4:\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- b _08042A5C\n\
-_080429FA:\n\
- ldr r1, [sp, 0x8]\n\
- adds r1, 0x11\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- ldr r1, [sp, 0x8]\n\
- adds r1, 0xD\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r4, 0\n\
- ldr r2, [sp, 0x8]\n\
- bl CalculatePPWithBonus\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r5, r0\n\
- beq _08042A5C\n\
-_08042A3A:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
- b _08042A5C\n\
-_08042A4A:\n\
- mov r0, r8\n\
- movs r1, 0x2\n\
- ldr r2, [sp]\n\
- bl GetEvolutionTargetSpecies\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08042A5C\n\
- b _08042574\n\
-_08042A5C:\n\
- movs r0, 0x1\n\
- add r9, r0\n\
- lsrs r7, 1\n\
- cmp r7, 0\n\
- beq _08042A68\n\
- b _080428C0\n\
-_08042A68:\n\
- b _08042BCA\n\
-_08042A6A:\n\
- ldr r1, [sp, 0x14]\n\
- ldr r2, [sp, 0xC]\n\
- adds r0, r1, r2\n\
- ldrb r7, [r0]\n\
- movs r0, 0\n\
- mov r9, r0\n\
- cmp r7, 0\n\
- bne _08042A7C\n\
- b _08042BCA\n\
-_08042A7C:\n\
- movs r0, 0x1\n\
- ands r0, r7\n\
- cmp r0, 0\n\
- bne _08042A86\n\
- b _08042BBE\n\
-_08042A86:\n\
- mov r1, r9\n\
- cmp r1, 0x7\n\
- bls _08042A8E\n\
- b _08042BBE\n\
-_08042A8E:\n\
- lsls r0, r1, 2\n\
- ldr r1, _08042A98 @ =_08042A9C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08042A98: .4byte _08042A9C\n\
- .align 2, 0\n\
-_08042A9C:\n\
- .4byte _08042ABC\n\
- .4byte _08042ABC\n\
- .4byte _08042ABC\n\
- .4byte _08042ABC\n\
- .4byte _08042AF4\n\
- .4byte _08042B4C\n\
- .4byte _08042B68\n\
- .4byte _08042B92\n\
-_08042ABC:\n\
- mov r0, r8\n\
- bl GetMonEVCount\n\
- lsls r0, 16\n\
- ldr r1, _08042AEC @ =0x01fd0000\n\
- cmp r0, r1\n\
- bls _08042ACC\n\
- b _08042578\n\
-_08042ACC:\n\
- ldr r0, _08042AF0 @ =sGetMonDataEVConstants\n\
- mov r1, r9\n\
- adds r1, 0x2\n\
- adds r1, r0\n\
- ldrb r1, [r1]\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- cmp r5, 0x63\n\
- bhi _08042BBE\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
- b _08042BB4\n\
- .align 2, 0\n\
-_08042AEC: .4byte 0x01fd0000\n\
-_08042AF0: .4byte sGetMonDataEVConstants\n\
-_08042AF4:\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r5, r0, 0\n\
- ldr r0, _08042B48 @ =gPPUpGetMask\n\
- ldr r1, [sp, 0x8]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- ands r5, r0\n\
- lsls r0, r1, 1\n\
- lsrs r5, r0\n\
- adds r1, 0xD\n\
- mov r0, r8\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r4, 0\n\
- ldr r2, [sp, 0x8]\n\
- bl CalculatePPWithBonus\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r5, 0x2\n\
- bhi _08042BBE\n\
- cmp r6, 0x4\n\
- ble _08042BBE\n\
- movs r2, 0\n\
- str r2, [sp, 0x10]\n\
- b _08042BBE\n\
- .align 2, 0\n\
-_08042B48: .4byte gPPUpGetMask\n\
-_08042B4C:\n\
- mov r0, r8\n\
- movs r1, 0x20\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0x63\n\
- bhi _08042BB4\n\
- ldr r0, [sp, 0x10]\n\
- cmp r0, 0\n\
- bne _08042BB4\n\
- ldr r1, [sp, 0x18]\n\
- cmp r1, 0\n\
- bne _08042BB4\n\
- b _08042BAC\n\
-_08042B68:\n\
- mov r0, r8\n\
- movs r1, 0x20\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0x63\n\
- bls _08042BB4\n\
- mov r0, r8\n\
- movs r1, 0x20\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0xC7\n\
- bhi _08042BB4\n\
- ldr r2, [sp, 0x10]\n\
- cmp r2, 0\n\
- bne _08042BB4\n\
- ldr r0, [sp, 0x18]\n\
- cmp r0, 0\n\
- bne _08042BB4\n\
- b _08042BAC\n\
-_08042B92:\n\
- mov r0, r8\n\
- movs r1, 0x20\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0xC7\n\
- bls _08042BB4\n\
- ldr r1, [sp, 0x10]\n\
- cmp r1, 0\n\
- bne _08042BB4\n\
- ldr r2, [sp, 0x18]\n\
- cmp r2, 0\n\
- bne _08042BB4\n\
-_08042BAC:\n\
- ldr r0, [sp, 0x14]\n\
- add r0, r10\n\
- ldrb r0, [r0]\n\
- str r0, [sp, 0x18]\n\
-_08042BB4:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
-_08042BBE:\n\
- movs r0, 0x1\n\
- add r9, r0\n\
- lsrs r7, 1\n\
- cmp r7, 0\n\
- beq _08042BCA\n\
- b _08042A7C\n\
-_08042BCA:\n\
- ldr r1, [sp, 0xC]\n\
- adds r1, 0x1\n\
- str r1, [sp, 0xC]\n\
- cmp r1, 0x5\n\
- bgt _08042BD6\n\
- b _08042582\n\
-_08042BD6:\n\
- ldr r0, [sp, 0x10]\n\
-_08042BD8:\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
static bool8 sub_8042BE8(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
{