.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start atk8F_forcerandomswitch atk8F_forcerandomswitch: @ 802830C push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, _080283A4 @ =gBattleTypeFlags ldr r0, [r4] movs r1, 0x8 ands r0, r1 cmp r0, 0 bne _08028320 b _080285F4 _08028320: ldr r5, _080283A8 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 ldr r1, _080283AC @ =gEnemyParty mov r8, r1 cmp r0, 0 bne _08028336 ldr r0, _080283B0 @ =gPlayerParty mov r8, r0 _08028336: ldr r0, [r4] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _080283B4 movs r7, 0 movs r6, 0 ldrb r0, [r5] bl GetBattlerMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _0802835C movs r6, 0x3 _0802835C: adds r5, r6, 0 adds r0, r5, 0x3 cmp r5, r0 bge _080283F4 _08028364: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028396 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _08028396 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028396 adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _08028396: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 adds r0, r6, 0x3 cmp r5, r0 blt _08028364 b _080283F4 .align 2, 0 _080283A4: .4byte gBattleTypeFlags _080283A8: .4byte gBattlerTarget _080283AC: .4byte gEnemyParty _080283B0: .4byte gPlayerParty _080283B4: movs r7, 0 movs r5, 0 _080283B8: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _080283EA adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _080283EA adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080283EA adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _080283EA: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _080283B8 _080283F4: cmp r7, 0x1 bhi _08028404 ldr r0, _08028438 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x41 ands r0, r1 cmp r0, 0x1 bne _0802841C _08028404: cmp r7, 0x2 bhi _08028440 ldr r0, _08028438 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08028440 movs r0, 0x40 ands r1, r0 cmp r1, 0 bne _08028440 _0802841C: ldr r3, _0802843C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080285F8 .align 2, 0 _08028438: .4byte gBattleTypeFlags _0802843C: .4byte gBattlescriptCurrInstr _08028440: bl TryDoForceSwitchOut lsls r0, 24 cmp r0, 0 bne _0802844C b _080285F8 _0802844C: ldr r0, _0802848C @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080284F0 _08028458: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08028490 @ =gBattlerTarget ldrb r0, [r0] bl GetBattlerMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _08028494 adds r0, r6, 0x3 lsls r0, 24 lsrs r5, r0, 24 b _08028496 .align 2, 0 _0802848C: .4byte gBattleTypeFlags _08028490: .4byte gBattlerTarget _08028494: adds r5, r6, 0 _08028496: ldr r4, _080284E8 @ =gBattlerPartyIndexes ldr r0, _080284EC @ =gBattlerTarget ldrb r2, [r0] lsls r1, r2, 1 adds r1, r4 lsls r0, r5, 16 lsrs r3, r0, 16 ldrh r1, [r1] cmp r3, r1 beq _08028458 movs r0, 0x2 eors r2, r0 lsls r0, r2, 1 adds r0, r4 ldrh r0, [r0] cmp r3, r0 beq _08028458 movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028458 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _08028458 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028458 b _080285AE .align 2, 0 _080284E8: .4byte gBattlerPartyIndexes _080284EC: .4byte gBattlerTarget _080284F0: movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _08028560 ldr r6, _08028558 @ =gBattlerPartyIndexes _080284FA: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x6 bl __umodsi3 lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0802855C @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 1 adds r0, r6 adds r2, r5, 0 ldrh r0, [r0] cmp r2, r0 beq _080284FA movs r0, 0x2 eors r1, r0 lsls r0, r1, 1 adds r0, r6 ldrh r0, [r0] cmp r2, r0 beq _080284FA movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _080284FA adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _080284FA adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080284FA b _080285AE .align 2, 0 _08028558: .4byte gBattlerPartyIndexes _0802855C: .4byte gBattlerTarget _08028560: ldr r6, _080285E8 @ =gBattlerPartyIndexes _08028562: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x6 bl __umodsi3 lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080285EC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r6 ldrh r0, [r0] cmp r5, r0 beq _08028562 movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028562 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _08028562 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028562 _080285AE: ldr r4, _080285EC @ =gBattlerTarget ldrb r0, [r4] ldr r1, _080285F0 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C strb r5, [r0] bl IsMultiBattle lsls r0, 24 cmp r0, 0 bne _080285CC ldrb r0, [r4] bl sub_8013F6C _080285CC: ldrb r0, [r4] adds r1, r5, 0 movs r2, 0 bl sub_8127EC4 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 adds r1, r5, 0 movs r2, 0x1 bl sub_8127EC4 b _080285F8 .align 2, 0 _080285E8: .4byte gBattlerPartyIndexes _080285EC: .4byte gBattlerTarget _080285F0: .4byte gBattleStruct _080285F4: bl TryDoForceSwitchOut _080285F8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk8F_forcerandomswitch thumb_func_start atk90_tryconversiontypechange atk90_tryconversiontypechange: @ 8028604 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 ldr r2, _08028698 @ =gBattleMons ldr r3, _0802869C @ =gBattlerAttacker ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r1, r2, 0 adds r1, 0xC adds r0, r1 ldrh r0, [r0] mov r8, r2 cmp r0, 0 beq _08028646 movs r5, 0x58 adds r2, r1, 0 _0802862C: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bhi _08028646 lsls r1, r6, 1 ldrb r0, [r3] muls r0, r5 adds r1, r0 adds r1, r2 ldrh r0, [r1] cmp r0, 0 bne _0802862C _08028646: movs r3, 0 cmp r3, r6 bcs _080286C8 ldr r0, _080286A0 @ =gBattleMoves mov r10, r0 ldr r5, _08028698 @ =gBattleMons mov r12, r5 ldr r7, _0802869C @ =gBattlerAttacker ldrb r0, [r7] movs r4, 0x58 adds r5, r0, 0 muls r5, r4 movs r0, 0xC add r0, r12 mov r9, r0 _08028664: lsls r0, r3, 1 adds r0, r5 add r0, r9 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r10 ldrb r2, [r0, 0x2] cmp r2, 0x9 bne _080286A6 mov r0, r8 adds r1, r5, r0 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _08028692 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _080286A4 _08028692: movs r2, 0x7 b _080286A6 .align 2, 0 _08028698: .4byte gBattleMons _0802869C: .4byte gBattlerAttacker _080286A0: .4byte gBattleMoves _080286A4: movs r2, 0 _080286A6: ldrb r0, [r7] muls r0, r4 add r0, r12 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r2, r1 beq _080286BE adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 bne _080286C8 _080286BE: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, r6 bcc _08028664 _080286C8: cmp r3, r6 bne _080286EC ldr r3, _080286E8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08028790 .align 2, 0 _080286E8: .4byte gBattlescriptCurrInstr _080286EC: movs r7, 0x3 ldr r5, _08028744 @ =gBattleMoves mov r9, r5 _080286F2: bl Random adds r3, r0, 0 ands r3, r7 cmp r3, r6 bcs _080286F2 ldr r4, _08028748 @ =gBattleMons lsls r1, r3, 1 ldr r3, _0802874C @ =gBattlerAttacker ldrb r2, [r3] movs r0, 0x58 adds r5, r2, 0 muls r5, r0 adds r1, r5 adds r0, r4, 0 adds r0, 0xC adds r1, r0 ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r9 ldrb r2, [r0, 0x2] mov r8, r4 adds r4, r3, 0 cmp r2, 0x9 bne _08028752 mov r0, r8 adds r2, r5, r0 adds r0, r2, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _08028740 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _08028750 _08028740: movs r2, 0x7 b _08028752 .align 2, 0 _08028744: .4byte gBattleMoves _08028748: .4byte gBattleMons _0802874C: .4byte gBattlerAttacker _08028750: movs r2, 0 _08028752: ldrb r0, [r4] movs r3, 0x58 muls r0, r3 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r5, [r1] cmp r2, r5 beq _080286F2 adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 beq _080286F2 strb r2, [r1] ldrb r0, [r4] muls r0, r3 add r0, r8 adds r0, 0x22 strb r2, [r0] ldr r1, _080287A0 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r2, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _080287A4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08028790: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080287A0: .4byte gBattleTextBuff1 _080287A4: .4byte gBattlescriptCurrInstr thumb_func_end atk90_tryconversiontypechange thumb_func_start atk91_givepaydaymoney atk91_givepaydaymoney: @ 80287A8 push {r4,r5,lr} ldr r0, _0802880C @ =gBattleTypeFlags ldr r0, [r0] movs r5, 0x2 ands r0, r5 cmp r0, 0 bne _08028828 ldr r1, _08028810 @ =gPaydayMoney ldrh r0, [r1] cmp r0, 0 beq _08028828 adds r1, r0, 0 ldr r0, _08028814 @ =gBattleStruct ldr r0, [r0] adds r0, 0x4A ldrb r0, [r0] adds r4, r1, 0 muls r4, r0 ldr r0, _08028818 @ =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0xA4 lsls r1, 2 adds r0, r1 adds r1, r4, 0 bl AddMoney ldr r1, _0802881C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0x5 strb r0, [r1, 0x3] strb r4, [r1, 0x4] movs r0, 0xFF lsls r0, 8 ands r4, r0 lsrs r4, 8 strb r4, [r1, 0x5] movs r0, 0xFF strb r0, [r1, 0x6] ldr r4, _08028820 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08028824 @ =BattleScript_PrintPayDayMoneyString str r0, [r4] b _08028830 .align 2, 0 _0802880C: .4byte gBattleTypeFlags _08028810: .4byte gPaydayMoney _08028814: .4byte gBattleStruct _08028818: .4byte gSaveBlock1Ptr _0802881C: .4byte gBattleTextBuff1 _08028820: .4byte gBattlescriptCurrInstr _08028824: .4byte BattleScript_PrintPayDayMoneyString _08028828: ldr r1, _08028838 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08028830: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028838: .4byte gBattlescriptCurrInstr thumb_func_end atk91_givepaydaymoney thumb_func_start atk92_setlightscreen atk92_setlightscreen: @ 802883C push {r4-r6,lr} ldr r5, _0802886C @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition ldr r4, _08028870 @ =gSideStatuses movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802887C ldr r2, _08028874 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08028878 @ =gBattleCommunication movs r0, 0 b _080288F0 .align 2, 0 _0802886C: .4byte gBattlerAttacker _08028870: .4byte gSideStatuses _08028874: .4byte gMoveResultFlags _08028878: .4byte gBattleCommunication _0802887C: ldrb r0, [r5] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x2 orrs r0, r2 strh r0, [r1] ldrb r0, [r5] bl GetBattlerPosition ldr r4, _080288E0 @ =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x5 strb r1, [r0, 0x2] ldrb r0, [r5] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r5] strb r1, [r0, 0x3] ldr r0, _080288E4 @ =gBattleTypeFlags ldr r0, [r0] ands r0, r6 cmp r0, 0 beq _080288EC movs r0, 0x1 bl CountAliveMonsInBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _080288EC ldr r1, _080288E8 @ =gBattleCommunication movs r0, 0x4 b _080288F0 .align 2, 0 _080288E0: .4byte gSideTimers _080288E4: .4byte gBattleTypeFlags _080288E8: .4byte gBattleCommunication _080288EC: ldr r1, _08028900 @ =gBattleCommunication movs r0, 0x3 _080288F0: strb r0, [r1, 0x5] ldr r1, _08028904 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08028900: .4byte gBattleCommunication _08028904: .4byte gBattlescriptCurrInstr thumb_func_end atk92_setlightscreen thumb_func_start atk93_tryKO atk93_tryKO: @ 8028908 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r7, _08028934 @ =gBattleMons ldr r6, _08028938 @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r0, r7 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _08028940 ldr r1, _0802893C @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0802895A .align 2, 0 _08028934: .4byte gBattleMons _08028938: .4byte gBattlerTarget _0802893C: .4byte gEnigmaBerries _08028940: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] muls r0, r5 adds r0, r7 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r6, r0, 24 _0802895A: ldr r1, _080289D4 @ =gPotentialItemEffectBattler ldr r5, _080289D8 @ =gBattlerTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _08028998 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _08028998 ldrb r0, [r5] movs r1, 0x27 bl RecordItemEffectBattle ldr r2, _080289DC @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _08028998: ldr r1, _080289E0 @ =gBattleMons ldr r2, _080289D8 @ =gBattlerTarget ldrb r3, [r2] movs r6, 0x58 adds r0, r3, 0 muls r0, r6 adds r5, r0, r1 adds r0, r5, 0 adds r0, 0x20 ldrb r4, [r0] mov r8, r1 mov r9, r2 cmp r4, 0x5 bne _080289F4 ldr r2, _080289E4 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r0, _080289E8 @ =gLastUsedAbility strb r4, [r0] ldr r1, _080289EC @ =gBattlescriptCurrInstr ldr r0, _080289F0 @ =BattleScript_SturdyPreventsOHKO str r0, [r1] mov r1, r9 ldrb r0, [r1] movs r1, 0x5 bl RecordAbilityBattle b _08028C48 .align 2, 0 _080289D4: .4byte gPotentialItemEffectBattler _080289D8: .4byte gBattlerTarget _080289DC: .4byte gSpecialStatuses _080289E0: .4byte gBattleMons _080289E4: .4byte gMoveResultFlags _080289E8: .4byte gLastUsedAbility _080289EC: .4byte gBattlescriptCurrInstr _080289F0: .4byte BattleScript_SturdyPreventsOHKO _080289F4: ldr r1, _08028A68 @ =gStatuses3 lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x18 ands r0, r1 cmp r0, 0 bne _08028A78 ldr r1, _08028A6C @ =gBattleMoves ldr r0, _08028A70 @ =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r7, _08028A74 @ =gBattlerAttacker ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r0, [r0] adds r1, r5, 0 adds r1, 0x2A ldrb r1, [r1] subs r0, r1 ldrb r2, [r2, 0x3] adds r0, r2 lsls r0, 16 lsrs r4, r0, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 blt _08028A48 b _08028BE0 _08028A48: ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 adds r1, 0x2A mov r2, r9 ldrb r0, [r2] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08028B0E b _08028BE0 .align 2, 0 _08028A68: .4byte gStatuses3 _08028A6C: .4byte gBattleMoves _08028A70: .4byte gCurrentMove _08028A74: .4byte gBattlerAttacker _08028A78: ldr r1, _08028B44 @ =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldr r1, _08028B48 @ =gBattlerAttacker ldrb r0, [r0, 0x15] adds r7, r1, 0 ldrb r3, [r7] cmp r0, r3 bne _08028AA2 ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A adds r1, r5, 0 adds r1, 0x2A ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 bcs _08028B1A _08028AA2: ldr r1, _08028B4C @ =gBattleMoves ldr r0, _08028B50 @ =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r6, _08028B54 @ =gBattleMons ldrb r0, [r7] movs r5, 0x58 muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r0] ldr r0, _08028B58 @ =gBattlerTarget mov r8, r0 ldrb r0, [r0] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r0, [r0] subs r1, r0 ldrb r2, [r2, 0x3] adds r1, r2 lsls r1, 16 lsrs r4, r1, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 bge _08028B0C ldrb r0, [r7] adds r1, r0, 0 muls r1, r5 adds r1, r6 adds r1, 0x2A mov r2, r8 ldrb r0, [r2] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08028B0E _08028B0C: movs r4, 0 _08028B0E: ldr r3, _08028B54 @ =gBattleMons mov r8, r3 ldr r0, _08028B58 @ =gBattlerTarget mov r9, r0 cmp r4, 0 beq _08028BE0 _08028B1A: ldr r0, _08028B5C @ =gProtectStructs mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 bge _08028B68 ldr r1, _08028B60 @ =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, _08028B64 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x40 b _08028BC6 .align 2, 0 _08028B44: .4byte gDisableStructs _08028B48: .4byte gBattlerAttacker _08028B4C: .4byte gBattleMoves _08028B50: .4byte gCurrentMove _08028B54: .4byte gBattleMons _08028B58: .4byte gBattlerTarget _08028B5C: .4byte gProtectStructs _08028B60: .4byte gBattleMoveDamage _08028B64: .4byte gMoveResultFlags _08028B68: ldr r0, _08028BA4 @ =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08028BB4 ldr r1, _08028BA8 @ =gBattleMoveDamage movs r3, 0x58 adds r0, r2, 0 muls r0, r3 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, _08028BAC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _08028BB0 @ =gLastUsedItem mov r2, r9 ldrb r0, [r2] muls r0, r3 add r0, r8 ldrh r0, [r0, 0x2E] strh r0, [r1] b _08028BCA .align 2, 0 _08028BA4: .4byte gSpecialStatuses _08028BA8: .4byte gBattleMoveDamage _08028BAC: .4byte gMoveResultFlags _08028BB0: .4byte gLastUsedItem _08028BB4: ldr r1, _08028BD4 @ =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] str r0, [r1] ldr r2, _08028BD8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x10 _08028BC6: orrs r0, r1 strb r0, [r2] _08028BCA: ldr r1, _08028BDC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08028C48 .align 2, 0 _08028BD4: .4byte gBattleMoveDamage _08028BD8: .4byte gMoveResultFlags _08028BDC: .4byte gBattlescriptCurrInstr _08028BE0: ldr r2, _08028C14 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r3, _08028C18 @ =gBattleMons ldr r0, _08028C1C @ =gBattlerAttacker ldrb r0, [r0] movs r2, 0x58 adds r1, r0, 0 muls r1, r2 adds r1, r3 adds r1, 0x2A ldr r0, _08028C20 @ =gBattlerTarget ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x2A ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bcc _08028C28 ldr r1, _08028C24 @ =gBattleCommunication movs r0, 0 b _08028C2C .align 2, 0 _08028C14: .4byte gMoveResultFlags _08028C18: .4byte gBattleMons _08028C1C: .4byte gBattlerAttacker _08028C20: .4byte gBattlerTarget _08028C24: .4byte gBattleCommunication _08028C28: ldr r1, _08028C54 @ =gBattleCommunication movs r0, 0x1 _08028C2C: strb r0, [r1, 0x5] ldr r3, _08028C58 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08028C48: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08028C54: .4byte gBattleCommunication _08028C58: .4byte gBattlescriptCurrInstr thumb_func_end atk93_tryKO thumb_func_start atk94_damagetohalftargethp atk94_damagetohalftargethp: @ 8028C5C push {lr} ldr r3, _08028C88 @ =gBattleMoveDamage ldr r2, _08028C8C @ =gBattleMons ldr r0, _08028C90 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] lsrs r0, 1 str r0, [r3] cmp r0, 0 bne _08028C7A movs r0, 0x1 str r0, [r3] _08028C7A: ldr r1, _08028C94 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08028C88: .4byte gBattleMoveDamage _08028C8C: .4byte gBattleMons _08028C90: .4byte gBattlerTarget _08028C94: .4byte gBattlescriptCurrInstr thumb_func_end atk94_damagetohalftargethp thumb_func_start atk95_setsandstorm atk95_setsandstorm: @ 8028C98 push {lr} ldr r2, _08028CB8 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _08028CC4 ldr r2, _08028CBC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08028CC0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08028CD6 .align 2, 0 _08028CB8: .4byte gBattleWeather _08028CBC: .4byte gMoveResultFlags _08028CC0: .4byte gBattleCommunication _08028CC4: movs r0, 0x8 strh r0, [r2] ldr r1, _08028CE4 @ =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x5] ldr r0, _08028CE8 @ =gWishFutureKnock adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _08028CD6: ldr r1, _08028CEC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08028CE4: .4byte gBattleCommunication _08028CE8: .4byte gWishFutureKnock _08028CEC: .4byte gBattlescriptCurrInstr thumb_func_end atk95_setsandstorm thumb_func_start atk96_weatherdamage atk96_weatherdamage: @ 8028CF0 push {r4,r5,lr} sub sp, 0x4 ldr r0, _08028DBC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0xA0 lsls r1, 8 ands r0, r1 movs r1, 0x80 lsls r1, 8 cmp r0, r1 bne _08028D18 ldr r0, _08028DC0 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08028D18 b _08028E64 _08028D18: movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08028D32 b _08028E48 _08028D32: str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08028D48 b _08028E48 _08028D48: ldr r2, _08028DC4 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 ldr r5, _08028DC0 @ =gBattlerAttacker adds r4, r2, 0 cmp r0, 0 beq _08028DDA ldr r0, _08028DC8 @ =gBattleMons ldrb r2, [r5] movs r1, 0x58 muls r1, r2 adds r3, r1, r0 adds r0, r3, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x5 beq _08028DD4 cmp r0, 0x8 beq _08028DD4 cmp r0, 0x4 beq _08028DD4 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x5 beq _08028DD4 cmp r0, 0x8 beq _08028DD4 cmp r0, 0x4 beq _08028DD4 adds r0, r3, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x8 beq _08028DD4 ldr r0, _08028DCC @ =gStatuses3 lsls r1, r2, 2 adds r1, r0 ldr r1, [r1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08028DD4 movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08028DD4 ldr r1, _08028DD0 @ =gBattleMoveDamage ldrh r0, [r3, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08028DDA movs r0, 0x1 b _08028DD8 .align 2, 0 _08028DBC: .4byte gBattleTypeFlags _08028DC0: .4byte gBattlerAttacker _08028DC4: .4byte gBattleWeather _08028DC8: .4byte gBattleMons _08028DCC: .4byte gStatuses3 _08028DD0: .4byte gBattleMoveDamage _08028DD4: ldr r1, _08028E30 @ =gBattleMoveDamage movs r0, 0 _08028DD8: str r0, [r1] _08028DDA: ldrh r1, [r4] movs r4, 0x80 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08028E50 ldr r1, _08028E34 @ =gBattleMons ldrb r3, [r5] movs r0, 0x58 muls r0, r3 adds r2, r0, r1 adds r0, r2, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xF beq _08028E3C adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xF beq _08028E3C ldr r0, _08028E38 @ =gStatuses3 lsls r1, r3, 2 adds r1, r0 ldr r1, [r1] adds r0, r1, 0 ands r0, r4 cmp r0, 0 bne _08028E3C movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08028E3C ldr r1, _08028E30 @ =gBattleMoveDamage ldrh r0, [r2, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08028E50 movs r0, 0x1 str r0, [r1] b _08028E50 .align 2, 0 _08028E30: .4byte gBattleMoveDamage _08028E34: .4byte gBattleMons _08028E38: .4byte gStatuses3 _08028E3C: ldr r1, _08028E44 @ =gBattleMoveDamage movs r0, 0 str r0, [r1] b _08028E50 .align 2, 0 _08028E44: .4byte gBattleMoveDamage _08028E48: ldr r1, _08028E7C @ =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r5, _08028E80 @ =gBattlerAttacker _08028E50: ldr r0, _08028E84 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _08028E88 @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08028E6A _08028E64: ldr r1, _08028E7C @ =gBattleMoveDamage movs r0, 0 str r0, [r1] _08028E6A: ldr r1, _08028E8C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028E7C: .4byte gBattleMoveDamage _08028E80: .4byte gBattlerAttacker _08028E84: .4byte gAbsentBattlerFlags _08028E88: .4byte gBitTable _08028E8C: .4byte gBattlescriptCurrInstr thumb_func_end atk96_weatherdamage thumb_func_start atk97_tryinfatuating atk97_tryinfatuating: @ 8028E90 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r4, _08028EBC @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08028EC8 ldr r1, _08028EC0 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028EC4 @ =gPlayerParty b _08028ED8 .align 2, 0 _08028EBC: .4byte gBattlerAttacker _08028EC0: .4byte gBattlerPartyIndexes _08028EC4: .4byte gPlayerParty _08028EC8: ldr r1, _08028EFC @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F00 @ =gEnemyParty _08028ED8: adds r5, r1, r0 ldr r4, _08028F04 @ =gBattlerTarget ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08028F0C ldr r1, _08028EFC @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F08 @ =gPlayerParty b _08028F1C .align 2, 0 _08028EFC: .4byte gBattlerPartyIndexes _08028F00: .4byte gEnemyParty _08028F04: .4byte gBattlerTarget _08028F08: .4byte gPlayerParty _08028F0C: ldr r1, _08028F78 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F7C @ =gEnemyParty _08028F1C: adds r4, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 mov r10, r0 adds r0, r5, 0 movs r1, 0 bl GetMonData mov r9, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 mov r8, r0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r7, r0, 0 ldr r5, _08028F80 @ =gBattlerTarget ldrb r0, [r5] movs r6, 0x58 muls r0, r6 ldr r1, _08028F84 @ =gBattleMons adds r0, r1 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0xC bne _08028F94 ldr r1, _08028F88 @ =gBattlescriptCurrInstr ldr r0, _08028F8C @ =BattleScript_ObliviousPreventsAttraction str r0, [r1] ldr r0, _08028F90 @ =gLastUsedAbility strb r2, [r0] ldrb r0, [r5] movs r1, 0xC bl RecordAbilityBattle b _0802902C .align 2, 0 _08028F78: .4byte gBattlerPartyIndexes _08028F7C: .4byte gEnemyParty _08028F80: .4byte gBattlerTarget _08028F84: .4byte gBattleMons _08028F88: .4byte gBattlescriptCurrInstr _08028F8C: .4byte BattleScript_ObliviousPreventsAttraction _08028F90: .4byte gLastUsedAbility _08028F94: mov r0, r10 mov r1, r9 bl GetGenderFromSpeciesAndPersonality adds r4, r0, 0 mov r0, r8 adds r1, r7, 0 bl GetGenderFromSpeciesAndPersonality lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _08028FE4 ldrb r0, [r5] muls r0, r6 ldr r4, _08029000 @ =gBattleMons adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xF0 lsls r1, 12 ands r0, r1 cmp r0, 0 bne _08028FE4 mov r0, r10 mov r1, r9 bl GetGenderFromSpeciesAndPersonality lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _08028FE4 mov r0, r8 adds r1, r7, 0 bl GetGenderFromSpeciesAndPersonality lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08029008 _08028FE4: ldr r3, _08029004 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802902C .align 2, 0 _08029000: .4byte gBattleMons _08029004: .4byte gBattlescriptCurrInstr _08029008: ldrb r0, [r5] adds r2, r0, 0 muls r2, r6 adds r2, r4 ldr r1, _0802903C @ =gBitTable ldr r0, _08029040 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 16 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r1, _08029044 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802902C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802903C: .4byte gBitTable _08029040: .4byte gBattlerAttacker _08029044: .4byte gBattlescriptCurrInstr thumb_func_end atk97_tryinfatuating thumb_func_start atk98_updatestatusicon atk98_updatestatusicon: @ 8029048 push {r4-r7,lr} ldr r0, _080290B8 @ =gBattleControllerExecFlags ldr r1, [r0] cmp r1, 0 beq _08029054 b _080291C0 _08029054: ldr r5, _080290BC @ =gBattlescriptCurrInstr ldr r2, [r5] ldrb r0, [r2, 0x1] cmp r0, 0xD bne _080290D4 ldr r2, _080290C0 @ =gActiveBattler strb r1, [r2] ldr r0, _080290C4 @ =gBattlersCount ldrb r0, [r0] cmp r1, r0 bcs _08029164 ldr r7, _080290C8 @ =gBitTable adds r4, r2, 0 ldr r5, _080290CC @ =gBattleMons adds r6, r5, 0 adds r6, 0x50 _08029074: ldr r0, _080290D0 @ =gAbsentBattlerFlags ldrb r1, [r0] ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _080290A2 movs r0, 0x58 muls r2, r0 adds r0, r5, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r2, r6 ldr r2, [r2] movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBattlerForControllerExec _080290A2: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _080290C4 @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _08029074 b _08029164 .align 2, 0 _080290B8: .4byte gBattleControllerExecFlags _080290BC: .4byte gBattlescriptCurrInstr _080290C0: .4byte gActiveBattler _080290C4: .4byte gBattlersCount _080290C8: .4byte gBitTable _080290CC: .4byte gBattleMons _080290D0: .4byte gAbsentBattlerFlags _080290D4: cmp r0, 0x4 bne _0802918C ldr r4, _08029170 @ =gActiveBattler ldr r5, _08029174 @ =gBattlerAttacker ldrb r0, [r5] strb r0, [r4] ldr r6, _08029178 @ =gAbsentBattlerFlags ldrb r1, [r6] ldr r7, _0802917C @ =gBitTable ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08029114 ldr r3, _08029180 @ =gBattleMons movs r0, 0x58 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBattlerForControllerExec _08029114: ldr r0, _08029184 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08029164 ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition strb r0, [r4] ldrb r1, [r6] ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08029164 ldr r3, _08029180 @ =gBattleMons movs r0, 0x58 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBattlerForControllerExec _08029164: ldr r1, _08029188 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] b _080291C0 .align 2, 0 _08029170: .4byte gActiveBattler _08029174: .4byte gBattlerAttacker _08029178: .4byte gAbsentBattlerFlags _0802917C: .4byte gBitTable _08029180: .4byte gBattleMons _08029184: .4byte gBattleTypeFlags _08029188: .4byte gBattlescriptCurrInstr _0802918C: ldrb r0, [r2, 0x1] bl GetBattlerForBattleScript ldr r4, _080291C8 @ =gActiveBattler strb r0, [r4] ldr r3, _080291CC @ =gBattleMons ldrb r1, [r4] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl BtlController_EmitStatusIconUpdate ldrb r0, [r4] bl MarkBattlerForControllerExec ldr r0, [r5] adds r0, 0x2 str r0, [r5] _080291C0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080291C8: .4byte gActiveBattler _080291CC: .4byte gBattleMons thumb_func_end atk98_updatestatusicon thumb_func_start atk99_setmist atk99_setmist: @ 80291D0 push {r4-r6,lr} ldr r6, _08029200 @ =gSideTimers ldr r4, _08029204 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerPosition movs r5, 0x1 adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r0, [r0, 0x4] cmp r0, 0 beq _08029210 ldr r2, _08029208 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r0, _0802920C @ =gBattleCommunication strb r5, [r0, 0x5] b _0802925E .align 2, 0 _08029200: .4byte gSideTimers _08029204: .4byte gBattlerAttacker _08029208: .4byte gMoveResultFlags _0802920C: .4byte gBattleCommunication _08029210: ldrb r0, [r4] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x5 strb r1, [r0, 0x4] ldrb r0, [r4] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r4] strb r1, [r0, 0x5] ldrb r0, [r4] bl GetBattlerPosition ldr r2, _0802926C @ =gSideStatuses adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 movs r3, 0 orrs r0, r2 strh r0, [r1] ldr r0, _08029270 @ =gBattleCommunication strb r3, [r0, 0x5] _0802925E: ldr r1, _08029274 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802926C: .4byte gSideStatuses _08029270: .4byte gBattleCommunication _08029274: .4byte gBattlescriptCurrInstr thumb_func_end atk99_setmist thumb_func_start atk9A_setfocusenergy atk9A_setfocusenergy: @ 8029278 push {lr} ldr r1, _080292A8 @ =gBattleMons ldr r0, _080292AC @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r3, 0x80 lsls r3, 13 adds r2, r1, 0 ands r2, r3 cmp r2, 0 beq _080292B8 ldr r2, _080292B0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, _080292B4 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080292C0 .align 2, 0 _080292A8: .4byte gBattleMons _080292AC: .4byte gBattlerAttacker _080292B0: .4byte gMoveResultFlags _080292B4: .4byte gBattleCommunication _080292B8: orrs r1, r3 str r1, [r0] ldr r0, _080292CC @ =gBattleCommunication strb r2, [r0, 0x5] _080292C0: ldr r1, _080292D0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080292CC: .4byte gBattleCommunication _080292D0: .4byte gBattlescriptCurrInstr thumb_func_end atk9A_setfocusenergy thumb_func_start atk9B_transformdataexecution atk9B_transformdataexecution: @ 80292D4 push {r4-r7,lr} mov r7, r8 push {r7} ldr r1, _0802932C @ =gChosenMove ldr r2, _08029330 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] ldr r1, _08029334 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r7, _08029338 @ =gBattleMons ldr r0, _0802933C @ =gBattlerTarget mov r12, r0 ldrb r1, [r0] movs r6, 0x58 adds r0, r1, 0 muls r0, r6 adds r5, r7, 0 adds r5, 0x50 adds r0, r5 ldr r0, [r0] movs r4, 0x80 lsls r4, 14 ands r0, r4 cmp r0, 0 bne _0802931A ldr r0, _08029340 @ =gStatuses3 lsls r1, 2 adds r1, r0 ldr r2, [r1] ldr r0, _08029344 @ =0x000400c0 ands r2, r0 cmp r2, 0 beq _08029350 _0802931A: ldr r2, _08029348 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, _0802934C @ =gBattleCommunication movs r0, 0x1 b _08029464 .align 2, 0 _0802932C: .4byte gChosenMove _08029330: .4byte 0x0000ffff _08029334: .4byte gBattlescriptCurrInstr _08029338: .4byte gBattleMons _0802933C: .4byte gBattlerTarget _08029340: .4byte gStatuses3 _08029344: .4byte 0x000400c0 _08029348: .4byte gMoveResultFlags _0802934C: .4byte gBattleCommunication _08029350: ldr r3, _08029424 @ =gBattlerAttacker ldrb r0, [r3] adds r1, r0, 0 muls r1, r6 adds r1, r5 ldr r0, [r1] orrs r0, r4 str r0, [r1] ldr r4, _08029428 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 strh r2, [r0, 0x4] ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0xB] movs r0, 0x10 negs r0, r0 ands r0, r2 strb r0, [r1, 0xB] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 mov r2, r12 ldrb r1, [r2] muls r1, r6 adds r2, r7, 0 adds r2, 0x48 adds r1, r2 ldr r1, [r1] str r1, [r0] ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0x18] movs r0, 0xF ands r0, r2 strb r0, [r1, 0x18] ldr r1, _0802942C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x6 strb r0, [r1, 0x1] mov r2, r12 ldrb r0, [r2] muls r0, r6 adds r0, r7 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r2] muls r0, r6 adds r0, r7 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldrb r0, [r3] muls r0, r6 adds r5, r0, r7 ldrb r0, [r2] muls r0, r6 adds r2, r0, r7 movs r4, 0 adds r6, r3, 0 ldr r0, _08029430 @ =gActiveBattler mov r8, r0 _080293E8: adds r0, r5, r4 adds r1, r2, r4 ldrb r1, [r1] strb r1, [r0] adds r4, 0x1 cmp r4, 0x23 bls _080293E8 movs r4, 0 ldr r7, _08029434 @ =gBattleMoves ldr r3, _08029438 @ =gUnknown_2023BF0 adds r5, r3, 0 adds r5, 0x18 _08029400: lsls r1, r4, 1 ldrb r2, [r6] movs r0, 0x58 muls r2, r0 adds r1, r2 adds r1, r3 ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r7 ldrb r1, [r0, 0x4] cmp r1, 0x4 bhi _0802943C adds r0, r4, r2 adds r0, r5 b _08029442 .align 2, 0 _08029424: .4byte gBattlerAttacker _08029428: .4byte gDisableStructs _0802942C: .4byte gBattleTextBuff1 _08029430: .4byte gActiveBattler _08029434: .4byte gBattleMoves _08029438: .4byte gUnknown_2023BF0 _0802943C: adds r0, r4, r2 adds r0, r5 movs r1, 0x5 _08029442: strb r1, [r0] adds r4, 0x1 cmp r4, 0x3 ble _08029400 ldrb r0, [r6] mov r1, r8 strb r0, [r1] movs r0, 0 movs r1, 0x2 bl BtlController_EmitResetActionMoveSelection mov r2, r8 ldrb r0, [r2] bl MarkBattlerForControllerExec ldr r1, _08029470 @ =gBattleCommunication movs r0, 0 _08029464: strb r0, [r1, 0x5] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029470: .4byte gBattleCommunication thumb_func_end atk9B_transformdataexecution thumb_func_start atk9C_setsubstitute atk9C_setsubstitute: @ 8029474 push {r4-r7,lr} ldr r7, _080294A4 @ =gBattleMons ldr r6, _080294A8 @ =gBattlerAttacker ldrb r0, [r6] movs r5, 0x58 muls r0, r5 adds r3, r0, r7 ldrh r0, [r3, 0x2C] lsrs r1, r0, 2 adds r2, r1, 0 cmp r1, 0 bne _0802948E movs r2, 0x1 _0802948E: ldrh r0, [r3, 0x28] cmp r0, r2 bhi _080294B4 ldr r1, _080294AC @ =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r1, _080294B0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08029508 .align 2, 0 _080294A4: .4byte gBattleMons _080294A8: .4byte gBattlerAttacker _080294AC: .4byte gBattleMoveDamage _080294B0: .4byte gBattleCommunication _080294B4: ldr r4, _08029518 @ =gBattleMoveDamage str r1, [r4] cmp r1, 0 bne _080294C0 movs r0, 0x1 str r0, [r4] _080294C0: ldrb r0, [r6] adds r2, r0, 0 muls r2, r5 adds r3, r7, 0 adds r3, 0x50 adds r2, r3 ldr r0, [r2] movs r1, 0x80 lsls r1, 17 orrs r0, r1 str r0, [r2] ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r3 ldr r0, [r1] ldr r2, _0802951C @ =0xffff1fff ands r0, r2 str r0, [r1] ldr r2, _08029520 @ =gDisableStructs ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, [r4] movs r2, 0 strb r1, [r0, 0xA] ldr r0, _08029524 @ =gBattleCommunication strb r2, [r0, 0x5] ldr r2, _08029528 @ =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 1 orrs r0, r1 str r0, [r2] _08029508: ldr r1, _0802952C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029518: .4byte gBattleMoveDamage _0802951C: .4byte 0xffff1fff _08029520: .4byte gDisableStructs _08029524: .4byte gBattleCommunication _08029528: .4byte gHitMarker _0802952C: .4byte gBattlescriptCurrInstr thumb_func_end atk9C_setsubstitute thumb_func_start IsMoveUncopyableByMimic IsMoveUncopyableByMimic: @ 8029530 push {r4,r5,lr} lsls r0, 16 lsrs r2, r0, 16 movs r3, 0 ldr r0, _08029570 @ =sMovesForbiddenToCopy ldrh r1, [r0] ldr r4, _08029574 @ =0x0000fffe adds r5, r0, 0 cmp r1, r4 beq _08029558 cmp r1, r2 beq _08029558 adds r1, r5, 0 _0802954A: adds r1, 0x2 adds r3, 0x1 ldrh r0, [r1] cmp r0, r4 beq _08029558 cmp r0, r2 bne _0802954A _08029558: lsls r0, r3, 1 adds r0, r5 ldrh r1, [r0] ldr r0, _08029574 @ =0x0000fffe eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _08029570: .4byte sMovesForbiddenToCopy _08029574: .4byte 0x0000fffe thumb_func_end IsMoveUncopyableByMimic thumb_func_start atk9D_mimicattackcopy atk9D_mimicattackcopy: @ 8029578 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _080295F0 @ =gChosenMove ldr r1, _080295F4 @ =0x0000ffff adds r7, r1, 0 strh r7, [r0] ldr r5, _080295F8 @ =gLastMoves ldr r6, _080295FC @ =gBattlerTarget ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r0, [r0] bl IsMoveUncopyableByMimic lsls r0, 24 cmp r0, 0 bne _080295D2 ldr r3, _08029600 @ =gBattleMons ldr r2, _08029604 @ =gBattlerAttacker ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r0, r3, 0 adds r0, 0x50 adds r0, r4, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 14 ands r1, r0 mov r12, r3 mov r9, r2 cmp r1, 0 bne _080295D2 ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r1, [r0] cmp r1, 0 beq _080295D2 cmp r1, r7 bne _0802960C _080295D2: ldr r3, _08029608 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08029744 .align 2, 0 _080295F0: .4byte gChosenMove _080295F4: .4byte 0x0000ffff _080295F8: .4byte gLastMoves _080295FC: .4byte gBattlerTarget _08029600: .4byte gBattleMons _08029604: .4byte gBattlerAttacker _08029608: .4byte gBattlescriptCurrInstr _0802960C: movs r2, 0 mov r3, r12 adds r3, 0xC adds r0, r4, r3 ldrh r0, [r0] ldr r4, _0802969C @ =gBattlescriptCurrInstr mov r10, r4 cmp r0, r1 beq _08029646 mov r8, r3 adds r7, r5, 0 adds r5, r6, 0 mov r4, r9 movs r3, 0x58 _08029628: adds r2, 0x1 cmp r2, 0x3 bgt _08029646 lsls r1, r2, 1 ldrb r0, [r4] muls r0, r3 adds r1, r0 add r1, r8 ldrb r0, [r5] lsls r0, 1 adds r0, r7 ldrh r1, [r1] ldrh r0, [r0] cmp r1, r0 bne _08029628 _08029646: cmp r2, 0x4 bne _08029728 ldr r5, _080296A0 @ =gCurrMovePos ldrb r1, [r5] lsls r1, 1 mov r2, r9 ldrb r0, [r2] movs r6, 0x58 muls r0, r6 adds r1, r0 mov r0, r12 adds r0, 0xC adds r1, r0 ldr r2, _080296A4 @ =gLastMoves ldr r3, _080296A8 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strh r0, [r1] ldr r4, _080296AC @ =gBattleMoves ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r4, [r0, 0x4] cmp r4, 0x4 bhi _080296B0 mov r1, r9 ldrb r0, [r1] muls r0, r6 ldrb r1, [r5] adds r0, r1 mov r1, r12 adds r1, 0x24 adds r0, r1 strb r4, [r0] b _080296C4 .align 2, 0 _0802969C: .4byte gBattlescriptCurrInstr _080296A0: .4byte gCurrMovePos _080296A4: .4byte gLastMoves _080296A8: .4byte gBattlerTarget _080296AC: .4byte gBattleMoves _080296B0: mov r4, r9 ldrb r0, [r4] muls r0, r6 ldrb r1, [r5] adds r0, r1 mov r1, r12 adds r1, 0x24 adds r0, r1 movs r1, 0x5 strb r1, [r0] _080296C4: ldr r1, _0802971C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _08029720 @ =gDisableStructs mov r2, r9 ldrb r0, [r2] lsls r2, r0, 3 subs r2, r0 lsls r2, 2 adds r2, r1 ldrb r4, [r2, 0x18] lsrs r3, r4, 4 ldr r1, _08029724 @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, [r0] orrs r1, r3 lsls r1, 4 movs r0, 0xF ands r0, r4 orrs r0, r1 strb r0, [r2, 0x18] mov r4, r10 ldr r0, [r4] adds r0, 0x5 str r0, [r4] b _08029744 .align 2, 0 _0802971C: .4byte gBattleTextBuff1 _08029720: .4byte gDisableStructs _08029724: .4byte gBitTable _08029728: mov r0, r10 ldr r2, [r0] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 mov r2, r10 str r1, [r2] _08029744: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk9D_mimicattackcopy thumb_func_start atk9E_metronome atk9E_metronome: @ 8029754 push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, _080297D4 @ =gCurrentMove movs r6, 0xB1 lsls r6, 1 ldr r5, _080297D8 @ =sMovesForbiddenToCopy ldr r0, _080297DC @ =gBattlescriptCurrInstr mov r8, r0 _08029766: bl Random ldr r2, _080297E0 @ =0x000001ff adds r1, r2, 0 ands r0, r1 adds r0, 0x1 strh r0, [r7] cmp r0, r6 bhi _08029766 movs r0, 0x3 _0802977A: subs r0, 0x1 cmp r0, 0 bge _0802977A ldr r4, _080297D4 @ =gCurrentMove ldrh r2, [r4] ldr r3, _080297E4 @ =0x0000ffff subs r0, r5, 0x2 _08029788: adds r0, 0x2 ldrh r1, [r0] cmp r1, r2 beq _08029794 cmp r1, r3 bne _08029788 _08029794: ldr r0, _080297E4 @ =0x0000ffff cmp r1, r0 bne _08029766 ldr r2, _080297E8 @ =gHitMarker ldr r0, [r2] ldr r1, _080297EC @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r3, _080297F0 @ =gBattleScriptsForMoveEffects ldr r2, _080297F4 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] mov r1, r8 str r0, [r1] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _080297F8 @ =gBattlerTarget strb r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080297D4: .4byte gCurrentMove _080297D8: .4byte sMovesForbiddenToCopy _080297DC: .4byte gBattlescriptCurrInstr _080297E0: .4byte 0x000001ff _080297E4: .4byte 0x0000ffff _080297E8: .4byte gHitMarker _080297EC: .4byte 0xfffffbff _080297F0: .4byte gBattleScriptsForMoveEffects _080297F4: .4byte gBattleMoves _080297F8: .4byte gBattlerTarget thumb_func_end atk9E_metronome thumb_func_start atk9F_dmgtolevel atk9F_dmgtolevel: @ 80297FC ldr r3, _0802981C @ =gBattleMoveDamage ldr r2, _08029820 @ =gBattleMons ldr r0, _08029824 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r0, [r0] str r0, [r3] ldr r1, _08029828 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802981C: .4byte gBattleMoveDamage _08029820: .4byte gBattleMons _08029824: .4byte gBattlerAttacker _08029828: .4byte gBattlescriptCurrInstr thumb_func_end atk9F_dmgtolevel thumb_func_start atkA0_psywavedamageeffect atkA0_psywavedamageeffect: @ 802982C push {r4,lr} movs r4, 0xF _08029830: bl Random adds r3, r4, 0 ands r3, r0 cmp r3, 0xA bgt _08029830 lsls r0, r3, 2 adds r0, r3 lsls r3, r0, 1 ldr r4, _08029870 @ =gBattleMoveDamage ldr r2, _08029874 @ =gBattleMons ldr r0, _08029878 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] adds r0, r3, 0 adds r0, 0x32 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] ldr r1, _0802987C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08029870: .4byte gBattleMoveDamage _08029874: .4byte gBattleMons _08029878: .4byte gBattlerAttacker _0802987C: .4byte gBattlescriptCurrInstr thumb_func_end atkA0_psywavedamageeffect thumb_func_start atkA1_counterdamagecalculator atkA1_counterdamagecalculator: @ 8029880 push {r4-r6,lr} ldr r4, _080298F0 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080298F4 @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r5 ldrb r0, [r0, 0xC] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r4] lsls r1, r0, 4 adds r0, r5, 0x4 adds r0, r1, r0 ldr r3, [r0] cmp r3, 0 beq _08029934 cmp r6, r2 beq _08029934 ldr r6, _080298F8 @ =gBattleMons adds r0, r1, r5 ldrb r0, [r0, 0xC] movs r4, 0x58 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029934 ldr r1, _080298FC @ =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, _08029900 @ =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08029908 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029908 ldr r0, _08029904 @ =gBattlerTarget strb r1, [r0] b _08029918 .align 2, 0 _080298F0: .4byte gBattlerAttacker _080298F4: .4byte gProtectStructs _080298F8: .4byte gBattleMons _080298FC: .4byte gBattleMoveDamage _08029900: .4byte gSideTimers _08029904: .4byte gBattlerTarget _08029908: ldr r2, _08029924 @ =gBattlerTarget ldr r1, _08029928 @ =gProtectStructs ldr r0, _0802992C @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xC] strb r0, [r2] _08029918: ldr r1, _08029930 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029964 .align 2, 0 _08029924: .4byte gBattlerTarget _08029928: .4byte gProtectStructs _0802992C: .4byte gBattlerAttacker _08029930: .4byte gBattlescriptCurrInstr _08029934: ldr r2, _0802996C @ =gSpecialStatuses ldr r0, _08029970 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _08029974 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029964: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802996C: .4byte gSpecialStatuses _08029970: .4byte gBattlerAttacker _08029974: .4byte gBattlescriptCurrInstr thumb_func_end atkA1_counterdamagecalculator thumb_func_start atkA2_mirrorcoatdamagecalculator atkA2_mirrorcoatdamagecalculator: @ 8029978 push {r4-r6,lr} ldr r4, _080299E8 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080299EC @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r5 ldrb r0, [r0, 0xD] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r4] lsls r1, r0, 4 adds r0, r5, 0 adds r0, 0x8 adds r0, r1, r0 ldr r3, [r0] cmp r3, 0 beq _08029A2C cmp r6, r2 beq _08029A2C ldr r6, _080299F0 @ =gBattleMons adds r0, r1, r5 ldrb r0, [r0, 0xD] movs r4, 0x58 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029A2C ldr r1, _080299F4 @ =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, _080299F8 @ =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08029A00 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029A00 ldr r0, _080299FC @ =gBattlerTarget strb r1, [r0] b _08029A10 .align 2, 0 _080299E8: .4byte gBattlerAttacker _080299EC: .4byte gProtectStructs _080299F0: .4byte gBattleMons _080299F4: .4byte gBattleMoveDamage _080299F8: .4byte gSideTimers _080299FC: .4byte gBattlerTarget _08029A00: ldr r2, _08029A1C @ =gBattlerTarget ldr r1, _08029A20 @ =gProtectStructs ldr r0, _08029A24 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xD] strb r0, [r2] _08029A10: ldr r1, _08029A28 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029A5C .align 2, 0 _08029A1C: .4byte gBattlerTarget _08029A20: .4byte gProtectStructs _08029A24: .4byte gBattlerAttacker _08029A28: .4byte gBattlescriptCurrInstr _08029A2C: ldr r2, _08029A64 @ =gSpecialStatuses ldr r0, _08029A68 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _08029A6C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029A5C: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08029A64: .4byte gSpecialStatuses _08029A68: .4byte gBattlerAttacker _08029A6C: .4byte gBattlescriptCurrInstr thumb_func_end atkA2_mirrorcoatdamagecalculator thumb_func_start atkA3_disablelastusedattack atkA3_disablelastusedattack: @ 8029A70 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r4, 0 ldr r2, _08029B70 @ =gBattleMons ldr r3, _08029B74 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r7, r2, 0 adds r7, 0xC adds r0, r7 ldr r5, _08029B78 @ =gLastMoves lsls r1, 1 adds r1, r5 ldrh r0, [r0] mov r9, r2 adds r6, r3, 0 ldr r2, _08029B7C @ =gDisableStructs mov r8, r2 ldrh r1, [r1] cmp r0, r1 beq _08029AC4 mov r12, r6 movs r3, 0x58 _08029AA4: adds r4, 0x1 cmp r4, 0x3 bgt _08029AC4 lsls r2, r4, 1 mov r0, r12 ldrb r1, [r0] adds r0, r1, 0 muls r0, r3 adds r2, r0 adds r2, r7 lsls r1, 1 adds r1, r5 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _08029AA4 _08029AC4: ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 ldrh r0, [r0, 0x4] cmp r0, 0 bne _08029B88 cmp r4, 0x4 beq _08029B88 movs r5, 0x58 adds r0, r1, 0 muls r0, r5 adds r0, r4, r0 mov r1, r9 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _08029B88 ldr r1, _08029B80 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] lsls r2, r4, 1 ldrb r0, [r6] muls r0, r5 adds r0, r2, r0 mov r3, r9 adds r3, 0xC adds r0, r3 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r6] muls r0, r5 adds r0, r2, r0 adds r0, r3 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 muls r1, r5 adds r2, r1 adds r2, r3 ldrh r1, [r2] strh r1, [r0, 0x4] bl Random ldrb r2, [r6] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 add r1, r8 movs r2, 0x3 ands r2, r0 adds r2, 0x2 ldrb r3, [r1, 0xB] movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0xB] ldrb r0, [r6] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 add r1, r8 ldrb r3, [r1, 0xB] lsls r2, r3, 28 lsrs r2, 24 movs r0, 0xF ands r0, r3 orrs r0, r2 strb r0, [r1, 0xB] ldr r1, _08029B84 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029BA2 .align 2, 0 _08029B70: .4byte gBattleMons _08029B74: .4byte gBattlerTarget _08029B78: .4byte gLastMoves _08029B7C: .4byte gDisableStructs _08029B80: .4byte gBattleTextBuff1 _08029B84: .4byte gBattlescriptCurrInstr _08029B88: ldr r3, _08029BB0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029BA2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029BB0: .4byte gBattlescriptCurrInstr thumb_func_end atkA3_disablelastusedattack thumb_func_start atkA4_trysetencore atkA4_trysetencore: @ 8029BB4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r5, 0 ldr r3, _08029CA8 @ =gBattleMons ldr r4, _08029CAC @ =gBattlerTarget ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r6, r3, 0 adds r6, 0xC adds r0, r6 ldr r2, _08029CB0 @ =gLastMoves lsls r1, 1 adds r1, r2 ldrh r0, [r0] mov r10, r3 mov r8, r2 ldr r2, _08029CB4 @ =gDisableStructs mov r9, r2 ldrh r1, [r1] cmp r0, r1 beq _08029C0E mov r12, r4 adds r7, r6, 0 mov r6, r8 movs r3, 0x58 _08029BEE: adds r5, 0x1 cmp r5, 0x3 bgt _08029C0E lsls r2, r5, 1 mov r0, r12 ldrb r1, [r0] adds r0, r1, 0 muls r0, r3 adds r2, r0 adds r2, r7 lsls r1, 1 adds r1, r6 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _08029BEE _08029C0E: ldrb r0, [r4] lsls r0, 1 add r0, r8 ldrh r2, [r0] cmp r2, 0xA5 beq _08029C22 cmp r2, 0xE3 beq _08029C22 cmp r2, 0x77 bne _08029C24 _08029C22: movs r5, 0x4 _08029C24: ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 mov r2, r9 adds r3, r0, r2 ldrh r0, [r3, 0x6] cmp r0, 0 bne _08029CBC cmp r5, 0x4 beq _08029CBC movs r0, 0x58 adds r2, r1, 0 muls r2, r0 adds r0, r5, r2 mov r1, r10 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _08029CBC lsls r0, r5, 1 adds r0, r2 subs r1, 0x18 adds r0, r1 ldrh r0, [r0] strh r0, [r3, 0x6] ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r9 strb r5, [r0, 0xC] bl Random ldrb r2, [r4] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 add r1, r9 movs r2, 0x3 ands r2, r0 adds r2, 0x3 ldrb r3, [r1, 0xE] movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0xE] ldrb r0, [r4] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 add r1, r9 ldrb r3, [r1, 0xE] lsls r2, r3, 28 lsrs r2, 24 movs r0, 0xF ands r0, r3 orrs r0, r2 strb r0, [r1, 0xE] ldr r1, _08029CB8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029CD6 .align 2, 0 _08029CA8: .4byte gBattleMons _08029CAC: .4byte gBattlerTarget _08029CB0: .4byte gLastMoves _08029CB4: .4byte gDisableStructs _08029CB8: .4byte gBattlescriptCurrInstr _08029CBC: ldr r3, _08029CE4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029CD6: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029CE4: .4byte gBattlescriptCurrInstr thumb_func_end atkA4_trysetencore thumb_func_start atkA5_painsplitdmgcalc atkA5_painsplitdmgcalc: @ 8029CE8 push {r4-r7,lr} ldr r6, _08029D68 @ =gBattleMons ldr r0, _08029D6C @ =gBattlerTarget mov r12, r0 ldrb r0, [r0] movs r7, 0x58 adds r2, r0, 0 muls r2, r7 adds r0, r6, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 bne _08029D88 ldr r5, _08029D70 @ =gBattlerAttacker ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r3, [r0, 0x28] adds r0, r2, r6 ldrh r1, [r0, 0x28] adds r3, r1 asrs r3, 1 ldr r4, _08029D74 @ =gBattleMoveDamage subs r1, r3 str r1, [r4] ldr r2, _08029D78 @ =gBattleScripting strb r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 asrs r0, 8 strb r0, [r2, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 asrs r0, 16 strb r0, [r2, 0x2] lsrs r1, 24 strb r1, [r2, 0x3] ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r0, [r0, 0x28] subs r0, r3 str r0, [r4] ldr r2, _08029D7C @ =gSpecialStatuses mov r0, r12 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x4 adds r0, r2 ldr r1, _08029D80 @ =0x0000ffff str r1, [r0] ldr r1, _08029D84 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029DA2 .align 2, 0 _08029D68: .4byte gBattleMons _08029D6C: .4byte gBattlerTarget _08029D70: .4byte gBattlerAttacker _08029D74: .4byte gBattleMoveDamage _08029D78: .4byte gBattleScripting _08029D7C: .4byte gSpecialStatuses _08029D80: .4byte 0x0000ffff _08029D84: .4byte gBattlescriptCurrInstr _08029D88: ldr r3, _08029DA8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029DA2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029DA8: .4byte gBattlescriptCurrInstr thumb_func_end atkA5_painsplitdmgcalc thumb_func_start atkA6_settypetorandomresistance atkA6_settypetorandomresistance: @ 8029DAC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r1, _08029E14 @ =gLastLandedMoves ldr r4, _08029E18 @ =gBattlerAttacker ldrb r0, [r4] lsls r0, 1 adds r2, r0, r1 ldrh r1, [r2] cmp r1, 0 beq _08029DF6 ldr r0, _08029E1C @ =0x0000ffff cmp r1, r0 beq _08029DF6 ldrh r0, [r2] bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _08029E94 ldr r1, _08029E20 @ =gBattleMons ldr r2, _08029E24 @ =gLastHitBy ldrb r0, [r4] adds r0, r2 ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _08029E94 _08029DF6: ldr r3, _08029E28 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08029F80 .align 2, 0 _08029E14: .4byte gLastLandedMoves _08029E18: .4byte gBattlerAttacker _08029E1C: .4byte 0x0000ffff _08029E20: .4byte gBattleMons _08029E24: .4byte gLastHitBy _08029E28: .4byte gBattlescriptCurrInstr _08029E2C: mov r0, r12 strb r5, [r0] mov r1, r10 ldrb r0, [r1] muls r0, r2 adds r0, r7 adds r0, 0x22 strb r5, [r0] ldr r1, _08029E50 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _08029E54 @ =gBattlescriptCurrInstr b _08029E82 .align 2, 0 _08029E50: .4byte gBattleTextBuff1 _08029E54: .4byte gBattlescriptCurrInstr _08029E58: mov r0, r8 adds r0, 0x1 adds r0, r3 ldrb r2, [r0] strb r2, [r4] mov r4, r10 ldrb r0, [r4] muls r0, r6 ldr r7, _08029E8C @ =gBattleMons adds r0, r7 adds r0, 0x22 strb r2, [r0] ldr r1, _08029E90 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r2, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] mov r1, r12 _08029E82: ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029F80 .align 2, 0 _08029E8C: .4byte gBattleMons _08029E90: .4byte gBattleTextBuff1 _08029E94: movs r4, 0 mov r8, r4 movs r7, 0x7F mov r9, r7 _08029E9C: bl Random mov r4, r9 ands r4, r0 cmp r4, 0x70 bhi _08029E9C lsls r0, r4, 1 adds r4, r0, r4 ldr r6, _08029F90 @ =gTypeEffectiveness adds r3, r4, r6 ldr r1, _08029F94 @ =gLastHitByType ldr r2, _08029F98 @ =gBattlerAttacker ldrb r5, [r2] lsls r0, r5, 1 adds r0, r1 ldrb r1, [r3] mov r10, r2 ldrh r0, [r0] cmp r1, r0 bne _08029EF8 adds r0, r4, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x5 bhi _08029EF8 ldr r7, _08029F9C @ =gBattleMons movs r2, 0x58 adds r0, r5, 0 muls r0, r2 adds r3, r0, r7 movs r0, 0x21 adds r0, r3 mov r12, r0 adds r0, r4, 0x1 adds r0, r6 ldrb r5, [r0] mov r1, r12 ldrb r0, [r1] adds r1, r5, 0 cmp r0, r1 beq _08029EF8 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 bne _08029E2C _08029EF8: movs r7, 0x1 add r8, r7 ldr r0, _08029FA0 @ =0x000003e7 cmp r8, r0 ble _08029E9C movs r0, 0 mov r8, r0 ldr r1, _08029FA4 @ =gBattlescriptCurrInstr mov r12, r1 ldr r3, _08029F90 @ =gTypeEffectiveness adds r0, r4, 0x1 adds r0, r3 mov r9, r0 adds r5, r3, 0 _08029F14: ldrb r1, [r5] cmp r1, 0xFF bgt _08029F1E cmp r1, 0xFE bge _08029F58 _08029F1E: mov r4, r10 ldrb r2, [r4] lsls r0, r2, 1 ldr r7, _08029F94 @ =gLastHitByType adds r0, r7 ldrh r0, [r0] cmp r1, r0 bne _08029F58 ldrb r0, [r5, 0x2] cmp r0, 0x5 bhi _08029F58 movs r6, 0x58 adds r0, r2, 0 muls r0, r6 ldr r1, _08029F9C @ =gBattleMons adds r2, r0, r1 adds r4, r2, 0 adds r4, 0x21 ldrb r0, [r4] mov r7, r9 ldrb r1, [r7] cmp r0, r1 beq _08029F58 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _08029F58 b _08029E58 _08029F58: adds r5, 0x3 movs r0, 0x3 add r8, r0 ldr r0, _08029FA8 @ =0x0000014f cmp r8, r0 bls _08029F14 mov r1, r12 ldr r2, [r1] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 mov r4, r12 str r1, [r4] _08029F80: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029F90: .4byte gTypeEffectiveness _08029F94: .4byte gLastHitByType _08029F98: .4byte gBattlerAttacker _08029F9C: .4byte gBattleMons _08029FA0: .4byte 0x000003e7 _08029FA4: .4byte gBattlescriptCurrInstr _08029FA8: .4byte 0x0000014f thumb_func_end atkA6_settypetorandomresistance thumb_func_start atkA7_setalwayshitflag atkA7_setalwayshitflag: @ 8029FAC push {r4,lr} ldr r4, _08029FF0 @ =gStatuses3 ldr r3, _08029FF4 @ =gBattlerTarget ldrb r1, [r3] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x19 negs r2, r2 ands r0, r2 str r0, [r1] ldrb r1, [r3] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x10 orrs r0, r2 str r0, [r1] ldr r2, _08029FF8 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _08029FFC @ =gBattlerAttacker ldrb r1, [r1] strb r1, [r0, 0x15] ldr r1, _0802A000 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08029FF0: .4byte gStatuses3 _08029FF4: .4byte gBattlerTarget _08029FF8: .4byte gDisableStructs _08029FFC: .4byte gBattlerAttacker _0802A000: .4byte gBattlescriptCurrInstr thumb_func_end atkA7_setalwayshitflag thumb_func_start atkA8_copymovepermanently atkA8_copymovepermanently: @ 802A004 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 ldr r0, _0802A164 @ =gChosenMove ldr r1, _0802A168 @ =0x0000ffff adds r5, r1, 0 strh r5, [r0] ldr r3, _0802A16C @ =gBattleMons ldr r2, _0802A170 @ =gBattlerAttacker ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r0, r3, 0 adds r0, 0x50 adds r0, r4, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 14 ands r1, r0 mov r12, r3 mov r10, r2 cmp r1, 0 beq _0802A03C b _0802A190 _0802A03C: ldr r0, _0802A174 @ =gLastPrintedMoves ldr r2, _0802A178 @ =gBattlerTarget ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldrh r1, [r1] mov r9, r0 mov r8, r2 cmp r1, 0xA5 bne _0802A052 b _0802A190 _0802A052: cmp r1, 0 bne _0802A058 b _0802A190 _0802A058: cmp r1, r5 bne _0802A05E b _0802A190 _0802A05E: cmp r1, 0xA6 bne _0802A064 b _0802A190 _0802A064: movs r7, 0 mov r5, r9 mov r0, r12 adds r0, 0xC adds r1, r4, r0 mov r3, r8 _0802A070: ldrh r2, [r1] cmp r2, 0xA6 beq _0802A082 ldrb r0, [r3] lsls r0, 1 adds r0, r5 ldrh r0, [r0] cmp r2, r0 beq _0802A08A _0802A082: adds r1, 0x2 adds r7, 0x1 cmp r7, 0x3 ble _0802A070 _0802A08A: cmp r7, 0x4 beq _0802A090 b _0802A190 _0802A090: ldr r4, _0802A17C @ =gCurrMovePos ldrb r1, [r4] lsls r1, 1 mov r2, r10 ldrb r0, [r2] movs r3, 0x58 muls r0, r3 adds r1, r0 mov r6, r12 adds r6, 0xC adds r1, r6 mov r2, r8 ldrb r0, [r2] lsls r0, 1 add r0, r9 ldrh r0, [r0] strh r0, [r1] mov r1, r10 ldrb r0, [r1] adds r2, r0, 0 muls r2, r3 ldrb r4, [r4] adds r2, r4 mov r5, r12 adds r5, 0x24 adds r2, r5 ldr r4, _0802A180 @ =gBattleMoves mov r1, r8 ldrb r0, [r1] lsls r0, 1 add r0, r9 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r0, [r0, 0x4] strb r0, [r2] ldr r1, _0802A184 @ =gActiveBattler mov r2, r10 ldrb r0, [r2] strb r0, [r1] movs r7, 0 ldrb r0, [r2] muls r0, r3 adds r4, r0, r5 adds r3, r0, 0 add r2, sp, 0x4 add r5, sp, 0xC _0802A0F2: adds r0, r3, r6 ldrh r0, [r0] strh r0, [r2] adds r1, r5, r7 ldrb r0, [r4] strb r0, [r1] adds r4, 0x1 adds r3, 0x2 adds r2, 0x2 adds r7, 0x1 cmp r7, 0x3 ble _0802A0F2 add r2, sp, 0x4 mov r0, r10 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r12 adds r0, 0x3B ldrb r0, [r0] strb r0, [r2, 0xC] str r2, [sp] movs r0, 0 movs r1, 0x3 movs r2, 0 movs r3, 0x10 bl BtlController_EmitSetMonData ldr r0, _0802A184 @ =gActiveBattler ldrb r0, [r0] bl MarkBattlerForControllerExec ldr r1, _0802A188 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r3, _0802A174 @ =gLastPrintedMoves ldr r2, _0802A178 @ =gBattlerTarget ldrb r0, [r2] lsls r0, 1 adds r0, r3 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r2] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802A18C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802A1AA .align 2, 0 _0802A164: .4byte gChosenMove _0802A168: .4byte 0x0000ffff _0802A16C: .4byte gBattleMons _0802A170: .4byte gBattlerAttacker _0802A174: .4byte gLastPrintedMoves _0802A178: .4byte gBattlerTarget _0802A17C: .4byte gCurrMovePos _0802A180: .4byte gBattleMoves _0802A184: .4byte gActiveBattler _0802A188: .4byte gBattleTextBuff1 _0802A18C: .4byte gBattlescriptCurrInstr _0802A190: ldr r3, _0802A1BC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A1AA: add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A1BC: .4byte gBattlescriptCurrInstr thumb_func_end atkA8_copymovepermanently thumb_func_start IsTwoTurnsMove IsTwoTurnsMove: @ 802A1C0 push {lr} lsls r0, 16 lsrs r0, 16 ldr r2, _0802A1F0 @ =gBattleMoves lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1] cmp r0, 0x91 beq _0802A1EA cmp r0, 0x27 beq _0802A1EA cmp r0, 0x4B beq _0802A1EA cmp r0, 0x97 beq _0802A1EA cmp r0, 0x9B beq _0802A1EA cmp r0, 0x1A bne _0802A1F4 _0802A1EA: movs r0, 0x1 b _0802A1F6 .align 2, 0 _0802A1F0: .4byte gBattleMoves _0802A1F4: movs r0, 0 _0802A1F6: pop {r1} bx r1 thumb_func_end IsTwoTurnsMove thumb_func_start IsInvalidForSleepTalkOrAssist IsInvalidForSleepTalkOrAssist: @ 802A1FC push {lr} lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _0802A21A cmp r1, 0xD6 beq _0802A21A movs r0, 0x89 lsls r0, 1 cmp r1, r0 beq _0802A21A cmp r1, 0x77 beq _0802A21A cmp r1, 0x76 bne _0802A21E _0802A21A: movs r0, 0x1 b _0802A220 _0802A21E: movs r0, 0 _0802A220: pop {r1} bx r1 thumb_func_end IsInvalidForSleepTalkOrAssist thumb_func_start AttacksThisTurn AttacksThisTurn: @ 802A224 push {lr} lsls r1, 16 lsrs r2, r1, 16 ldr r1, _0802A27C @ =gBattleMoves lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0] adds r3, r1, 0 cmp r0, 0x97 bne _0802A248 ldr r0, _0802A280 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 bne _0802A288 _0802A248: lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r3 ldrb r0, [r0] cmp r0, 0x91 beq _0802A26A cmp r0, 0x27 beq _0802A26A cmp r0, 0x4B beq _0802A26A cmp r0, 0x97 beq _0802A26A cmp r0, 0x9B beq _0802A26A cmp r0, 0x1A bne _0802A288 _0802A26A: ldr r0, _0802A284 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 20 ands r0, r1 cmp r0, 0 beq _0802A288 movs r0, 0x1 b _0802A28A .align 2, 0 _0802A27C: .4byte gBattleMoves _0802A280: .4byte gBattleWeather _0802A284: .4byte gHitMarker _0802A288: movs r0, 0x2 _0802A28A: pop {r1} bx r1 thumb_func_end AttacksThisTurn thumb_func_start atkA9_trychoosesleeptalkmove atkA9_trychoosesleeptalkmove: @ 802A290 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 movs r5, 0 ldr r0, _0802A320 @ =gBattlerAttacker mov r9, r0 movs r1, 0x58 mov r8, r1 ldr r7, _0802A324 @ =gUnknown_2023BF0 movs r0, 0x84 lsls r0, 1 mov r10, r0 _0802A2AE: lsls r4, r5, 1 mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r0, [r0] bl IsInvalidForSleepTalkOrAssist lsls r0, 24 cmp r0, 0 bne _0802A2EE mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r1, [r0] cmp r1, r10 beq _0802A2EE cmp r1, 0xFD beq _0802A2EE adds r0, r1, 0 bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _0802A2FC _0802A2EE: ldr r1, _0802A328 @ =gBitTable lsls r0, r5, 2 adds r0, r1 ldr r0, [r0] orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _0802A2FC: adds r5, 0x1 cmp r5, 0x3 ble _0802A2AE ldr r0, _0802A320 @ =gBattlerAttacker ldrb r0, [r0] adds r1, r6, 0 movs r2, 0xFD bl CheckMoveLimitations lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0xF bne _0802A330 ldr r1, _0802A32C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802A394 .align 2, 0 _0802A320: .4byte gBattlerAttacker _0802A324: .4byte gUnknown_2023BF0 _0802A328: .4byte gBitTable _0802A32C: .4byte gBattlescriptCurrInstr _0802A330: movs r7, 0x3 ldr r4, _0802A3A4 @ =gBitTable _0802A334: bl Random adds r5, r7, 0 ands r5, r0 lsls r0, r5, 2 adds r0, r4 ldr r0, [r0] ands r0, r6 cmp r0, 0 bne _0802A334 ldr r4, _0802A3A8 @ =gCalledMove ldr r2, _0802A3AC @ =gBattleMons lsls r1, r5, 1 ldr r0, _0802A3B0 @ =gBattlerAttacker ldrb r3, [r0] movs r0, 0x58 muls r0, r3 adds r1, r0 adds r2, 0xC adds r1, r2 ldrh r0, [r1] strh r0, [r4] ldr r0, _0802A3B4 @ =gCurrMovePos strb r5, [r0] ldr r2, _0802A3B8 @ =gHitMarker ldr r0, [r2] ldr r1, _0802A3BC @ =0xfffffbff ands r0, r1 str r0, [r2] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802A3C0 @ =gBattlerTarget strb r0, [r1] ldr r3, _0802A3C4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A394: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A3A4: .4byte gBitTable _0802A3A8: .4byte gCalledMove _0802A3AC: .4byte gBattleMons _0802A3B0: .4byte gBattlerAttacker _0802A3B4: .4byte gCurrMovePos _0802A3B8: .4byte gHitMarker _0802A3BC: .4byte 0xfffffbff _0802A3C0: .4byte gBattlerTarget _0802A3C4: .4byte gBattlescriptCurrInstr thumb_func_end atkA9_trychoosesleeptalkmove thumb_func_start atkAA_setdestinybond atkAA_setdestinybond: @ 802A3C8 ldr r1, _0802A3EC @ =gBattleMons ldr r0, _0802A3F0 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] ldr r1, _0802A3F4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802A3EC: .4byte gBattleMons _0802A3F0: .4byte gBattlerAttacker _0802A3F4: .4byte gBattlescriptCurrInstr thumb_func_end atkAA_setdestinybond thumb_func_start TrySetDestinyBondToHappen TrySetDestinyBondToHappen: @ 802A3F8 push {r4,r5,lr} ldr r0, _0802A448 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r4, _0802A44C @ =gBattlerTarget ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r3, r0, 24 ldr r1, _0802A450 @ =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0802A442 cmp r5, r3 beq _0802A442 ldr r2, _0802A454 @ =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 17 ands r0, r1 cmp r0, 0 bne _0802A442 movs r0, 0x40 orrs r1, r0 str r1, [r2] _0802A442: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802A448: .4byte gBattlerAttacker _0802A44C: .4byte gBattlerTarget _0802A450: .4byte gBattleMons _0802A454: .4byte gHitMarker thumb_func_end TrySetDestinyBondToHappen thumb_func_start atkAB_trysetdestinybondtohappen atkAB_trysetdestinybondtohappen: @ 802A458 push {lr} bl TrySetDestinyBondToHappen ldr r1, _0802A46C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802A46C: .4byte gBattlescriptCurrInstr thumb_func_end atkAB_trysetdestinybondtohappen thumb_func_start atkAC_remaininghptopower atkAC_remaininghptopower: @ 802A470 push {lr} ldr r2, _0802A4C4 @ =gBattleMons ldr r0, _0802A4C8 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 movs r2, 0x28 ldrsh r0, [r1, r2] movs r2, 0x2C ldrsh r1, [r1, r2] movs r2, 0x30 bl GetScaledHPFraction lsls r0, 24 lsrs r1, r0, 24 movs r3, 0 ldr r0, _0802A4CC @ =sFlailHpScaleToPowerTable ldrb r2, [r0] cmp r1, r2 ble _0802A4AA adds r2, r0, 0 _0802A49C: adds r3, 0x2 cmp r3, 0xB bgt _0802A4AA adds r0, r3, r2 ldrb r0, [r0] cmp r1, r0 bgt _0802A49C _0802A4AA: ldr r2, _0802A4D0 @ =gDynamicBasePower ldr r1, _0802A4CC @ =sFlailHpScaleToPowerTable adds r0, r3, 0x1 adds r0, r1 ldrb r0, [r0] strh r0, [r2] ldr r1, _0802A4D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802A4C4: .4byte gBattleMons _0802A4C8: .4byte gBattlerAttacker _0802A4CC: .4byte sFlailHpScaleToPowerTable _0802A4D0: .4byte gDynamicBasePower _0802A4D4: .4byte gBattlescriptCurrInstr thumb_func_end atkAC_remaininghptopower thumb_func_start atkAD_tryspiteppreduce atkAD_tryspiteppreduce: @ 802A4D8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, _0802A658 @ =gLastMoves ldr r1, _0802A65C @ =gBattlerTarget ldrb r3, [r1] lsls r0, r3, 1 adds r0, r4 ldrh r2, [r0] mov r8, r1 cmp r2, 0 bne _0802A4F8 b _0802A680 _0802A4F8: ldr r0, _0802A660 @ =0x0000ffff cmp r2, r0 bne _0802A500 b _0802A680 _0802A500: movs r7, 0 ldr r0, _0802A664 @ =gBattleMons movs r1, 0x58 muls r1, r3 adds r3, r0, 0 adds r3, 0xC adds r1, r3 ldrh r1, [r1] cmp r2, r1 beq _0802A538 adds r6, r4, 0 mov r5, r8 adds r4, r3, 0 movs r3, 0x58 _0802A51C: adds r7, 0x1 cmp r7, 0x3 bgt _0802A538 ldrb r0, [r5] lsls r2, r0, 1 adds r2, r6 lsls r1, r7, 1 muls r0, r3 adds r1, r0 adds r1, r4 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _0802A51C _0802A538: cmp r7, 0x4 bne _0802A53E b _0802A680 _0802A53E: mov r4, r8 ldrb r0, [r4] movs r1, 0x58 mov r9, r1 mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 ldr r1, _0802A664 @ =gBattleMons adds r1, 0x24 mov r10, r1 add r0, r10 ldrb r0, [r0] cmp r0, 0x1 bhi _0802A55E b _0802A680 _0802A55E: bl Random movs r1, 0x3 ands r1, r0 adds r6, r1, 0x2 ldrb r0, [r4] mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 add r0, r10 ldrb r0, [r0] cmp r0, r6 bge _0802A57C adds r6, r0, 0 _0802A57C: ldr r1, _0802A668 @ =gBattleTextBuff1 movs r5, 0xFD strb r5, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r2, _0802A658 @ =gLastMoves mov r3, r8 ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r4, _0802A66C @ =gBattleTextBuff2 adds r0, r4, 0 adds r1, r6, 0 movs r2, 0 movs r3, 0x1 bl ConvertIntToDecimalStringN strb r5, [r4] movs r0, 0x1 strb r0, [r4, 0x1] strb r0, [r4, 0x2] strb r0, [r4, 0x3] strb r6, [r4, 0x4] subs r0, 0x2 strb r0, [r4, 0x5] mov r1, r8 ldrb r0, [r1] mov r1, r9 muls r1, r0 adds r1, r7, r1 add r1, r10 ldrb r0, [r1] subs r0, r6 strb r0, [r1] ldr r4, _0802A670 @ =gActiveBattler mov r3, r8 ldrb r0, [r3] strb r0, [r4] ldr r1, _0802A674 @ =gDisableStructs ldrb r3, [r4] lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _0802A678 @ =gBitTable lsls r0, r7, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802A630 mov r2, r9 muls r2, r3 ldr r0, _0802A664 @ =gBattleMons adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0802A630 adds r1, r7, 0 adds r1, 0x9 lsls r1, 24 lsrs r1, 24 mov r3, r10 adds r0, r2, r3 adds r0, r7 str r0, [sp] movs r0, 0 movs r2, 0 movs r3, 0x1 bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBattlerForControllerExec _0802A630: ldr r1, _0802A67C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, _0802A664 @ =gBattleMons ldr r0, _0802A65C @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r0, r7, r0 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0802A69A adds r0, r2, 0 bl CancelMultiTurnMoves b _0802A69A .align 2, 0 _0802A658: .4byte gLastMoves _0802A65C: .4byte gBattlerTarget _0802A660: .4byte 0x0000ffff _0802A664: .4byte gBattleMons _0802A668: .4byte gBattleTextBuff1 _0802A66C: .4byte gBattleTextBuff2 _0802A670: .4byte gActiveBattler _0802A674: .4byte gDisableStructs _0802A678: .4byte gBitTable _0802A67C: .4byte gBattlescriptCurrInstr _0802A680: ldr r3, _0802A6AC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A69A: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A6AC: .4byte gBattlescriptCurrInstr thumb_func_end atkAD_tryspiteppreduce thumb_func_start atkAE_healpartystatus atkAE_healpartystatus: @ 802A6B0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 movs r4, 0 str r4, [sp, 0x4] mov r8, r4 ldr r0, _0802A720 @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xD7 beq _0802A6CC b _0802A8B6 _0802A6CC: ldr r6, _0802A724 @ =gBattleCommunication mov r0, r8 strb r0, [r6, 0x5] ldr r5, _0802A728 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 ldr r1, _0802A72C @ =gEnemyParty mov r10, r1 cmp r0, 0 bne _0802A6E8 ldr r2, _0802A730 @ =gPlayerParty mov r10, r2 _0802A6E8: ldr r4, _0802A734 @ =gBattleMons ldrb r3, [r5] movs r7, 0x58 adds r2, r3, 0 muls r2, r7 adds r0, r2, r4 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _0802A73C adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 mov r1, r8 str r1, [r0] ldrb r0, [r5] adds r2, r0, 0 muls r2, r7 adds r0, r4, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, _0802A738 @ =0xf7ffffff ands r0, r1 str r0, [r2] b _0802A74C .align 2, 0 _0802A720: .4byte gCurrentMove _0802A724: .4byte gBattleCommunication _0802A728: .4byte gBattlerAttacker _0802A72C: .4byte gEnemyParty _0802A730: .4byte gPlayerParty _0802A734: .4byte gBattleMons _0802A738: .4byte 0xf7ffffff _0802A73C: ldrb r1, [r1] adds r0, r3, 0 bl RecordAbilityBattle ldrb r0, [r6, 0x5] movs r1, 0x1 orrs r0, r1 strb r0, [r6, 0x5] _0802A74C: ldr r7, _0802A7C0 @ =gActiveBattler ldr r0, _0802A7C4 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition movs r2, 0x2 mov r9, r2 mov r1, r9 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r1, _0802A7C8 @ =gBattleScripting strb r0, [r1, 0x17] strb r0, [r7] ldr r0, _0802A7CC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A7F2 ldr r0, _0802A7D0 @ =gAbsentBattlerFlags ldrb r2, [r0] ldr r1, _0802A7D4 @ =gBitTable ldrb r3, [r7] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _0802A7F2 ldr r5, _0802A7D8 @ =gBattleMons movs r6, 0x58 adds r4, r3, 0 muls r4, r6 adds r0, r4, r5 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _0802A7E0 adds r0, r5, 0 adds r0, 0x4C adds r0, r4, r0 str r2, [r0] ldrb r0, [r7] adds r2, r0, 0 muls r2, r6 adds r0, r5, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, _0802A7DC @ =0xf7ffffff ands r0, r1 str r0, [r2] b _0802A7F2 .align 2, 0 _0802A7C0: .4byte gActiveBattler _0802A7C4: .4byte gBattlerAttacker _0802A7C8: .4byte gBattleScripting _0802A7CC: .4byte gBattleTypeFlags _0802A7D0: .4byte gAbsentBattlerFlags _0802A7D4: .4byte gBitTable _0802A7D8: .4byte gBattleMons _0802A7DC: .4byte 0xf7ffffff _0802A7E0: ldrb r1, [r1] adds r0, r3, 0 bl RecordAbilityBattle ldr r1, _0802A838 @ =gBattleCommunication ldrb r0, [r1, 0x5] mov r2, r9 orrs r0, r2 strb r0, [r1, 0x5] _0802A7F2: movs r6, 0 ldr r7, _0802A83C @ =gBattleMons _0802A7F6: movs r0, 0x64 adds r4, r6, 0 muls r4, r0 add r4, r10 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData lsls r0, 24 lsrs r4, r0, 24 cmp r5, 0 beq _0802A8AE movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _0802A8AE ldr r2, _0802A840 @ =gBattlerPartyIndexes ldr r0, _0802A844 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _0802A848 movs r0, 0x58 muls r0, r1 b _0802A878 .align 2, 0 _0802A838: .4byte gBattleCommunication _0802A83C: .4byte gBattleMons _0802A840: .4byte gBattlerPartyIndexes _0802A844: .4byte gBattlerAttacker _0802A848: ldr r0, _0802A880 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A890 ldr r0, _0802A884 @ =gActiveBattler ldrb r3, [r0] lsls r0, r3, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _0802A890 ldr r0, _0802A888 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802A88C @ =gBitTable lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802A890 movs r0, 0x58 muls r0, r3 _0802A878: adds r0, r7 adds r0, 0x20 ldrb r0, [r0] b _0802A89C .align 2, 0 _0802A880: .4byte gBattleTypeFlags _0802A884: .4byte gActiveBattler _0802A888: .4byte gAbsentBattlerFlags _0802A88C: .4byte gBitTable _0802A890: adds r0, r5, 0 adds r1, r4, 0 bl GetAbilityBySpecies lsls r0, 24 lsrs r0, 24 _0802A89C: cmp r0, 0x2B beq _0802A8AE movs r0, 0x1 lsls r0, r6 mov r1, r8 orrs r1, r0 lsls r0, r1, 24 lsrs r0, 24 mov r8, r0 _0802A8AE: adds r6, 0x1 cmp r6, 0x5 ble _0802A7F6 b _0802A934 _0802A8B6: ldr r1, _0802A970 @ =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] movs r2, 0x3F mov r8, r2 ldr r3, _0802A974 @ =gBattleMons ldr r2, _0802A978 @ =gBattlerAttacker ldrb r0, [r2] movs r5, 0x58 muls r0, r5 movs r1, 0x4C adds r1, r3 mov r9, r1 add r0, r9 str r4, [r0] ldrb r0, [r2] adds r1, r0, 0 muls r1, r5 adds r7, r3, 0 adds r7, 0x50 adds r1, r7 ldr r0, [r1] ldr r6, _0802A97C @ =0xf7ffffff ands r0, r6 str r0, [r1] ldrb r0, [r2] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r4, _0802A980 @ =gActiveBattler strb r0, [r4] ldr r0, _0802A984 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A934 ldr r0, _0802A988 @ =gAbsentBattlerFlags ldrb r2, [r0] ldr r1, _0802A98C @ =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _0802A934 adds r0, r3, 0 muls r0, r5 add r0, r9 str r2, [r0] ldrb r0, [r4] adds r1, r0, 0 muls r1, r5 adds r1, r7 ldr r0, [r1] ands r0, r6 str r0, [r1] _0802A934: mov r2, r8 cmp r2, 0 beq _0802A956 ldr r4, _0802A980 @ =gActiveBattler ldr r0, _0802A978 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] add r0, sp, 0x4 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBattlerForControllerExec _0802A956: ldr r1, _0802A990 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A970: .4byte gBattleCommunication _0802A974: .4byte gBattleMons _0802A978: .4byte gBattlerAttacker _0802A97C: .4byte 0xf7ffffff _0802A980: .4byte gActiveBattler _0802A984: .4byte gBattleTypeFlags _0802A988: .4byte gAbsentBattlerFlags _0802A98C: .4byte gBitTable _0802A990: .4byte gBattlescriptCurrInstr thumb_func_end atkAE_healpartystatus thumb_func_start atkAF_cursetarget atkAF_cursetarget: @ 802A994 push {r4,r5,lr} ldr r5, _0802A9D4 @ =gBattleMons ldr r0, _0802A9D8 @ =gBattlerTarget ldrb r0, [r0] movs r4, 0x58 adds r1, r0, 0 muls r1, r4 adds r0, r5, 0 adds r0, 0x50 adds r1, r0 ldr r2, [r1] movs r3, 0x80 lsls r3, 21 adds r0, r2, 0 ands r0, r3 cmp r0, 0 beq _0802A9E0 ldr r3, _0802A9DC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AA04 .align 2, 0 _0802A9D4: .4byte gBattleMons _0802A9D8: .4byte gBattlerTarget _0802A9DC: .4byte gBattlescriptCurrInstr _0802A9E0: orrs r2, r3 str r2, [r1] ldr r1, _0802AA0C @ =gBattleMoveDamage ldr r0, _0802AA10 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802A9FC movs r0, 0x1 str r0, [r1] _0802A9FC: ldr r1, _0802AA14 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AA04: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802AA0C: .4byte gBattleMoveDamage _0802AA10: .4byte gBattlerAttacker _0802AA14: .4byte gBattlescriptCurrInstr thumb_func_end atkAF_cursetarget thumb_func_start atkB0_trysetspikes atkB0_trysetspikes: @ 802AA18 push {r4,lr} ldr r4, _0802AA6C @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, _0802AA70 @ =gSideTimers lsls r2, r0, 1 adds r0, r2, r0 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0xA] cmp r0, 0x3 bne _0802AA7C ldr r2, _0802AA74 @ =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _0802AA78 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AA96 .align 2, 0 _0802AA6C: .4byte gBattlerAttacker _0802AA70: .4byte gSideTimers _0802AA74: .4byte gSpecialStatuses _0802AA78: .4byte gBattlescriptCurrInstr _0802AA7C: ldr r1, _0802AA9C @ =gSideStatuses adds r1, r2, r1 ldrh r2, [r1] movs r0, 0x10 orrs r0, r2 strh r0, [r1] ldrb r0, [r3, 0xA] adds r0, 0x1 strb r0, [r3, 0xA] ldr r1, _0802AAA0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AA96: pop {r4} pop {r0} bx r0 .align 2, 0 _0802AA9C: .4byte gSideStatuses _0802AAA0: .4byte gBattlescriptCurrInstr thumb_func_end atkB0_trysetspikes thumb_func_start atkB1_setforesight atkB1_setforesight: @ 802AAA4 ldr r1, _0802AAC8 @ =gBattleMons ldr r0, _0802AACC @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 22 orrs r0, r1 str r0, [r2] ldr r1, _0802AAD0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802AAC8: .4byte gBattleMons _0802AACC: .4byte gBattlerTarget _0802AAD0: .4byte gBattlescriptCurrInstr thumb_func_end atkB1_setforesight thumb_func_start atkB2_trysetperishsong atkB2_trysetperishsong: @ 802AAD4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 movs r3, 0 ldr r0, _0802AB18 @ =gBattlersCount adds r7, r0, 0 ldr r0, _0802AB1C @ =gBattlerAttacker mov r8, r0 ldrb r1, [r7] cmp r6, r1 bge _0802AB40 movs r5, 0x20 ldr r0, _0802AB20 @ =gBattleMons mov r12, r0 ldr r0, _0802AB24 @ =gDisableStructs adds r4, r0, 0 adds r4, 0xF ldr r2, _0802AB28 @ =gStatuses3 _0802AAFC: ldr r1, [r2] adds r0, r1, 0 ands r0, r5 cmp r0, 0 bne _0802AB14 movs r0, 0x58 muls r0, r3 add r0, r12 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2B bne _0802AB2C _0802AB14: adds r6, 0x1 b _0802AB34 .align 2, 0 _0802AB18: .4byte gBattlersCount _0802AB1C: .4byte gBattlerAttacker _0802AB20: .4byte gBattleMons _0802AB24: .4byte gDisableStructs _0802AB28: .4byte gStatuses3 _0802AB2C: orrs r1, r5 str r1, [r2] movs r0, 0x33 strb r0, [r4] _0802AB34: adds r4, 0x1C adds r2, 0x4 adds r3, 0x1 ldrb r0, [r7] cmp r3, r0 blt _0802AAFC _0802AB40: mov r1, r8 ldrb r0, [r1] bl PressurePPLoseOnUsingPerishSong ldr r0, _0802AB6C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bne _0802AB74 ldr r3, _0802AB70 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AB7C .align 2, 0 _0802AB6C: .4byte gBattlersCount _0802AB70: .4byte gBattlescriptCurrInstr _0802AB74: ldr r1, _0802AB88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AB7C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802AB88: .4byte gBattlescriptCurrInstr thumb_func_end atkB2_trysetperishsong thumb_func_start atkB3_rolloutdamagecalculation atkB3_rolloutdamagecalculation: @ 802AB8C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802ABB0 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802ABC0 ldr r0, _0802ABB4 @ =gBattlerAttacker ldrb r0, [r0] bl CancelMultiTurnMoves ldr r1, _0802ABB8 @ =gBattlescriptCurrInstr ldr r0, _0802ABBC @ =BattleScript_MoveMissedPause str r0, [r1] b _0802ACD8 .align 2, 0 _0802ABB0: .4byte gMoveResultFlags _0802ABB4: .4byte gBattlerAttacker _0802ABB8: .4byte gBattlescriptCurrInstr _0802ABBC: .4byte BattleScript_MoveMissedPause _0802ABC0: ldr r2, _0802ACE4 @ =gBattleMons ldr r1, _0802ACE8 @ =gBattlerAttacker ldrb r3, [r1] movs r5, 0x58 adds r0, r3, 0 muls r0, r5 adds r4, r2, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r7, 0x80 lsls r7, 5 ands r0, r7 adds r6, r1, 0 mov r9, r2 ldr r1, _0802ACEC @ =gDisableStructs mov r12, r1 ldr r2, _0802ACF0 @ =gCurrentMove mov r8, r2 cmp r0, 0 bne _0802AC32 lsls r0, r3, 3 subs r0, r3 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x5 orrs r1, r2 strb r1, [r0, 0x11] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0xF ands r1, r2 movs r2, 0x50 orrs r1, r2 strb r1, [r0, 0x11] ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] orrs r0, r7 str r0, [r1] ldr r1, _0802ACF4 @ =gLockedMoves ldrb r0, [r6] lsls r0, 1 adds r0, r1 mov r2, r8 ldrh r1, [r2] strh r1, [r0] _0802AC32: ldrb r0, [r6] lsls r2, r0, 3 subs r2, r0 lsls r2, 2 add r2, r12 ldrb r3, [r2, 0x11] lsls r1, r3, 28 lsrs r1, 28 subs r1, 0x1 movs r0, 0xF ands r1, r0 movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x11] cmp r1, 0 bne _0802AC66 ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] ldr r2, _0802ACF8 @ =0xffffefff ands r0, r2 str r0, [r1] _0802AC66: ldr r3, _0802ACFC @ =gDynamicBasePower ldr r2, _0802AD00 @ =gBattleMoves mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 mov r1, r12 adds r4, r0, r1 ldrb r0, [r4, 0x11] lsls r0, 28 lsrs r0, 28 movs r1, 0x5 subs r1, r0 ldr r7, _0802AD04 @ =gBattlescriptCurrInstr adds r5, r3, 0 cmp r2, r1 bge _0802ACB4 adds r1, r5, 0 adds r3, r4, 0 movs r4, 0x5 _0802ACA0: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x11] lsls r0, 28 lsrs r0, 28 subs r0, r4, r0 cmp r2, r0 blt _0802ACA0 _0802ACB4: ldrb r1, [r6] movs r0, 0x58 muls r0, r1 mov r1, r9 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 23 ands r0, r1 cmp r0, 0 beq _0802ACD2 ldrh r0, [r5] lsls r0, 1 strh r0, [r5] _0802ACD2: ldr r0, [r7] adds r0, 0x1 str r0, [r7] _0802ACD8: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802ACE4: .4byte gBattleMons _0802ACE8: .4byte gBattlerAttacker _0802ACEC: .4byte gDisableStructs _0802ACF0: .4byte gCurrentMove _0802ACF4: .4byte gLockedMoves _0802ACF8: .4byte 0xffffefff _0802ACFC: .4byte gDynamicBasePower _0802AD00: .4byte gBattleMoves _0802AD04: .4byte gBattlescriptCurrInstr thumb_func_end atkB3_rolloutdamagecalculation thumb_func_start atkB4_jumpifconfusedandstatmaxed atkB4_jumpifconfusedandstatmaxed: @ 802AD08 push {r4,r5,lr} ldr r5, _0802AD58 @ =gBattleMons ldr r0, _0802AD5C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 adds r3, r1, 0 muls r3, r0 adds r0, r5, 0 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 ldr r4, _0802AD60 @ =gBattlescriptCurrInstr cmp r0, 0 beq _0802AD64 ldr r2, [r4] ldrb r0, [r2, 0x1] adds r0, r3 adds r1, r5, 0 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0xC bne _0802AD64 ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _0802AD6A .align 2, 0 _0802AD58: .4byte gBattleMons _0802AD5C: .4byte gBattlerTarget _0802AD60: .4byte gBattlescriptCurrInstr _0802AD64: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0802AD6A: pop {r4,r5} pop {r0} bx r0 thumb_func_end atkB4_jumpifconfusedandstatmaxed thumb_func_start atkB5_furycuttercalc atkB5_furycuttercalc: @ 802AD70 push {r4,r5,lr} ldr r0, _0802AD98 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802ADAC ldr r2, _0802AD9C @ =gDisableStructs ldr r0, _0802ADA0 @ =gBattlerAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x10] ldr r1, _0802ADA4 @ =gBattlescriptCurrInstr ldr r0, _0802ADA8 @ =BattleScript_MoveMissedPause str r0, [r1] b _0802AE04 .align 2, 0 _0802AD98: .4byte gMoveResultFlags _0802AD9C: .4byte gDisableStructs _0802ADA0: .4byte gBattlerAttacker _0802ADA4: .4byte gBattlescriptCurrInstr _0802ADA8: .4byte BattleScript_MoveMissedPause _0802ADAC: ldr r5, _0802AE0C @ =gDisableStructs ldr r4, _0802AE10 @ =gBattlerAttacker ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r1, r0, r5 ldrb r0, [r1, 0x10] cmp r0, 0x5 beq _0802ADC4 adds r0, 0x1 strb r0, [r1, 0x10] _0802ADC4: ldr r3, _0802AE14 @ =gDynamicBasePower ldr r2, _0802AE18 @ =gBattleMoves ldr r0, _0802AE1C @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r5 ldr r4, _0802AE20 @ =gBattlescriptCurrInstr ldrb r1, [r0, 0x10] cmp r2, r1 bge _0802ADFE adds r1, r3, 0 adds r3, r0, 0 _0802ADF0: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x10] cmp r2, r0 blt _0802ADF0 _0802ADFE: ldr r0, [r4] adds r0, 0x1 str r0, [r4] _0802AE04: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802AE0C: .4byte gDisableStructs _0802AE10: .4byte gBattlerAttacker _0802AE14: .4byte gDynamicBasePower _0802AE18: .4byte gBattleMoves _0802AE1C: .4byte gCurrentMove _0802AE20: .4byte gBattlescriptCurrInstr thumb_func_end atkB5_furycuttercalc thumb_func_start atkB6_happinesstodamagecalculation atkB6_happinesstodamagecalculation: @ 802AE24 push {r4,lr} ldr r2, _0802AE50 @ =gBattleMoves ldr r0, _0802AE54 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x79 bne _0802AE64 ldr r4, _0802AE58 @ =gDynamicBasePower ldr r2, _0802AE5C @ =gBattleMons ldr r0, _0802AE60 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r1, [r0] b _0802AE7A .align 2, 0 _0802AE50: .4byte gBattleMoves _0802AE54: .4byte gCurrentMove _0802AE58: .4byte gDynamicBasePower _0802AE5C: .4byte gBattleMons _0802AE60: .4byte gBattlerAttacker _0802AE64: ldr r4, _0802AE98 @ =gDynamicBasePower ldr r2, _0802AE9C @ =gBattleMons ldr r0, _0802AEA0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r0, [r0] movs r1, 0xFF subs r1, r0 _0802AE7A: lsls r0, r1, 2 adds r0, r1 lsls r0, 1 movs r1, 0x19 bl __divsi3 strh r0, [r4] ldr r1, _0802AEA4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802AE98: .4byte gDynamicBasePower _0802AE9C: .4byte gBattleMons _0802AEA0: .4byte gBattlerAttacker _0802AEA4: .4byte gBattlescriptCurrInstr thumb_func_end atkB6_happinesstodamagecalculation thumb_func_start atkB7_presentdamagecalculation atkB7_presentdamagecalculation: @ 802AEA8 push {r4,lr} bl Random movs r4, 0xFF ands r4, r0 cmp r4, 0x65 bgt _0802AEC4 ldr r1, _0802AEC0 @ =gDynamicBasePower movs r0, 0x28 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AEC0: .4byte gDynamicBasePower _0802AEC4: cmp r4, 0xB1 bgt _0802AED4 ldr r1, _0802AED0 @ =gDynamicBasePower movs r0, 0x50 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AED0: .4byte gDynamicBasePower _0802AED4: cmp r4, 0xCB bgt _0802AEE4 ldr r1, _0802AEE0 @ =gDynamicBasePower movs r0, 0x78 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AEE0: .4byte gDynamicBasePower _0802AEE4: ldr r3, _0802AF10 @ =gBattleMoveDamage ldr r2, _0802AF14 @ =gBattleMons ldr r0, _0802AF18 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r3] cmp r0, 0 bne _0802AF00 movs r0, 0x1 str r0, [r3] _0802AF00: ldr r0, [r3] negs r0, r0 str r0, [r3] _0802AF06: cmp r4, 0xCB bgt _0802AF24 ldr r1, _0802AF1C @ =gBattlescriptCurrInstr ldr r0, _0802AF20 @ =BattleScript_HitFromCritCalc b _0802AF5E .align 2, 0 _0802AF10: .4byte gBattleMoveDamage _0802AF14: .4byte gBattleMons _0802AF18: .4byte gBattlerTarget _0802AF1C: .4byte gBattlescriptCurrInstr _0802AF20: .4byte BattleScript_HitFromCritCalc _0802AF24: ldr r2, _0802AF40 @ =gBattleMons ldr r0, _0802AF44 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0, 0x2C] ldrh r0, [r0, 0x28] cmp r1, r0 bne _0802AF50 ldr r1, _0802AF48 @ =gBattlescriptCurrInstr ldr r0, _0802AF4C @ =BattleScript_AlreadyAtFullHp b _0802AF5E .align 2, 0 _0802AF40: .4byte gBattleMons _0802AF44: .4byte gBattlerTarget _0802AF48: .4byte gBattlescriptCurrInstr _0802AF4C: .4byte BattleScript_AlreadyAtFullHp _0802AF50: ldr r2, _0802AF68 @ =gMoveResultFlags ldrb r1, [r2] movs r0, 0xF7 ands r0, r1 strb r0, [r2] ldr r1, _0802AF6C @ =gBattlescriptCurrInstr ldr r0, _0802AF70 @ =BattleScript_PresentHealTarget _0802AF5E: str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802AF68: .4byte gMoveResultFlags _0802AF6C: .4byte gBattlescriptCurrInstr _0802AF70: .4byte BattleScript_PresentHealTarget thumb_func_end atkB7_presentdamagecalculation thumb_func_start atkB8_setsafeguard atkB8_setsafeguard: @ 802AF74 push {r4-r7,lr} ldr r7, _0802AFA8 @ =gBattlerAttacker ldrb r0, [r7] bl GetBattlerPosition ldr r4, _0802AFAC @ =gSideStatuses movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802AFB8 ldr r2, _0802AFB0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802AFB4 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _0802B000 .align 2, 0 _0802AFA8: .4byte gBattlerAttacker _0802AFAC: .4byte gSideStatuses _0802AFB0: .4byte gMoveResultFlags _0802AFB4: .4byte gBattleCommunication _0802AFB8: ldrb r0, [r7] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x20 orrs r0, r2 strh r0, [r1] ldrb r0, [r7] bl GetBattlerPosition ldr r5, _0802B010 @ =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 movs r4, 0x5 strb r4, [r0, 0x6] ldrb r0, [r7] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r7] strb r1, [r0, 0x7] ldr r0, _0802B014 @ =gBattleCommunication strb r4, [r0, 0x5] _0802B000: ldr r1, _0802B018 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B010: .4byte gSideTimers _0802B014: .4byte gBattleCommunication _0802B018: .4byte gBattlescriptCurrInstr thumb_func_end atkB8_setsafeguard thumb_func_start atkB9_magnitudedamagecalculation atkB9_magnitudedamagecalculation: @ 802B01C push {r4-r7,lr} mov r7, r8 push {r7} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x4 bgt _0802B048 ldr r1, _0802B044 @ =gDynamicBasePower movs r0, 0xA strh r0, [r1] movs r3, 0x4 b _0802B0B4 .align 2, 0 _0802B044: .4byte gDynamicBasePower _0802B048: cmp r3, 0xE bgt _0802B05C ldr r1, _0802B058 @ =gDynamicBasePower movs r0, 0x1E strh r0, [r1] movs r3, 0x5 b _0802B0B4 .align 2, 0 _0802B058: .4byte gDynamicBasePower _0802B05C: cmp r3, 0x22 bgt _0802B070 ldr r1, _0802B06C @ =gDynamicBasePower movs r0, 0x32 strh r0, [r1] movs r3, 0x6 b _0802B0B4 .align 2, 0 _0802B06C: .4byte gDynamicBasePower _0802B070: cmp r3, 0x40 bgt _0802B084 ldr r1, _0802B080 @ =gDynamicBasePower movs r0, 0x46 strh r0, [r1] movs r3, 0x7 b _0802B0B4 .align 2, 0 _0802B080: .4byte gDynamicBasePower _0802B084: cmp r3, 0x54 bgt _0802B098 ldr r1, _0802B094 @ =gDynamicBasePower movs r0, 0x5A strh r0, [r1] movs r3, 0x8 b _0802B0B4 .align 2, 0 _0802B094: .4byte gDynamicBasePower _0802B098: cmp r3, 0x5E bgt _0802B0AC ldr r1, _0802B0A8 @ =gDynamicBasePower movs r0, 0x6E strh r0, [r1] movs r3, 0x9 b _0802B0B4 .align 2, 0 _0802B0A8: .4byte gDynamicBasePower _0802B0AC: ldr r1, _0802B120 @ =gDynamicBasePower movs r0, 0x96 strh r0, [r1] movs r3, 0xA _0802B0B4: ldr r1, _0802B124 @ =gBattleTextBuff1 movs r2, 0 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r0, [r1, 0x2] movs r0, 0x2 strb r0, [r1, 0x3] strb r3, [r1, 0x4] movs r0, 0xFF strb r0, [r1, 0x5] ldr r1, _0802B128 @ =gBattlerTarget strb r2, [r1] ldr r0, _0802B12C @ =gBattlersCount ldrb r3, [r0] adds r6, r1, 0 ldr r0, _0802B130 @ =gBattlescriptCurrInstr mov r8, r0 cmp r2, r3 bcs _0802B10C adds r4, r6, 0 ldr r0, _0802B134 @ =gBattlerAttacker ldrb r5, [r0] ldr r1, _0802B138 @ =gBitTable mov r12, r1 ldr r7, _0802B13C @ =gAbsentBattlerFlags _0802B0EA: ldrb r2, [r4] cmp r2, r5 beq _0802B100 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0802B10C _0802B100: adds r0, r2, 0x1 strb r0, [r4] lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcc _0802B0EA _0802B10C: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B120: .4byte gDynamicBasePower _0802B124: .4byte gBattleTextBuff1 _0802B128: .4byte gBattlerTarget _0802B12C: .4byte gBattlersCount _0802B130: .4byte gBattlescriptCurrInstr _0802B134: .4byte gBattlerAttacker _0802B138: .4byte gBitTable _0802B13C: .4byte gAbsentBattlerFlags thumb_func_end atkB9_magnitudedamagecalculation thumb_func_start atkBA_jumpifnopursuitswitchdmg atkBA_jumpifnopursuitswitchdmg: @ 802B140 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _0802B164 @ =gMultiHitCounter ldrb r0, [r0] cmp r0, 0x1 bne _0802B170 ldr r0, _0802B168 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0802B16C movs r0, 0x1 b _0802B18A .align 2, 0 _0802B164: .4byte gMultiHitCounter _0802B168: .4byte gBattlerAttacker _0802B16C: movs r0, 0 b _0802B18A _0802B170: ldr r0, _0802B184 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0802B188 movs r0, 0x3 b _0802B18A .align 2, 0 _0802B184: .4byte gBattlerAttacker _0802B188: movs r0, 0x2 _0802B18A: bl GetBattlerAtPosition ldr r1, _0802B264 @ =gBattlerTarget strb r0, [r1] ldr r0, _0802B268 @ =gChosenActionByBattler ldr r1, _0802B264 @ =gBattlerTarget ldrb r3, [r1] adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 beq _0802B1A2 b _0802B2A8 _0802B1A2: ldr r5, _0802B26C @ =gBattlerAttacker ldr r0, _0802B270 @ =gBattleStruct ldr r1, [r0] adds r1, r3, r1 ldrb r2, [r5] ldrb r1, [r1, 0xC] cmp r2, r1 bne _0802B2A8 ldr r4, _0802B274 @ =gBattleMons movs r2, 0x58 adds r0, r3, 0 muls r0, r2 adds r1, r4, 0 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x27 ands r0, r1 cmp r0, 0 bne _0802B2A8 ldrb r0, [r5] muls r0, r2 adds r0, r4 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0802B2A8 ldr r0, _0802B278 @ =gDisableStructs lsls r1, r3, 3 subs r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x18] lsls r0, 31 cmp r0, 0 bne _0802B2A8 ldr r0, _0802B27C @ =gChosenMoveByBattler lsls r1, r3, 1 adds r1, r0 ldrh r0, [r1] cmp r0, 0xE4 bne _0802B2A8 movs r1, 0 ldr r0, _0802B280 @ =gBattlersCount ldr r2, _0802B284 @ =gCurrentMove mov r8, r2 ldr r7, _0802B288 @ =gCurrMovePos mov r10, r7 ldr r2, _0802B28C @ =gChosenMovePos mov r9, r2 ldr r7, _0802B290 @ =gHitMarker mov r12, r7 ldrb r2, [r0] cmp r1, r2 bge _0802B22E ldr r6, _0802B294 @ =gBattlerByTurnOrder ldr r5, _0802B264 @ =gBattlerTarget ldr r4, _0802B298 @ =gActionsByTurnOrder movs r3, 0xB adds r2, r0, 0 _0802B218: adds r0, r1, r6 ldrb r0, [r0] ldrb r7, [r5] cmp r0, r7 bne _0802B226 adds r0, r1, r4 strb r3, [r0] _0802B226: adds r1, 0x1 ldrb r0, [r2] cmp r1, r0 blt _0802B218 _0802B22E: movs r0, 0xE4 mov r1, r8 strh r0, [r1] ldr r2, _0802B264 @ =gBattlerTarget ldrb r0, [r2] ldr r7, _0802B270 @ =gBattleStruct ldr r1, [r7] adds r0, r1 adds r0, 0x80 ldrb r0, [r0] mov r1, r9 strb r0, [r1] mov r2, r10 strb r0, [r2] ldr r7, _0802B29C @ =gBattlescriptCurrInstr ldr r0, [r7] adds r0, 0x5 str r0, [r7] movs r0, 0x1 ldr r1, _0802B2A0 @ =gBattleScripting strb r0, [r1, 0x18] mov r2, r12 ldr r0, [r2] ldr r1, _0802B2A4 @ =0xfffffbff ands r0, r1 str r0, [r2] b _0802B2C2 .align 2, 0 _0802B264: .4byte gBattlerTarget _0802B268: .4byte gChosenActionByBattler _0802B26C: .4byte gBattlerAttacker _0802B270: .4byte gBattleStruct _0802B274: .4byte gBattleMons _0802B278: .4byte gDisableStructs _0802B27C: .4byte gChosenMoveByBattler _0802B280: .4byte gBattlersCount _0802B284: .4byte gCurrentMove _0802B288: .4byte gCurrMovePos _0802B28C: .4byte gChosenMovePos _0802B290: .4byte gHitMarker _0802B294: .4byte gBattlerByTurnOrder _0802B298: .4byte gActionsByTurnOrder _0802B29C: .4byte gBattlescriptCurrInstr _0802B2A0: .4byte gBattleScripting _0802B2A4: .4byte 0xfffffbff _0802B2A8: ldr r3, _0802B2D0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B2C2: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B2D0: .4byte gBattlescriptCurrInstr thumb_func_end atkBA_jumpifnopursuitswitchdmg thumb_func_start atkBB_setsunny atkBB_setsunny: @ 802B2D4 push {lr} ldr r2, _0802B2F4 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802B300 ldr r2, _0802B2F8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802B2FC @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _0802B312 .align 2, 0 _0802B2F4: .4byte gBattleWeather _0802B2F8: .4byte gMoveResultFlags _0802B2FC: .4byte gBattleCommunication _0802B300: movs r0, 0x20 strh r0, [r2] ldr r1, _0802B320 @ =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] ldr r0, _0802B324 @ =gWishFutureKnock adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _0802B312: ldr r1, _0802B328 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802B320: .4byte gBattleCommunication _0802B324: .4byte gWishFutureKnock _0802B328: .4byte gBattlescriptCurrInstr thumb_func_end atkBB_setsunny thumb_func_start atkBC_maxattackhalvehp atkBC_maxattackhalvehp: @ 802B32C push {r4,r5,lr} ldr r5, _0802B378 @ =gBattleMons ldr r4, _0802B37C @ =gBattlerAttacker ldrb r0, [r4] movs r3, 0x58 muls r0, r3 adds r2, r0, r5 ldrh r0, [r2, 0x2C] lsrs r1, r0, 1 cmp r1, 0 bne _0802B344 movs r1, 0x1 _0802B344: movs r0, 0x19 ldrsb r0, [r2, r0] cmp r0, 0xB bgt _0802B388 ldrh r0, [r2, 0x28] cmp r0, r1 bls _0802B388 movs r0, 0xC strb r0, [r2, 0x19] ldr r1, _0802B380 @ =gBattleMoveDamage ldrb r0, [r4] muls r0, r3 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802B36C movs r0, 0x1 str r0, [r1] _0802B36C: ldr r1, _0802B384 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802B3A2 .align 2, 0 _0802B378: .4byte gBattleMons _0802B37C: .4byte gBattlerAttacker _0802B380: .4byte gBattleMoveDamage _0802B384: .4byte gBattlescriptCurrInstr _0802B388: ldr r3, _0802B3A8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B3A2: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802B3A8: .4byte gBattlescriptCurrInstr thumb_func_end atkBC_maxattackhalvehp thumb_func_start atkBD_copyfoestats atkBD_copyfoestats: @ 802B3AC push {r4-r7,lr} movs r2, 0 ldr r7, _0802B3E4 @ =gBattlescriptCurrInstr ldr r6, _0802B3E8 @ =gBattlerAttacker movs r4, 0x58 ldr r3, _0802B3EC @ =gUnknown_2023BFC ldr r5, _0802B3F0 @ =gBattlerTarget _0802B3BA: ldrb r0, [r6] adds r1, r0, 0 muls r1, r4 adds r1, r2, r1 adds r1, r3 ldrb r0, [r5] muls r0, r4 adds r0, r2, r0 adds r0, r3 ldrb r0, [r0] strb r0, [r1] adds r2, 0x1 cmp r2, 0x7 ble _0802B3BA ldr r0, [r7] adds r0, 0x5 str r0, [r7] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B3E4: .4byte gBattlescriptCurrInstr _0802B3E8: .4byte gBattlerAttacker _0802B3EC: .4byte gUnknown_2023BFC _0802B3F0: .4byte gBattlerTarget thumb_func_end atkBD_copyfoestats thumb_func_start atkBE_rapidspinfree atkBE_rapidspinfree: @ 802B3F4 push {r4-r6,lr} ldr r1, _0802B464 @ =gBattleMons ldr r5, _0802B468 @ =gBattlerAttacker ldrb r2, [r5] movs r6, 0x58 adds r0, r2, 0 muls r0, r6 adds r4, r1, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xE0 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0802B488 ldr r1, _0802B46C @ =gBattleScripting ldr r3, _0802B470 @ =gBattlerTarget ldrb r0, [r3] strb r0, [r1, 0x17] ldrb r0, [r5] adds r1, r0, 0 muls r1, r6 adds r1, r4 ldr r0, [r1] ldr r2, _0802B474 @ =0xffff1fff ands r0, r2 str r0, [r1] ldrb r0, [r5] ldr r1, _0802B478 @ =gBattleStruct ldr r2, [r1] adds r0, r2 ldrb r0, [r0, 0x14] strb r0, [r3] ldr r1, _0802B47C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x4] strb r0, [r1, 0x2] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x5] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] bl BattleScriptPushCursor ldr r1, _0802B480 @ =gBattlescriptCurrInstr ldr r0, _0802B484 @ =BattleScript_WrapFree b _0802B532 .align 2, 0 _0802B464: .4byte gBattleMons _0802B468: .4byte gBattlerAttacker _0802B46C: .4byte gBattleScripting _0802B470: .4byte gBattlerTarget _0802B474: .4byte 0xffff1fff _0802B478: .4byte gBattleStruct _0802B47C: .4byte gBattleTextBuff1 _0802B480: .4byte gBattlescriptCurrInstr _0802B484: .4byte BattleScript_WrapFree _0802B488: ldr r4, _0802B4BC @ =gStatuses3 lsls r0, r2, 2 adds r3, r0, r4 ldr r1, [r3] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0802B4C8 movs r0, 0x5 negs r0, r0 ands r1, r0 str r1, [r3] ldrb r1, [r5] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x4 negs r2, r2 ands r0, r2 str r0, [r1] bl BattleScriptPushCursor ldr r1, _0802B4C0 @ =gBattlescriptCurrInstr ldr r0, _0802B4C4 @ =BattleScript_LeechSeedFree b _0802B532 .align 2, 0 _0802B4BC: .4byte gStatuses3 _0802B4C0: .4byte gBattlescriptCurrInstr _0802B4C4: .4byte BattleScript_LeechSeedFree _0802B4C8: adds r0, r2, 0 bl GetBattlerSide ldr r4, _0802B518 @ =gSideStatuses lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802B52C ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r2, [r0] ldr r1, _0802B51C @ =0x0000ffef ands r1, r2 movs r4, 0 strh r1, [r0] ldrb r0, [r5] bl GetBattlerSide ldr r2, _0802B520 @ =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 strb r4, [r1, 0xA] bl BattleScriptPushCursor ldr r1, _0802B524 @ =gBattlescriptCurrInstr ldr r0, _0802B528 @ =BattleScript_SpikesFree b _0802B532 .align 2, 0 _0802B518: .4byte gSideStatuses _0802B51C: .4byte 0x0000ffef _0802B520: .4byte gSideTimers _0802B524: .4byte gBattlescriptCurrInstr _0802B528: .4byte BattleScript_SpikesFree _0802B52C: ldr r1, _0802B53C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _0802B532: str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802B53C: .4byte gBattlescriptCurrInstr thumb_func_end atkBE_rapidspinfree thumb_func_start atkBF_setdefensecurlbit atkBF_setdefensecurlbit: @ 802B540 ldr r1, _0802B564 @ =gBattleMons ldr r0, _0802B568 @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 23 orrs r0, r1 str r0, [r2] ldr r1, _0802B56C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802B564: .4byte gBattleMons _0802B568: .4byte gBattlerAttacker _0802B56C: .4byte gBattlescriptCurrInstr thumb_func_end atkBF_setdefensecurlbit thumb_func_start atkC0_recoverbasedonsunlight atkC0_recoverbasedonsunlight: @ 802B570 push {r4-r7,lr} sub sp, 0x4 ldr r1, _0802B5DC @ =gBattlerTarget ldr r5, _0802B5E0 @ =gBattlerAttacker ldrb r0, [r5] strb r0, [r1] ldr r7, _0802B5E4 @ =gBattleMons ldrb r0, [r5] movs r6, 0x58 muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 beq _0802B650 ldr r4, _0802B5E8 @ =gBattleWeather ldrh r0, [r4] cmp r0, 0 beq _0802B5C2 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0802B5C2 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _0802B5F0 _0802B5C2: ldr r3, _0802B5EC @ =gBattleMoveDamage ldr r2, _0802B5E4 @ =gBattleMons ldr r0, _0802B5E0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r3] adds r1, r3, 0 b _0802B62A .align 2, 0 _0802B5DC: .4byte gBattlerTarget _0802B5E0: .4byte gBattlerAttacker _0802B5E4: .4byte gBattleMons _0802B5E8: .4byte gBattleWeather _0802B5EC: .4byte gBattleMoveDamage _0802B5F0: ldrh r1, [r4] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802B61C ldr r4, _0802B618 @ =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x2C] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 movs r1, 0x1E bl __divsi3 str r0, [r4] adds r1, r4, 0 b _0802B62A .align 2, 0 _0802B618: .4byte gBattleMoveDamage _0802B61C: ldr r1, _0802B648 @ =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r1] _0802B62A: adds r2, r1, 0 ldr r0, [r2] cmp r0, 0 bne _0802B636 movs r0, 0x1 str r0, [r2] _0802B636: ldr r0, [r1] negs r0, r0 str r0, [r1] ldr r1, _0802B64C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802B66A .align 2, 0 _0802B648: .4byte gBattleMoveDamage _0802B64C: .4byte gBattlescriptCurrInstr _0802B650: ldr r3, _0802B674 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B66A: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B674: .4byte gBattlescriptCurrInstr thumb_func_end atkC0_recoverbasedonsunlight thumb_func_start atkC1_hiddenpowercalc atkC1_hiddenpowercalc: @ 802B678 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r2, _0802B760 @ =gBattleMons ldr r0, _0802B764 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrb r0, [r1, 0x14] mov r9, r0 mov r7, r9 lsls r7, 27 adds r0, r7, 0 lsrs r0, 27 mov r9, r0 movs r4, 0x2 mov r2, r9 ands r2, r4 asrs r2, 1 ldrh r7, [r1, 0x14] mov r8, r7 mov r0, r8 lsls r0, 22 lsrs r0, 27 mov r8, r0 ands r0, r4 orrs r2, r0 ldrb r6, [r1, 0x15] lsls r6, 25 lsrs r6, 27 adds r0, r6, 0 ands r0, r4 lsls r0, 1 orrs r2, r0 ldr r5, [r1, 0x14] lsls r5, 12 lsrs r5, 27 adds r0, r5, 0 ands r0, r4 lsls r0, 2 orrs r2, r0 ldrh r3, [r1, 0x16] lsls r3, 23 lsrs r3, 27 adds r0, r3, 0 ands r0, r4 lsls r0, 3 orrs r2, r0 ldrb r1, [r1, 0x17] lsls r1, 26 lsrs r1, 27 adds r0, r1, 0 ands r0, r4 lsls r0, 4 orrs r2, r0 movs r0, 0x1 adds r4, r0, 0 mov r7, r9 ands r4, r7 mov r7, r8 ands r7, r0 lsls r7, 1 orrs r4, r7 ands r6, r0 lsls r6, 2 orrs r4, r6 ands r5, r0 lsls r5, 3 orrs r4, r5 ands r3, r0 lsls r3, 4 orrs r4, r3 ands r1, r0 lsls r1, 5 orrs r4, r1 ldr r5, _0802B768 @ =gDynamicBasePower lsls r0, r2, 2 adds r0, r2 lsls r0, 3 movs r1, 0x3F bl __divsi3 adds r0, 0x1E strh r0, [r5] ldr r6, _0802B76C @ =gBattleStruct ldr r5, [r6] lsls r0, r4, 4 subs r0, r4 movs r1, 0x3F bl __divsi3 adds r0, 0x1 strb r0, [r5, 0x13] ldr r1, [r6] ldrb r0, [r1, 0x13] cmp r0, 0x8 bls _0802B742 adds r0, 0x1 strb r0, [r1, 0x13] _0802B742: ldr r2, [r6] ldrb r0, [r2, 0x13] movs r1, 0xC0 orrs r0, r1 strb r0, [r2, 0x13] ldr r1, _0802B770 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B760: .4byte gBattleMons _0802B764: .4byte gBattlerAttacker _0802B768: .4byte gDynamicBasePower _0802B76C: .4byte gBattleStruct _0802B770: .4byte gBattlescriptCurrInstr thumb_func_end atkC1_hiddenpowercalc thumb_func_start atkC2_selectfirstvalidtarget atkC2_selectfirstvalidtarget: @ 802B774 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _0802B7D0 @ =gBattlerTarget movs r1, 0 strb r1, [r0] ldr r1, _0802B7D4 @ =gBattlersCount ldrb r1, [r1] adds r6, r0, 0 ldr r0, _0802B7D8 @ =gBattlescriptCurrInstr mov r8, r0 cmp r1, 0 beq _0802B7BE adds r3, r6, 0 ldr r0, _0802B7DC @ =gBattlerAttacker ldrb r5, [r0] ldr r0, _0802B7E0 @ =gBitTable mov r12, r0 adds r4, r1, 0 ldr r7, _0802B7E4 @ =gAbsentBattlerFlags _0802B79C: ldrb r2, [r3] cmp r2, r5 beq _0802B7B2 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0802B7BE _0802B7B2: adds r0, r2, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, r4 bcc _0802B79C _0802B7BE: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B7D0: .4byte gBattlerTarget _0802B7D4: .4byte gBattlersCount _0802B7D8: .4byte gBattlescriptCurrInstr _0802B7DC: .4byte gBattlerAttacker _0802B7E0: .4byte gBitTable _0802B7E4: .4byte gAbsentBattlerFlags thumb_func_end atkC2_selectfirstvalidtarget thumb_func_start atkC3_trysetfutureattack atkC3_trysetfutureattack: @ 802B7E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 ldr r0, _0802B820 @ =gWishFutureKnock mov r8, r0 ldr r7, _0802B824 @ =gBattlerTarget ldrb r1, [r7] adds r0, r1, r0 ldrb r6, [r0] cmp r6, 0 beq _0802B82C ldr r3, _0802B828 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802B8F6 .align 2, 0 _0802B820: .4byte gWishFutureKnock _0802B824: .4byte gBattlerTarget _0802B828: .4byte gBattlescriptCurrInstr _0802B82C: lsls r1, 1 mov r0, r8 adds r0, 0x18 adds r1, r0 ldr r2, _0802B8CC @ =gCurrentMove mov r9, r2 ldrh r0, [r2] strh r0, [r1] mov r0, r8 adds r0, 0x4 ldrb r4, [r7] adds r0, r4 ldr r5, _0802B8D0 @ =gBattlerAttacker ldrb r1, [r5] strb r1, [r0] ldrb r0, [r7] add r0, r8 movs r1, 0x3 strb r1, [r0] ldr r4, _0802B8D4 @ =gSideStatuses ldrb r0, [r7] bl GetBattlerPosition movs r1, 0x1 mov r10, r1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldrb r0, [r5] movs r4, 0x58 muls r0, r4 ldr r2, _0802B8D8 @ =gBattleMons adds r0, r2 ldrb r1, [r7] muls r1, r4 adds r1, r2 mov r4, r9 ldrh r2, [r4] str r6, [sp] str r6, [sp, 0x4] ldrb r4, [r5] str r4, [sp, 0x8] ldrb r4, [r7] str r4, [sp, 0xC] bl CalculateBaseDamage ldrb r1, [r7] lsls r1, 2 mov r2, r8 adds r2, 0x8 adds r1, r2 str r0, [r1] ldr r1, _0802B8DC @ =gProtectStructs ldrb r0, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0802B8BA ldrb r4, [r7] lsls r4, 2 adds r4, r2 ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _0802B8BA: mov r0, r9 ldrh r1, [r0] ldr r0, _0802B8E0 @ =0x00000161 cmp r1, r0 bne _0802B8E8 ldr r0, _0802B8E4 @ =gBattleCommunication mov r1, r10 strb r1, [r0, 0x5] b _0802B8EE .align 2, 0 _0802B8CC: .4byte gCurrentMove _0802B8D0: .4byte gBattlerAttacker _0802B8D4: .4byte gSideStatuses _0802B8D8: .4byte gBattleMons _0802B8DC: .4byte gProtectStructs _0802B8E0: .4byte 0x00000161 _0802B8E4: .4byte gBattleCommunication _0802B8E8: ldr r1, _0802B908 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] _0802B8EE: ldr r1, _0802B90C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802B8F6: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B908: .4byte gBattleCommunication _0802B90C: .4byte gBattlescriptCurrInstr thumb_func_end atkC3_trysetfutureattack thumb_func_start atkC4_trydobeatup atkC4_trydobeatup: @ 802B910 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802B954 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 ldr r7, _0802B958 @ =gEnemyParty cmp r0, 0 bne _0802B92A ldr r7, _0802B95C @ =gPlayerParty _0802B92A: ldr r2, _0802B960 @ =gBattleMons ldr r0, _0802B964 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0802B96C ldr r3, _0802B968 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 _0802B954: .4byte gBattlerAttacker _0802B958: .4byte gEnemyParty _0802B95C: .4byte gPlayerParty _0802B960: .4byte gBattleMons _0802B964: .4byte gBattlerTarget _0802B968: .4byte gBattlescriptCurrInstr _0802B96C: ldr r6, _0802BAA8 @ =gBattleCommunication ldrb r0, [r6] mov r8, r0 cmp r0, 0x5 bls _0802B978 b _0802BAD4 _0802B978: adds r4, r6, 0 movs r5, 0x64 _0802B97C: ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0802B9C0 ldrb r0, [r6] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _0802B9C0 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0802B9C0 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x37 bl GetMonData cmp r0, 0 beq _0802B9D0 _0802B9C0: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] adds r6, r4, 0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bls _0802B97C _0802B9D0: ldr r1, _0802BAA8 @ =gBattleCommunication mov r9, r1 ldrb r2, [r1] cmp r2, 0x5 bhi _0802BAD4 ldr r1, _0802BAAC @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r6, _0802BAB0 @ =gBattlerAttacker ldrb r0, [r6] strb r0, [r1, 0x2] strb r2, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802BAB4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x9 str r0, [r1] ldr r2, _0802BAB8 @ =gBattleMoveDamage mov r8, r2 ldr r5, _0802BABC @ =gBaseStats mov r1, r9 ldrb r0, [r1] movs r4, 0x64 muls r0, r4 adds r0, r7, r0 movs r1, 0xB bl GetMonData lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrb r3, [r1, 0x1] mov r2, r8 str r3, [r2] ldr r2, _0802BAC0 @ =gBattleMoves ldr r0, _0802BAC4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] muls r0, r3 mov r1, r8 str r0, [r1] mov r2, r9 ldrb r0, [r2] muls r0, r4 adds r0, r7, r0 movs r1, 0x38 bl GetMonData lsls r0, 1 movs r1, 0x5 bl __udivsi3 adds r0, 0x2 mov r2, r8 ldr r1, [r2] muls r0, r1 str r0, [r2] ldr r3, _0802BAC8 @ =gBattleMons ldr r1, _0802BACC @ =gBattlerTarget ldrb r2, [r1] movs r1, 0x58 muls r1, r2 adds r1, r3 ldrh r2, [r1] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r5 ldrb r1, [r1, 0x2] bl __divsi3 mov r1, r8 str r0, [r1] movs r1, 0x32 bl __divsi3 adds r2, r0, 0x2 mov r0, r8 str r2, [r0] ldr r1, _0802BAD0 @ =gProtectStructs ldrb r0, [r6] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0802BA9C lsls r0, r2, 4 subs r0, r2 movs r1, 0xA bl __divsi3 mov r1, r8 str r0, [r1] _0802BA9C: mov r2, r9 ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] b _0802BB0E .align 2, 0 _0802BAA8: .4byte gBattleCommunication _0802BAAC: .4byte gBattleTextBuff1 _0802BAB0: .4byte gBattlerAttacker _0802BAB4: .4byte gBattlescriptCurrInstr _0802BAB8: .4byte gBattleMoveDamage _0802BABC: .4byte gBaseStats _0802BAC0: .4byte gBattleMoves _0802BAC4: .4byte gCurrentMove _0802BAC8: .4byte gBattleMons _0802BACC: .4byte gBattlerTarget _0802BAD0: .4byte gProtectStructs _0802BAD4: mov r0, r8 cmp r0, 0 beq _0802BAF4 ldr r3, _0802BAF0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 _0802BAF0: .4byte gBattlescriptCurrInstr _0802BAF4: ldr r3, _0802BB1C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x8] _0802BB08: lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BB0E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802BB1C: .4byte gBattlescriptCurrInstr thumb_func_end atkC4_trydobeatup thumb_func_start atkC5_setsemiinvulnerablebit atkC5_setsemiinvulnerablebit: @ 802BB20 push {lr} ldr r0, _0802BB34 @ =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _0802BB60 cmp r1, 0x5B bgt _0802BB38 cmp r1, 0x13 beq _0802BB44 b _0802BB8C .align 2, 0 _0802BB34: .4byte gCurrentMove _0802BB38: ldr r0, _0802BB54 @ =0x00000123 cmp r1, r0 beq _0802BB78 adds r0, 0x31 cmp r1, r0 bne _0802BB8C _0802BB44: ldr r2, _0802BB58 @ =gStatuses3 ldr r0, _0802BB5C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x40 b _0802BB88 .align 2, 0 _0802BB54: .4byte 0x00000123 _0802BB58: .4byte gStatuses3 _0802BB5C: .4byte gBattlerAttacker _0802BB60: ldr r2, _0802BB70 @ =gStatuses3 ldr r0, _0802BB74 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 b _0802BB88 .align 2, 0 _0802BB70: .4byte gStatuses3 _0802BB74: .4byte gBattlerAttacker _0802BB78: ldr r2, _0802BB98 @ =gStatuses3 ldr r0, _0802BB9C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 11 _0802BB88: orrs r0, r2 str r0, [r1] _0802BB8C: ldr r1, _0802BBA0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BB98: .4byte gStatuses3 _0802BB9C: .4byte gBattlerAttacker _0802BBA0: .4byte gBattlescriptCurrInstr thumb_func_end atkC5_setsemiinvulnerablebit thumb_func_start atkC6_clearsemiinvulnerablebit atkC6_clearsemiinvulnerablebit: @ 802BBA4 push {lr} ldr r0, _0802BBB8 @ =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _0802BBE8 cmp r1, 0x5B bgt _0802BBBC cmp r1, 0x13 beq _0802BBC8 b _0802BC16 .align 2, 0 _0802BBB8: .4byte gCurrentMove _0802BBBC: ldr r0, _0802BBDC @ =0x00000123 cmp r1, r0 beq _0802BC04 adds r0, 0x31 cmp r1, r0 bne _0802BC16 _0802BBC8: ldr r2, _0802BBE0 @ =gStatuses3 ldr r0, _0802BBE4 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x41 negs r2, r2 b _0802BC12 .align 2, 0 _0802BBDC: .4byte 0x00000123 _0802BBE0: .4byte gStatuses3 _0802BBE4: .4byte gBattlerAttacker _0802BBE8: ldr r2, _0802BBFC @ =gStatuses3 ldr r0, _0802BC00 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x81 negs r2, r2 b _0802BC12 .align 2, 0 _0802BBFC: .4byte gStatuses3 _0802BC00: .4byte gBattlerAttacker _0802BC04: ldr r2, _0802BC24 @ =gStatuses3 ldr r0, _0802BC28 @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] ldr r2, _0802BC2C @ =0xfffbffff _0802BC12: ands r0, r2 str r0, [r1] _0802BC16: ldr r1, _0802BC30 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BC24: .4byte gStatuses3 _0802BC28: .4byte gBattlerAttacker _0802BC2C: .4byte 0xfffbffff _0802BC30: .4byte gBattlescriptCurrInstr thumb_func_end atkC6_clearsemiinvulnerablebit thumb_func_start atkC7_setminimize atkC7_setminimize: @ 802BC34 push {lr} ldr r0, _0802BC64 @ =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0802BC58 ldr r2, _0802BC68 @ =gStatuses3 ldr r0, _0802BC6C @ =gBattlerAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 1 orrs r0, r2 str r0, [r1] _0802BC58: ldr r1, _0802BC70 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BC64: .4byte gHitMarker _0802BC68: .4byte gStatuses3 _0802BC6C: .4byte gBattlerAttacker _0802BC70: .4byte gBattlescriptCurrInstr thumb_func_end atkC7_setminimize thumb_func_start atkC8_sethail atkC8_sethail: @ 802BC74 push {lr} ldr r3, _0802BC98 @ =gBattleWeather ldrh r1, [r3] movs r2, 0x80 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _0802BCA4 ldr r2, _0802BC9C @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802BCA0 @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _0802BCB2 .align 2, 0 _0802BC98: .4byte gBattleWeather _0802BC9C: .4byte gMoveResultFlags _0802BCA0: .4byte gBattleCommunication _0802BCA4: strh r2, [r3] ldr r0, _0802BCC0 @ =gBattleCommunication movs r1, 0x5 strb r1, [r0, 0x5] ldr r0, _0802BCC4 @ =gWishFutureKnock adds r0, 0x28 strb r1, [r0] _0802BCB2: ldr r1, _0802BCC8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BCC0: .4byte gBattleCommunication _0802BCC4: .4byte gWishFutureKnock _0802BCC8: .4byte gBattlescriptCurrInstr thumb_func_end atkC8_sethail thumb_func_start atkC9_jumpifattackandspecialattackcannotfall atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC push {r4,lr} ldr r2, _0802BD10 @ =gBattleMons ldr r0, _0802BD14 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 movs r0, 0x19 ldrsb r0, [r1, r0] adds r3, r2, 0 cmp r0, 0 bne _0802BD20 movs r0, 0x1C ldrsb r0, [r1, r0] cmp r0, 0 bne _0802BD20 ldr r0, _0802BD18 @ =gBattleCommunication ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _0802BD20 ldr r3, _0802BD1C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802BD4C .align 2, 0 _0802BD10: .4byte gBattleMons _0802BD14: .4byte gBattlerTarget _0802BD18: .4byte gBattleCommunication _0802BD1C: .4byte gBattlescriptCurrInstr _0802BD20: ldr r4, _0802BD54 @ =gActiveBattler ldr r0, _0802BD58 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r4] ldr r2, _0802BD5C @ =gBattleMoveDamage ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0, 0x28] str r0, [r2] ldr r1, _0802BD60 @ =0x00007fff movs r0, 0 bl BtlController_EmitHealthBarUpdate ldrb r0, [r4] bl MarkBattlerForControllerExec ldr r1, _0802BD64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802BD4C: pop {r4} pop {r0} bx r0 .align 2, 0 _0802BD54: .4byte gActiveBattler _0802BD58: .4byte gBattlerAttacker _0802BD5C: .4byte gBattleMoveDamage _0802BD60: .4byte 0x00007fff _0802BD64: .4byte gBattlescriptCurrInstr thumb_func_end atkC9_jumpifattackandspecialattackcannotfall thumb_func_start atkCA_setforcedtarget atkCA_setforcedtarget: @ 802BD68 push {r4,r5,lr} ldr r4, _0802BDA8 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerSide ldr r5, _0802BDAC @ =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 movs r0, 0x1 strb r0, [r1, 0x8] ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r4] strb r0, [r1, 0x9] ldr r1, _0802BDB0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802BDA8: .4byte gBattlerAttacker _0802BDAC: .4byte gSideTimers _0802BDB0: .4byte gBattlescriptCurrInstr thumb_func_end atkCA_setforcedtarget thumb_func_start atkCB_setcharge atkCB_setcharge: @ 802BDB4 push {r4,lr} ldr r0, _0802BE08 @ =gStatuses3 ldr r3, _0802BE0C @ =gBattlerAttacker ldrb r1, [r3] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 2 orrs r0, r2 str r0, [r1] ldr r4, _0802BE10 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x12] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x12] ldr r1, _0802BE14 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802BE08: .4byte gStatuses3 _0802BE0C: .4byte gBattlerAttacker _0802BE10: .4byte gDisableStructs _0802BE14: .4byte gBattlescriptCurrInstr thumb_func_end atkCB_setcharge thumb_func_start atkCC_callterrainattack atkCC_callterrainattack: @ 802BE18 push {r4,lr} ldr r2, _0802BE68 @ =gHitMarker ldr r0, [r2] ldr r1, _0802BE6C @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, _0802BE70 @ =gCurrentMove ldr r1, _0802BE74 @ =sNaturePowerMoves ldr r0, _0802BE78 @ =gBattleTerrain ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802BE7C @ =gBattlerTarget strb r0, [r1] ldr r3, _0802BE80 @ =gBattleScriptsForMoveEffects ldr r2, _0802BE84 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] bl BattleScriptPush ldr r1, _0802BE88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802BE68: .4byte gHitMarker _0802BE6C: .4byte 0xfffffbff _0802BE70: .4byte gCurrentMove _0802BE74: .4byte sNaturePowerMoves _0802BE78: .4byte gBattleTerrain _0802BE7C: .4byte gBattlerTarget _0802BE80: .4byte gBattleScriptsForMoveEffects _0802BE84: .4byte gBattleMoves _0802BE88: .4byte gBattlescriptCurrInstr thumb_func_end atkCC_callterrainattack thumb_func_start atkCD_cureifburnedparalysedorpoisoned atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C push {r4-r6,lr} sub sp, 0x4 ldr r1, _0802BED8 @ =gBattleMons ldr r3, _0802BEDC @ =gBattlerAttacker ldrb r0, [r3] movs r6, 0x58 muls r0, r6 adds r5, r1, 0 adds r5, 0x4C adds r2, r0, r5 ldr r0, [r2] movs r1, 0xD8 ands r0, r1 cmp r0, 0 beq _0802BEE8 movs r0, 0 str r0, [r2] ldr r1, _0802BEE0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r4, _0802BEE4 @ =gActiveBattler ldrb r0, [r3] strb r0, [r4] ldrb r0, [r4] muls r0, r6 adds r0, r5 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBattlerForControllerExec b _0802BF02 .align 2, 0 _0802BED8: .4byte gBattleMons _0802BEDC: .4byte gBattlerAttacker _0802BEE0: .4byte gBattlescriptCurrInstr _0802BEE4: .4byte gActiveBattler _0802BEE8: ldr r3, _0802BF0C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BF02: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802BF0C: .4byte gBattlescriptCurrInstr thumb_func_end atkCD_cureifburnedparalysedorpoisoned thumb_func_start atkCE_settorment atkCE_settorment: @ 802BF10 push {lr} ldr r1, _0802BF48 @ =gBattleMons ldr r0, _0802BF4C @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r2, 0x80 lsls r2, 24 cmp r1, 0 bge _0802BF54 ldr r3, _0802BF50 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802BF60 .align 2, 0 _0802BF48: .4byte gBattleMons _0802BF4C: .4byte gBattlerTarget _0802BF50: .4byte gBattlescriptCurrInstr _0802BF54: orrs r1, r2 str r1, [r0] ldr r1, _0802BF64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802BF60: pop {r0} bx r0 .align 2, 0 _0802BF64: .4byte gBattlescriptCurrInstr thumb_func_end atkCE_settorment thumb_func_start atkCF_jumpifnodamage atkCF_jumpifnodamage: @ 802BF68 push {lr} ldr r2, _0802BF94 @ =gProtectStructs ldr r0, _0802BF98 @ =gBattlerAttacker ldrb r0, [r0] lsls r1, r0, 4 adds r0, r2, 0x4 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _0802BF88 adds r0, r2, 0 adds r0, 0x8 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _0802BFA0 _0802BF88: ldr r1, _0802BF9C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802BFBA .align 2, 0 _0802BF94: .4byte gProtectStructs _0802BF98: .4byte gBattlerAttacker _0802BF9C: .4byte gBattlescriptCurrInstr _0802BFA0: ldr r3, _0802BFC0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BFBA: pop {r0} bx r0 .align 2, 0 _0802BFC0: .4byte gBattlescriptCurrInstr thumb_func_end atkCF_jumpifnodamage thumb_func_start atkD0_settaunt atkD0_settaunt: @ 802BFC4 push {r4,lr} ldr r4, _0802C008 @ =gDisableStructs ldr r3, _0802C00C @ =gBattlerTarget ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r2, r1, r4 ldrb r1, [r2, 0x13] lsls r0, r1, 28 cmp r0, 0 bne _0802C014 movs r0, 0x10 negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x13] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x13] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x13] ldr r1, _0802C010 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C02E .align 2, 0 _0802C008: .4byte gDisableStructs _0802C00C: .4byte gBattlerTarget _0802C010: .4byte gBattlescriptCurrInstr _0802C014: ldr r3, _0802C034 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C02E: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C034: .4byte gBattlescriptCurrInstr thumb_func_end atkD0_settaunt thumb_func_start atkD1_trysethelpinghand atkD1_trysethelpinghand: @ 802C038 push {r4,lr} ldr r4, _0802C0A0 @ =gBattlerAttacker ldrb r0, [r4] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r3, _0802C0A4 @ =gBattlerTarget strb r0, [r3] ldr r0, _0802C0A8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802C0BC ldr r0, _0802C0AC @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802C0B0 @ =gBitTable ldrb r3, [r3] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C0BC ldr r1, _0802C0B4 @ =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 blt _0802C0BC lsls r0, r3, 4 adds r2, r0, r1 ldrb r1, [r2] lsls r0, r1, 28 cmp r0, 0 blt _0802C0BC movs r0, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, _0802C0B8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C0D6 .align 2, 0 _0802C0A0: .4byte gBattlerAttacker _0802C0A4: .4byte gBattlerTarget _0802C0A8: .4byte gBattleTypeFlags _0802C0AC: .4byte gAbsentBattlerFlags _0802C0B0: .4byte gBitTable _0802C0B4: .4byte gProtectStructs _0802C0B8: .4byte gBattlescriptCurrInstr _0802C0BC: ldr r3, _0802C0DC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C0D6: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C0DC: .4byte gBattlescriptCurrInstr thumb_func_end atkD1_trysethelpinghand thumb_func_start atkD2_tryswapitems atkD2_tryswapitems: @ 802C0E0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, _0802C1FC @ =gBattleTypeFlags ldr r0, [r4] movs r1, 0x80 lsls r1, 12 ands r0, r1 cmp r0, 0 bne _0802C1DE ldr r0, _0802C200 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0802C120 ldr r0, [r4] ldr r1, _0802C204 @ =0x00000902 ands r0, r1 cmp r0, 0 bne _0802C120 ldr r0, _0802C208 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _0802C1DE _0802C120: ldr r6, _0802C200 @ =gBattlerAttacker ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 lsrs r4, r0, 24 ldr r7, _0802C20C @ =gBattlerTarget ldrb r0, [r7] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0802C1FC @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _0802C204 @ =0x00000902 ands r0, r1 cmp r0, 0 bne _0802C18A ldr r0, _0802C208 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 beq _0802C18A ldr r0, _0802C210 @ =gWishFutureKnock adds r2, r0, 0 adds r2, 0x29 adds r0, r4, r2 ldrb r1, [r0] ldr r4, _0802C214 @ =gBitTable ldr r3, _0802C218 @ =gBattlerPartyIndexes ldrb r0, [r6] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C1DE adds r0, r5, r2 ldrb r1, [r0] ldrb r0, [r7] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C1DE _0802C18A: ldr r0, _0802C21C @ =gBattleMons mov r8, r0 ldr r1, _0802C200 @ =gBattlerAttacker ldrb r4, [r1] movs r5, 0x58 adds r0, r4, 0 muls r0, r5 add r0, r8 mov r9, r0 ldrh r3, [r0, 0x2E] adds r1, r3, 0 cmp r1, 0 bne _0802C1B2 ldr r0, _0802C20C @ =gBattlerTarget ldrb r0, [r0] muls r0, r5 add r0, r8 ldrh r0, [r0, 0x2E] cmp r0, 0 beq _0802C1DE _0802C1B2: cmp r1, 0xAF beq _0802C1DE ldr r7, _0802C20C @ =gBattlerTarget ldrb r0, [r7] muls r0, r5 mov r2, r8 adds r1, r0, r2 ldrh r2, [r1, 0x2E] cmp r2, 0xAF beq _0802C1DE adds r0, r3, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bls _0802C1DE adds r0, r2, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bhi _0802C224 _0802C1DE: ldr r3, _0802C220 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C37A .align 2, 0 _0802C1FC: .4byte gBattleTypeFlags _0802C200: .4byte gBattlerAttacker _0802C204: .4byte 0x00000902 _0802C208: .4byte gTrainerBattleOpponent_A _0802C20C: .4byte gBattlerTarget _0802C210: .4byte gWishFutureKnock _0802C214: .4byte gBitTable _0802C218: .4byte gBattlerPartyIndexes _0802C21C: .4byte gBattleMons _0802C220: .4byte gBattlescriptCurrInstr _0802C224: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _0802C258 ldr r1, _0802C24C @ =gBattlescriptCurrInstr ldr r0, _0802C250 @ =BattleScript_StickyHoldActivates str r0, [r1] ldr r1, _0802C254 @ =gLastUsedAbility ldrb r0, [r7] muls r0, r5 add r0, r8 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] bl RecordAbilityBattle b _0802C37A .align 2, 0 _0802C24C: .4byte gBattlescriptCurrInstr _0802C250: .4byte BattleScript_StickyHoldActivates _0802C254: .4byte gLastUsedAbility _0802C258: ldr r3, _0802C344 @ =gBattleStruct mov r10, r3 lsls r0, r4, 1 adds r0, 0xD0 ldr r1, [r3] adds r6, r1, r0 mov r0, r9 ldrh r0, [r0, 0x2E] mov r9, r0 strh r2, [r6] ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] muls r0, r5 add r0, r8 movs r1, 0 strh r1, [r0, 0x2E] ldrb r0, [r7] muls r0, r5 add r0, r8 mov r2, r9 strh r2, [r0, 0x2E] ldr r4, _0802C34C @ =gActiveBattler ldr r3, _0802C348 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r4] str r6, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl BtlController_EmitSetMonData ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] bl MarkBattlerForControllerExec ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] muls r0, r5 mov r1, r8 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBattlerForControllerExec ldrb r0, [r7] mov r2, r10 ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 movs r3, 0 strb r3, [r0] ldrb r0, [r7] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r3, [r0] ldr r1, _0802C348 @ =gBattlerAttacker ldrb r0, [r1] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r3, [r0] ldr r2, _0802C348 @ =gBattlerAttacker ldrb r0, [r2] mov r3, r10 ldr r1, [r3] lsls r0, 1 adds r0, r1 adds r0, 0xC9 movs r1, 0 strb r1, [r0] ldr r1, _0802C350 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, _0802C354 @ =gBattleTextBuff1 movs r3, 0xFD strb r3, [r1] movs r2, 0xA strb r2, [r1, 0x1] ldrh r0, [r6] strb r0, [r1, 0x2] ldrh r0, [r6] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802C358 @ =gBattleTextBuff2 strb r3, [r1] strb r2, [r1, 0x1] mov r2, r9 strb r2, [r1, 0x2] mov r3, r9 lsrs r0, r3, 8 strb r0, [r1, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] cmp r3, 0 beq _0802C360 ldrh r0, [r6] cmp r0, 0 beq _0802C374 ldr r1, _0802C35C @ =gBattleCommunication movs r0, 0x2 b _0802C378 .align 2, 0 _0802C344: .4byte gBattleStruct _0802C348: .4byte gBattlerAttacker _0802C34C: .4byte gActiveBattler _0802C350: .4byte gBattlescriptCurrInstr _0802C354: .4byte gBattleTextBuff1 _0802C358: .4byte gBattleTextBuff2 _0802C35C: .4byte gBattleCommunication _0802C360: ldrh r0, [r6] cmp r0, 0 beq _0802C374 ldr r0, _0802C370 @ =gBattleCommunication movs r1, 0 strb r1, [r0, 0x5] b _0802C37A .align 2, 0 _0802C370: .4byte gBattleCommunication _0802C374: ldr r1, _0802C38C @ =gBattleCommunication movs r0, 0x1 _0802C378: strb r0, [r1, 0x5] _0802C37A: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C38C: .4byte gBattleCommunication thumb_func_end atkD2_tryswapitems thumb_func_start atkD3_trycopyability atkD3_trycopyability: @ 802C390 push {r4,lr} ldr r3, _0802C3D0 @ =gBattleMons ldr r4, _0802C3D4 @ =gBattlerTarget ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r1, [r0] adds r0, r1, 0 cmp r0, 0 beq _0802C3E4 cmp r0, 0x19 beq _0802C3E4 ldr r0, _0802C3D8 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x20 strb r1, [r0] ldr r1, _0802C3DC @ =gLastUsedAbility ldrb r0, [r4] muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldr r1, _0802C3E0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C3FE .align 2, 0 _0802C3D0: .4byte gBattleMons _0802C3D4: .4byte gBattlerTarget _0802C3D8: .4byte gBattlerAttacker _0802C3DC: .4byte gLastUsedAbility _0802C3E0: .4byte gBattlescriptCurrInstr _0802C3E4: ldr r3, _0802C404 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C3FE: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C404: .4byte gBattlescriptCurrInstr thumb_func_end atkD3_trycopyability thumb_func_start atkD4_trywish atkD4_trywish: @ 802C408 push {r4-r7,lr} ldr r7, _0802C41C @ =gBattlescriptCurrInstr ldr r2, [r7] ldrb r3, [r2, 0x1] cmp r3, 0 beq _0802C420 cmp r3, 0x1 beq _0802C458 b _0802C4D4 .align 2, 0 _0802C41C: .4byte gBattlescriptCurrInstr _0802C420: ldr r1, _0802C44C @ =gWishFutureKnock ldr r4, _0802C450 @ =gBattlerAttacker adds r0, r1, 0 adds r0, 0x20 ldrb r5, [r4] adds r3, r0, r5 ldrb r0, [r3] cmp r0, 0 bne _0802C4A4 movs r0, 0x2 strb r0, [r3] ldrb r0, [r4] adds r1, 0x24 adds r1, r0, r1 ldr r2, _0802C454 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldr r0, [r7] adds r0, 0x6 b _0802C4D2 .align 2, 0 _0802C44C: .4byte gWishFutureKnock _0802C450: .4byte gBattlerAttacker _0802C454: .4byte gBattlerPartyIndexes _0802C458: ldr r1, _0802C4BC @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r4, _0802C4C0 @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1, 0x2] ldr r0, _0802C4C4 @ =gWishFutureKnock adds r0, 0x24 ldrb r5, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802C4C8 @ =gBattleMoveDamage ldr r6, _0802C4CC @ =gBattleMons ldrb r0, [r4] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802C490 str r3, [r1] _0802C490: ldr r0, [r1] negs r0, r0 str r0, [r1] ldrb r0, [r4] muls r0, r5 adds r0, r6 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 bne _0802C4D0 _0802C4A4: ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r7] b _0802C4D4 .align 2, 0 _0802C4BC: .4byte gBattleTextBuff1 _0802C4C0: .4byte gBattlerTarget _0802C4C4: .4byte gWishFutureKnock _0802C4C8: .4byte gBattleMoveDamage _0802C4CC: .4byte gBattleMons _0802C4D0: adds r0, r2, 0x6 _0802C4D2: str r0, [r7] _0802C4D4: pop {r4-r7} pop {r0} bx r0 thumb_func_end atkD4_trywish thumb_func_start atkD5_trysetroots atkD5_trysetroots: @ 802C4DC push {lr} ldr r1, _0802C514 @ =gStatuses3 ldr r0, _0802C518 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 3 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0802C520 ldr r3, _0802C51C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C52C .align 2, 0 _0802C514: .4byte gStatuses3 _0802C518: .4byte gBattlerAttacker _0802C51C: .4byte gBattlescriptCurrInstr _0802C520: orrs r1, r3 str r1, [r2] ldr r1, _0802C530 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C52C: pop {r0} bx r0 .align 2, 0 _0802C530: .4byte gBattlescriptCurrInstr thumb_func_end atkD5_trysetroots thumb_func_start atkD6_doubledamagedealtifdamaged atkD6_doubledamagedealtifdamaged: @ 802C534 push {lr} ldr r3, _0802C580 @ =gProtectStructs ldr r0, _0802C584 @ =gBattlerAttacker ldrb r0, [r0] lsls r2, r0, 4 adds r0, r3, 0x4 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0802C554 adds r0, r2, r3 ldr r1, _0802C588 @ =gBattlerTarget ldrb r0, [r0, 0xC] ldrb r1, [r1] cmp r0, r1 beq _0802C56C _0802C554: adds r0, r3, 0 adds r0, 0x8 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0802C572 adds r0, r2, r3 ldr r1, _0802C588 @ =gBattlerTarget ldrb r0, [r0, 0xD] ldrb r1, [r1] cmp r0, r1 bne _0802C572 _0802C56C: ldr r1, _0802C58C @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _0802C572: ldr r1, _0802C590 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802C580: .4byte gProtectStructs _0802C584: .4byte gBattlerAttacker _0802C588: .4byte gBattlerTarget _0802C58C: .4byte gBattleScripting _0802C590: .4byte gBattlescriptCurrInstr thumb_func_end atkD6_doubledamagedealtifdamaged thumb_func_start atkD7_setyawn atkD7_setyawn: @ 802C594 push {r4,lr} ldr r1, _0802C5D8 @ =gStatuses3 ldr r0, _0802C5DC @ =gBattlerTarget ldrb r3, [r0] lsls r0, r3, 2 adds r4, r0, r1 ldr r2, [r4] movs r0, 0xC0 lsls r0, 5 ands r0, r2 cmp r0, 0 bne _0802C5BC ldr r1, _0802C5E0 @ =gBattleMons movs r0, 0x58 muls r0, r3 adds r1, 0x4C adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _0802C5E8 _0802C5BC: ldr r3, _0802C5E4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C5F8 .align 2, 0 _0802C5D8: .4byte gStatuses3 _0802C5DC: .4byte gBattlerTarget _0802C5E0: .4byte gBattleMons _0802C5E4: .4byte gBattlescriptCurrInstr _0802C5E8: movs r0, 0x80 lsls r0, 5 orrs r2, r0 str r2, [r4] ldr r1, _0802C600 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C5F8: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C600: .4byte gBattlescriptCurrInstr thumb_func_end atkD7_setyawn thumb_func_start atkD8_setdamagetohealthdifference atkD8_setdamagetohealthdifference: @ 802C604 push {lr} ldr r2, _0802C640 @ =gBattleMons ldr r0, _0802C644 @ =gBattlerTarget ldrb r0, [r0] movs r1, 0x58 muls r0, r1 adds r3, r0, r2 ldr r0, _0802C648 @ =gBattlerAttacker ldrb r0, [r0] muls r0, r1 adds r1, r0, r2 ldrh r0, [r3, 0x28] ldrh r2, [r1, 0x28] cmp r0, r2 bhi _0802C650 ldr r3, _0802C64C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C662 .align 2, 0 _0802C640: .4byte gBattleMons _0802C644: .4byte gBattlerTarget _0802C648: .4byte gBattlerAttacker _0802C64C: .4byte gBattlescriptCurrInstr _0802C650: ldr r2, _0802C668 @ =gBattleMoveDamage ldrh r0, [r3, 0x28] ldrh r1, [r1, 0x28] subs r0, r1 str r0, [r2] ldr r1, _0802C66C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C662: pop {r0} bx r0 .align 2, 0 _0802C668: .4byte gBattleMoveDamage _0802C66C: .4byte gBattlescriptCurrInstr thumb_func_end atkD8_setdamagetohealthdifference thumb_func_start atkD9_scaledamagebyhealthratio atkD9_scaledamagebyhealthratio: @ 802C670 push {r4,lr} ldr r4, _0802C6BC @ =gDynamicBasePower ldrh r0, [r4] cmp r0, 0 bne _0802C6AC ldr r2, _0802C6C0 @ =gBattleMoves ldr r0, _0802C6C4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r3, [r0, 0x1] ldr r2, _0802C6C8 @ =gBattleMons ldr r0, _0802C6CC @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrh r0, [r1, 0x28] muls r0, r3 ldrh r1, [r1, 0x2C] bl __divsi3 strh r0, [r4] lsls r0, 16 cmp r0, 0 bne _0802C6AC movs r0, 0x1 strh r0, [r4] _0802C6AC: ldr r1, _0802C6D0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802C6BC: .4byte gDynamicBasePower _0802C6C0: .4byte gBattleMoves _0802C6C4: .4byte gCurrentMove _0802C6C8: .4byte gBattleMons _0802C6CC: .4byte gBattlerAttacker _0802C6D0: .4byte gBattlescriptCurrInstr thumb_func_end atkD9_scaledamagebyhealthratio thumb_func_start atkDA_tryswapabilities atkDA_tryswapabilities: @ 802C6D4 push {r4-r6,lr} ldr r5, _0802C738 @ =gBattleMons ldr r0, _0802C73C @ =gBattlerAttacker ldrb r0, [r0] movs r4, 0x58 muls r0, r4 adds r0, r5 adds r2, r0, 0 adds r2, 0x20 ldrb r1, [r2] cmp r1, 0 bne _0802C6FC ldr r0, _0802C740 @ =gBattlerTarget ldrb r0, [r0] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0 beq _0802C71C _0802C6FC: cmp r1, 0x19 beq _0802C71C ldr r6, _0802C740 @ =gBattlerTarget ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r3, [r0] cmp r3, 0x19 beq _0802C71C ldr r0, _0802C744 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802C74C _0802C71C: ldr r3, _0802C748 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C762 .align 2, 0 _0802C738: .4byte gBattleMons _0802C73C: .4byte gBattlerAttacker _0802C740: .4byte gBattlerTarget _0802C744: .4byte gMoveResultFlags _0802C748: .4byte gBattlescriptCurrInstr _0802C74C: ldrb r1, [r2] strb r3, [r2] ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 strb r1, [r0] ldr r1, _0802C768 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C762: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802C768: .4byte gBattlescriptCurrInstr thumb_func_end atkDA_tryswapabilities thumb_func_start atkDB_tryimprison atkDB_tryimprison: @ 802C76C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r1, _0802C78C @ =gStatuses3 ldr r4, _0802C790 @ =gBattlerAttacker ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _0802C7BC b _0802C83E .align 2, 0 _0802C78C: .4byte gStatuses3 _0802C790: .4byte gBattlerAttacker _0802C794: ldr r0, _0802C7B4 @ =gStatuses3 mov r2, r9 ldrb r1, [r2] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 6 orrs r0, r2 str r0, [r1] ldr r1, _0802C7B8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C836 .align 2, 0 _0802C7B4: .4byte gStatuses3 _0802C7B8: .4byte gBattlescriptCurrInstr _0802C7BC: adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r0, [r4] bl PressurePPLoseOnUsingImprison movs r6, 0 b _0802C82E _0802C7D2: adds r0, r6, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r8, r0 beq _0802C828 movs r4, 0 ldr r7, _0802C864 @ =gBattlerAttacker mov r9, r7 ldr r0, _0802C868 @ =gBattleMons mov r12, r0 mov r1, r9 ldrb r0, [r1] mov r2, r12 adds r2, 0xC movs r1, 0x58 muls r0, r1 adds r3, r0, r2 adds r5, r6, 0 muls r5, r1 _0802C7FC: movs r2, 0 ldrh r1, [r3] mov r0, r12 adds r0, 0xC adds r0, r5, r0 _0802C806: ldrh r7, [r0] cmp r1, r7 bne _0802C810 cmp r1, 0 bne _0802C818 _0802C810: adds r0, 0x2 adds r2, 0x1 cmp r2, 0x3 ble _0802C806 _0802C818: cmp r2, 0x4 bne _0802C824 adds r3, 0x2 adds r4, 0x1 cmp r4, 0x3 ble _0802C7FC _0802C824: cmp r4, 0x4 bne _0802C794 _0802C828: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 _0802C82E: ldr r0, _0802C86C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bcc _0802C7D2 _0802C836: ldr r0, _0802C86C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bne _0802C858 _0802C83E: ldr r3, _0802C870 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C858: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C864: .4byte gBattlerAttacker _0802C868: .4byte gBattleMons _0802C86C: .4byte gBattlersCount _0802C870: .4byte gBattlescriptCurrInstr thumb_func_end atkDB_tryimprison thumb_func_start atkDC_trysetgrudge atkDC_trysetgrudge: @ 802C874 push {lr} ldr r1, _0802C8AC @ =gStatuses3 ldr r0, _0802C8B0 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 7 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0802C8B8 ldr r3, _0802C8B4 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C8C4 .align 2, 0 _0802C8AC: .4byte gStatuses3 _0802C8B0: .4byte gBattlerAttacker _0802C8B4: .4byte gBattlescriptCurrInstr _0802C8B8: orrs r1, r3 str r1, [r2] ldr r1, _0802C8C8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C8C4: pop {r0} bx r0 .align 2, 0 _0802C8C8: .4byte gBattlescriptCurrInstr thumb_func_end atkDC_trysetgrudge thumb_func_start atkDD_weightdamagecalculation atkDD_weightdamagecalculation: @ 802C8CC push {r4-r7,lr} mov r7, r8 push {r7} movs r5, 0 ldr r2, _0802C930 @ =sWeightToDamageTable ldrh r0, [r2] ldr r1, _0802C934 @ =0x0000ffff cmp r0, r1 beq _0802C944 adds r6, r2, 0 ldr r0, _0802C938 @ =gBattleMons mov r8, r0 adds r7, r1, 0 adds r4, r6, 0 _0802C8E8: ldr r0, _0802C93C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r8 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl GetPokedexHeightWeight ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bhi _0802C916 adds r4, 0x4 adds r5, 0x2 ldrh r0, [r4] cmp r0, r7 bne _0802C8E8 _0802C916: lsls r0, r5, 1 adds r0, r6 ldrh r1, [r0] ldr r0, _0802C934 @ =0x0000ffff cmp r1, r0 beq _0802C944 ldr r0, _0802C940 @ =gDynamicBasePower adds r1, r5, 0x1 lsls r1, 1 adds r1, r6 ldrh r1, [r1] strh r1, [r0] b _0802C94A .align 2, 0 _0802C930: .4byte sWeightToDamageTable _0802C934: .4byte 0x0000ffff _0802C938: .4byte gBattleMons _0802C93C: .4byte gBattlerTarget _0802C940: .4byte gDynamicBasePower _0802C944: ldr r1, _0802C95C @ =gDynamicBasePower movs r0, 0x78 strh r0, [r1] _0802C94A: ldr r1, _0802C960 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C95C: .4byte gDynamicBasePower _0802C960: .4byte gBattlescriptCurrInstr thumb_func_end atkDD_weightdamagecalculation thumb_func_start atkDE_assistattackselect atkDE_assistattackselect: @ 802C964 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC movs r0, 0 mov r10, r0 ldr r0, _0802CA84 @ =gBattleStruct ldr r0, [r0] adds r0, 0x18 str r0, [sp, 0x4] ldr r0, _0802CA88 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 ldr r0, _0802CA8C @ =gPlayerParty str r0, [sp] cmp r1, 0 beq _0802C994 ldr r1, _0802CA90 @ =gEnemyParty str r1, [sp] _0802C994: movs r2, 0 _0802C996: ldr r1, _0802CA94 @ =gBattlerPartyIndexes ldr r0, _0802CA88 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 adds r1, r2, 0x1 str r1, [sp, 0x8] ldrh r0, [r0] cmp r2, r0 beq _0802CA3C movs r0, 0x64 adds r6, r2, 0 muls r6, r0 ldr r0, [sp] adds r4, r0, r6 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _0802CA3C adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0802CA3C movs r5, 0 ldr r1, _0802CA98 @ =0x0000ffff mov r8, r1 mov r9, r6 mov r1, r10 lsls r0, r1, 1 ldr r1, [sp, 0x4] adds r6, r0, r1 _0802C9E0: movs r7, 0 adds r1, r5, 0 adds r1, 0xD ldr r0, [sp] add r0, r9 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl IsInvalidForSleepTalkOrAssist lsls r0, 24 adds r1, r5, 0x1 cmp r0, 0 bne _0802CA36 ldr r0, _0802CA9C @ =sMovesForbiddenToCopy ldrh r2, [r0] adds r3, r0, 0 cmp r2, r8 beq _0802CA2A cmp r4, r2 beq _0802CA20 ldr r5, _0802CA98 @ =0x0000ffff adds r2, r3, 0 _0802CA12: adds r2, 0x2 adds r7, 0x1 ldrh r0, [r2] cmp r0, r5 beq _0802CA2A cmp r4, r0 bne _0802CA12 _0802CA20: lsls r0, r7, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r8 bne _0802CA36 _0802CA2A: cmp r4, 0 beq _0802CA36 strh r4, [r6] adds r6, 0x2 movs r0, 0x1 add r10, r0 _0802CA36: adds r5, r1, 0 cmp r5, 0x3 ble _0802C9E0 _0802CA3C: ldr r2, [sp, 0x8] cmp r2, 0x5 ble _0802C996 mov r1, r10 cmp r1, 0 beq _0802CAB4 ldr r2, _0802CAA0 @ =gHitMarker ldr r0, [r2] ldr r1, _0802CAA4 @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, _0802CAA8 @ =gCalledMove bl Random movs r1, 0xFF ands r1, r0 mov r0, r10 muls r0, r1 asrs r0, 8 lsls r0, 1 ldr r1, [sp, 0x4] adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802CAAC @ =gBattlerTarget strb r0, [r1] ldr r1, _0802CAB0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802CACE .align 2, 0 _0802CA84: .4byte gBattleStruct _0802CA88: .4byte gBattlerAttacker _0802CA8C: .4byte gPlayerParty _0802CA90: .4byte gEnemyParty _0802CA94: .4byte gBattlerPartyIndexes _0802CA98: .4byte 0x0000ffff _0802CA9C: .4byte sMovesForbiddenToCopy _0802CAA0: .4byte gHitMarker _0802CAA4: .4byte 0xfffffbff _0802CAA8: .4byte gCalledMove _0802CAAC: .4byte gBattlerTarget _0802CAB0: .4byte gBattlescriptCurrInstr _0802CAB4: ldr r3, _0802CAE0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802CACE: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802CAE0: .4byte gBattlescriptCurrInstr thumb_func_end atkDE_assistattackselect thumb_func_start atkDF_trysetmagiccoat atkDF_trysetmagiccoat: @ 802CAE4 push {lr} ldr r1, _0802CB2C @ =gBattlerTarget ldr r3, _0802CB30 @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, _0802CB34 @ =gSpecialStatuses ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, _0802CB38 @ =gCurrentTurnActionNumber ldrb r1, [r0] ldr r0, _0802CB3C @ =gBattlersCount ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _0802CB44 ldr r3, _0802CB40 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CB5C .align 2, 0 _0802CB2C: .4byte gBattlerTarget _0802CB30: .4byte gBattlerAttacker _0802CB34: .4byte gSpecialStatuses _0802CB38: .4byte gCurrentTurnActionNumber _0802CB3C: .4byte gBattlersCount _0802CB40: .4byte gBattlescriptCurrInstr _0802CB44: ldr r0, _0802CB60 @ =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x10 orrs r0, r2 strb r0, [r1] ldr r1, _0802CB64 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CB5C: pop {r0} bx r0 .align 2, 0 _0802CB60: .4byte gProtectStructs _0802CB64: .4byte gBattlescriptCurrInstr thumb_func_end atkDF_trysetmagiccoat thumb_func_start atkE0_trysetsnatch atkE0_trysetsnatch: @ 802CB68 push {lr} ldr r2, _0802CBAC @ =gSpecialStatuses ldr r3, _0802CBB0 @ =gBattlerAttacker ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, _0802CBB4 @ =gCurrentTurnActionNumber ldrb r1, [r0] ldr r0, _0802CBB8 @ =gBattlersCount ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _0802CBC0 ldr r3, _0802CBBC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CBD6 .align 2, 0 _0802CBAC: .4byte gSpecialStatuses _0802CBB0: .4byte gBattlerAttacker _0802CBB4: .4byte gCurrentTurnActionNumber _0802CBB8: .4byte gBattlersCount _0802CBBC: .4byte gBattlescriptCurrInstr _0802CBC0: ldr r0, _0802CBDC @ =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] ldr r1, _0802CBE0 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CBD6: pop {r0} bx r0 .align 2, 0 _0802CBDC: .4byte gProtectStructs _0802CBE0: .4byte gBattlescriptCurrInstr thumb_func_end atkE0_trysetsnatch thumb_func_start atkE1_trygetintimidatetarget atkE1_trygetintimidatetarget: @ 802CBE4 push {r4-r6,lr} ldr r4, _0802CC88 @ =gBattleScripting ldr r0, _0802CC8C @ =gBattleStruct ldr r0, [r0] adds r0, 0xD8 ldrb r0, [r0] strb r0, [r4, 0x17] ldrb r0, [r4, 0x17] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r2, _0802CC90 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r2] movs r0, 0x9 strb r0, [r2, 0x1] ldr r3, _0802CC94 @ =gBattleMons ldrb r1, [r4, 0x17] movs r0, 0x58 muls r0, r1 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r2, 0x2] movs r0, 0xFF strb r0, [r2, 0x3] ldr r2, _0802CC98 @ =gBattlerTarget ldr r1, _0802CC9C @ =gBattlersCount ldrb r0, [r2] ldrb r1, [r1] cmp r0, r1 bcs _0802CC6A adds r4, r2, 0 ldr r6, _0802CCA0 @ =gBitTable _0802CC2A: ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, r5 beq _0802CC4C ldr r0, _0802CCA4 @ =gAbsentBattlerFlags ldrb r1, [r0] ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ands r1, r0 ldr r2, _0802CC9C @ =gBattlersCount cmp r1, 0 beq _0802CC60 _0802CC4C: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _0802CC9C @ =gBattlersCount lsls r0, 24 lsrs r0, 24 adds r2, r1, 0 ldrb r1, [r2] cmp r0, r1 bcc _0802CC2A _0802CC60: ldr r0, _0802CC98 @ =gBattlerTarget ldrb r0, [r0] ldrb r2, [r2] cmp r0, r2 bcc _0802CCAC _0802CC6A: ldr r3, _0802CCA8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CCB4 .align 2, 0 _0802CC88: .4byte gBattleScripting _0802CC8C: .4byte gBattleStruct _0802CC90: .4byte gBattleTextBuff1 _0802CC94: .4byte gBattleMons _0802CC98: .4byte gBattlerTarget _0802CC9C: .4byte gBattlersCount _0802CCA0: .4byte gBitTable _0802CCA4: .4byte gAbsentBattlerFlags _0802CCA8: .4byte gBattlescriptCurrInstr _0802CCAC: ldr r1, _0802CCBC @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CCB4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802CCBC: .4byte gBattlescriptCurrInstr thumb_func_end atkE1_trygetintimidatetarget thumb_func_start atkE2_switchoutabilities atkE2_switchoutabilities: @ 802CCC0 push {r4-r6,lr} sub sp, 0x4 ldr r5, _0802CD28 @ =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl GetBattlerForBattleScript ldr r4, _0802CD2C @ =gActiveBattler strb r0, [r4] ldr r3, _0802CD30 @ =gBattleMons ldrb r0, [r4] movs r6, 0x58 adds r1, r0, 0 muls r1, r6 adds r0, r1, r3 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1E bne _0802CD1A adds r3, 0x4C adds r1, r3 movs r0, 0 str r0, [r1] ldr r2, _0802CD34 @ =gBitTable ldrb r1, [r4] ldr r0, _0802CD38 @ =gBattleStruct ldr r0, [r0] adds r0, r1, r0 adds r0, 0x58 ldrb r0, [r0] lsls r0, 2 adds r0, r2 ldrb r2, [r0] adds r0, r1, 0 muls r0, r6 adds r0, r3 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl BtlController_EmitSetMonData ldrb r0, [r4] bl MarkBattlerForControllerExec _0802CD1A: ldr r0, [r5] adds r0, 0x2 str r0, [r5] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802CD28: .4byte gBattlescriptCurrInstr _0802CD2C: .4byte gActiveBattler _0802CD30: .4byte gBattleMons _0802CD34: .4byte gBitTable _0802CD38: .4byte gBattleStruct thumb_func_end atkE2_switchoutabilities thumb_func_start atkE3_jumpifhasnohp atkE3_jumpifhasnohp: @ 802CD3C push {r4,lr} ldr r4, _0802CD78 @ =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl GetBattlerForBattleScript ldr r1, _0802CD7C @ =gActiveBattler strb r0, [r1] ldr r2, _0802CD80 @ =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0802CD84 ldr r2, [r4] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _0802CD8A .align 2, 0 _0802CD78: .4byte gBattlescriptCurrInstr _0802CD7C: .4byte gActiveBattler _0802CD80: .4byte gBattleMons _0802CD84: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0802CD8A: pop {r4} pop {r0} bx r0 thumb_func_end atkE3_jumpifhasnohp thumb_func_start atkE4_getsecretpowereffect atkE4_getsecretpowereffect: @ 802CD90 push {lr} ldr r0, _0802CDA4 @ =gBattleTerrain ldrb r0, [r0] cmp r0, 0x7 bhi _0802CE2C lsls r0, 2 ldr r1, _0802CDA8 @ =_0802CDAC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802CDA4: .4byte gBattleTerrain _0802CDA8: .4byte _0802CDAC .align 2, 0 _0802CDAC: .4byte _0802CDCC .4byte _0802CDD8 .4byte _0802CDE4 .4byte _0802CDF0 .4byte _0802CDFC .4byte _0802CE08 .4byte _0802CE14 .4byte _0802CE20 _0802CDCC: ldr r1, _0802CDD4 @ =gBattleCommunication movs r0, 0x2 b _0802CE30 .align 2, 0 _0802CDD4: .4byte gBattleCommunication _0802CDD8: ldr r1, _0802CDE0 @ =gBattleCommunication movs r0, 0x1 b _0802CE30 .align 2, 0 _0802CDE0: .4byte gBattleCommunication _0802CDE4: ldr r1, _0802CDEC @ =gBattleCommunication movs r0, 0x1B b _0802CE30 .align 2, 0 _0802CDEC: .4byte gBattleCommunication _0802CDF0: ldr r1, _0802CDF8 @ =gBattleCommunication movs r0, 0x17 b _0802CE30 .align 2, 0 _0802CDF8: .4byte gBattleCommunication _0802CDFC: ldr r1, _0802CE04 @ =gBattleCommunication movs r0, 0x16 b _0802CE30 .align 2, 0 _0802CE04: .4byte gBattleCommunication _0802CE08: ldr r1, _0802CE10 @ =gBattleCommunication movs r0, 0x18 b _0802CE30 .align 2, 0 _0802CE10: .4byte gBattleCommunication _0802CE14: ldr r1, _0802CE1C @ =gBattleCommunication movs r0, 0x7 b _0802CE30 .align 2, 0 _0802CE1C: .4byte gBattleCommunication _0802CE20: ldr r1, _0802CE28 @ =gBattleCommunication movs r0, 0x8 b _0802CE30 .align 2, 0 _0802CE28: .4byte gBattleCommunication _0802CE2C: ldr r1, _0802CE40 @ =gBattleCommunication movs r0, 0x5 _0802CE30: strb r0, [r1, 0x3] ldr r1, _0802CE44 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802CE40: .4byte gBattleCommunication _0802CE44: .4byte gBattlescriptCurrInstr thumb_func_end atkE4_getsecretpowereffect thumb_func_start atkE5_pickup atkE5_pickup: @ 802CE48 push {r4-r7,lr} mov r7, r8 push {r7} movs r7, 0 ldr r0, _0802CE90 @ =gBaseStats mov r8, r0 _0802CE54: movs r0, 0x64 adds r4, r7, 0 muls r4, r0 ldr r0, _0802CE94 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r6, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _0802CE98 lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x17] b _0802CEA2 .align 2, 0 _0802CE90: .4byte gBaseStats _0802CE94: .4byte gPlayerParty _0802CE98: lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x16] _0802CEA2: adds r4, r7, 0x1 cmp r0, 0x35 bne _0802CF0A cmp r5, 0 beq _0802CF0A movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _0802CF0A cmp r6, 0 bne _0802CF0A bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _0802CF0A bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r3, r0, 16 movs r2, 0 ldr r1, _0802CEE4 @ =sPickupItems b _0802CEF0 .align 2, 0 _0802CEE4: .4byte sPickupItems _0802CEE8: adds r1, 0x4 adds r2, 0x1 cmp r2, 0xE bhi _0802CEF6 _0802CEF0: ldrb r0, [r1, 0x2] cmp r0, r3 ble _0802CEE8 _0802CEF6: movs r0, 0x64 muls r0, r7 ldr r1, _0802CF24 @ =gPlayerParty adds r0, r1 lsls r2, 2 ldr r1, _0802CF28 @ =sPickupItems adds r2, r1 movs r1, 0xC bl SetMonData _0802CF0A: adds r7, r4, 0 cmp r7, 0x5 ble _0802CE54 ldr r1, _0802CF2C @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802CF24: .4byte gPlayerParty _0802CF28: .4byte sPickupItems _0802CF2C: .4byte gBattlescriptCurrInstr thumb_func_end atkE5_pickup thumb_func_start atkE6_docastformchangeanimation atkE6_docastformchangeanimation: @ 802CF30 push {r4,lr} ldr r4, _0802CF84 @ =gActiveBattler ldr r0, _0802CF88 @ =gBattleScripting ldrb r0, [r0, 0x17] strb r0, [r4] ldr r1, _0802CF8C @ =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 ldr r3, _0802CF90 @ =gBattleStruct cmp r0, 0 beq _0802CF60 ldr r0, [r3] adds r0, 0x7F ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _0802CF60: ldr r0, [r3] adds r0, 0x7F ldrb r2, [r0] movs r0, 0 movs r1, 0 bl BtlController_EmitBattleAnimation ldrb r0, [r4] bl MarkBattlerForControllerExec ldr r1, _0802CF94 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802CF84: .4byte gActiveBattler _0802CF88: .4byte gBattleScripting _0802CF8C: .4byte gBattleMons _0802CF90: .4byte gBattleStruct _0802CF94: .4byte gBattlescriptCurrInstr thumb_func_end atkE6_docastformchangeanimation thumb_func_start atkE7_trycastformdatachange atkE7_trycastformdatachange: @ 802CF98 push {r4,lr} ldr r1, _0802CFC8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r0, _0802CFCC @ =gBattleScripting ldrb r0, [r0, 0x17] bl CastformDataTypeChange lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _0802CFC2 ldr r0, _0802CFD0 @ =BattleScript_CastformChange bl BattleScriptPushCursorAndCallback ldr r0, _0802CFD4 @ =gBattleStruct ldr r0, [r0] adds r0, 0x7F subs r1, r4, 0x1 strb r1, [r0] _0802CFC2: pop {r4} pop {r0} bx r0 .align 2, 0 _0802CFC8: .4byte gBattlescriptCurrInstr _0802CFCC: .4byte gBattleScripting _0802CFD0: .4byte BattleScript_CastformChange _0802CFD4: .4byte gBattleStruct thumb_func_end atkE7_trycastformdatachange thumb_func_start atkE8_settypebasedhalvers atkE8_settypebasedhalvers: @ 802CFD8 push {r4,lr} movs r4, 0 ldr r2, _0802D014 @ =gBattleMoves ldr r0, _0802D018 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0xC9 bne _0802D028 ldr r1, _0802D01C @ =gStatuses3 ldr r0, _0802D020 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 9 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _0802D04C orrs r1, r3 str r1, [r2] ldr r0, _0802D024 @ =gBattleCommunication strb r4, [r0, 0x5] b _0802D050 .align 2, 0 _0802D014: .4byte gBattleMoves _0802D018: .4byte gCurrentMove _0802D01C: .4byte gStatuses3 _0802D020: .4byte gBattlerAttacker _0802D024: .4byte gBattleCommunication _0802D028: ldr r1, _0802D05C @ =gStatuses3 ldr r0, _0802D060 @ =gBattlerAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 10 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _0802D04C orrs r1, r3 str r1, [r2] ldr r1, _0802D064 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] movs r4, 0x1 _0802D04C: cmp r4, 0 beq _0802D06C _0802D050: ldr r1, _0802D068 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D086 .align 2, 0 _0802D05C: .4byte gStatuses3 _0802D060: .4byte gBattlerAttacker _0802D064: .4byte gBattleCommunication _0802D068: .4byte gBattlescriptCurrInstr _0802D06C: ldr r3, _0802D08C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D086: pop {r4} pop {r0} bx r0 .align 2, 0 _0802D08C: .4byte gBattlescriptCurrInstr thumb_func_end atkE8_settypebasedhalvers thumb_func_start atkE9_setweatherballtype atkE9_setweatherballtype: @ 802D090 push {lr} sub sp, 0x4 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0802D130 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0802D130 ldr r2, _0802D0E0 @ =gBattleWeather ldrb r0, [r2] cmp r0, 0 beq _0802D0CE ldr r1, _0802D0E4 @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _0802D0CE: ldrh r1, [r2] movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _0802D0EC ldr r0, _0802D0E8 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8B b _0802D12E .align 2, 0 _0802D0E0: .4byte gBattleWeather _0802D0E4: .4byte gBattleScripting _0802D0E8: .4byte gBattleStruct _0802D0EC: movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _0802D100 ldr r0, _0802D0FC @ =gBattleStruct ldr r1, [r0] movs r0, 0x85 b _0802D12E .align 2, 0 _0802D0FC: .4byte gBattleStruct _0802D100: movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802D114 ldr r0, _0802D110 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8A b _0802D12E .align 2, 0 _0802D110: .4byte gBattleStruct _0802D114: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802D128 ldr r0, _0802D124 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8F b _0802D12E .align 2, 0 _0802D124: .4byte gBattleStruct _0802D128: ldr r0, _0802D140 @ =gBattleStruct ldr r1, [r0] movs r0, 0x80 _0802D12E: strb r0, [r1, 0x13] _0802D130: ldr r1, _0802D144 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r0} bx r0 .align 2, 0 _0802D140: .4byte gBattleStruct _0802D144: .4byte gBattlescriptCurrInstr thumb_func_end atkE9_setweatherballtype thumb_func_start atkEA_tryrecycleitem atkEA_tryrecycleitem: @ 802D148 push {r4-r7,lr} sub sp, 0x4 ldr r7, _0802D1B0 @ =gActiveBattler ldr r0, _0802D1B4 @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r7] ldr r1, _0802D1B8 @ =gBattleStruct ldrb r2, [r7] lsls r0, r2, 1 adds r0, 0xB8 ldr r1, [r1] adds r6, r1, r0 ldrh r5, [r6] cmp r5, 0 beq _0802D1C8 ldr r4, _0802D1BC @ =gBattleMons movs r3, 0x58 adds r0, r2, 0 muls r0, r3 adds r0, r4 ldrh r0, [r0, 0x2E] cmp r0, 0 bne _0802D1C8 ldr r1, _0802D1C0 @ =gLastUsedItem strh r5, [r1] strh r0, [r6] ldrb r0, [r7] muls r0, r3 adds r0, r4 ldrh r1, [r1] strh r1, [r0, 0x2E] ldrb r0, [r7] muls r0, r3 adds r1, r4, 0 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl BtlController_EmitSetMonData ldrb r0, [r7] bl MarkBattlerForControllerExec ldr r1, _0802D1C4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D1E2 .align 2, 0 _0802D1B0: .4byte gActiveBattler _0802D1B4: .4byte gBattlerAttacker _0802D1B8: .4byte gBattleStruct _0802D1BC: .4byte gBattleMons _0802D1C0: .4byte gLastUsedItem _0802D1C4: .4byte gBattlescriptCurrInstr _0802D1C8: ldr r3, _0802D1EC @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D1E2: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D1EC: .4byte gBattlescriptCurrInstr thumb_func_end atkEA_tryrecycleitem thumb_func_start atkEB_settypetoterrain atkEB_settypetoterrain: @ 802D1F0 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _0802D260 @ =gBattleMons mov r8, r0 ldr r7, _0802D264 @ =gBattlerAttacker ldrb r0, [r7] movs r6, 0x58 muls r0, r6 mov r1, r8 adds r3, r0, r1 movs r0, 0x21 adds r0, r3 mov r12, r0 ldr r5, _0802D268 @ =sTerrainToType ldr r4, _0802D26C @ =gBattleTerrain ldrb r0, [r4] adds r0, r5 ldrb r2, [r0] mov r1, r12 ldrb r0, [r1] adds r1, r2, 0 cmp r0, r1 beq _0802D278 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _0802D278 mov r0, r12 strb r2, [r0] ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] adds r1, 0x22 strb r0, [r1] ldr r1, _0802D270 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _0802D274 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D292 .align 2, 0 _0802D260: .4byte gBattleMons _0802D264: .4byte gBattlerAttacker _0802D268: .4byte sTerrainToType _0802D26C: .4byte gBattleTerrain _0802D270: .4byte gBattleTextBuff1 _0802D274: .4byte gBattlescriptCurrInstr _0802D278: ldr r3, _0802D29C @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D292: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D29C: .4byte gBattlescriptCurrInstr thumb_func_end atkEB_settypetoterrain thumb_func_start atkEC_pursuitrelated atkEC_pursuitrelated: @ 802D2A0 push {r4-r6,lr} ldr r5, _0802D314 @ =gBattlerAttacker ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r4, _0802D318 @ =gActiveBattler strb r0, [r4] ldr r0, _0802D31C @ =gBattleTypeFlags ldr r0, [r0] movs r6, 0x1 ands r0, r6 cmp r0, 0 beq _0802D340 ldr r0, _0802D320 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802D324 @ =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802D340 ldr r0, _0802D328 @ =gChosenActionByBattler adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 bne _0802D340 ldr r1, _0802D32C @ =gChosenMoveByBattler lsls r0, r3, 1 adds r0, r1 ldrh r2, [r0] cmp r2, 0xE4 bne _0802D340 ldr r0, _0802D330 @ =gActionsByTurnOrder adds r0, r3, r0 movs r1, 0xB strb r1, [r0] ldr r0, _0802D334 @ =gCurrentMove strh r2, [r0] ldr r1, _0802D338 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r0, _0802D33C @ =gBattleScripting strb r6, [r0, 0x18] ldrb r1, [r5] adds r0, 0x20 strb r1, [r0] ldrb r0, [r4] strb r0, [r5] b _0802D35A .align 2, 0 _0802D314: .4byte gBattlerAttacker _0802D318: .4byte gActiveBattler _0802D31C: .4byte gBattleTypeFlags _0802D320: .4byte gAbsentBattlerFlags _0802D324: .4byte gBitTable _0802D328: .4byte gChosenActionByBattler _0802D32C: .4byte gChosenMoveByBattler _0802D330: .4byte gActionsByTurnOrder _0802D334: .4byte gCurrentMove _0802D338: .4byte gBattlescriptCurrInstr _0802D33C: .4byte gBattleScripting _0802D340: ldr r3, _0802D360 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D35A: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802D360: .4byte gBattlescriptCurrInstr thumb_func_end atkEC_pursuitrelated thumb_func_start atkED_snatchsetbattlers atkED_snatchsetbattlers: @ 802D364 push {r4,lr} ldr r1, _0802D388 @ =gEffectBattler ldr r3, _0802D38C @ =gBattlerAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, _0802D390 @ =gBattlerTarget lsls r0, 24 lsrs r0, 24 adds r4, r1, 0 ldrb r1, [r2] cmp r0, r1 bne _0802D398 ldr r1, _0802D394 @ =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] strb r0, [r3] b _0802D39E .align 2, 0 _0802D388: .4byte gEffectBattler _0802D38C: .4byte gBattlerAttacker _0802D390: .4byte gBattlerTarget _0802D394: .4byte gBattleScripting _0802D398: ldr r1, _0802D3B0 @ =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] _0802D39E: ldrb r0, [r4] strb r0, [r1, 0x17] ldr r1, _0802D3B4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802D3B0: .4byte gBattleScripting _0802D3B4: .4byte gBattlescriptCurrInstr thumb_func_end atkED_snatchsetbattlers thumb_func_start atkEE_removelightscreenreflect atkEE_removelightscreenreflect: @ 802D3B8 push {r4,lr} ldr r0, _0802D400 @ =gBattlerAttacker ldrb r0, [r0] bl GetBattlerSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, _0802D404 @ =gSideTimers lsls r3, r0, 1 adds r0, r3, r0 lsls r0, 2 adds r4, r0, r1 ldrb r0, [r4] cmp r0, 0 bne _0802D3E0 ldrb r1, [r4, 0x2] cmp r1, 0 beq _0802D418 _0802D3E0: ldr r2, _0802D408 @ =gSideStatuses adds r2, r3, r2 ldrh r1, [r2] ldr r0, _0802D40C @ =0x0000fffe ands r0, r1 movs r3, 0 ldr r1, _0802D410 @ =0x0000fffd ands r0, r1 strh r0, [r2] strb r3, [r4] strb r3, [r4, 0x2] ldr r1, _0802D414 @ =gBattleScripting movs r0, 0x1 strb r0, [r1, 0x18] strb r0, [r1, 0x19] b _0802D41E .align 2, 0 _0802D400: .4byte gBattlerAttacker _0802D404: .4byte gSideTimers _0802D408: .4byte gSideStatuses _0802D40C: .4byte 0x0000fffe _0802D410: .4byte 0x0000fffd _0802D414: .4byte gBattleScripting _0802D418: ldr r0, _0802D42C @ =gBattleScripting strb r1, [r0, 0x18] strb r1, [r0, 0x19] _0802D41E: ldr r1, _0802D430 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802D42C: .4byte gBattleScripting _0802D430: .4byte gBattlescriptCurrInstr thumb_func_end atkEE_removelightscreenreflect thumb_func_start atkEF_handleballthrow atkEF_handleballthrow: @ 802D434 push {r4-r6,lr} movs r4, 0 ldr r0, _0802D474 @ =gBattleControllerExecFlags ldr r0, [r0] cmp r0, 0 beq _0802D442 b _0802D7EE _0802D442: ldr r5, _0802D478 @ =gActiveBattler ldr r0, _0802D47C @ =gBattlerAttacker ldrb r0, [r0] strb r0, [r5] ldr r6, _0802D480 @ =gBattlerTarget movs r1, 0x1 eors r0, r1 strb r0, [r6] ldr r0, _0802D484 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 8 ands r0, r1 cmp r0, 0 beq _0802D490 movs r0, 0 movs r1, 0x6 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBattlerForControllerExec ldr r1, _0802D488 @ =gBattlescriptCurrInstr ldr r0, _0802D48C @ =BattleScript_GhostBallDodge b _0802D7EC .align 2, 0 _0802D474: .4byte gBattleControllerExecFlags _0802D478: .4byte gActiveBattler _0802D47C: .4byte gBattlerAttacker _0802D480: .4byte gBattlerTarget _0802D484: .4byte gBattleTypeFlags _0802D488: .4byte gBattlescriptCurrInstr _0802D48C: .4byte BattleScript_GhostBallDodge _0802D490: movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0802D4B4 movs r0, 0 movs r1, 0x5 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBattlerForControllerExec ldr r1, _0802D4AC @ =gBattlescriptCurrInstr ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock b _0802D7EC .align 2, 0 _0802D4AC: .4byte gBattlescriptCurrInstr _0802D4B0: .4byte BattleScript_TrainerBallBlock _0802D4B4: movs r0, 0x81 lsls r0, 9 ands r1, r0 cmp r1, 0 beq _0802D4DC movs r0, 0 movs r1, 0x4 bl BtlController_EmitBallThrowAnim ldrb r0, [r5] bl MarkBattlerForControllerExec ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr ldr r0, _0802D4D8 @ =gUnknown_81D9A88 b _0802D7EC .align 2, 0 _0802D4D4: .4byte gBattlescriptCurrInstr _0802D4D8: .4byte gUnknown_81D9A88 _0802D4DC: ldr r0, _0802D500 @ =gLastUsedItem ldrh r0, [r0] cmp r0, 0x5 bne _0802D508 ldr r0, _0802D504 @ =gBattleStruct ldr r0, [r0] adds r0, 0x7C ldrb r0, [r0] lsls r1, r0, 2 adds r1, r0 lsls r0, r1, 8 subs r0, r1 movs r1, 0x64 bl __divsi3 lsls r0, 24 lsrs r5, r0, 24 b _0802D520 .align 2, 0 _0802D500: .4byte gLastUsedItem _0802D504: .4byte gBattleStruct _0802D508: ldr r3, _0802D53C @ =gBaseStats ldr r2, _0802D540 @ =gBattleMons ldrb r1, [r6] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r3 ldrb r5, [r0, 0x8] _0802D520: ldr r2, _0802D544 @ =gLastUsedItem ldrh r0, [r2] cmp r0, 0x5 bhi _0802D52A b _0802D620 _0802D52A: subs r0, 0x6 cmp r0, 0x6 bls _0802D532 b _0802D62A _0802D532: lsls r0, 2 ldr r1, _0802D548 @ =_0802D54C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802D53C: .4byte gBaseStats _0802D540: .4byte gBattleMons _0802D544: .4byte gLastUsedItem _0802D548: .4byte _0802D54C .align 2, 0 _0802D54C: .4byte _0802D568 .4byte _0802D598 .4byte _0802D5AA .4byte _0802D5D8 .4byte _0802D608 .4byte _0802D5CA .4byte _0802D5CA _0802D568: ldr r2, _0802D590 @ =gBattleMons ldr r0, _0802D594 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0xB beq _0802D5FC adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xB beq _0802D5FC cmp r1, 0x6 beq _0802D5FC cmp r0, 0x6 beq _0802D5FC b _0802D5CA .align 2, 0 _0802D590: .4byte gBattleMons _0802D594: .4byte gBattlerTarget _0802D598: bl GetCurrentMapType lsls r0, 24 lsrs r0, 24 movs r4, 0xA cmp r0, 0x5 bne _0802D62A movs r4, 0x23 b _0802D62A _0802D5AA: ldr r2, _0802D5D0 @ =gBattleMons ldr r0, _0802D5D4 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] cmp r1, 0x27 bhi _0802D5CA movs r0, 0x28 subs r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x9 bhi _0802D62A _0802D5CA: movs r4, 0xA b _0802D62A .align 2, 0 _0802D5D0: .4byte gBattleMons _0802D5D4: .4byte gBattlerTarget _0802D5D8: ldr r2, _0802D600 @ =gBattleMons ldr r0, _0802D604 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl GetSetPokedexFlag lsls r0, 24 movs r4, 0xA cmp r0, 0 beq _0802D62A _0802D5FC: movs r4, 0x1E b _0802D62A .align 2, 0 _0802D600: .4byte gBattleMons _0802D604: .4byte gBattlerTarget _0802D608: ldr r0, _0802D61C @ =gBattleResults ldrb r0, [r0, 0x13] adds r0, 0xA lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x28 bls _0802D62A movs r4, 0x28 b _0802D62A .align 2, 0 _0802D61C: .4byte gBattleResults _0802D620: ldr r1, _0802D694 @ =sBallCatchBonuses ldrh r0, [r2] subs r0, 0x2 adds r0, r1 ldrb r4, [r0] _0802D62A: adds r0, r5, 0 muls r0, r4 movs r1, 0xA bl __divsi3 ldr r5, _0802D698 @ =gBattleMons ldr r1, _0802D69C @ =gBattlerTarget ldrb r2, [r1] movs r1, 0x58 adds r4, r2, 0 muls r4, r1 adds r3, r4, r5 ldrh r2, [r3, 0x2C] lsls r1, r2, 1 adds r1, r2 ldrh r2, [r3, 0x28] lsls r2, 1 subs r2, r1, r2 muls r0, r2 bl __divsi3 adds r6, r0, 0 adds r5, 0x4C adds r4, r5 ldr r4, [r4] movs r0, 0x27 ands r0, r4 cmp r0, 0 beq _0802D666 lsls r6, 1 _0802D666: movs r0, 0xD8 ands r4, r0 cmp r4, 0 beq _0802D67A lsls r0, r6, 4 subs r0, r6 movs r1, 0xA bl __udivsi3 adds r6, r0, 0 _0802D67A: ldr r1, _0802D6A0 @ =gLastUsedItem ldrh r0, [r1] cmp r0, 0x5 beq _0802D6BC cmp r0, 0x1 bne _0802D6A8 ldr r0, _0802D6A4 @ =gBattleResults ldrb r1, [r0, 0x5] movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x5] b _0802D6BC .align 2, 0 _0802D694: .4byte sBallCatchBonuses _0802D698: .4byte gBattleMons _0802D69C: .4byte gBattlerTarget _0802D6A0: .4byte gLastUsedItem _0802D6A4: .4byte gBattleResults _0802D6A8: ldr r0, _0802D700 @ =gBattleResults ldrh r1, [r1] adds r0, r1 adds r1, r0, 0 adds r1, 0x34 ldrb r0, [r1] cmp r0, 0xFE bhi _0802D6BC adds r0, 0x1 strb r0, [r1] _0802D6BC: cmp r6, 0xFE bls _0802D720 movs r0, 0 movs r1, 0x4 bl BtlController_EmitBallThrowAnim ldr r0, _0802D704 @ =gActiveBattler ldrb r0, [r0] bl MarkBattlerForControllerExec ldr r1, _0802D708 @ =gBattlescriptCurrInstr ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow str r0, [r1] ldr r1, _0802D710 @ =gBattlerPartyIndexes ldr r0, _0802D714 @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802D718 @ =gEnemyParty adds r0, r1 ldr r2, _0802D71C @ =gLastUsedItem movs r1, 0x26 bl SetMonData bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 beq _0802D7AE b _0802D7D8 .align 2, 0 _0802D700: .4byte gBattleResults _0802D704: .4byte gActiveBattler _0802D708: .4byte gBattlescriptCurrInstr _0802D70C: .4byte BattleScript_SuccessBallThrow _0802D710: .4byte gBattlerPartyIndexes _0802D714: .4byte gBattlerTarget _0802D718: .4byte gEnemyParty _0802D71C: .4byte gLastUsedItem _0802D720: movs r0, 0xFF lsls r0, 16 adds r1, r6, 0 bl __udivsi3 bl Sqrt lsls r0, 16 lsrs r0, 16 bl Sqrt lsls r0, 16 lsrs r6, r0, 16 ldr r0, _0802D748 @ =0x000ffff0 adds r1, r6, 0 bl __udivsi3 adds r6, r0, 0 movs r4, 0 b _0802D752 .align 2, 0 _0802D748: .4byte 0x000ffff0 _0802D74C: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _0802D752: cmp r4, 0x3 bhi _0802D762 bl Random lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcc _0802D74C _0802D762: ldr r5, _0802D7B8 @ =gLastUsedItem ldrh r0, [r5] cmp r0, 0x1 bne _0802D76C movs r4, 0x4 _0802D76C: movs r0, 0 adds r1, r4, 0 bl BtlController_EmitBallThrowAnim ldr r0, _0802D7BC @ =gActiveBattler ldrb r0, [r0] bl MarkBattlerForControllerExec cmp r4, 0x4 bne _0802D7E4 ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow str r0, [r1] ldr r1, _0802D7C8 @ =gBattlerPartyIndexes ldr r0, _0802D7CC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802D7D0 @ =gEnemyParty adds r0, r1 movs r1, 0x26 adds r2, r5, 0 bl SetMonData bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _0802D7D8 _0802D7AE: ldr r1, _0802D7D4 @ =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 _0802D7B8: .4byte gLastUsedItem _0802D7BC: .4byte gActiveBattler _0802D7C0: .4byte gBattlescriptCurrInstr _0802D7C4: .4byte BattleScript_SuccessBallThrow _0802D7C8: .4byte gBattlerPartyIndexes _0802D7CC: .4byte gBattlerTarget _0802D7D0: .4byte gEnemyParty _0802D7D4: .4byte gBattleCommunication _0802D7D8: ldr r1, _0802D7E0 @ =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 _0802D7E0: .4byte gBattleCommunication _0802D7E4: ldr r0, _0802D7F4 @ =gBattleCommunication strb r4, [r0, 0x5] ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow _0802D7EC: str r0, [r1] _0802D7EE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802D7F4: .4byte gBattleCommunication _0802D7F8: .4byte gBattlescriptCurrInstr _0802D7FC: .4byte BattleScript_ShakeBallThrow thumb_func_end atkEF_handleballthrow thumb_func_start atkF0_givecaughtmon atkF0_givecaughtmon: @ 802D800 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802D870 @ =gBattlerPartyIndexes mov r9, r0 ldr r5, _0802D874 @ =gBattlerAttacker ldrb r0, [r5] movs r6, 0x1 eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] movs r7, 0x64 muls r0, r7 ldr r1, _0802D878 @ =gEnemyParty mov r8, r1 add r0, r8 bl GiveMonToPlayer lsls r0, 24 cmp r0, 0 beq _0802D8EA bl sub_80CC7B4 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _0802D88C ldr r0, _0802D87C @ =gBattleCommunication strb r1, [r0, 0x5] ldr r4, _0802D880 @ =gStringVar1 ldr r0, _0802D884 @ =0x00004037 bl VarGet lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, _0802D888 @ =gStringVar2 movs r1, 0x2 bl GetMonData b _0802D8D6 .align 2, 0 _0802D870: .4byte gBattlerPartyIndexes _0802D874: .4byte gBattlerAttacker _0802D878: .4byte gEnemyParty _0802D87C: .4byte gBattleCommunication _0802D880: .4byte gStringVar1 _0802D884: .4byte 0x00004037 _0802D888: .4byte gStringVar2 _0802D88C: ldr r4, _0802D92C @ =gStringVar1 ldr r0, _0802D930 @ =0x00004037 bl VarGet lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, _0802D934 @ =gStringVar2 movs r1, 0x2 bl GetMonData ldr r4, _0802D938 @ =gStringVar3 bl get_unknown_box_id lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldr r1, _0802D93C @ =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] _0802D8D6: ldr r0, _0802D940 @ =0x00000834 bl FlagGet lsls r0, 24 cmp r0, 0 beq _0802D8EA ldr r1, _0802D93C @ =gBattleCommunication ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] _0802D8EA: ldr r2, _0802D944 @ =gBattleResults ldr r3, _0802D948 @ =gBattleMons ldr r0, _0802D94C @ =gBattlerAttacker ldrb r0, [r0] movs r1, 0x1 eors r1, r0 movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0] strh r0, [r2, 0x28] ldr r0, _0802D950 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r0 ldrh r1, [r1] movs r0, 0x64 muls r0, r1 ldr r1, _0802D954 @ =gEnemyParty adds r0, r1 adds r2, 0x2A movs r1, 0x2 bl GetMonData ldr r1, _0802D958 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D92C: .4byte gStringVar1 _0802D930: .4byte 0x00004037 _0802D934: .4byte gStringVar2 _0802D938: .4byte gStringVar3 _0802D93C: .4byte gBattleCommunication _0802D940: .4byte 0x00000834 _0802D944: .4byte gBattleResults _0802D948: .4byte gBattleMons _0802D94C: .4byte gBattlerAttacker _0802D950: .4byte gBattlerPartyIndexes _0802D954: .4byte gEnemyParty _0802D958: .4byte gBattlescriptCurrInstr thumb_func_end atkF0_givecaughtmon thumb_func_start atkF1_trysetcaughtmondexflags atkF1_trysetcaughtmondexflags: @ 802D95C push {r4,r5,lr} ldr r4, _0802D9AC @ =gEnemyParty adds r0, r4, 0 movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _0802D9B4 ldr r3, _0802D9B0 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802D9CE .align 2, 0 _0802D9AC: .4byte gEnemyParty _0802D9B0: .4byte gBattlescriptCurrInstr _0802D9B4: adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 adds r2, r4, 0 bl HandleSetPokedexFlag ldr r1, _0802D9D4 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802D9CE: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802D9D4: .4byte gBattlescriptCurrInstr thumb_func_end atkF1_trysetcaughtmondexflags thumb_func_start atkF2_displaydexinfo atkF2_displaydexinfo: @ 802D9D8 push {r4,r5,lr} sub sp, 0x18 ldr r0, _0802DA00 @ =gEnemyParty movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 ldr r0, _0802DA04 @ =gBattleCommunication ldrb r0, [r0] cmp r0, 0x5 bls _0802D9F4 b _0802DB6C _0802D9F4: lsls r0, 2 ldr r1, _0802DA08 @ =_0802DA0C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802DA00: .4byte gEnemyParty _0802DA04: .4byte gBattleCommunication _0802DA08: .4byte _0802DA0C .align 2, 0 _0802DA0C: .4byte _0802DA24 .4byte _0802DA3C .4byte _0802DA64 .4byte _0802DAC8 .4byte _0802DAE0 .4byte _0802DB58 _0802DA24: movs r0, 0x1 negs r0, r0 ldr r1, _0802DA38 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0802DB34 .align 2, 0 _0802DA38: .4byte 0x00007fff _0802DA3C: ldr r0, _0802DA5C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DA4A b _0802DB6C _0802DA4A: bl FreeAllWindowBuffers adds r0, r5, 0 bl sub_8106B60 ldr r1, _0802DA60 @ =gBattleCommunication strb r0, [r1, 0x1] b _0802DB36 .align 2, 0 _0802DA5C: .4byte gPaletteFade _0802DA60: .4byte gBattleCommunication _0802DA64: ldr r0, _0802DAAC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DA72 b _0802DB6C _0802DA72: ldr r0, _0802DAB0 @ =gMain ldr r1, [r0, 0x4] ldr r0, _0802DAB4 @ =BattleMainCB2 cmp r1, r0 bne _0802DB6C ldr r2, _0802DAB8 @ =gTasks ldr r4, _0802DABC @ =gBattleCommunication ldrb r1, [r4, 0x1] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r0, [r0, 0x4] cmp r0, 0 bne _0802DB6C str r0, [sp, 0x10] movs r1, 0xC0 lsls r1, 19 ldr r2, _0802DAC0 @ =0x05006000 add r0, sp, 0x10 bl CpuSet ldr r0, _0802DAC4 @ =VBlankCB_Battle bl SetVBlankCallback ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] b _0802DB6C .align 2, 0 _0802DAAC: .4byte gPaletteFade _0802DAB0: .4byte gMain _0802DAB4: .4byte BattleMainCB2 _0802DAB8: .4byte gTasks _0802DABC: .4byte gBattleCommunication _0802DAC0: .4byte 0x05006000 _0802DAC4: .4byte VBlankCB_Battle _0802DAC8: bl sub_800F34C bl LoadBattleTextboxAndBackground ldr r1, _0802DADC @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] b _0802DB34 .align 2, 0 _0802DADC: .4byte gBattle_BG3_X _0802DAE0: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0802DB6C ldr r0, _0802DB40 @ =gBattleMons adds r1, r0, 0 adds r1, 0xAC ldr r1, [r1] adds r0, 0xA0 ldr r2, [r0] movs r0, 0x78 str r0, [sp] movs r0, 0x40 str r0, [sp, 0x4] str r4, [sp, 0x8] ldr r0, _0802DB44 @ =0x0000ffff str r0, [sp, 0xC] adds r0, r5, 0 movs r3, 0x1 bl CreateMonPicSprite_HandleDeoxys str r4, [sp, 0x14] add r0, sp, 0x14 ldr r1, _0802DB48 @ =gPlttBufferFaded ldr r2, _0802DB4C @ =0x05000080 bl CpuSet ldr r0, _0802DB50 @ =0x0001ffff str r4, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0 bl ShowBg movs r0, 0x3 bl ShowBg _0802DB34: ldr r1, _0802DB54 @ =gBattleCommunication _0802DB36: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _0802DB6C .align 2, 0 _0802DB40: .4byte gBattleMons _0802DB44: .4byte 0x0000ffff _0802DB48: .4byte gPlttBufferFaded _0802DB4C: .4byte 0x05000080 _0802DB50: .4byte 0x0001ffff _0802DB54: .4byte gBattleCommunication _0802DB58: ldr r0, _0802DB74 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0802DB6C ldr r1, _0802DB78 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0802DB6C: add sp, 0x18 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802DB74: .4byte gPaletteFade _0802DB78: .4byte gBattlescriptCurrInstr thumb_func_end atkF2_displaydexinfo thumb_func_start HandleBattleWindow HandleBattleWindow: @ 802DB7C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 ldr r4, [sp, 0x40] lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x10] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x1C] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x14] lsls r4, 24 lsrs r4, 24 mov r10, r4 movs r1, 0 add r0, sp, 0xC strh r1, [r0] ldr r6, [sp, 0x10] cmp r6, r3 ble _0802DBB6 b _0802DCA2 _0802DBB6: mov r4, r8 adds r0, r6, 0x1 str r0, [sp, 0x18] ldr r2, [sp, 0x1C] cmp r4, r2 bgt _0802DC98 add r5, sp, 0xC lsls r7, r6, 24 mov r9, r7 _0802DBC8: ldr r0, [sp, 0x10] cmp r6, r0 bne _0802DBF4 cmp r4, r8 bne _0802DBDC ldr r0, _0802DBD8 @ =0x00001022 b _0802DC3E .align 2, 0 _0802DBD8: .4byte 0x00001022 _0802DBDC: ldr r2, [sp, 0x1C] cmp r4, r2 bne _0802DBEC ldr r0, _0802DBE8 @ =0x00001024 b _0802DC3E .align 2, 0 _0802DBE8: .4byte 0x00001024 _0802DBEC: ldr r0, _0802DBF0 @ =0x00001023 b _0802DC3E .align 2, 0 _0802DBF0: .4byte 0x00001023 _0802DBF4: ldr r7, [sp, 0x14] cmp r6, r7 bne _0802DC20 cmp r4, r8 bne _0802DC08 ldr r0, _0802DC04 @ =0x00001028 b _0802DC3E .align 2, 0 _0802DC04: .4byte 0x00001028 _0802DC08: ldr r0, [sp, 0x1C] cmp r4, r0 bne _0802DC18 ldr r0, _0802DC14 @ =0x0000102a b _0802DC3E .align 2, 0 _0802DC14: .4byte 0x0000102a _0802DC18: ldr r0, _0802DC1C @ =0x00001029 b _0802DC3E .align 2, 0 _0802DC1C: .4byte 0x00001029 _0802DC20: cmp r4, r8 bne _0802DC2C ldr r0, _0802DC28 @ =0x00001025 b _0802DC3E .align 2, 0 _0802DC28: .4byte 0x00001025 _0802DC2C: ldr r2, [sp, 0x1C] cmp r4, r2 bne _0802DC3C ldr r0, _0802DC38 @ =0x00001027 b _0802DC3E .align 2, 0 _0802DC38: .4byte 0x00001027 _0802DC3C: ldr r0, _0802DC74 @ =0x00001026 _0802DC3E: strh r0, [r5] movs r1, 0x1 mov r0, r10 ands r0, r1 cmp r0, 0 beq _0802DC4E movs r0, 0 strh r0, [r5] _0802DC4E: movs r0, 0x80 mov r7, r10 ands r0, r7 cmp r0, 0 beq _0802DC78 lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0x1 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette b _0802DC90 .align 2, 0 _0802DC74: .4byte 0x00001026 _0802DC78: lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette _0802DC90: adds r4, 0x1 ldr r0, [sp, 0x1C] cmp r4, r0 ble _0802DBC8 _0802DC98: ldr r6, [sp, 0x18] ldr r2, [sp, 0x14] cmp r6, r2 bgt _0802DCA2 b _0802DBB6 _0802DCA2: movs r0, 0x1 bl CopyBgTilemapBufferToVram add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end HandleBattleWindow thumb_func_start BattleCreateYesNoCursorAt BattleCreateYesNoCursorAt: @ 802DCB8 push {lr} sub sp, 0x10 add r0, sp, 0xC movs r2, 0x1 strh r2, [r0] movs r1, 0x2 strh r1, [r0, 0x2] ldr r0, _0802DCF4 @ =gBattleCommunication ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 str r2, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x18 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 .align 2, 0 _0802DCF4: .4byte gBattleCommunication thumb_func_end BattleCreateYesNoCursorAt thumb_func_start BattleDestroyYesNoCursorAt BattleDestroyYesNoCursorAt: @ 802DCF8 push {lr} sub sp, 0x10 add r0, sp, 0xC movs r1, 0x20 strh r1, [r0] strh r1, [r0, 0x2] ldr r0, _0802DD34 @ =gBattleCommunication ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 movs r0, 0x1 str r0, [sp] movs r0, 0x2 str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x18 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 .align 2, 0 _0802DD34: .4byte gBattleCommunication thumb_func_end BattleDestroyYesNoCursorAt thumb_func_start atkF3_trygivecaughtmonnick atkF3_trygivecaughtmonnick: @ 802DD38 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r0, _0802DD5C @ =gBattleCommunication ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x4 bls _0802DD50 b _0802DFA6 _0802DD50: lsls r0, r1, 2 ldr r1, _0802DD60 @ =_0802DD64 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802DD5C: .4byte gBattleCommunication _0802DD60: .4byte _0802DD64 .align 2, 0 _0802DD64: .4byte _0802DD78 .4byte _0802DDA8 .4byte _0802DE40 .4byte _0802DF18 .4byte _0802DF70 _0802DD78: movs r4, 0 str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl HandleBattleWindow ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice movs r1, 0xE bl BattlePutTextOnWindow ldr r1, _0802DDA4 @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] strb r4, [r1, 0x1] bl BattleCreateYesNoCursorAt b _0802DFA6 .align 2, 0 _0802DDA0: .4byte gText_BattleYesNoChoice _0802DDA4: .4byte gBattleCommunication _0802DDA8: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802DDCC ldrb r0, [r4, 0x1] cmp r0, 0 beq _0802DDCC movs r0, 0x5 bl PlaySE bl BattleDestroyYesNoCursorAt movs r0, 0 strb r0, [r4, 0x1] bl BattleCreateYesNoCursorAt _0802DDCC: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DDF2 ldr r4, _0802DE20 @ =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _0802DDF2 movs r0, 0x5 bl PlaySE bl BattleDestroyYesNoCursorAt movs r0, 0x1 strb r0, [r4, 0x1] bl BattleCreateYesNoCursorAt _0802DDF2: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0802DE24 movs r0, 0x5 bl PlaySE ldr r1, _0802DE20 @ =gBattleCommunication ldrb r0, [r1, 0x1] cmp r0, 0 bne _0802DE36 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] movs r0, 0x3 bl BeginFastPaletteFade b _0802DFA6 .align 2, 0 _0802DE1C: .4byte gMain _0802DE20: .4byte gBattleCommunication _0802DE24: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _0802DE2E b _0802DFA6 _0802DE2E: movs r0, 0x5 bl PlaySE ldr r1, _0802DE3C @ =gBattleCommunication _0802DE36: movs r0, 0x4 strb r0, [r1] b _0802DFA6 .align 2, 0 _0802DE3C: .4byte gBattleCommunication _0802DE40: ldr r0, _0802DEFC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DE4E b _0802DFA6 _0802DE4E: ldr r7, _0802DF00 @ =gBattlerPartyIndexes ldr r0, _0802DF04 @ =gBattlerAttacker mov r10, r0 ldrb r0, [r0] movs r4, 0x1 eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r1, 0x64 mov r9, r1 mov r2, r9 muls r2, r0 adds r0, r2, 0 ldr r1, _0802DF08 @ =gEnemyParty mov r8, r1 add r0, r8 ldr r1, _0802DF0C @ =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl GetMonData bl FreeAllWindowBuffers mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0xB bl GetMonData adds r6, r0, 0 lsls r6, 16 lsrs r6, 16 mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 bl GetMonGender adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 mov r2, r10 ldrb r0, [r2] eors r4, r0 lsls r4, 1 adds r4, r7 ldrh r0, [r4] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0 movs r2, 0 bl GetMonData ldr r2, _0802DF0C @ =gBattleStruct ldr r1, [r2] adds r1, 0x6D str r0, [sp] ldr r0, _0802DF10 @ =BattleMainCB2 str r0, [sp, 0x4] movs r0, 0x2 adds r2, r6, 0 adds r3, r5, 0 bl DoNamingScreen ldr r1, _0802DF14 @ =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _0802DFA6 .align 2, 0 _0802DEFC: .4byte gPaletteFade _0802DF00: .4byte gBattlerPartyIndexes _0802DF04: .4byte gBattlerAttacker _0802DF08: .4byte gEnemyParty _0802DF0C: .4byte gBattleStruct _0802DF10: .4byte BattleMainCB2 _0802DF14: .4byte gBattleCommunication _0802DF18: ldr r0, _0802DF54 @ =gMain ldr r1, [r0, 0x4] ldr r0, _0802DF58 @ =BattleMainCB2 cmp r1, r0 bne _0802DFA6 ldr r0, _0802DF5C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0802DFA6 ldr r2, _0802DF60 @ =gBattlerPartyIndexes ldr r0, _0802DF64 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x1 eors r0, r1 lsls r0, 1 adds r0, r2 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802DF68 @ =gEnemyParty adds r0, r1 ldr r1, _0802DF6C @ =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl SetMonData b _0802DF8C .align 2, 0 _0802DF54: .4byte gMain _0802DF58: .4byte BattleMainCB2 _0802DF5C: .4byte gPaletteFade _0802DF60: .4byte gBattlerPartyIndexes _0802DF64: .4byte gBattlerAttacker _0802DF68: .4byte gEnemyParty _0802DF6C: .4byte gBattleStruct _0802DF70: bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _0802DF8C ldr r1, _0802DF88 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802DFA6 .align 2, 0 _0802DF88: .4byte gBattlescriptCurrInstr _0802DF8C: ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802DFA6: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802DFB8: .4byte gBattlescriptCurrInstr thumb_func_end atkF3_trygivecaughtmonnick thumb_func_start atkF4_subattackerhpbydmg atkF4_subattackerhpbydmg: @ 802DFBC ldr r2, _0802DFDC @ =gBattleMons ldr r0, _0802DFE0 @ =gBattlerAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldr r0, _0802DFE4 @ =gBattleMoveDamage ldr r2, [r0] ldrh r0, [r1, 0x28] subs r0, r2 strh r0, [r1, 0x28] ldr r1, _0802DFE8 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802DFDC: .4byte gBattleMons _0802DFE0: .4byte gBattlerAttacker _0802DFE4: .4byte gBattleMoveDamage _0802DFE8: .4byte gBattlescriptCurrInstr thumb_func_end atkF4_subattackerhpbydmg thumb_func_start atkF5_removeattackerstatus1 atkF5_removeattackerstatus1: @ 802DFEC ldr r1, _0802E008 @ =gBattleMons ldr r0, _0802E00C @ =gBattlerAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 movs r1, 0 str r1, [r0] ldr r1, _0802E010 @ =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802E008: .4byte gBattleMons _0802E00C: .4byte gBattlerAttacker _0802E010: .4byte gBattlescriptCurrInstr thumb_func_end atkF5_removeattackerstatus1 thumb_func_start atkF6_finishaction atkF6_finishaction: @ 802E014 ldr r1, _0802E01C @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] bx lr .align 2, 0 _0802E01C: .4byte gCurrentActionFuncId thumb_func_end atkF6_finishaction thumb_func_start atkF7_finishturn atkF7_finishturn: @ 802E020 ldr r1, _0802E030 @ =gCurrentActionFuncId movs r0, 0xC strb r0, [r1] ldr r1, _0802E034 @ =gCurrentTurnActionNumber ldr r0, _0802E038 @ =gBattlersCount ldrb r0, [r0] strb r0, [r1] bx lr .align 2, 0 _0802E030: .4byte gCurrentActionFuncId _0802E034: .4byte gCurrentTurnActionNumber _0802E038: .4byte gBattlersCount thumb_func_end atkF7_finishturn .align 2, 0 @ Don't pad with nop.