.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text 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.