diff options
-rw-r--r-- | src/pokemon.c | 1022 |
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) { |