diff options
Diffstat (limited to 'asm/battle_util.s')
-rw-r--r-- | asm/battle_util.s | 4599 |
1 files changed, 0 insertions, 4599 deletions
diff --git a/asm/battle_util.s b/asm/battle_util.s index d73ed9e0e..b2ed61f7a 100644 --- a/asm/battle_util.s +++ b/asm/battle_util.s @@ -5,4605 +5,6 @@ .text - thumb_func_start GetBattlerForBattleScript -GetBattlerForBattleScript: @ 8016E24 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r2, 0 - cmp r0, 0xC - bhi _08016EC2 - lsls r0, 2 - ldr r1, _08016E3C @ =_08016E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08016E3C: .4byte _08016E40 - .align 2, 0 -_08016E40: - .4byte _08016E74 - .4byte _08016E80 - .4byte _08016E8C - .4byte _08016EA8 - .4byte _08016EC2 - .4byte _08016EA8 - .4byte _08016EC2 - .4byte _08016E98 - .4byte _08016EC2 - .4byte _08016EC2 - .4byte _08016E9C - .4byte _08016EB4 - .4byte _08016EB8 -_08016E74: - ldr r0, _08016E7C @ =gBattlerTarget - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E7C: .4byte gBattlerTarget -_08016E80: - ldr r0, _08016E88 @ =gBattlerAttacker - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E88: .4byte gBattlerAttacker -_08016E8C: - ldr r0, _08016E94 @ =gEffectBattler - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016E94: .4byte gEffectBattler -_08016E98: - movs r2, 0 - b _08016EC2 -_08016E9C: - ldr r0, _08016EA4 @ =gBattleScripting - ldrb r2, [r0, 0x17] - b _08016EC2 - .align 2, 0 -_08016EA4: .4byte gBattleScripting -_08016EA8: - ldr r0, _08016EB0 @ =gBattlerFainted - ldrb r2, [r0] - b _08016EC2 - .align 2, 0 -_08016EB0: .4byte gBattlerFainted -_08016EB4: - movs r0, 0 - b _08016EBA -_08016EB8: - movs r0, 0x1 -_08016EBA: - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r2, r0, 24 -_08016EC2: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end GetBattlerForBattleScript - - thumb_func_start PressurePPLose -PressurePPLose: @ 8016EC8 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _08016EF8 @ =gBattleMons - movs r4, 0x58 - muls r0, r4 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - mov r12, r1 - cmp r0, 0x2E - bne _08016F7A - movs r3, 0 - adds r0, r5, 0 - muls r0, r4 - adds r1, 0xC - adds r1, r0, r1 - b _08016F04 - .align 2, 0 -_08016EF8: .4byte gBattleMons -_08016EFC: - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x3 - bgt _08016F0A -_08016F04: - ldrh r0, [r1] - cmp r0, r2 - bne _08016EFC -_08016F0A: - cmp r3, 0x4 - beq _08016F7A - movs r7, 0x58 - adds r2, r5, 0 - muls r2, r7 - adds r0, r3, r2 - mov r6, r12 - adds r6, 0x24 - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _08016F26 - subs r0, 0x1 - strb r0, [r1] -_08016F26: - mov r0, r12 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _08016F7A - ldr r1, _08016F84 @ =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _08016F88 @ =gBitTable - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08016F7A - ldr r4, _08016F8C @ =gActiveBattler - strb r5, [r4] - adds r1, r3, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r7 - adds r0, r6 - adds r0, r3 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_08016F7A: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08016F84: .4byte gDisableStructs -_08016F88: .4byte gBitTable -_08016F8C: .4byte gActiveBattler - thumb_func_end PressurePPLose - - thumb_func_start PressurePPLoseOnUsingImprision -PressurePPLoseOnUsingImprision: @ 8016F90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x4 - mov r8, r0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, _080170B0 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - bge _08017038 - ldr r1, _080170B4 @ =gBattleMons - movs r0, 0x58 - adds r7, r5, 0 - muls r7, r0 - adds r1, 0xC - mov r10, r1 -_08016FC6: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r6, r4, 0x1 - cmp r9, r0 - beq _0801702E - ldr r0, _080170B4 @ =gBattleMons - movs r3, 0x58 - adds r1, r4, 0 - muls r1, r3 - adds r1, r0 - adds r1, 0x20 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0x2E - bne _0801702E - movs r2, 0 - adds r0, r5, 0 - muls r0, r3 - adds r1, r4, 0 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x8F - lsls r1, 1 - cmp r0, r1 - beq _08017016 - adds r3, r1, 0 - mov r0, r10 - adds r1, r7, r0 -_08017008: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017016 - ldrh r0, [r1] - cmp r0, r3 - bne _08017008 -_08017016: - cmp r2, 0x4 - beq _0801702E - mov r8, r2 - adds r1, r2, r7 - adds r0, r4, 0 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0801702E - subs r0, 0x1 - strb r0, [r1] -_0801702E: - adds r4, r6, 0 - ldr r0, _080170B0 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08016FC6 -_08017038: - mov r1, r8 - cmp r1, 0x4 - beq _080170A0 - ldr r6, _080170B4 @ =gBattleMons - movs r3, 0x58 - adds r0, r5, 0 - muls r0, r3 - adds r1, r6, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080170A0 - ldr r1, _080170B8 @ =gDisableStructs - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _080170BC @ =gBitTable - mov r4, r8 - lsls r0, r4, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080170A0 - ldr r4, _080170C0 @ =gActiveBattler - strb r5, [r4] - mov r1, r8 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r3 - adds r2, r6, 0 - adds r2, 0x24 - adds r0, r2 - add r0, r8 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080170A0: - 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 -_080170B0: .4byte gBattlersCount -_080170B4: .4byte gBattleMons -_080170B8: .4byte gDisableStructs -_080170BC: .4byte gBitTable -_080170C0: .4byte gActiveBattler - thumb_func_end PressurePPLoseOnUsingImprision - - thumb_func_start PressurePPLoseOnUsingPerishSong -PressurePPLoseOnUsingPerishSong: @ 80170C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - movs r6, 0x4 - movs r1, 0 - ldr r0, _080171BC @ =gBattlersCount - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bge _08017146 - ldr r7, _080171C0 @ =gBattleMons - movs r2, 0x58 - mov r12, r2 - mov r5, r12 - muls r5, r3 - adds r0, r7, 0 - adds r0, 0xC - adds r2, r5, r0 - mov r10, r2 - mov r9, r5 -_080170F6: - mov r0, r12 - muls r0, r1 - adds r0, r7 - adds r0, 0x20 - ldrb r0, [r0] - adds r4, r1, 0x1 - cmp r0, 0x2E - bne _0801713C - cmp r1, r3 - beq _0801713C - movs r2, 0 - mov r1, r10 - ldrh r0, [r1] - cmp r0, 0xC3 - beq _08017126 - ldr r1, _080171C4 @ =gUnknown_2023BF0 - add r1, r9 -_08017118: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017126 - ldrh r0, [r1] - cmp r0, 0xC3 - bne _08017118 -_08017126: - cmp r2, 0x4 - beq _0801713C - adds r6, r2, 0 - adds r0, r6, r5 - ldr r2, _080171C8 @ =gUnknown_2023C08 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0801713C - subs r0, 0x1 - strb r0, [r1] -_0801713C: - adds r1, r4, 0 - mov r0, r8 - ldrb r0, [r0] - cmp r1, r0 - blt _080170F6 -_08017146: - cmp r6, 0x4 - beq _080171AA - ldr r7, _080171C0 @ =gBattleMons - movs r5, 0x58 - adds r0, r3, 0 - muls r0, r5 - adds r1, r7, 0 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 14 - ands r0, r1 - cmp r0, 0 - bne _080171AA - ldr r1, _080171CC @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x18] - lsrs r1, 4 - ldr r2, _080171D0 @ =gBitTable - lsls r0, r6, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080171AA - ldr r4, _080171D4 @ =gActiveBattler - strb r3, [r4] - adds r1, r6, 0 - adds r1, 0x9 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r4] - muls r0, r5 - adds r2, r7, 0 - adds r2, 0x24 - adds r0, r2 - adds r0, r6 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0x1 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec -_080171AA: - 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 -_080171BC: .4byte gBattlersCount -_080171C0: .4byte gBattleMons -_080171C4: .4byte gUnknown_2023BF0 -_080171C8: .4byte gUnknown_2023C08 -_080171CC: .4byte gDisableStructs -_080171D0: .4byte gBitTable -_080171D4: .4byte gActiveBattler - thumb_func_end PressurePPLoseOnUsingPerishSong - - thumb_func_start MarkAllBattlersForControllerExec -MarkAllBattlersForControllerExec: @ 80171D8 - push {r4,r5,lr} - ldr r0, _08017208 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08017218 - movs r2, 0 - ldr r4, _0801720C @ =gBattlersCount - ldrb r0, [r4] - cmp r2, r0 - bge _08017236 - ldr r3, _08017210 @ =gBattleControllerExecFlags - ldr r5, _08017214 @ =gBitTable -_080171F4: - ldm r5!, {r1} - lsls r1, 28 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _080171F4 - b _08017236 - .align 2, 0 -_08017208: .4byte gBattleTypeFlags -_0801720C: .4byte gBattlersCount -_08017210: .4byte gBattleControllerExecFlags -_08017214: .4byte gBitTable -_08017218: - movs r2, 0 - ldr r4, _0801723C @ =gBattlersCount - ldrb r0, [r4] - cmp r2, r0 - bge _08017236 - ldr r3, _08017240 @ =gBattleControllerExecFlags - ldr r5, _08017244 @ =gBitTable -_08017226: - ldr r0, [r3] - ldm r5!, {r1} - orrs r0, r1 - str r0, [r3] - adds r2, 0x1 - ldrb r0, [r4] - cmp r2, r0 - blt _08017226 -_08017236: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801723C: .4byte gBattlersCount -_08017240: .4byte gBattleControllerExecFlags -_08017244: .4byte gBitTable - thumb_func_end MarkAllBattlersForControllerExec - - thumb_func_start MarkBattlerForControllerExec -MarkBattlerForControllerExec: @ 8017248 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _08017270 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801727C - ldr r2, _08017274 @ =gBattleControllerExecFlags - ldr r1, _08017278 @ =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 28 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - b _0801728C - .align 2, 0 -_08017270: .4byte gBattleTypeFlags -_08017274: .4byte gBattleControllerExecFlags -_08017278: .4byte gBitTable -_0801727C: - ldr r2, _08017290 @ =gBattleControllerExecFlags - ldr r1, _08017294 @ =gBitTable - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - orrs r1, r0 - str r1, [r2] -_0801728C: - pop {r0} - bx r0 - .align 2, 0 -_08017290: .4byte gBattleControllerExecFlags -_08017294: .4byte gBitTable - thumb_func_end MarkBattlerForControllerExec - - thumb_func_start sub_8017298 -sub_8017298: @ 8017298 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0 - ldr r5, _080172AC @ =gBattleControllerExecFlags - ldr r1, _080172B0 @ =gBitTable - lsls r0, r7, 2 - adds r6, r0, r1 - b _080172C2 - .align 2, 0 -_080172AC: .4byte gBattleControllerExecFlags -_080172B0: .4byte gBitTable -_080172B4: - lsls r0, r4, 2 - ldr r1, [r6] - lsls r1, r0 - ldr r0, [r5] - orrs r0, r1 - str r0, [r5] - adds r4, 0x1 -_080172C2: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _080172B4 - ldr r2, _080172E4 @ =gBattleControllerExecFlags - movs r1, 0x80 - lsls r1, 21 - lsls r1, r7 - ldr r0, [r2] - bics r0, r1 - str r0, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080172E4: .4byte gBattleControllerExecFlags - thumb_func_end sub_8017298 - - thumb_func_start CancelMultiTurnMoves -CancelMultiTurnMoves: @ 80172E8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08017338 @ =gBattleMons - movs r2, 0x58 - adds r3, r0, 0 - muls r3, r2 - adds r1, 0x50 - adds r3, r1 - ldr r1, [r3] - ldr r2, _0801733C @ =0xffffefff - ands r1, r2 - ldr r2, _08017340 @ =0xfffff3ff - ands r1, r2 - movs r2, 0x71 - negs r2, r2 - ands r1, r2 - ldr r2, _08017344 @ =0xfffffcff - ands r1, r2 - str r1, [r3] - ldr r1, _08017348 @ =gStatuses3 - lsls r2, r0, 2 - adds r2, r1 - ldr r1, [r2] - ldr r3, _0801734C @ =0xfffbff3f - ands r1, r3 - str r1, [r2] - ldr r2, _08017350 @ =gDisableStructs - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x11] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x11] - movs r0, 0 - strb r0, [r1, 0x10] - bx lr - .align 2, 0 -_08017338: .4byte gBattleMons -_0801733C: .4byte 0xffffefff -_08017340: .4byte 0xfffff3ff -_08017344: .4byte 0xfffffcff -_08017348: .4byte gStatuses3 -_0801734C: .4byte 0xfffbff3f -_08017350: .4byte gDisableStructs - thumb_func_end CancelMultiTurnMoves - - thumb_func_start WasUnableToUseMove -WasUnableToUseMove: @ 8017354 - push {lr} - lsls r0, 24 - ldr r1, _080173A0 @ =gProtectStructs - lsrs r0, 20 - adds r1, r0, r1 - ldrb r0, [r1] - lsrs r0, 7 - cmp r0, 0 - bne _0801739A - ldrb r2, [r1, 0x1] - lsls r0, r2, 30 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 26 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 25 - cmp r0, 0 - blt _0801739A - lsrs r0, r2, 7 - cmp r0, 0 - bne _0801739A - ldrb r1, [r1, 0x2] - lsls r0, r1, 31 - cmp r0, 0 - bne _0801739A - lsls r0, r1, 30 - cmp r0, 0 - blt _0801739A - lsls r0, r1, 29 - cmp r0, 0 - blt _0801739A - lsls r0, r2, 31 - cmp r0, 0 - beq _080173A4 -_0801739A: - movs r0, 0x1 - b _080173A6 - .align 2, 0 -_080173A0: .4byte gProtectStructs -_080173A4: - movs r0, 0 -_080173A6: - pop {r1} - bx r1 - thumb_func_end WasUnableToUseMove - - thumb_func_start PrepareStringBattle -PrepareStringBattle: @ 80173AC - push {r4,lr} - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r4, _080173CC @ =gActiveBattler - strb r1, [r4] - movs r0, 0 - adds r1, r2, 0 - bl BtlController_EmitPrintString - ldrb r0, [r4] - bl MarkBattlerForControllerExec - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080173CC: .4byte gActiveBattler - thumb_func_end PrepareStringBattle - - thumb_func_start ResetSentPokesToOpponentValue -ResetSentPokesToOpponentValue: @ 80173D0 - push {r4-r6,lr} - movs r3, 0 - ldr r0, _08017424 @ =gSentPokesToOpponent - strb r3, [r0] - strb r3, [r0, 0x1] - movs r1, 0 - ldr r0, _08017428 @ =gBattlersCount - ldrb r2, [r0] - adds r6, r0, 0 - cmp r1, r2 - bge _080173FE - ldr r5, _0801742C @ =gBitTable - adds r4, r2, 0 - ldr r2, _08017430 @ =gBattlerPartyIndexes -_080173EC: - ldrh r0, [r2] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - orrs r3, r0 - adds r2, 0x4 - adds r1, 0x2 - cmp r1, r4 - blt _080173EC -_080173FE: - movs r1, 0x1 - adds r2, r6, 0 - ldrb r0, [r2] - cmp r1, r0 - bge _0801741E - ldr r5, _08017424 @ =gSentPokesToOpponent - movs r4, 0x2 -_0801740C: - adds r0, r1, 0 - ands r0, r4 - asrs r0, 1 - adds r0, r5 - strb r3, [r0] - adds r1, 0x2 - ldrb r0, [r2] - cmp r1, r0 - blt _0801740C -_0801741E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08017424: .4byte gSentPokesToOpponent -_08017428: .4byte gBattlersCount -_0801742C: .4byte gBitTable -_08017430: .4byte gBattlerPartyIndexes - thumb_func_end ResetSentPokesToOpponentValue - - thumb_func_start sub_8017434 -sub_8017434: @ 8017434 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08017498 - movs r0, 0x2 - ands r0, r5 - lsls r0, 24 - lsrs r0, 25 - mov r12, r0 - ldr r1, _080174A4 @ =gSentPokesToOpponent - adds r0, r1 - strb r4, [r0] - adds r5, r4, 0 - ldr r0, _080174A8 @ =gBattlersCount - ldrb r2, [r0] - mov r8, r1 - cmp r4, r2 - bge _08017492 - ldr r0, _080174AC @ =gAbsentBattlerFlags - ldrb r7, [r0] - ldr r1, _080174B0 @ =gBitTable - adds r6, r2, 0 - ldr r3, _080174B4 @ =gBattlerPartyIndexes - adds r2, r1, 0 -_08017476: - ldr r0, [r2] - ands r0, r7 - cmp r0, 0 - bne _08017488 - ldrh r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - orrs r4, r0 -_08017488: - adds r3, 0x4 - adds r2, 0x8 - adds r5, 0x2 - cmp r5, r6 - blt _08017476 -_08017492: - mov r0, r12 - add r0, r8 - strb r4, [r0] -_08017498: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080174A4: .4byte gSentPokesToOpponent -_080174A8: .4byte gBattlersCount -_080174AC: .4byte gAbsentBattlerFlags -_080174B0: .4byte gBitTable -_080174B4: .4byte gBattlerPartyIndexes - thumb_func_end sub_8017434 - - thumb_func_start sub_80174B8 -sub_80174B8: @ 80174B8 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080174D4 - adds r0, r4, 0 - bl sub_8017434 - b _0801750A -_080174D4: - movs r3, 0x1 - ldr r5, _08017510 @ =gBattlersCount - ldrb r0, [r5] - cmp r3, r0 - bge _0801750A - ldr r0, _08017514 @ =gSentPokesToOpponent - mov r12, r0 - movs r7, 0x2 - ldr r6, _08017518 @ =gBitTable - ldr r1, _0801751C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r4, r0, r1 -_080174EC: - adds r2, r3, 0 - ands r2, r7 - asrs r2, 1 - add r2, r12 - ldrh r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r1, [r2] - orrs r0, r1 - strb r0, [r2] - adds r3, 0x1 - ldrb r0, [r5] - cmp r3, r0 - blt _080174EC -_0801750A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08017510: .4byte gBattlersCount -_08017514: .4byte gSentPokesToOpponent -_08017518: .4byte gBitTable -_0801751C: .4byte gBattlerPartyIndexes - thumb_func_end sub_80174B8 - - thumb_func_start BattleScriptPush -BattleScriptPush: @ 8017520 - push {r4,lr} - ldr r1, _08017540 @ =gBattleResources - ldr r1, [r1] - ldr r3, [r1, 0x8] - adds r4, r3, 0 - adds r4, 0x20 - ldrb r1, [r4] - adds r2, r1, 0x1 - strb r2, [r4] - lsls r1, 24 - lsrs r1, 22 - adds r3, r1 - str r0, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08017540: .4byte gBattleResources - thumb_func_end BattleScriptPush - - thumb_func_start BattleScriptPushCursor -BattleScriptPushCursor: @ 8017544 - ldr r0, _08017564 @ =gBattleResources - ldr r0, [r0] - ldr r2, [r0, 0x8] - adds r3, r2, 0 - adds r3, 0x20 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 22 - adds r2, r0 - ldr r0, _08017568 @ =gBattlescriptCurrInstr - ldr r0, [r0] - str r0, [r2] - bx lr - .align 2, 0 -_08017564: .4byte gBattleResources -_08017568: .4byte gBattlescriptCurrInstr - thumb_func_end BattleScriptPushCursor - - thumb_func_start BattleScriptPop -BattleScriptPop: @ 801756C - ldr r3, _0801758C @ =gBattlescriptCurrInstr - ldr r0, _08017590 @ =gBattleResources - ldr r0, [r0] - ldr r1, [r0, 0x8] - adds r2, r1, 0 - adds r2, 0x20 - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r1, r0 - ldr r0, [r1] - str r0, [r3] - bx lr - .align 2, 0 -_0801758C: .4byte gBattlescriptCurrInstr -_08017590: .4byte gBattleResources - thumb_func_end BattleScriptPop - - thumb_func_start TrySetCantSelectMoveBattleScript -TrySetCantSelectMoveBattleScript: @ 8017594 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r2, _080176AC @ =gBattleMons - ldr r1, _080176B0 @ =gBattleBufferB - ldr r5, _080176B4 @ =gActiveBattler - ldrb r3, [r5] - lsls r0, r3, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 1 - movs r1, 0x58 - muls r1, r3 - adds r0, r1 - adds r2, 0xC - adds r0, r2 - ldrh r4, [r0] - ldr r1, _080176B8 @ =gBattleStruct - lsls r0, r3, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r1, r0 - mov r8, r1 - ldr r1, _080176BC @ =gDisableStructs - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x4] - cmp r0, r4 - bne _080175F0 - cmp r4, 0 - beq _080175F0 - ldr r0, _080176C0 @ =gBattleScripting - strb r3, [r0, 0x17] - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176CC @ =BattleScript_SelectingDisabledMove - str r1, [r0] - movs r6, 0x1 -_080175F0: - ldr r1, _080176D0 @ =gLastUsedMove - ldr r5, _080176B4 @ =gActiveBattler - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _0801762C - cmp r4, 0xA5 - beq _0801762C - ldr r1, _080176AC @ =gBattleMons - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0801762C - adds r0, r2, 0 - bl CancelMultiTurnMoves - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176D4 @ =BattleScript_SelectingTormentedMove - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801762C: - ldr r2, _080176BC @ =gDisableStructs - ldr r3, _080176B4 @ =gActiveBattler - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _08017668 - ldr r0, _080176D8 @ =gBattleMoves - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _08017668 - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176DC @ =BattleScript_SelectingNotAllowedMoveTaunt - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017668: - ldr r5, _080176B4 @ =gActiveBattler - ldrb r0, [r5] - adds r1, r4, 0 - bl GetImprisonedMovesCount - lsls r0, 24 - cmp r0, 0 - beq _0801768E - ldr r0, _080176C4 @ =gCurrentMove - strh r4, [r0] - ldr r1, _080176C8 @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080176E0 @ =BattleScript_SelectingImprisonedMove - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801768E: - ldr r1, _080176AC @ =gBattleMons - ldrb r2, [r5] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _080176E8 - ldr r1, _080176E4 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x7] - b _080176F2 - .align 2, 0 -_080176AC: .4byte gBattleMons -_080176B0: .4byte gBattleBufferB -_080176B4: .4byte gActiveBattler -_080176B8: .4byte gBattleStruct -_080176BC: .4byte gDisableStructs -_080176C0: .4byte gBattleScripting -_080176C4: .4byte gCurrentMove -_080176C8: .4byte gSelectionBattleScripts -_080176CC: .4byte BattleScript_SelectingDisabledMove -_080176D0: .4byte gLastUsedMove -_080176D4: .4byte BattleScript_SelectingTormentedMove -_080176D8: .4byte gBattleMoves -_080176DC: .4byte BattleScript_SelectingNotAllowedMoveTaunt -_080176E0: .4byte BattleScript_SelectingImprisonedMove -_080176E4: .4byte gEnigmaBerries -_080176E8: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r3, r0, 24 -_080176F2: - ldr r2, _08017774 @ =gPotentialItemEffectBattler - ldr r1, _08017778 @ =gActiveBattler - ldrb r0, [r1] - strb r0, [r2] - ldr r7, _0801777C @ =gBattleMons - adds r5, r1, 0 - cmp r3, 0x1D - bne _0801773A - mov r0, r8 - ldrh r1, [r0] - adds r2, r1, 0 - cmp r2, 0 - beq _0801773A - ldr r0, _08017780 @ =0x0000ffff - cmp r2, r0 - beq _0801773A - cmp r2, r4 - beq _0801773A - ldr r0, _08017784 @ =gCurrentMove - strh r1, [r0] - ldr r2, _08017788 @ =gLastUsedItem - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r7 - ldrh r0, [r0, 0x2E] - strh r0, [r2] - ldr r1, _0801778C @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08017790 @ =BattleScript_SelectingNotAllowedMoveChoiceItem - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0801773A: - ldr r0, _08017794 @ =gBattleBufferB - ldrb r2, [r5] - lsls r1, r2, 9 - adds r0, 0x2 - adds r1, r0 - movs r0, 0x58 - muls r0, r2 - ldrb r1, [r1] - adds r0, r1 - adds r1, r7, 0 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08017768 - ldr r1, _0801778C @ =gSelectionBattleScripts - lsls r0, r2, 2 - adds r0, r1 - ldr r1, _08017798 @ =BattleScript_SelectingMoveWithNoPP - str r1, [r0] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017768: - adds r0, r6, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017774: .4byte gPotentialItemEffectBattler -_08017778: .4byte gActiveBattler -_0801777C: .4byte gBattleMons -_08017780: .4byte 0x0000ffff -_08017784: .4byte gCurrentMove -_08017788: .4byte gLastUsedItem -_0801778C: .4byte gSelectionBattleScripts -_08017790: .4byte BattleScript_SelectingNotAllowedMoveChoiceItem -_08017794: .4byte gBattleBufferB -_08017798: .4byte BattleScript_SelectingMoveWithNoPP - thumb_func_end TrySetCantSelectMoveBattleScript - - thumb_func_start CheckMoveLimitations -CheckMoveLimitations: @ 801779C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - ldr r1, _080177E0 @ =gBattleStruct - lsls r0, r7, 1 - adds r0, 0xC8 - ldr r1, [r1] - adds r1, r0 - str r1, [sp, 0x4] - ldr r1, _080177E4 @ =gBattleMons - movs r0, 0x58 - muls r0, r7 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _080177EC - ldr r2, _080177E8 @ =gEnigmaBerries - lsls r1, r7, 3 - subs r0, r1, r7 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x7] - str r0, [sp] - b _080177FE - .align 2, 0 -_080177E0: .4byte gBattleStruct -_080177E4: .4byte gBattleMons -_080177E8: .4byte gEnigmaBerries -_080177EC: - ldrh r0, [r1, 0x2E] - str r3, [sp, 0x14] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, r7, 3 - ldr r3, [sp, 0x14] -_080177FE: - ldr r0, _08017978 @ =gPotentialItemEffectBattler - strb r7, [r0] - movs r0, 0 - mov r9, r0 - lsls r2, r7, 1 - str r2, [sp, 0xC] - ldr r5, _0801797C @ =gDisableStructs - mov r12, r5 - ldr r0, _08017980 @ =gBattleMons - movs r2, 0x58 - adds r6, r7, 0 - muls r6, r2 - str r6, [sp, 0x8] - ldr r2, _08017984 @ =gUnknown_2023BF0 - adds r5, r6, r2 - movs r6, 0 - str r6, [sp, 0x10] - mov r10, r0 - subs r0, r1, r7 - lsls r0, 2 - mov r8, r0 - ldr r6, _08017988 @ =gBitTable -_0801782A: - ldrh r0, [r5] - cmp r0, 0 - bne _08017840 - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _08017840 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017840: - ldr r0, [sp, 0x8] - add r0, r9 - mov r1, r10 - adds r1, 0x24 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08017860 - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _08017860 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017860: - mov r1, r8 - add r1, r12 - ldrh r0, [r5] - ldrh r1, [r1, 0x4] - cmp r0, r1 - bne _0801787C - movs r0, 0x4 - ands r0, r3 - cmp r0, 0 - beq _0801787C - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801787C: - movs r0, 0x58 - adds r2, r7, 0 - muls r2, r0 - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldr r1, _08017984 @ =gUnknown_2023BF0 - adds r0, r1 - mov r12, r0 - ldr r1, _0801798C @ =gLastUsedMove - ldr r0, [sp, 0xC] - adds r1, r0, r1 - str r1, [sp, 0x18] - mov r1, r12 - ldrh r1, [r1] - mov r12, r1 - ldr r0, [sp, 0x18] - ldrh r0, [r0] - cmp r12, r0 - bne _080178BE - movs r0, 0x8 - ands r0, r3 - cmp r0, 0 - beq _080178BE - mov r0, r10 - adds r0, 0x50 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - bge _080178BE - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080178BE: - ldr r0, _0801797C @ =gDisableStructs - add r0, r8 - ldrb r0, [r0, 0x13] - lsls r0, 28 - cmp r0, 0 - beq _080178EC - movs r0, 0x10 - ands r0, r3 - cmp r0, 0 - beq _080178EC - ldr r2, _08017990 @ =gBattleMoves - ldrh r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _080178EC - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080178EC: - ldrh r1, [r5] - adds r0, r7, 0 - str r3, [sp, 0x14] - bl GetImprisonedMovesCount - lsls r0, 24 - ldr r3, [sp, 0x14] - cmp r0, 0 - beq _0801790E - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _0801790E - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801790E: - ldr r1, _0801797C @ =gDisableStructs - mov r0, r8 - adds r2, r0, r1 - ldrb r0, [r2, 0xE] - lsls r0, 28 - mov r12, r1 - cmp r0, 0 - beq _0801792E - ldrh r0, [r2, 0x6] - ldrh r1, [r5] - cmp r0, r1 - beq _0801792E - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_0801792E: - ldr r2, [sp] - cmp r2, 0x1D - bne _08017950 - ldr r0, [sp, 0x4] - ldrh r1, [r0] - cmp r1, 0 - beq _08017950 - ldr r0, _08017994 @ =0x0000ffff - cmp r1, r0 - beq _08017950 - ldrh r2, [r5] - cmp r1, r2 - beq _08017950 - ldr r0, [r6] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_08017950: - adds r6, 0x4 - adds r5, 0x2 - ldr r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x10] - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x3 - bgt _08017966 - b _0801782A -_08017966: - adds r0, r4, 0 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017978: .4byte gPotentialItemEffectBattler -_0801797C: .4byte gDisableStructs -_08017980: .4byte gBattleMons -_08017984: .4byte gUnknown_2023BF0 -_08017988: .4byte gBitTable -_0801798C: .4byte gLastUsedMove -_08017990: .4byte gBattleMoves -_08017994: .4byte 0x0000ffff - thumb_func_end CheckMoveLimitations - - thumb_func_start AreAllMovesUnusable -AreAllMovesUnusable: @ 8017998 - push {r4-r6,lr} - ldr r5, _08017A04 @ =gActiveBattler - ldrb r0, [r5] - movs r1, 0 - movs r2, 0xFF - bl CheckMoveLimitations - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bne _08017A40 - ldr r0, _08017A08 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r1, _08017A0C @ =gSelectionBattleScripts - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08017A10 @ =gUnknown_81D8EA0 - str r1, [r0] - ldr r0, _08017A14 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08017A1C - ldrb r0, [r5] - bl GetBattlerPosition - adds r4, r0, 0 - bl Random - movs r1, 0x1 - eors r4, r1 - movs r1, 0x2 - ands r1, r0 - orrs r4, r1 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl GetBattlerAtPosition - ldr r2, _08017A18 @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08017A50 - .align 2, 0 -_08017A04: .4byte gActiveBattler -_08017A08: .4byte gProtectStructs -_08017A0C: .4byte gSelectionBattleScripts -_08017A10: .4byte gUnknown_81D8EA0 -_08017A14: .4byte gBattleTypeFlags -_08017A18: .4byte gBattleBufferB -_08017A1C: - ldrb r0, [r5] - bl GetBattlerPosition - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerAtPosition - ldr r2, _08017A3C @ =gBattleBufferB - ldrb r1, [r5] - lsls r1, 9 - adds r2, 0x3 - adds r1, r2 - b _08017A50 - .align 2, 0 -_08017A3C: .4byte gBattleBufferB -_08017A40: - ldr r0, _08017A60 @ =gProtectStructs - ldrb r1, [r5] - lsls r1, 4 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 -_08017A50: - strb r0, [r1] - movs r0, 0 - cmp r6, 0xF - bne _08017A5A - movs r0, 0x1 -_08017A5A: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08017A60: .4byte gProtectStructs - thumb_func_end AreAllMovesUnusable - - thumb_func_start GetImprisonedMovesCount -GetImprisonedMovesCount: @ 8017A64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - movs r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r4, 0 - ldr r0, _08017AF8 @ =gBattlersCount - ldrb r0, [r0] - cmp r6, r0 - bge _08017AE8 - ldr r7, _08017AFC @ =gUnknown_2023BF0 - mov r8, r7 -_08017A8E: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - adds r3, r4, 0x1 - cmp r9, r0 - beq _08017ADE - ldr r1, _08017B00 @ =gStatuses3 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 6 - ands r0, r1 - cmp r0, 0 - beq _08017ADE - movs r2, 0 - movs r0, 0x58 - adds r1, r4, 0 - muls r1, r0 - adds r0, r1, r7 - ldrh r0, [r0] - cmp r5, r0 - beq _08017AD4 - mov r4, r8 - adds r0, r1, r4 -_08017AC6: - adds r0, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08017ADE - ldrh r1, [r0] - cmp r5, r1 - bne _08017AC6 -_08017AD4: - cmp r2, 0x3 - bgt _08017ADE - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08017ADE: - adds r4, r3, 0 - ldr r0, _08017AF8 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08017A8E -_08017AE8: - adds r0, r6, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08017AF8: .4byte gBattlersCount -_08017AFC: .4byte gUnknown_2023BF0 -_08017B00: .4byte gStatuses3 - thumb_func_end GetImprisonedMovesCount - - thumb_func_start DoFieldEndTurnEffects -DoFieldEndTurnEffects: @ 8017B04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r9, r0 - ldr r1, _08017BA8 @ =gBattlerAttacker - mov r2, r9 - strb r2, [r1] - ldr r0, _08017BAC @ =gBattlersCount - ldrb r4, [r0] - adds r6, r1, 0 - mov r10, r0 - ldr r7, _08017BB0 @ =gBattlerTarget - ldr r3, _08017BB4 @ =gBattleStruct - mov r12, r3 - cmp r9, r4 - bcs _08017B58 - ldr r2, _08017BB8 @ =gAbsentBattlerFlags - ldrb r1, [r2] - ldr r5, _08017BBC @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08017B58 - adds r3, r6, 0 -_08017B3A: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08017B58 - ldrb r0, [r2] - ldrb r1, [r6] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08017B3A -_08017B58: - movs r0, 0 - strb r0, [r7] - mov r0, r10 - ldrb r4, [r0] - cmp r4, 0 - beq _08017B92 - ldr r2, _08017BB8 @ =gAbsentBattlerFlags - ldrb r1, [r2] - ldr r5, _08017BBC @ =gBitTable - ldr r0, [r5] - ands r1, r0 - cmp r1, 0 - beq _08017B92 - adds r3, r7, 0 -_08017B74: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - lsls r0, 24 - lsrs r0, 24 - cmp r0, r4 - bcs _08017B92 - ldrb r0, [r2] - ldrb r1, [r7] - lsls r1, 2 - adds r1, r5 - ldr r1, [r1] - ands r0, r1 - cmp r0, 0 - bne _08017B74 -_08017B92: - mov r1, r12 - ldr r0, [r1] - ldrb r0, [r0, 0x3] - cmp r0, 0xA - bls _08017B9E - b _0801822A -_08017B9E: - lsls r0, 2 - ldr r1, _08017BC0 @ =_08017BC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08017BA8: .4byte gBattlerAttacker -_08017BAC: .4byte gBattlersCount -_08017BB0: .4byte gBattlerTarget -_08017BB4: .4byte gBattleStruct -_08017BB8: .4byte gAbsentBattlerFlags -_08017BBC: .4byte gBitTable -_08017BC0: .4byte _08017BC4 - .align 2, 0 -_08017BC4: - .4byte _08017BF0 - .4byte _08017C76 - .4byte _08017D3C - .4byte _08017E08 - .4byte _08017EE4 - .4byte _08017F9C - .4byte _08018050 - .4byte _080180D4 - .4byte _08018144 - .4byte _0801819C - .4byte _08018220 -_08017BF0: - movs r5, 0 - ldr r1, _08017C10 @ =gBattlersCount - mov r10, r1 - ldrb r2, [r1] - cmp r5, r2 - bge _08017C0A - ldr r2, _08017C14 @ =gBattlerByTurnOrder -_08017BFE: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r3, [r1] - cmp r5, r3 - blt _08017BFE -_08017C0A: - movs r5, 0 - b _08017C58 - .align 2, 0 -_08017C10: .4byte gBattlersCount -_08017C14: .4byte gBattlerByTurnOrder -_08017C18: - adds r4, r5, 0x1 - adds r6, r4, 0 - ldrb r1, [r1] - cmp r6, r1 - bge _08017C56 - ldr r7, _08017D14 @ =gBattlerByTurnOrder - ldr r0, _08017D18 @ =gBattlersCount - mov r10, r0 - lsls r1, r5, 24 - mov r8, r1 -_08017C2C: - adds r0, r5, r7 - ldrb r0, [r0] - adds r1, r4, r7 - ldrb r1, [r1] - movs r2, 0 - bl GetWhoStrikesFirst - lsls r0, 24 - cmp r0, 0 - beq _08017C4C - lsls r1, r4, 24 - lsrs r1, 24 - mov r2, r8 - lsrs r0, r2, 24 - bl SwapTurnOrder -_08017C4C: - adds r4, 0x1 - ldr r0, _08017D18 @ =gBattlersCount - ldrb r0, [r0] - cmp r4, r0 - blt _08017C2C -_08017C56: - adds r5, r6, 0 -_08017C58: - mov r1, r10 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _08017C18 - ldr r2, _08017D1C @ =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - ldr r0, [r2] - adds r0, 0xDB - movs r1, 0 - strb r1, [r0] - mov r12, r2 -_08017C76: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017C84 - b _08017F60 -_08017C84: - ldr r3, _08017D20 @ =gActiveBattler - mov r8, r3 - movs r7, 0 - ldr r6, _08017D24 @ =gBattlerAttacker - ldr r5, _08017D28 @ =gBattleTextBuff1 -_08017C8E: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017D2C @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x1] - strb r0, [r6] - mov r3, r8 - strb r0, [r3] - ldr r0, _08017D30 @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08017CF0 - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] - movs r4, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017CF0 - ldrh r0, [r3] - ldr r2, _08017D34 @ =0x0000fffe - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017D38 @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x73 - strb r0, [r5, 0x2] - strb r7, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r4 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017CF0: - ldr r2, _08017D1C @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _08017D06 - b _08018232 -_08017D06: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017C8E - b _08017F60 - .align 2, 0 -_08017D14: .4byte gBattlerByTurnOrder -_08017D18: .4byte gBattlersCount -_08017D1C: .4byte gBattleStruct -_08017D20: .4byte gActiveBattler -_08017D24: .4byte gBattlerAttacker -_08017D28: .4byte gBattleTextBuff1 -_08017D2C: .4byte gSideTimers -_08017D30: .4byte gSideStatuses -_08017D34: .4byte 0x0000fffe -_08017D38: .4byte BattleScript_SideStatusWoreOff -_08017D3C: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017D4A - b _08017EA4 -_08017D4A: - movs r0, 0x2 - mov r10, r0 - movs r2, 0 - mov r8, r2 - ldr r7, _08017DE4 @ =gBattlerAttacker - ldr r5, _08017DE8 @ =gBattleTextBuff1 -_08017D56: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017DEC @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x3] - strb r0, [r7] - ldr r3, _08017DF0 @ =gActiveBattler - strb r0, [r3] - ldr r0, _08017DF4 @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08017DBE - ldrb r0, [r2, 0x2] - subs r0, 0x1 - strb r0, [r2, 0x2] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017DBE - ldrh r0, [r3] - ldr r2, _08017DF8 @ =0x0000fffd - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017DFC @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - ldr r0, _08017E00 @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - mov r3, r10 - strb r3, [r5, 0x1] - movs r0, 0x71 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017DBE: - ldr r2, _08017E04 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r1, r9 - cmp r1, 0 - beq _08017DD4 - b _08018232 -_08017DD4: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017D56 - b _08017EA4 - .align 2, 0 -_08017DE4: .4byte gBattlerAttacker -_08017DE8: .4byte gBattleTextBuff1 -_08017DEC: .4byte gSideTimers -_08017DF0: .4byte gActiveBattler -_08017DF4: .4byte gSideStatuses -_08017DF8: .4byte 0x0000fffd -_08017DFC: .4byte BattleScript_SideStatusWoreOff -_08017E00: .4byte gBattleCommunication -_08017E04: .4byte gBattleStruct -_08017E08: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08017EA4 - ldr r0, _08017EC0 @ =gActiveBattler - mov r10, r0 - movs r2, 0 - mov r8, r2 - ldr r7, _08017EC4 @ =gBattlerAttacker - ldr r5, _08017EC8 @ =gBattleTextBuff1 -_08017E20: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r1, _08017ECC @ =gSideTimers - lsls r3, r4, 1 - adds r0, r3, r4 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1, 0x5] - strb r0, [r7] - mov r2, r10 - strb r0, [r2] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08017E82 - subs r0, 0x1 - strb r0, [r1, 0x4] - movs r6, 0xFF - lsls r0, 24 - cmp r0, 0 - bne _08017E82 - ldr r2, _08017ED0 @ =gSideStatuses - adds r2, r3, r2 - ldrh r0, [r2] - ldr r3, _08017ED4 @ =0x0000feff - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] - ldr r0, _08017ED8 @ =BattleScript_SideStatusWoreOff - bl BattleScriptExecute - ldr r0, _08017EDC @ =gBattleCommunication - strb r4, [r0, 0x5] - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - movs r0, 0x36 - strb r0, [r5, 0x2] - mov r0, r8 - strb r0, [r5, 0x3] - ldrb r0, [r5, 0x4] - orrs r0, r6 - strb r0, [r5, 0x4] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017E82: - ldr r2, _08017EE0 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r1, r9 - cmp r1, 0 - beq _08017E98 - b _08018232 -_08017E98: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017E20 -_08017EA4: - mov r2, r9 - cmp r2, 0 - beq _08017EAC - b _08018232 -_08017EAC: - mov r3, r12 - ldr r0, [r3] - ldrb r1, [r0, 0x3] - adds r1, 0x1 - strb r1, [r0, 0x3] - ldr r0, [r3] - adds r0, 0xDB - strb r2, [r0] - b _0801822A - .align 2, 0 -_08017EC0: .4byte gActiveBattler -_08017EC4: .4byte gBattlerAttacker -_08017EC8: .4byte gBattleTextBuff1 -_08017ECC: .4byte gSideTimers -_08017ED0: .4byte gSideStatuses -_08017ED4: .4byte 0x0000feff -_08017ED8: .4byte BattleScript_SideStatusWoreOff -_08017EDC: .4byte gBattleCommunication -_08017EE0: .4byte gBattleStruct -_08017EE4: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08017F60 - ldr r6, _08017F80 @ =gActiveBattler - ldr r5, _08017F84 @ =gBattlerAttacker -_08017EF4: - ldr r0, [r1] - adds r0, 0xDB - ldrb r4, [r0] - ldr r2, _08017F88 @ =gSideTimers - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x7] - strb r0, [r5] - strb r0, [r6] - ldr r0, _08017F8C @ =gSideStatuses - adds r3, r1, r0 - ldrh r1, [r3] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08017F3E - ldrb r0, [r2, 0x6] - subs r0, 0x1 - strb r0, [r2, 0x6] - lsls r0, 24 - cmp r0, 0 - bne _08017F3E - ldrh r0, [r3] - ldr r2, _08017F90 @ =0x0000ffdf - adds r1, r2, 0 - ands r0, r1 - strh r0, [r3] - ldr r0, _08017F94 @ =BattleScript_SafeguardEnds - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017F3E: - ldr r2, _08017F98 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _08017F54 - b _08018232 -_08017F54: - mov r1, r12 - ldr r0, [r1] - adds r0, 0xDB - ldrb r0, [r0] - cmp r0, 0x1 - bls _08017EF4 -_08017F60: - mov r0, r9 - cmp r0, 0 - beq _08017F68 - b _08018232 -_08017F68: - mov r1, r12 - ldr r0, [r1] - ldrb r1, [r0, 0x3] - adds r1, 0x1 - strb r1, [r0, 0x3] - mov r2, r12 - ldr r0, [r2] - adds r0, 0xDB - mov r3, r9 - strb r3, [r0] - b _0801822A - .align 2, 0 -_08017F80: .4byte gActiveBattler -_08017F84: .4byte gBattlerAttacker -_08017F88: .4byte gSideTimers -_08017F8C: .4byte gSideStatuses -_08017F90: .4byte 0x0000ffdf -_08017F94: .4byte BattleScript_SafeguardEnds -_08017F98: .4byte gBattleStruct -_08017F9C: - mov r2, r12 - ldr r0, [r2] - adds r0, 0xDB - ldr r1, _08018030 @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _0801801C - ldr r4, _08018034 @ =gActiveBattler - ldr r5, _08018038 @ =gBattlerByTurnOrder -_08017FB0: - ldr r0, [r2] - adds r0, 0xDB - ldrb r0, [r0] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r4] - ldr r0, _0801803C @ =gWishFutureKnock - adds r0, 0x20 - ldrb r2, [r4] - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _08017FF8 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08017FF8 - ldr r1, _08018040 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08017FF8 - ldr r0, _08018044 @ =gBattlerTarget - strb r2, [r0] - ldr r0, _08018048 @ =BattleScript_WishComesTrue - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08017FF8: - ldr r2, _0801804C @ =gBattleStruct - ldr r1, [r2] - adds r1, 0xDB - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - mov r12, r2 - mov r3, r9 - cmp r3, 0 - beq _0801800E - b _08018232 -_0801800E: - ldr r0, [r2] - adds r0, 0xDB - ldr r1, _08018030 @ =gBattlersCount - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcc _08017FB0 -_0801801C: - mov r0, r9 - cmp r0, 0 - beq _08018024 - b _08018232 -_08018024: - mov r2, r12 - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - b _0801822A - .align 2, 0 -_08018030: .4byte gBattlersCount -_08018034: .4byte gActiveBattler -_08018038: .4byte gBattlerByTurnOrder -_0801803C: .4byte gWishFutureKnock -_08018040: .4byte gBattleMons -_08018044: .4byte gBattlerTarget -_08018048: .4byte BattleScript_WishComesTrue -_0801804C: .4byte gBattleStruct -_08018050: - ldr r3, _08018088 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x7 - ands r0, r2 - cmp r0, 0 - bne _0801805E - b _080181FC -_0801805E: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - bne _080180AA - ldr r1, _0801808C @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0801809C - ldr r0, _08018090 @ =0x0000fffe - ands r0, r2 - ldr r1, _08018094 @ =0x0000fffd - ands r0, r1 - strh r0, [r3] - ldr r1, _08018098 @ =gBattleCommunication - movs r0, 0x2 - strb r0, [r1, 0x5] - b _080180C8 - .align 2, 0 -_08018088: .4byte gBattleWeather -_0801808C: .4byte gWishFutureKnock -_08018090: .4byte 0x0000fffe -_08018094: .4byte 0x0000fffd -_08018098: .4byte gBattleCommunication -_0801809C: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080180B6 - b _080180C4 -_080180AA: - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080180C4 -_080180B6: - ldr r1, _080180C0 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _080180C8 - .align 2, 0 -_080180C0: .4byte gBattleCommunication -_080180C4: - ldr r0, _080180CC @ =gBattleCommunication - strb r1, [r0, 0x5] -_080180C8: - ldr r0, _080180D0 @ =BattleScript_RainContinuesOrEnds - b _080181EE - .align 2, 0 -_080180CC: .4byte gBattleCommunication -_080180D0: .4byte BattleScript_RainContinuesOrEnds -_080180D4: - ldr r3, _08018108 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - bne _080180E2 - b _080181FC -_080180E2: - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _0801811C - ldr r1, _0801810C @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _0801811C - ldr r0, _08018110 @ =0x0000fff7 - ands r0, r2 - strh r0, [r3] - ldr r1, _08018114 @ =gBattlescriptCurrInstr - ldr r0, _08018118 @ =BattleScript_SandStormHailEnds - b _08018120 - .align 2, 0 -_08018108: .4byte gBattleWeather -_0801810C: .4byte gWishFutureKnock -_08018110: .4byte 0x0000fff7 -_08018114: .4byte gBattlescriptCurrInstr -_08018118: .4byte BattleScript_SandStormHailEnds -_0801811C: - ldr r1, _08018134 @ =gBattlescriptCurrInstr - ldr r0, _08018138 @ =BattleScript_DamagingWeatherContinues -_08018120: - str r0, [r1] - adds r3, r1, 0 - ldr r1, _0801813C @ =gBattleScripting - movs r2, 0 - movs r0, 0xC - strb r0, [r1, 0x10] - ldr r0, _08018140 @ =gBattleCommunication - strb r2, [r0, 0x5] - b _080181EC - .align 2, 0 -_08018134: .4byte gBattlescriptCurrInstr -_08018138: .4byte BattleScript_DamagingWeatherContinues -_0801813C: .4byte gBattleScripting -_08018140: .4byte gBattleCommunication -_08018144: - ldr r3, _08018174 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x60 - ands r0, r2 - cmp r0, 0 - beq _080181FC - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08018188 - ldr r1, _08018178 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08018188 - ldr r0, _0801817C @ =0x0000ffdf - ands r0, r2 - strh r0, [r3] - ldr r1, _08018180 @ =gBattlescriptCurrInstr - ldr r0, _08018184 @ =BattleScript_SunlightFaded - b _0801818C - .align 2, 0 -_08018174: .4byte gBattleWeather -_08018178: .4byte gWishFutureKnock -_0801817C: .4byte 0x0000ffdf -_08018180: .4byte gBattlescriptCurrInstr -_08018184: .4byte BattleScript_SunlightFaded -_08018188: - ldr r1, _08018194 @ =gBattlescriptCurrInstr - ldr r0, _08018198 @ =BattleScript_SunlightContinues -_0801818C: - str r0, [r1] - adds r3, r1, 0 - b _080181EC - .align 2, 0 -_08018194: .4byte gBattlescriptCurrInstr -_08018198: .4byte BattleScript_SunlightContinues -_0801819C: - ldr r3, _080181C4 @ =gBattleWeather - ldrh r2, [r3] - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080181FC - ldr r1, _080181C8 @ =gWishFutureKnock - adds r1, 0x28 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080181D8 - ldr r0, _080181CC @ =0x0000ff7f - ands r0, r2 - strh r0, [r3] - ldr r1, _080181D0 @ =gBattlescriptCurrInstr - ldr r0, _080181D4 @ =BattleScript_SandStormHailEnds - b _080181DC - .align 2, 0 -_080181C4: .4byte gBattleWeather -_080181C8: .4byte gWishFutureKnock -_080181CC: .4byte 0x0000ff7f -_080181D0: .4byte gBattlescriptCurrInstr -_080181D4: .4byte BattleScript_SandStormHailEnds -_080181D8: - ldr r1, _0801820C @ =gBattlescriptCurrInstr - ldr r0, _08018210 @ =BattleScript_DamagingWeatherContinues -_080181DC: - str r0, [r1] - adds r3, r1, 0 - ldr r1, _08018214 @ =gBattleScripting - movs r0, 0xD - strb r0, [r1, 0x10] - ldr r1, _08018218 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_080181EC: - ldr r0, [r3] -_080181EE: - bl BattleScriptExecute - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080181FC: - ldr r2, _0801821C @ =gBattleStruct - ldr r1, [r2] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - mov r12, r2 - b _0801822A - .align 2, 0 -_0801820C: .4byte gBattlescriptCurrInstr -_08018210: .4byte BattleScript_DamagingWeatherContinues -_08018214: .4byte gBattleScripting -_08018218: .4byte gBattleCommunication -_0801821C: .4byte gBattleStruct -_08018220: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0801822A: - mov r3, r9 - cmp r3, 0 - bne _08018232 - b _08017B92 -_08018232: - ldr r0, _08018250 @ =gBattleMainFunc - ldr r1, [r0] - ldr r0, _08018254 @ =BattleTurnPassed - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018250: .4byte gBattleMainFunc -_08018254: .4byte BattleTurnPassed - thumb_func_end DoFieldEndTurnEffects - - thumb_func_start DoBattlerEndTurnEffects -DoBattlerEndTurnEffects: @ 8018258 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - ldr r2, _0801828C @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018290 @ =0x01000020 - orrs r0, r1 - str r0, [r2] - ldr r5, _08018294 @ =gBattleStruct - ldr r2, [r5] - ldr r0, _08018298 @ =gBattlersCount - ldrb r1, [r2, 0x1] - adds r7, r5, 0 - mov r8, r0 - ldrb r3, [r0] - cmp r1, r3 - bcc _08018288 - bl _08018C6C -_08018288: - bl _08018C62 - .align 2, 0 -_0801828C: .4byte gHitMarker -_08018290: .4byte 0x01000020 -_08018294: .4byte gBattleStruct -_08018298: .4byte gBattlersCount -_0801829C: - ldr r3, _080182D0 @ =gActiveBattler - ldr r4, _080182D4 @ =gBattlerAttacker - ldr r1, _080182D8 @ =gBattlerByTurnOrder - ldr r5, [r5] - ldrb r0, [r5, 0x1] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4] - strb r0, [r3] - ldr r0, _080182DC @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _080182E0 @ =gBitTable - ldrb r0, [r3] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - adds r6, r3, 0 - cmp r1, 0 - beq _080182E4 - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - bl _08018C50 - .align 2, 0 -_080182D0: .4byte gActiveBattler -_080182D4: .4byte gBattlerAttacker -_080182D8: .4byte gBattlerByTurnOrder -_080182DC: .4byte gAbsentBattlerFlags -_080182E0: .4byte gBitTable -_080182E4: - ldrb r0, [r5] - cmp r0, 0x13 - bls _080182EE - bl _08018C46 -_080182EE: - lsls r0, 2 - ldr r1, _080182F8 @ =_080182FC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080182F8: .4byte _080182FC - .align 2, 0 -_080182FC: - .4byte _0801834C - .4byte _080183AC - .4byte _080183CA - .4byte _080183FA - .4byte _08018478 - .4byte _080184C0 - .4byte _08018540 - .4byte _08018588 - .4byte _080185EC - .4byte _08018634 - .4byte _08018794 - .4byte _080188B0 - .4byte _08018958 - .4byte _08018A1C - .4byte _08018AD0 - .4byte _08018AF0 - .4byte _08018B3C - .4byte _08018B6C - .4byte _080183E2 - .4byte _08018C38 -_0801834C: - ldr r1, _0801839C @ =gStatuses3 - ldrb r3, [r6] - lsls r0, r3, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - bne _08018364 - bl _08018C12 -_08018364: - ldr r0, _080183A0 @ =gBattleMons - movs r1, 0x58 - muls r1, r3 - adds r0, r1, r0 - ldrh r2, [r0, 0x28] - ldrh r5, [r0, 0x2C] - cmp r2, r5 - bne _08018378 - bl _08018C12 -_08018378: - cmp r2, 0 - bne _08018380 - bl _08018C12 -_08018380: - ldr r1, _080183A4 @ =gBattleMoveDamage - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r1] - cmp r0, 0 - bne _08018390 - movs r0, 0x1 - str r0, [r1] -_08018390: - ldr r0, [r1] - negs r0, r0 - str r0, [r1] - ldr r0, _080183A8 @ =BattleScript_IngrainTurnHeal - bl _08018C04 - .align 2, 0 -_0801839C: .4byte gStatuses3 -_080183A0: .4byte gBattleMons -_080183A4: .4byte gBattleMoveDamage -_080183A8: .4byte BattleScript_IngrainTurnHeal -_080183AC: - ldrb r1, [r6] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183C6 - bl _08018C12 -_080183C6: - bl _08018C08 -_080183CA: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183DE - bl _08018C12 -_080183DE: - bl _08018C08 -_080183E2: - ldrb r1, [r6] - movs r0, 0x1 - movs r2, 0x1 - bl ItemBattleEffects - lsls r0, 24 - cmp r0, 0 - bne _080183F6 - bl _08018C12 -_080183F6: - bl _08018C08 -_080183FA: - ldr r0, _08018460 @ =gStatuses3 - ldrb r2, [r6] - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08018410 - bl _08018C12 -_08018410: - ldr r3, _08018464 @ =gBattleMons - movs r5, 0x3 - ands r5, r1 - movs r1, 0x58 - adds r0, r5, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018428 - bl _08018C12 -_08018428: - adds r0, r2, 0 - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018438 - bl _08018C12 -_08018438: - ldr r0, _08018468 @ =gBattlerTarget - strb r5, [r0] - ldr r2, _0801846C @ =gBattleMoveDamage - ldrb r0, [r6] - muls r0, r1 - adds r0, r3 - ldrh r0, [r0, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _08018452 - movs r0, 0x1 - str r0, [r2] -_08018452: - ldr r1, _08018470 @ =gBattleScripting - strb r5, [r1, 0x10] - ldrb r0, [r4] - strb r0, [r1, 0x11] - ldr r0, _08018474 @ =BattleScript_LeechSeedTurnDrain - b _08018C04 - .align 2, 0 -_08018460: .4byte gStatuses3 -_08018464: .4byte gBattleMons -_08018468: .4byte gBattlerTarget -_0801846C: .4byte gBattleMoveDamage -_08018470: .4byte gBattleScripting -_08018474: .4byte BattleScript_LeechSeedTurnDrain -_08018478: - ldr r2, _080184B4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08018494 - b _08018C12 -_08018494: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _0801849E - b _08018C12 -_0801849E: - ldr r2, _080184B8 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _080184AE - movs r0, 0x1 - str r0, [r2] -_080184AE: - ldr r0, _080184BC @ =BattleScript_PoisonTurnDmg - b _08018C04 - .align 2, 0 -_080184B4: .4byte gBattleMons -_080184B8: .4byte gBattleMoveDamage -_080184BC: .4byte BattleScript_PoisonTurnDmg -_080184C0: - ldr r4, _08018534 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - mov r8, r7 - mov r2, r8 - muls r2, r0 - adds r3, r4, 0 - adds r3, 0x4C - adds r0, r2, r3 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080184DE - b _08018C12 -_080184DE: - adds r1, r2, r4 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _080184E8 - b _08018C12 -_080184E8: - ldr r5, _08018538 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 4 - str r0, [r5] - cmp r0, 0 - bne _080184F8 - movs r0, 0x1 - str r0, [r5] -_080184F8: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r2, r0, r3 - ldr r1, [r2] - movs r4, 0xF0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, r4 - beq _08018518 - movs r7, 0x80 - lsls r7, 1 - adds r0, r1, r7 - str r0, [r2] -_08018518: - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r3 - ldr r0, [r0] - ands r0, r4 - lsrs r0, 8 - ldr r1, [r5] - muls r0, r1 - str r0, [r5] - ldr r0, _0801853C @ =BattleScript_PoisonTurnDmg - b _08018C04 - .align 2, 0 -_08018534: .4byte gBattleMons -_08018538: .4byte gBattleMoveDamage -_0801853C: .4byte BattleScript_PoisonTurnDmg -_08018540: - ldr r2, _0801857C @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x4C - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0801855C - b _08018C12 -_0801855C: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08018566 - b _08018C12 -_08018566: - ldr r2, _08018580 @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 3 - str r0, [r2] - cmp r0, 0 - bne _08018576 - movs r0, 0x1 - str r0, [r2] -_08018576: - ldr r0, _08018584 @ =BattleScript_BurnTurnDmg - b _08018C04 - .align 2, 0 -_0801857C: .4byte gBattleMons -_08018580: .4byte gBattleMoveDamage -_08018584: .4byte BattleScript_BurnTurnDmg -_08018588: - ldr r4, _080185D4 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r1, r0 - adds r0, r4, 0 - adds r0, 0x50 - adds r5, r1, r0 - ldr r2, [r5] - movs r0, 0x80 - lsls r0, 20 - ands r0, r2 - cmp r0, 0 - bne _080185A4 - b _08018C12 -_080185A4: - adds r3, r1, r4 - ldrh r0, [r3, 0x28] - cmp r0, 0 - bne _080185AE - b _08018C12 -_080185AE: - adds r0, r4, 0 - adds r0, 0x4C - adds r0, r1, r0 - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _080185E0 - ldr r1, _080185D8 @ =gBattleMoveDamage - ldrh r0, [r3, 0x2C] - lsrs r0, 2 - str r0, [r1] - cmp r0, 0 - bne _080185CE - movs r0, 0x1 - str r0, [r1] -_080185CE: - ldr r0, _080185DC @ =BattleScript_NightmareTurnDmg - b _08018C04 - .align 2, 0 -_080185D4: .4byte gBattleMons -_080185D8: .4byte gBattleMoveDamage -_080185DC: .4byte BattleScript_NightmareTurnDmg -_080185E0: - ldr r0, _080185E8 @ =0xf7ffffff - ands r2, r0 - str r2, [r5] - b _08018C12 - .align 2, 0 -_080185E8: .4byte 0xf7ffffff -_080185EC: - ldr r2, _08018628 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - adds r3, r1, 0 - muls r3, r0 - adds r0, r2, 0 - adds r0, 0x50 - adds r0, r3, r0 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 21 - ands r0, r1 - cmp r0, 0 - bne _0801860A - b _08018C12 -_0801860A: - adds r1, r3, r2 - ldrh r0, [r1, 0x28] - cmp r0, 0 - bne _08018614 - b _08018C12 -_08018614: - ldr r2, _0801862C @ =gBattleMoveDamage - ldrh r0, [r1, 0x2C] - lsrs r0, 2 - str r0, [r2] - cmp r0, 0 - bne _08018624 - movs r0, 0x1 - str r0, [r2] -_08018624: - ldr r0, _08018630 @ =BattleScript_CurseTurnDmg - b _08018C04 - .align 2, 0 -_08018628: .4byte gBattleMons -_0801862C: .4byte gBattleMoveDamage -_08018630: .4byte BattleScript_CurseTurnDmg -_08018634: - ldr r3, _080186D4 @ =gBattleMons - mov r8, r3 - ldrb r0, [r6] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - movs r5, 0x50 - add r5, r8 - mov r10, r5 - adds r4, r1, r5 - ldr r2, [r4] - movs r5, 0xE0 - lsls r5, 8 - adds r0, r2, 0 - ands r0, r5 - cmp r0, 0 - bne _08018658 - b _08018C12 -_08018658: - mov r7, r8 - adds r0, r1, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08018664 - b _08018C12 -_08018664: - ldr r1, _080186D8 @ =0xffffe000 - adds r0, r2, r1 - str r0, [r4] - ldrb r4, [r6] - adds r0, r4, 0 - muls r0, r3 - add r0, r10 - ldr r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _080186F4 - ldr r1, _080186DC @ =gBattleScripting - ldr r0, _080186E0 @ =gBattleStruct - ldr r2, [r0] - lsls r0, r4, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x10] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x11] - ldr r1, _080186E4 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r1] - movs r0, 0x2 - strb r0, [r1, 0x1] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r1, 0x2] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0, 0x5] - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - ldr r1, _080186E8 @ =gBattlescriptCurrInstr - ldr r0, _080186EC @ =BattleScript_WrapTurnDmg - str r0, [r1] - ldr r2, _080186F0 @ =gBattleMoveDamage - ldrb r0, [r6] - muls r0, r3 - add r0, r8 - ldrh r0, [r0, 0x2C] - lsrs r0, 4 - str r0, [r2] - cmp r0, 0 - bne _08018720 - movs r0, 0x1 - str r0, [r2] - b _08018720 - .align 2, 0 -_080186D4: .4byte gBattleMons -_080186D8: .4byte 0xffffe000 -_080186DC: .4byte gBattleScripting -_080186E0: .4byte gBattleStruct -_080186E4: .4byte gBattleTextBuff1 -_080186E8: .4byte gBattlescriptCurrInstr -_080186EC: .4byte BattleScript_WrapTurnDmg -_080186F0: .4byte gBattleMoveDamage -_080186F4: - ldr r2, _08018724 @ =gBattleTextBuff1 - movs r0, 0xFD - strb r0, [r2] - movs r0, 0x2 - strb r0, [r2, 0x1] - ldrb r1, [r6] - ldr r0, _08018728 @ =gBattleStruct - ldr r3, [r0] - lsls r1, 1 - adds r1, r3 - ldrb r0, [r1, 0x4] - strb r0, [r2, 0x2] - ldrb r0, [r6] - lsls r0, 1 - adds r0, r3 - ldrb r0, [r0, 0x5] - strb r0, [r2, 0x3] - movs r0, 0xFF - strb r0, [r2, 0x4] - ldr r1, _0801872C @ =gBattlescriptCurrInstr - ldr r0, _08018730 @ =BattleScript_WrapEnds - str r0, [r1] -_08018720: - ldr r0, [r1] - b _08018C04 - .align 2, 0 -_08018724: .4byte gBattleTextBuff1 -_08018728: .4byte gBattleStruct -_0801872C: .4byte gBattlescriptCurrInstr -_08018730: .4byte BattleScript_WrapEnds -_08018734: - movs r0, 0x8 - negs r0, r0 - ands r3, r0 - str r3, [r2] - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - mov r0, r10 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08018784 @ =0xf7ffffff - ands r0, r1 - str r0, [r2] - ldr r1, _08018788 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - ldr r0, _0801878C @ =BattleScript_MonWokeUpInUproar - bl BattleScriptExecute - ldr r4, _08018790 @ =gActiveBattler - ldrb r0, [r6] - strb r0, [r4] - ldrb r0, [r4] - mov r3, r8 - muls r3, r0 - adds r0, r3, 0 - add r0, r9 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r4] - bl MarkBattlerForControllerExec - b _080187FC - .align 2, 0 -_08018784: .4byte 0xf7ffffff -_08018788: .4byte gBattleCommunication -_0801878C: .4byte BattleScript_MonWokeUpInUproar -_08018790: .4byte gActiveBattler -_08018794: - ldr r2, _08018810 @ =gBattleMons - ldrb r1, [r6] - movs r0, 0x58 - muls r0, r1 - adds r1, r2, 0 - adds r1, 0x50 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x70 - ands r1, r0 - adds r7, r2, 0 - cmp r1, 0 - beq _0801889E - movs r0, 0 - strb r0, [r4] - mov r5, r8 - ldrb r0, [r5] - cmp r0, 0 - beq _080187FC - mov r10, r7 - adds r6, r4, 0 - movs r1, 0x58 - mov r8, r1 - movs r3, 0x4C - adds r3, r7 - mov r9, r3 - str r0, [sp, 0x4] - movs r5, 0x7 - mov r12, r5 -_080187CE: - ldrb r4, [r6] - mov r1, r8 - muls r1, r4 - mov r0, r9 - adds r2, r1, r0 - ldr r3, [r2] - adds r0, r3, 0 - mov r5, r12 - ands r0, r5 - cmp r0, 0 - beq _080187EE - adds r0, r1, r7 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x2B - bne _08018734 -_080187EE: - adds r0, r4, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp, 0x4] - cmp r0, r1 - bcc _080187CE -_080187FC: - ldr r2, _08018814 @ =gBattlerAttacker - ldr r1, _08018818 @ =gBattlersCount - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _0801881C - movs r3, 0x2 - mov r9, r3 - b _08018C4C - .align 2, 0 -_08018810: .4byte gBattleMons -_08018814: .4byte gBattlerAttacker -_08018818: .4byte gBattlersCount -_0801881C: - ldr r5, _08018854 @ =gActiveBattler - ldrb r0, [r5] - strb r0, [r2] - ldr r2, _08018858 @ =gBattleMons - ldrb r0, [r5] - movs r7, 0x58 - adds r1, r0, 0 - muls r1, r7 - adds r6, r2, 0 - adds r6, 0x50 - adds r1, r6 - ldr r0, [r1] - subs r0, 0x10 - str r0, [r1] - ldrb r0, [r5] - bl WasUnableToUseMove - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08018860 - ldrb r0, [r5] - bl CancelMultiTurnMoves - ldr r1, _0801885C @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - b _08018894 - .align 2, 0 -_08018854: .4byte gActiveBattler -_08018858: .4byte gBattleMons -_0801885C: .4byte gBattleCommunication -_08018860: - ldrb r3, [r5] - adds r0, r3, 0 - muls r0, r7 - adds r2, r0, r6 - ldr r0, [r2] - movs r1, 0x70 - ands r0, r1 - cmp r0, 0 - beq _08018888 - ldr r0, _08018884 @ =gBattleCommunication - strb r4, [r0, 0x5] - ldr r0, [r2] - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r2] - b _08018894 - .align 2, 0 -_08018884: .4byte gBattleCommunication -_08018888: - ldr r1, _080188A8 @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] - adds r0, r3, 0 - bl CancelMultiTurnMoves -_08018894: - ldr r0, _080188AC @ =BattleScript_PrintUproarOverTurns - bl BattleScriptExecute - movs r5, 0x1 - mov r9, r5 -_0801889E: - mov r7, r9 - cmp r7, 0x2 - bne _080188A6 - b _08018C46 -_080188A6: - b _08018C12 - .align 2, 0 -_080188A8: .4byte gBattleCommunication -_080188AC: .4byte BattleScript_PrintUproarOverTurns -_080188B0: - ldr r1, _080188E8 @ =gBattleMons - ldrb r0, [r6] - movs r7, 0x58 - muls r0, r7 - adds r5, r1, 0 - adds r5, 0x50 - adds r2, r0, r5 - ldr r1, [r2] - movs r4, 0xC0 - lsls r4, 4 - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - bne _080188CE - b _08018C12 -_080188CE: - ldr r3, _080188EC @ =0xfffffc00 - adds r0, r1, r3 - str r0, [r2] - ldrb r0, [r6] - bl WasUnableToUseMove - lsls r0, 24 - cmp r0, 0 - beq _080188F0 - ldrb r0, [r6] - bl CancelMultiTurnMoves - b _08018C12 - .align 2, 0 -_080188E8: .4byte gBattleMons -_080188EC: .4byte 0xfffffc00 -_080188F0: - ldrb r0, [r6] - muls r0, r7 - adds r2, r0, r5 - ldr r1, [r2] - adds r0, r1, 0 - ands r0, r4 - cmp r0, 0 - beq _08018902 - b _08018C12 -_08018902: - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _0801890E - b _08018C12 -_0801890E: - ldr r0, _0801894C @ =0xffffefff - ands r1, r0 - str r1, [r2] - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - movs r4, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08018926 - b _08018C12 -_08018926: - ldr r1, _08018950 @ =gBattleCommunication - movs r0, 0x47 - strb r0, [r1, 0x3] - movs r0, 0x1 - movs r1, 0 - bl SetMoveEffect - ldrb r0, [r6] - muls r0, r7 - adds r0, r5 - ldr r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _08018944 - b _08018C08 -_08018944: - ldr r0, _08018954 @ =BattleScript_ThrashConfuses - bl BattleScriptExecute - b _08018C08 - .align 2, 0 -_0801894C: .4byte 0xffffefff -_08018950: .4byte gBattleCommunication -_08018954: .4byte BattleScript_ThrashConfuses -_08018958: - ldr r0, _080189D8 @ =gDisableStructs - ldrb r3, [r6] - lsls r1, r3, 3 - subs r1, r3 - lsls r1, 2 - adds r5, r1, r0 - ldrb r1, [r5, 0xB] - lsls r1, 28 - adds r7, r0, 0 - cmp r1, 0 - bne _08018970 - b _08018C12 -_08018970: - movs r4, 0 - ldr r2, _080189DC @ =gBattleMons - movs r0, 0x58 - adds r1, r3, 0 - muls r1, r0 - adds r2, 0xC - adds r1, r2 - ldrh r0, [r5, 0x4] - ldrh r1, [r1] - cmp r0, r1 - beq _080189AE - mov r12, r7 - mov r8, r2 - adds r5, r6, 0 - movs r3, 0x58 -_0801898E: - adds r4, 0x1 - cmp r4, 0x3 - bgt _080189AE - ldrb r2, [r5] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - add r1, r12 - lsls r0, r4, 1 - muls r2, r3 - adds r0, r2 - add r0, r8 - ldrh r1, [r1, 0x4] - ldrh r0, [r0] - cmp r1, r0 - bne _0801898E -_080189AE: - cmp r4, 0x4 - bne _080189E0 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - movs r1, 0 - strh r1, [r0, 0x4] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r7 - ldrb r2, [r1, 0xB] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xB] - b _08018C12 - .align 2, 0 -_080189D8: .4byte gDisableStructs -_080189DC: .4byte gBattleMons -_080189E0: - ldrb r0, [r6] - lsls r2, r0, 3 - subs r2, r0 - lsls r2, 2 - adds r2, r7 - ldrb r3, [r2, 0xB] - lsls r1, r3, 28 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0xB] - adds r2, r1, 0 - cmp r2, 0 - beq _08018A08 - b _08018C12 -_08018A08: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x4] - ldr r0, _08018A18 @ =BattleScript_DisabledNoMore - b _08018C04 - .align 2, 0 -_08018A18: .4byte BattleScript_DisabledNoMore -_08018A1C: - ldr r3, _08018A68 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldrb r5, [r2, 0xE] - lsls r4, r5, 28 - cmp r4, 0 - bne _08018A32 - b _08018C12 -_08018A32: - ldr r7, _08018A6C @ =gBattleMons - mov r8, r7 - ldrb r0, [r2, 0xC] - lsls r0, 1 - movs r7, 0x58 - muls r1, r7 - adds r0, r1 - mov r1, r8 - adds r1, 0xC - adds r0, r1 - ldrh r0, [r0] - ldrh r1, [r2, 0x6] - cmp r0, r1 - beq _08018A70 - movs r0, 0 - strh r0, [r2, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0xE] - b _08018C12 - .align 2, 0 -_08018A68: .4byte gDisableStructs -_08018A6C: .4byte gBattleMons -_08018A70: - lsrs r1, r4, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r5 - orrs r0, r1 - strb r0, [r2, 0xE] - cmp r1, 0 - beq _08018AA6 - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - muls r1, r7 - ldrb r0, [r0, 0xC] - adds r1, r0 - mov r0, r8 - adds r0, 0x24 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _08018AA6 - b _08018C12 -_08018AA6: - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x6] - ldrb r0, [r6] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0xE] - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0xE] - ldr r0, _08018ACC @ =BattleScript_EncoredNoMore - b _08018C04 - .align 2, 0 -_08018ACC: .4byte BattleScript_EncoredNoMore -_08018AD0: - ldr r0, _08018AEC @ =gStatuses3 - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x18 - ands r0, r2 - cmp r0, 0 - beq _08018AE8 - adds r0, r2, 0 - subs r0, 0x8 - str r0, [r1] -_08018AE8: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018AEC: .4byte gStatuses3 -_08018AF0: - ldr r2, _08018B30 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x12] - lsls r1, r2, 28 - cmp r1, 0 - beq _08018B2A - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x12] - cmp r1, 0 - bne _08018B2A - ldr r0, _08018B34 @ =gStatuses3 - ldrb r2, [r6] - lsls r2, 2 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08018B38 @ =0xfffffdff - ands r0, r1 - str r0, [r2] -_08018B2A: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018B30: .4byte gDisableStructs -_08018B34: .4byte gStatuses3 -_08018B38: .4byte 0xfffffdff -_08018B3C: - ldr r2, _08018B68 @ =gDisableStructs - ldrb r1, [r6] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r3, r0, r2 - ldrb r2, [r3, 0x13] - lsls r1, r2, 28 - cmp r1, 0 - beq _08018B62 - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x13] -_08018B62: - ldr r1, [r7] - b _08018C16 - .align 2, 0 -_08018B68: .4byte gDisableStructs -_08018B6C: - ldr r4, _08018C20 @ =gStatuses3 - ldrb r0, [r6] - lsls r0, 2 - adds r2, r0, r4 - ldr r1, [r2] - movs r3, 0xC0 - lsls r3, 5 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _08018C12 - ldr r5, _08018C24 @ =0xfffff800 - adds r0, r1, r5 - str r0, [r2] - ldrb r2, [r6] - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - ands r0, r3 - cmp r0, 0 - bne _08018C12 - ldr r3, _08018C28 @ =gBattleMons - movs r5, 0x58 - adds r1, r2, 0 - muls r1, r5 - adds r4, r3, 0 - adds r4, 0x4C - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08018C12 - adds r0, r1, r3 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x48 - beq _08018C12 - cmp r0, 0xF - beq _08018C12 - adds r0, r2, 0 - bl UproarWakeUpCheck - lsls r0, 24 - cmp r0, 0 - bne _08018C12 - ldrb r0, [r6] - bl CancelMultiTurnMoves - bl Random - ldrb r1, [r6] - adds r2, r1, 0 - muls r2, r5 - adds r2, r4 - movs r1, 0x3 - ands r1, r0 - adds r1, 0x2 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - str r0, [sp] - movs r0, 0 - movs r1, 0x28 - movs r2, 0 - movs r3, 0x4 - bl BtlController_EmitSetMonData - ldrb r0, [r6] - bl MarkBattlerForControllerExec - ldr r1, _08018C2C @ =gEffectBattler - ldrb r0, [r6] - strb r0, [r1] - ldr r0, _08018C30 @ =BattleScript_YawnMakesAsleep -_08018C04: - bl BattleScriptExecute -_08018C08: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08018C12: - ldr r0, _08018C34 @ =gBattleStruct - ldr r1, [r0] -_08018C16: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08018C46 - .align 2, 0 -_08018C20: .4byte gStatuses3 -_08018C24: .4byte 0xfffff800 -_08018C28: .4byte gBattleMons -_08018C2C: .4byte gEffectBattler -_08018C30: .4byte BattleScript_YawnMakesAsleep -_08018C34: .4byte gBattleStruct -_08018C38: - ldr r1, [r7] - movs r0, 0 - strb r0, [r1] - ldr r1, [r7] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] -_08018C46: - mov r7, r9 - cmp r7, 0 - beq _08018C50 -_08018C4C: - mov r0, r9 - b _08018C78 -_08018C50: - ldr r5, _08018C88 @ =gBattleStruct - ldr r2, [r5] - ldr r0, _08018C8C @ =gBattlersCount - ldrb r1, [r2, 0x1] - adds r7, r5, 0 - mov r8, r0 - ldrb r0, [r0] - cmp r1, r0 - bcs _08018C6C -_08018C62: - ldrb r0, [r2] - cmp r0, 0x13 - bhi _08018C6C - bl _0801829C -_08018C6C: - ldr r0, _08018C90 @ =gHitMarker - ldr r1, [r0] - ldr r2, _08018C94 @ =0xfeffffdf - ands r1, r2 - str r1, [r0] - movs r0, 0 -_08018C78: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018C88: .4byte gBattleStruct -_08018C8C: .4byte gBattlersCount -_08018C90: .4byte gHitMarker -_08018C94: .4byte 0xfeffffdf - thumb_func_end DoBattlerEndTurnEffects - - thumb_func_start HandleWishPerishSongOnTurnEnd -HandleWishPerishSongOnTurnEnd: @ 8018C98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _08018CC8 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018CCC @ =0x01000020 - orrs r0, r1 - str r0, [r2] - ldr r1, _08018CD0 @ =gBattleStruct - ldr r3, [r1] - movs r4, 0xC0 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - beq _08018CD4 - cmp r0, 0x1 - bne _08018CC4 - b _08018E2C -_08018CC4: - b _08018F68 - .align 2, 0 -_08018CC8: .4byte gHitMarker -_08018CCC: .4byte 0x01000020 -_08018CD0: .4byte gBattleStruct -_08018CD4: - ldr r2, _08018D20 @ =0x00000181 - adds r0, r3, r2 - ldr r1, _08018D24 @ =gBattlersCount - ldrb r0, [r0] - mov r8, r1 - ldrb r6, [r1] - cmp r0, r6 - bcc _08018CE6 - b _08018E16 -_08018CE6: - ldr r4, _08018D28 @ =gActiveBattler - ldr r5, _08018D2C @ =gBattleTextBuff1 - ldr r6, _08018D30 @ =gWishFutureKnock - movs r0, 0x8 - adds r0, r6 - mov r10, r0 - movs r1, 0x18 - adds r1, r6 - mov r12, r1 - ldr r3, _08018D34 @ =gBattlerTarget - mov r9, r3 -_08018CFC: - ldr r0, [r7] - adds r3, r0, r2 - ldrb r0, [r3] - strb r0, [r4] - ldr r0, _08018D38 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08018D3C @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08018D40 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - b _08018E04 - .align 2, 0 -_08018D20: .4byte 0x00000181 -_08018D24: .4byte gBattlersCount -_08018D28: .4byte gActiveBattler -_08018D2C: .4byte gBattleTextBuff1 -_08018D30: .4byte gWishFutureKnock -_08018D34: .4byte gBattlerTarget -_08018D38: .4byte gAbsentBattlerFlags -_08018D3C: .4byte gBitTable -_08018D40: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r1, _08018D80 @ =gWishFutureKnock - ldrb r0, [r4] - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _08018E04 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _08018E04 - ldr r1, _08018D84 @ =gBattleMons - ldrb r2, [r4] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - ldrh r0, [r0, 0x28] - cmp r0, 0 - beq _08018E04 - lsls r0, r2, 1 - add r0, r12 - ldrh r0, [r0] - cmp r0, 0xF8 - bne _08018D8C - ldr r0, _08018D88 @ =gBattleCommunication - strb r3, [r0, 0x5] - b _08018D92 - .align 2, 0 -_08018D80: .4byte gWishFutureKnock -_08018D84: .4byte gBattleMons -_08018D88: .4byte gBattleCommunication -_08018D8C: - ldr r1, _08018DEC @ =gBattleCommunication - movs r0, 0x1 - strb r0, [r1, 0x5] -_08018D92: - movs r0, 0xFD - strb r0, [r5] - movs r0, 0x2 - strb r0, [r5, 0x1] - ldrb r0, [r4] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - strb r0, [r5, 0x2] - ldrb r0, [r4] - lsls r0, 1 - add r0, r12 - ldrh r0, [r0] - lsrs r0, 8 - strb r0, [r5, 0x3] - movs r0, 0xFF - strb r0, [r5, 0x4] - ldrb r0, [r4] - mov r1, r9 - strb r0, [r1] - ldr r1, _08018DF0 @ =gBattlerAttacker - adds r0, r6, 0x4 - ldrb r2, [r4] - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _08018DF4 @ =gBattleMoveDamage - ldrb r0, [r4] - lsls r0, 2 - add r0, r10 - ldr r0, [r0] - str r0, [r1] - ldr r2, _08018DF8 @ =gSpecialStatuses - mov r3, r9 - ldrb r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - adds r0, r2 - ldr r1, _08018DFC @ =0x0000ffff - str r1, [r0] - ldr r0, _08018E00 @ =BattleScript_MonTookFutureAttack - b _08018F44 - .align 2, 0 -_08018DEC: .4byte gBattleCommunication -_08018DF0: .4byte gBattlerAttacker -_08018DF4: .4byte gBattleMoveDamage -_08018DF8: .4byte gSpecialStatuses -_08018DFC: .4byte 0x0000ffff -_08018E00: .4byte BattleScript_MonTookFutureAttack -_08018E04: - ldr r0, [r7] - ldr r2, _08018E7C @ =0x00000181 - adds r0, r2 - ldrb r0, [r0] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bcs _08018E16 - b _08018CFC -_08018E16: - ldr r0, [r7] - movs r2, 0xC0 - lsls r2, 1 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r7] - ldr r3, _08018E7C @ =0x00000181 - adds r1, r0, r3 - movs r0, 0 - strb r0, [r1] -_08018E2C: - adds r3, r7, 0 - ldr r0, [r3] - ldr r2, _08018E7C @ =0x00000181 - adds r0, r2 - ldr r1, _08018E80 @ =gBattlersCount - ldrb r0, [r0] - mov r8, r1 - ldrb r4, [r1] - cmp r0, r4 - bcc _08018E42 - b _08018F68 -_08018E42: - ldr r5, _08018E84 @ =gActiveBattler - ldr r4, _08018E88 @ =gBattleTextBuff1 - ldr r6, _08018E8C @ =gDisableStructs - mov r12, r6 - ldr r0, _08018E90 @ =gBattlerAttacker - mov r9, r0 -_08018E4E: - ldr r1, _08018E94 @ =gBattlerByTurnOrder - ldr r0, [r3] - adds r3, r0, r2 - ldrb r0, [r3] - adds r0, r1 - ldrb r0, [r0] - mov r1, r9 - strb r0, [r1] - strb r0, [r5] - ldr r0, _08018E98 @ =gAbsentBattlerFlags - ldrb r1, [r0] - ldr r2, _08018E9C @ =gBitTable - ldrb r0, [r5] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08018EA0 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - b _08018F54 - .align 2, 0 -_08018E7C: .4byte 0x00000181 -_08018E80: .4byte gBattlersCount -_08018E84: .4byte gActiveBattler -_08018E88: .4byte gBattleTextBuff1 -_08018E8C: .4byte gDisableStructs -_08018E90: .4byte gBattlerAttacker -_08018E94: .4byte gBattlerByTurnOrder -_08018E98: .4byte gAbsentBattlerFlags -_08018E9C: .4byte gBitTable -_08018EA0: - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - ldr r6, _08018F14 @ =gStatuses3 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r6 - ldr r0, [r0] - movs r1, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08018F54 - movs r0, 0xFD - strb r0, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - strb r0, [r4, 0x2] - strb r0, [r4, 0x3] - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r12 - ldrb r0, [r0, 0xF] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r4, 0x4] - movs r0, 0xFF - strb r0, [r4, 0x5] - ldrb r2, [r5] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - mov r3, r12 - adds r4, r0, r3 - ldrb r3, [r4, 0xF] - lsls r1, r3, 28 - cmp r1, 0 - bne _08018F28 - lsls r2, 2 - adds r2, r6 - ldr r0, [r2] - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - str r0, [r2] - ldr r3, _08018F18 @ =gBattleMoveDamage - ldr r2, _08018F1C @ =gBattleMons - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - ldrh r0, [r0, 0x28] - str r0, [r3] - ldr r1, _08018F20 @ =gBattlescriptCurrInstr - ldr r0, _08018F24 @ =BattleScript_PerishSongTakesLife - b _08018F40 - .align 2, 0 -_08018F14: .4byte gStatuses3 -_08018F18: .4byte gBattleMoveDamage -_08018F1C: .4byte gBattleMons -_08018F20: .4byte gBattlescriptCurrInstr -_08018F24: .4byte BattleScript_PerishSongTakesLife -_08018F28: - lsrs r1, 28 - subs r1, 0x1 - movs r0, 0xF - ands r1, r0 - movs r6, 0x10 - negs r6, r6 - adds r0, r6, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0xF] - ldr r1, _08018F4C @ =gBattlescriptCurrInstr - ldr r0, _08018F50 @ =BattleScript_PerishSongCountGoesDown -_08018F40: - str r0, [r1] - ldr r0, [r1] -_08018F44: - bl BattleScriptExecute - movs r0, 0x1 - b _08018F74 - .align 2, 0 -_08018F4C: .4byte gBattlescriptCurrInstr -_08018F50: .4byte BattleScript_PerishSongCountGoesDown -_08018F54: - adds r3, r7, 0 - ldr r0, [r3] - ldr r2, _08018F84 @ =0x00000181 - adds r0, r2 - ldrb r0, [r0] - mov r1, r8 - ldrb r1, [r1] - cmp r0, r1 - bcs _08018F68 - b _08018E4E -_08018F68: - ldr r2, _08018F88 @ =gHitMarker - ldr r0, [r2] - ldr r1, _08018F8C @ =0xfeffffdf - ands r0, r1 - str r0, [r2] - movs r0, 0 -_08018F74: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08018F84: .4byte 0x00000181 -_08018F88: .4byte gHitMarker -_08018F8C: .4byte 0xfeffffdf - thumb_func_end HandleWishPerishSongOnTurnEnd - - thumb_func_start HandleFaintedMonActions -HandleFaintedMonActions: @ 8018F90 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _08018FA8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08018FD8 - b _08019272 - .align 2, 0 -_08018FA8: .4byte gBattleTypeFlags -_08018FAC: - ldr r0, _08018FBC @ =BattleScript_GiveExp - bl BattleScriptExecute - ldr r0, [r5] - adds r0, 0x4D - movs r1, 0x2 - b _08018FCC - .align 2, 0 -_08018FBC: .4byte BattleScript_GiveExp -_08018FC0: - ldr r0, _08018FD4 @ =BattleScript_HandleFaintedMon - bl BattleScriptExecute - ldr r0, [r5] - adds r0, 0x4D - movs r1, 0x5 -_08018FCC: - strb r1, [r0] -_08018FCE: - movs r0, 0x1 - b _08019274 - .align 2, 0 -_08018FD4: .4byte BattleScript_HandleFaintedMon -_08018FD8: - ldr r0, _08018FF4 @ =gBattleStruct - mov r8, r0 -_08018FDC: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - ldrb r0, [r0] - cmp r0, 0x7 - bls _08018FEA - b _08019264 -_08018FEA: - lsls r0, 2 - ldr r1, _08018FF8 @ =_08018FFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08018FF4: .4byte gBattleStruct -_08018FF8: .4byte _08018FFC - .align 2, 0 -_08018FFC: - .4byte _0801901C - .4byte _0801906E - .4byte _08019108 - .4byte _0801914A - .4byte _0801915E - .4byte _080191C8 - .4byte _080191FC - .4byte _08019264 -_0801901C: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4E - movs r1, 0 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r5, 0 - ldr r0, _080190E8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - bge _0801906E - ldr r6, _080190EC @ =gAbsentBattlerFlags -_0801903C: - ldrb r0, [r6] - ldr r2, _080190F0 @ =gBitTable - lsls r1, r5, 2 - adds r1, r2 - ldr r4, [r1] - ands r0, r4 - cmp r0, 0 - beq _08019064 - lsls r0, r5, 24 - lsrs r0, 24 - movs r1, 0x6 - movs r2, 0x6 - bl HasNoMonsToSwitch - lsls r0, 24 - cmp r0, 0 - bne _08019064 - ldrb r0, [r6] - bics r0, r4 - strb r0, [r6] -_08019064: - adds r5, 0x1 - ldr r0, _080190E8 @ =gBattlersCount - ldrb r0, [r0] - cmp r5, r0 - blt _0801903C -_0801906E: - ldr r0, _080190F4 @ =gBattleStruct - mov r8, r0 - ldr r1, _080190F8 @ =gBattlerFainted - mov r12, r1 - ldr r2, _080190FC @ =gBattlerTarget - mov r5, r8 - ldr r7, _08019100 @ =gBattleMons - ldr r6, _08019104 @ =gBattlerPartyIndexes -_0801907E: - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x4E - ldrb r0, [r1] - strb r0, [r2] - mov r4, r12 - strb r0, [r4] - ldrb r4, [r1] - movs r0, 0x58 - muls r0, r4 - adds r0, r7 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _080190C6 - adds r0, r3, 0 - adds r0, 0xDF - ldrb r1, [r0] - ldr r3, _080190F0 @ =gBitTable - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080190C6 - ldr r0, _080190EC @ =gAbsentBattlerFlags - ldrb r1, [r0] - lsls r0, r4, 2 - adds r0, r3 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080190C6 - b _08018FAC -_080190C6: - ldr r0, [r5] - adds r0, 0x4E - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _080190E8 @ =gBattlersCount - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0] - cmp r1, r0 - bne _0801907E - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - movs r1, 0x3 - strb r1, [r0] - b _08019264 - .align 2, 0 -_080190E8: .4byte gBattlersCount -_080190EC: .4byte gAbsentBattlerFlags -_080190F0: .4byte gBitTable -_080190F4: .4byte gBattleStruct -_080190F8: .4byte gBattlerFainted -_080190FC: .4byte gBattlerTarget -_08019100: .4byte gBattleMons -_08019104: .4byte gBattlerPartyIndexes -_08019108: - ldr r0, _08019134 @ =gBattlerFainted - ldrb r0, [r0] - bl sub_8017434 - ldr r2, _08019138 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0x4E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _0801913C @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08019140 - ldr r0, [r2] - adds r0, 0x4D - movs r1, 0x3 - strb r1, [r0] - b _08019262 - .align 2, 0 -_08019134: .4byte gBattlerFainted -_08019138: .4byte gBattleStruct -_0801913C: .4byte gBattlersCount -_08019140: - ldr r0, [r2] - adds r0, 0x4D - movs r1, 0x1 - strb r1, [r0] - b _08019262 -_0801914A: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4E - movs r1, 0 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0801915E: - ldr r0, _080191AC @ =gBattlerFainted - mov r12, r0 - ldr r7, _080191B0 @ =gBattlerTarget - ldr r5, _080191B4 @ =gBattleStruct - ldr r2, _080191B8 @ =gBattleMons - ldr r6, _080191BC @ =gBitTable -_0801916A: - ldr r0, [r5] - adds r4, r0, 0 - adds r4, 0x4E - ldrb r0, [r4] - strb r0, [r7] - mov r1, r12 - strb r0, [r1] - ldrb r3, [r4] - movs r0, 0x58 - muls r0, r3 - adds r0, r2 - ldrh r0, [r0, 0x28] - cmp r0, 0 - bne _08019198 - ldr r0, _080191C0 @ =gAbsentBattlerFlags - ldrb r1, [r0] - lsls r0, r3, 2 - adds r0, r6 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _08019198 - b _08018FC0 -_08019198: - adds r0, r3, 0x1 - strb r0, [r4] - ldr r1, _080191C4 @ =gBattlersCount - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0801916A - b _080191E0 - .align 2, 0 -_080191AC: .4byte gBattlerFainted -_080191B0: .4byte gBattlerTarget -_080191B4: .4byte gBattleStruct -_080191B8: .4byte gBattleMons -_080191BC: .4byte gBitTable -_080191C0: .4byte gAbsentBattlerFlags -_080191C4: .4byte gBattlersCount -_080191C8: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4E - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _080191EC @ =gBattlersCount - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r0] - cmp r1, r0 - bne _080191F0 -_080191E0: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4D - movs r1, 0x6 - strb r1, [r0] - b _08019264 - .align 2, 0 -_080191EC: .4byte gBattlersCount -_080191F0: - mov r1, r8 - ldr r0, [r1] - adds r0, 0x4D - movs r1, 0x4 - strb r1, [r0] - b _08019264 -_080191FC: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08019216 - b _08018FCE -_08019216: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _0801922C - b _08018FCE -_0801922C: - movs r0, 0x1 - movs r1, 0 - movs r2, 0x1 - bl ItemBattleEffects - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08019240 - b _08018FCE -_08019240: - str r0, [sp] - movs r0, 0x6 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AbilityBattleEffects - lsls r0, 24 - cmp r0, 0 - beq _08019256 - b _08018FCE -_08019256: - ldr r2, _08019280 @ =gBattleStruct - ldr r1, [r2] - adds r1, 0x4D - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08019262: - mov r8, r2 -_08019264: - mov r4, r8 - ldr r0, [r4] - adds r0, 0x4D - ldrb r0, [r0] - cmp r0, 0x7 - beq _08019272 - b _08018FDC -_08019272: - movs r0, 0 -_08019274: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08019280: .4byte gBattleStruct - thumb_func_end HandleFaintedMonActions - thumb_func_start TryClearRageStatuses TryClearRageStatuses: @ 8019284 push {r4-r6,lr} |