summaryrefslogtreecommitdiff
path: root/asm/battle_script_commands.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_script_commands.s')
-rw-r--r--asm/battle_script_commands.s5007
1 files changed, 0 insertions, 5007 deletions
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index 6d797fe69..f1d80c4fc 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -5,5013 +5,6 @@
.text
- thumb_func_start atk00_attackcanceler
-atk00_attackcanceler: @ 801D760
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, _0801D77C @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801D784
- ldr r1, _0801D780 @ =gCurrentActionFuncId
- movs r0, 0xC
- strb r0, [r1]
- b _0801DAFC
- .align 2, 0
-_0801D77C: .4byte gBattleOutcome
-_0801D780: .4byte gCurrentActionFuncId
-_0801D784:
- ldr r2, _0801D7B4 @ =gBattleMons
- ldr r0, _0801D7B8 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801D7C8
- ldr r2, _0801D7BC @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0801D7C8
- movs r0, 0x80
- lsls r0, 12
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801D7C0 @ =gBattlescriptCurrInstr
- ldr r0, _0801D7C4 @ =BattleScript_MoveEnd
- b _0801DAFA
- .align 2, 0
-_0801D7B4: .4byte gBattleMons
-_0801D7B8: .4byte gBattlerAttacker
-_0801D7BC: .4byte gHitMarker
-_0801D7C0: .4byte gBattlescriptCurrInstr
-_0801D7C4: .4byte BattleScript_MoveEnd
-_0801D7C8:
- bl AtkCanceller_UnableToUseMove
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801D7D6
- b _0801DAFC
-_0801D7D6:
- ldr r0, _0801D844 @ =gBattlerTarget
- ldrb r1, [r0]
- str r2, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0801D7EE
- b _0801DAFC
-_0801D7EE:
- ldr r4, _0801D848 @ =gBattleMons
- ldr r0, _0801D84C @ =gCurrMovePos
- ldrb r1, [r0]
- ldr r3, _0801D850 @ =gBattlerAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r2, r0
- adds r1, r2
- adds r0, r4, 0
- adds r0, 0x24
- adds r1, r0
- ldrb r0, [r1]
- ldr r5, _0801D854 @ =gHitMarker
- cmp r0, 0
- bne _0801D86C
- ldr r0, _0801D858 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _0801D86C
- ldr r0, [r5]
- ldr r1, _0801D85C @ =0x00800200
- ands r0, r1
- cmp r0, 0
- bne _0801D86C
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801D86C
- ldr r1, _0801D860 @ =gBattlescriptCurrInstr
- ldr r0, _0801D864 @ =BattleScript_NoPPForMove
- str r0, [r1]
- ldr r2, _0801D868 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- b _0801DAFC
- .align 2, 0
-_0801D844: .4byte gBattlerTarget
-_0801D848: .4byte gBattleMons
-_0801D84C: .4byte gCurrMovePos
-_0801D850: .4byte gBattlerAttacker
-_0801D854: .4byte gHitMarker
-_0801D858: .4byte gCurrentMove
-_0801D85C: .4byte 0x00800200
-_0801D860: .4byte gBattlescriptCurrInstr
-_0801D864: .4byte BattleScript_NoPPForMove
-_0801D868: .4byte gMoveResultFlags
-_0801D86C:
- ldr r0, [r5]
- ldr r1, _0801D8B0 @ =0xff7fffff
- ands r0, r1
- str r0, [r5]
- movs r6, 0x80
- lsls r6, 18
- ands r0, r6
- cmp r0, 0
- bne _0801D8C4
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r1, r4, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801D8C4
- bl IsMonDisobedient
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801D8C4
- cmp r2, 0x2
- bne _0801D8B4
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- b _0801DAFC
- .align 2, 0
-_0801D8B0: .4byte 0xff7fffff
-_0801D8B4:
- ldr r0, _0801D8C0 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801DAFC
- .align 2, 0
-_0801D8C0: .4byte gMoveResultFlags
-_0801D8C4:
- ldr r2, _0801D928 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801D92C @ =gProtectStructs
- ldr r1, _0801D930 @ =gBattlerTarget
- ldrb r3, [r1]
- lsls r0, r3, 4
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 27
- mov r8, r1
- mov r9, r2
- cmp r0, 0
- bge _0801D94C
- ldr r2, _0801D934 @ =gBattleMoves
- ldr r0, _0801D938 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801D94C
- ldr r0, _0801D93C @ =gBattlerAttacker
- ldrb r0, [r0]
- ldr r2, _0801D940 @ =0x00000115
- adds r1, r3, 0
- bl PressurePPLose
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 4
- add r1, r9
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bl BattleScriptPushCursor
- ldr r1, _0801D944 @ =gBattlescriptCurrInstr
- ldr r0, _0801D948 @ =BattleScript_MagicCoatBounce
- b _0801DAFA
- .align 2, 0
-_0801D928: .4byte gHitMarker
-_0801D92C: .4byte gProtectStructs
-_0801D930: .4byte gBattlerTarget
-_0801D934: .4byte gBattleMoves
-_0801D938: .4byte gCurrentMove
-_0801D93C: .4byte gBattlerAttacker
-_0801D940: .4byte 0x00000115
-_0801D944: .4byte gBattlescriptCurrInstr
-_0801D948: .4byte BattleScript_MagicCoatBounce
-_0801D94C:
- movs r2, 0
- ldr r0, _0801D9C8 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r2, r0
- bge _0801D98E
- ldr r6, _0801D9CC @ =gProtectStructs
- ldr r1, _0801D9D0 @ =gBattleMoves
- mov r12, r1
- adds r5, r0, 0
- ldr r7, _0801D9D4 @ =gBattlerByTurnOrder
-_0801D960:
- adds r4, r2, r7
- ldrb r3, [r4]
- lsls r0, r3, 4
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _0801D988
- ldr r0, _0801D9D8 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r1, [r0, 0x8]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801D988
- b _0801DAB4
-_0801D988:
- adds r2, 0x1
- cmp r2, r5
- blt _0801D960
-_0801D98E:
- ldr r0, _0801D9DC @ =gSpecialStatuses
- mov r1, r8
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r3, [r1]
- lsls r0, r3, 30
- cmp r0, 0
- bge _0801D9EC
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- strb r0, [r1]
- ldr r4, _0801D9E0 @ =gLastUsedAbility
- movs r0, 0x1F
- strb r0, [r4]
- bl BattleScriptPushCursor
- ldr r1, _0801D9E4 @ =gBattlescriptCurrInstr
- ldr r0, _0801D9E8 @ =BattleScript_TookAttack
- str r0, [r1]
- mov r1, r8
- ldrb r0, [r1]
- ldrb r1, [r4]
- bl RecordAbilityBattle
- b _0801DAFC
- .align 2, 0
-_0801D9C8: .4byte gBattlersCount
-_0801D9CC: .4byte gProtectStructs
-_0801D9D0: .4byte gBattleMoves
-_0801D9D4: .4byte gBattlerByTurnOrder
-_0801D9D8: .4byte gCurrentMove
-_0801D9DC: .4byte gSpecialStatuses
-_0801D9E0: .4byte gLastUsedAbility
-_0801D9E4: .4byte gBattlescriptCurrInstr
-_0801D9E8: .4byte BattleScript_TookAttack
-_0801D9EC:
- lsls r0, r2, 4
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0801D9FA
- b _0801DAF4
-_0801D9FA:
- ldr r1, _0801DA90 @ =gBattleMoves
- ldr r2, _0801DA94 @ =gCurrentMove
- ldrh r3, [r2]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- adds r4, r2, 0
- cmp r0, 0
- beq _0801DAF4
- cmp r3, 0xAE
- bne _0801DA38
- ldr r2, _0801DA98 @ =gBattleMons
- ldr r0, _0801DA9C @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _0801DA38
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0801DAF4
-_0801DA38:
- ldrh r0, [r4]
- bl IsTwoTurnsMove
- lsls r0, 24
- cmp r0, 0
- beq _0801DA5E
- ldr r1, _0801DA98 @ =gBattleMons
- ldr r0, _0801DA9C @ =gBattlerAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- beq _0801DAF4
-_0801DA5E:
- ldr r0, _0801DA9C @ =gBattlerAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r2, _0801DAA0 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801DAA4 @ =gLastLandedMoves
- ldr r3, _0801DAA8 @ =gBattlerTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801DAAC @ =gLastHitByType
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801DAB0 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801DAF4
- .align 2, 0
-_0801DA90: .4byte gBattleMoves
-_0801DA94: .4byte gCurrentMove
-_0801DA98: .4byte gBattleMons
-_0801DA9C: .4byte gBattlerAttacker
-_0801DAA0: .4byte gMoveResultFlags
-_0801DAA4: .4byte gLastLandedMoves
-_0801DAA8: .4byte gBattlerTarget
-_0801DAAC: .4byte gLastHitByType
-_0801DAB0: .4byte gBattleCommunication
-_0801DAB4:
- ldr r0, _0801DAE0 @ =gBattlerAttacker
- ldrb r0, [r0]
- ldr r2, _0801DAE4 @ =0x00000121
- adds r1, r3, 0
- bl PressurePPLose
- ldrb r1, [r4]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, _0801DAE8 @ =gBattleScripting
- ldrb r0, [r4]
- strb r0, [r1, 0x17]
- bl BattleScriptPushCursor
- ldr r1, _0801DAEC @ =gBattlescriptCurrInstr
- ldr r0, _0801DAF0 @ =BattleScript_SnatchedMove
- b _0801DAFA
- .align 2, 0
-_0801DAE0: .4byte gBattlerAttacker
-_0801DAE4: .4byte 0x00000121
-_0801DAE8: .4byte gBattleScripting
-_0801DAEC: .4byte gBattlescriptCurrInstr
-_0801DAF0: .4byte BattleScript_SnatchedMove
-_0801DAF4:
- ldr r1, _0801DB0C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801DAFA:
- str r0, [r1]
-_0801DAFC:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DB0C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk00_attackcanceler
-
- thumb_func_start JumpIfMoveFailed
-JumpIfMoveFailed: @ 801DB10
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, _0801DB5C @ =gBattlescriptCurrInstr
- ldr r5, [r1]
- adds r4, r5, r0
- ldr r0, _0801DB60 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801DB70
- ldr r1, _0801DB64 @ =gLastLandedMoves
- ldr r3, _0801DB68 @ =gBattlerTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801DB6C @ =gLastHitByType
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldrb r4, [r5, 0x1]
- ldrb r0, [r5, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r5, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r5, 0x4]
- lsls r0, 24
- orrs r4, r0
- b _0801DB8A
- .align 2, 0
-_0801DB5C: .4byte gBattlescriptCurrInstr
-_0801DB60: .4byte gMoveResultFlags
-_0801DB64: .4byte gLastLandedMoves
-_0801DB68: .4byte gBattlerTarget
-_0801DB6C: .4byte gLastHitByType
-_0801DB70:
- bl TrySetDestinyBondToHappen
- ldr r0, _0801DB98 @ =gBattlerTarget
- ldrb r1, [r0]
- str r6, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801DB8E
-_0801DB8A:
- ldr r0, _0801DB9C @ =gBattlescriptCurrInstr
- str r4, [r0]
-_0801DB8E:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DB98: .4byte gBattlerTarget
-_0801DB9C: .4byte gBattlescriptCurrInstr
- thumb_func_end JumpIfMoveFailed
-
- thumb_func_start atk40_jumpifaffectedbyprotect
-atk40_jumpifaffectedbyprotect: @ 801DBA0
- push {lr}
- ldr r1, _0801DBE8 @ =gProtectStructs
- ldr r0, _0801DBEC @ =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801DC00
- ldr r2, _0801DBF0 @ =gBattleMoves
- ldr r0, _0801DBF4 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801DC00
- ldr r2, _0801DBF8 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x5
- movs r1, 0
- bl JumpIfMoveFailed
- ldr r1, _0801DBFC @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801DC08
- .align 2, 0
-_0801DBE8: .4byte gProtectStructs
-_0801DBEC: .4byte gBattlerTarget
-_0801DBF0: .4byte gBattleMoves
-_0801DBF4: .4byte gCurrentMove
-_0801DBF8: .4byte gMoveResultFlags
-_0801DBFC: .4byte gBattleCommunication
-_0801DC00:
- ldr r1, _0801DC0C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0801DC08:
- pop {r0}
- bx r0
- .align 2, 0
-_0801DC0C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk40_jumpifaffectedbyprotect
-
- thumb_func_start JumpIfMoveAffectedByProtect
-JumpIfMoveAffectedByProtect: @ 801DC10
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, _0801DC64 @ =gProtectStructs
- ldr r0, _0801DC68 @ =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801DC5C
- ldr r2, _0801DC6C @ =gBattleMoves
- ldr r0, _0801DC70 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801DC5C
- ldr r2, _0801DC74 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x7
- adds r1, r3, 0
- bl JumpIfMoveFailed
- ldr r1, _0801DC78 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- movs r4, 0x1
-_0801DC5C:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801DC64: .4byte gProtectStructs
-_0801DC68: .4byte gBattlerTarget
-_0801DC6C: .4byte gBattleMoves
-_0801DC70: .4byte gCurrentMove
-_0801DC74: .4byte gMoveResultFlags
-_0801DC78: .4byte gBattleCommunication
- thumb_func_end JumpIfMoveAffectedByProtect
-
- thumb_func_start AccuracyCalcHelper
-AccuracyCalcHelper: @ 801DC7C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r2, _0801DCDC @ =gStatuses3
- ldr r3, _0801DCE0 @ =gBattlerTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- adds r6, r2, 0
- cmp r1, 0
- beq _0801DCAE
- ldr r1, _0801DCE4 @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801DCE8 @ =gBattlerAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0801DD98
-_0801DCAE:
- ldr r0, _0801DCEC @ =gHitMarker
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 9
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- bne _0801DCF4
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801DCF4
-_0801DCCE:
- ldr r0, _0801DCF0 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801DD98
- .align 2, 0
-_0801DCDC: .4byte gStatuses3
-_0801DCE0: .4byte gBattlerTarget
-_0801DCE4: .4byte gDisableStructs
-_0801DCE8: .4byte gBattlerAttacker
-_0801DCEC: .4byte gHitMarker
-_0801DCF0: .4byte gMoveResultFlags
-_0801DCF4:
- ldr r0, [r2]
- ldr r1, _0801DDA4 @ =0xfffeffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- bne _0801DD16
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0801DCCE
-_0801DD16:
- ldr r0, [r2]
- ldr r1, _0801DDA8 @ =0xfffdffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _0801DD36
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r0, r1
- cmp r0, 0
- bne _0801DCCE
-_0801DD36:
- ldr r0, [r2]
- ldr r1, _0801DDAC @ =0xfffbffff
- ands r0, r1
- str r0, [r2]
- 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
- lsls r4, r5, 1
- cmp r0, 0
- bne _0801DD86
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801DD86
- ldr r0, _0801DDB0 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801DD86
- ldr r0, _0801DDB4 @ =gBattleMoves
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x98
- beq _0801DD98
-_0801DD86:
- ldr r1, _0801DDB4 @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0801DD98
- cmp r0, 0x4E
- bne _0801DDB8
-_0801DD98:
- movs r0, 0x7
- adds r1, r5, 0
- bl JumpIfMoveFailed
- movs r0, 0x1
- b _0801DDBA
- .align 2, 0
-_0801DDA4: .4byte 0xfffeffff
-_0801DDA8: .4byte 0xfffdffff
-_0801DDAC: .4byte 0xfffbffff
-_0801DDB0: .4byte gBattleWeather
-_0801DDB4: .4byte gBattleMoves
-_0801DDB8:
- movs r0, 0
-_0801DDBA:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end AccuracyCalcHelper
-
- thumb_func_start atk01_accuracycheck
-atk01_accuracycheck: @ 801DDC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0801DE60 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r6, [r0, 0x5]
- ldrb r0, [r0, 0x6]
- lsls r0, 8
- orrs r6, r0
- ldr r0, _0801DE64 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801DE48
- movs r0, 0x1
- bl sub_80EB2E0
- lsls r0, 24
- cmp r0, 0
- bne _0801DE12
- ldr r0, _0801DE68 @ =gBattleMoves
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801DE12
- ldr r0, _0801DE6C @ =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0801DE56
-_0801DE12:
- ldr r0, _0801DE64 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801DE48
- movs r0, 0x2
- bl sub_80EB2E0
- lsls r0, 24
- cmp r0, 0
- bne _0801DE48
- ldr r0, _0801DE68 @ =gBattleMoves
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0801DE48
- ldr r0, _0801DE6C @ =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0801DE56
-_0801DE48:
- ldr r0, _0801DE64 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 9
- ands r0, r1
- cmp r0, 0
- beq _0801DE70
-_0801DE56:
- movs r0, 0x7
- adds r1, r6, 0
- bl JumpIfMoveFailed
- b _0801E1C2
- .align 2, 0
-_0801DE60: .4byte gBattlescriptCurrInstr
-_0801DE64: .4byte gBattleTypeFlags
-_0801DE68: .4byte gBattleMoves
-_0801DE6C: .4byte gBattlerAttacker
-_0801DE70:
- adds r0, r6, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0801DF0C
- ldr r2, _0801DED4 @ =gStatuses3
- ldr r3, _0801DED8 @ =gBattlerTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- cmp r1, 0
- beq _0801DEA8
- ldr r0, _0801DEDC @ =0x0000ffff
- cmp r6, r0
- bne _0801DEA8
- ldr r1, _0801DEE0 @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801DEE4 @ =gBattlerAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0801DEFE
-_0801DEA8:
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldr r1, _0801DEE8 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0801DEF0
- ldr r3, _0801DEEC @ =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 _0801E1C2
- .align 2, 0
-_0801DED4: .4byte gStatuses3
-_0801DED8: .4byte gBattlerTarget
-_0801DEDC: .4byte 0x0000ffff
-_0801DEE0: .4byte gDisableStructs
-_0801DEE4: .4byte gBattlerAttacker
-_0801DEE8: .4byte 0x000400c0
-_0801DEEC: .4byte gBattlescriptCurrInstr
-_0801DEF0:
- movs r0, 0
- bl JumpIfMoveAffectedByProtect
- lsls r0, 24
- cmp r0, 0
- beq _0801DEFE
- b _0801E1C2
-_0801DEFE:
- ldr r1, _0801DF08 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
- b _0801E1C2
- .align 2, 0
-_0801DF08: .4byte gBattlescriptCurrInstr
-_0801DF0C:
- cmp r6, 0
- bne _0801DF14
- ldr r0, _0801DF2C @ =gCurrentMove
- ldrh r6, [r0]
-_0801DF14:
- ldr r0, _0801DF30 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _0801DF34
- movs r1, 0x3F
- mov r10, r1
- mov r2, r10
- ands r2, r0
- mov r10, r2
- b _0801DF42
- .align 2, 0
-_0801DF2C: .4byte gCurrentMove
-_0801DF30: .4byte gBattleStruct
-_0801DF34:
- ldr r1, _0801DF88 @ =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- mov r10, r0
-_0801DF42:
- adds r0, r6, 0
- bl JumpIfMoveAffectedByProtect
- lsls r0, 24
- cmp r0, 0
- beq _0801DF50
- b _0801E1C2
-_0801DF50:
- adds r0, r6, 0
- bl AccuracyCalcHelper
- lsls r0, 24
- cmp r0, 0
- beq _0801DF5E
- b _0801E1C2
-_0801DF5E:
- ldr r3, _0801DF8C @ =gBattleMons
- ldr r0, _0801DF90 @ =gBattlerTarget
- ldrb r0, [r0]
- movs r2, 0x58
- adds r4, r0, 0
- muls r4, r2
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801DF98
- ldr r0, _0801DF94 @ =gBattlerAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r5, [r0, 0x1E]
- b _0801DFAE
- .align 2, 0
-_0801DF88: .4byte gBattleMoves
-_0801DF8C: .4byte gBattleMons
-_0801DF90: .4byte gBattlerTarget
-_0801DF94: .4byte gBattlerAttacker
-_0801DF98:
- ldr r0, _0801E0FC @ =gBattlerAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r0, [r0, 0x1E]
- adds r0, 0x6
- adds r1, r4, r3
- ldrb r1, [r1, 0x1F]
- subs r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
-_0801DFAE:
- lsls r0, r5, 24
- cmp r0, 0
- bge _0801DFB6
- movs r5, 0
-_0801DFB6:
- lsls r0, r5, 24
- asrs r0, 24
- cmp r0, 0xC
- ble _0801DFC0
- movs r5, 0xC
-_0801DFC0:
- ldr r1, _0801E100 @ =gBattleMoves
- lsls r4, r6, 1
- adds r0, r4, r6
- lsls r0, 2
- adds r7, r0, r1
- ldrb r3, [r7, 0x3]
- mov r8, r3
- 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
- str r4, [sp, 0x4]
- cmp r0, 0
- bne _0801E012
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801E012
- ldr r0, _0801E104 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0801E012
- ldrb r0, [r7]
- cmp r0, 0x98
- bne _0801E012
- movs r0, 0x32
- mov r8, r0
-_0801E012:
- ldr r1, _0801E108 @ =sAccuracyStageRatios
- lsls r0, r5, 24
- asrs r0, 22
- adds r0, r1
- ldrb r1, [r0]
- mov r4, r8
- muls r4, r1
- ldrb r1, [r0, 0x1]
- adds r0, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r7, _0801E10C @ =gBattleMons
- ldr r0, _0801E0FC @ =gBattlerAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0801E050
- lsls r0, r4, 6
- adds r0, r4
- lsls r0, 1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801E050:
- 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 _0801E0A8
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801E0A8
- ldr r0, _0801E110 @ =gBattlerTarget
- ldrb r0, [r0]
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0801E0A8
- ldr r0, _0801E104 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0801E0A8
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801E0A8:
- ldr r2, _0801E10C @ =gBattleMons
- ldr r0, _0801E0FC @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r9, r2
- cmp r0, 0x37
- bne _0801E0D4
- mov r1, r10
- cmp r1, 0x8
- bhi _0801E0D4
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801E0D4:
- ldr r2, _0801E110 @ =gBattlerTarget
- mov r8, r2
- ldrb r2, [r2]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- mov r3, r9
- adds r1, r0, r3
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801E118
- ldr r1, _0801E114 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- ldrb r2, [r0, 0x1A]
- b _0801E134
- .align 2, 0
-_0801E0FC: .4byte gBattlerAttacker
-_0801E100: .4byte gBattleMoves
-_0801E104: .4byte gBattleWeather
-_0801E108: .4byte sAccuracyStageRatios
-_0801E10C: .4byte gBattleMons
-_0801E110: .4byte gBattlerTarget
-_0801E114: .4byte gEnigmaBerries
-_0801E118:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r2, r0, 24
-_0801E134:
- ldr r0, _0801E198 @ =gPotentialItemEffectBattler
- ldr r1, _0801E19C @ =gBattlerTarget
- ldrb r1, [r1]
- strb r1, [r0]
- cmp r5, 0x16
- bne _0801E150
- movs r0, 0x64
- subs r0, r2
- muls r0, r4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801E150:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- cmp r0, r4
- ble _0801E1BA
- ldr r2, _0801E1A0 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _0801E1A4 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801E1B0
- ldr r1, _0801E1A8 @ =gBattleMoves
- ldr r2, [sp, 0x4]
- adds r0, r2, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x8
- beq _0801E192
- cmp r0, 0x20
- bne _0801E1B0
-_0801E192:
- ldr r1, _0801E1AC @ =gBattleCommunication
- movs r0, 0x2
- b _0801E1B4
- .align 2, 0
-_0801E198: .4byte gPotentialItemEffectBattler
-_0801E19C: .4byte gBattlerTarget
-_0801E1A0: .4byte gMoveResultFlags
-_0801E1A4: .4byte gBattleTypeFlags
-_0801E1A8: .4byte gBattleMoves
-_0801E1AC: .4byte gBattleCommunication
-_0801E1B0:
- ldr r1, _0801E1D4 @ =gBattleCommunication
- movs r0, 0
-_0801E1B4:
- strb r0, [r1, 0x6]
- bl CheckWonderGuardAndLevitate
-_0801E1BA:
- movs r0, 0x7
- adds r1, r6, 0
- bl JumpIfMoveFailed
-_0801E1C2:
- 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
-_0801E1D4: .4byte gBattleCommunication
- thumb_func_end atk01_accuracycheck
-
- thumb_func_start atk02_attackstring
-atk02_attackstring: @ 801E1D8
- push {r4,r5,lr}
- ldr r0, _0801E218 @ =gBattleControllerExecFlags
- ldr r5, [r0]
- cmp r5, 0
- bne _0801E210
- ldr r4, _0801E21C @ =gHitMarker
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- bne _0801E204
- ldr r0, _0801E220 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x4
- bl PrepareStringBattle
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 3
- orrs r0, r1
- str r0, [r4]
-_0801E204:
- ldr r0, _0801E224 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, _0801E228 @ =gBattleCommunication
- strb r5, [r0, 0x7]
-_0801E210:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E218: .4byte gBattleControllerExecFlags
-_0801E21C: .4byte gHitMarker
-_0801E220: .4byte gBattlerAttacker
-_0801E224: .4byte gBattlescriptCurrInstr
-_0801E228: .4byte gBattleCommunication
- thumb_func_end atk02_attackstring
-
- thumb_func_start atk03_ppreduce
-atk03_ppreduce: @ 801E22C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0x1
- ldr r0, _0801E27C @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E244
- b _0801E3DE
-_0801E244:
- ldr r1, _0801E280 @ =gSpecialStatuses
- ldr r2, _0801E284 @ =gBattlerAttacker
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r4, r0, 31
- mov r9, r2
- cmp r4, 0
- bne _0801E2E6
- ldr r2, _0801E288 @ =gBattleMoves
- ldr r0, _0801E28C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- cmp r0, 0x20
- beq _0801E296
- cmp r0, 0x20
- bgt _0801E290
- cmp r0, 0x8
- beq _0801E2AC
- b _0801E2C6
- .align 2, 0
-_0801E27C: .4byte gBattleControllerExecFlags
-_0801E280: .4byte gSpecialStatuses
-_0801E284: .4byte gBattlerAttacker
-_0801E288: .4byte gBattleMoves
-_0801E28C: .4byte gCurrentMove
-_0801E290:
- cmp r0, 0x40
- beq _0801E2AC
- b _0801E2C6
-_0801E296:
- str r4, [sp]
- movs r0, 0x12
- adds r1, r3, 0
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0x1
- b _0801E2E6
-_0801E2AC:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x10
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0
- b _0801E2E6
-_0801E2C6:
- ldr r1, _0801E348 @ =gBattlerTarget
- mov r2, r9
- ldrb r0, [r2]
- ldrb r7, [r1]
- cmp r0, r7
- beq _0801E2E6
- ldr r2, _0801E34C @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2E
- bne _0801E2E6
- adds r6, 0x1
-_0801E2E6:
- ldr r0, _0801E350 @ =gHitMarker
- ldr r4, [r0]
- movs r0, 0xA0
- lsls r0, 4
- ands r4, r0
- cmp r4, 0
- bne _0801E3CC
- ldr r2, _0801E34C @ =gBattleMons
- ldr r3, _0801E354 @ =gCurrMovePos
- ldr r1, _0801E358 @ =gBattlerAttacker
- ldrb r5, [r1]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r5
- ldrb r7, [r3]
- adds r0, r7
- movs r7, 0x24
- adds r7, r2
- mov r12, r7
- add r0, r12
- ldrb r0, [r0]
- mov r9, r1
- mov r10, r2
- adds r7, r3, 0
- cmp r0, 0
- beq _0801E3CC
- ldr r0, _0801E35C @ =gProtectStructs
- lsls r1, r5, 4
- adds r1, r0
- ldrb r0, [r1, 0x2]
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1, 0x2]
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldrb r1, [r7]
- adds r0, r1
- mov r1, r12
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, r6
- ble _0801E360
- subs r0, r6
- strb r0, [r2]
- b _0801E362
- .align 2, 0
-_0801E348: .4byte gBattlerTarget
-_0801E34C: .4byte gBattleMons
-_0801E350: .4byte gHitMarker
-_0801E354: .4byte gCurrMovePos
-_0801E358: .4byte gBattlerAttacker
-_0801E35C: .4byte gProtectStructs
-_0801E360:
- strb r4, [r2]
-_0801E362:
- mov r2, r9
- ldrb r3, [r2]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- mov r1, r10
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0801E3CC
- ldr r1, _0801E3F0 @ =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _0801E3F4 @ =gBitTable
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0801E3CC
- ldr r0, _0801E3F8 @ =gActiveBattler
- strb r3, [r0]
- ldrb r1, [r7]
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r4
- mov r2, r10
- adds r2, 0x24
- adds r0, r2
- ldrb r7, [r7]
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl BtlController_EmitSetMonData
- mov r7, r9
- ldrb r0, [r7]
- bl MarkBattlerForControllerExec
-_0801E3CC:
- ldr r2, _0801E3FC @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0801E400 @ =0xfffff7ff
- ands r0, r1
- str r0, [r2]
- ldr r1, _0801E404 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801E3DE:
- 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
-_0801E3F0: .4byte gDisableStructs
-_0801E3F4: .4byte gBitTable
-_0801E3F8: .4byte gActiveBattler
-_0801E3FC: .4byte gHitMarker
-_0801E400: .4byte 0xfffff7ff
-_0801E404: .4byte gBattlescriptCurrInstr
- thumb_func_end atk03_ppreduce
-
- thumb_func_start atk04_critcalc
-atk04_critcalc: @ 801E408
- push {r4-r7,lr}
- ldr r1, _0801E42C @ =gBattleMons
- ldr r0, _0801E430 @ =gBattlerAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- cmp r0, 0xAF
- bne _0801E438
- ldr r1, _0801E434 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- b _0801E440
- .align 2, 0
-_0801E42C: .4byte gBattleMons
-_0801E430: .4byte gBattlerAttacker
-_0801E434: .4byte gEnigmaBerries
-_0801E438:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
-_0801E440:
- ldr r1, _0801E4CC @ =gPotentialItemEffectBattler
- ldr r3, _0801E4D0 @ =gBattlerAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r4, _0801E4D4 @ =gBattleMons
- ldrb r1, [r3]
- movs r0, 0x58
- adds r7, r1, 0
- muls r7, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r7, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- negs r0, r0
- asrs r5, r0, 31
- movs r0, 0x2
- ands r5, r0
- ldr r2, _0801E4D8 @ =gBattleMoves
- ldr r0, _0801E4DC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- mov r12, r3
- cmp r1, 0x2B
- bne _0801E480
- adds r5, 0x1
-_0801E480:
- adds r0, r5, 0
- cmp r1, 0x4B
- bne _0801E488
- adds r0, 0x1
-_0801E488:
- cmp r1, 0xC8
- bne _0801E48E
- adds r0, 0x1
-_0801E48E:
- adds r2, r0, 0
- cmp r1, 0xD1
- bne _0801E496
- adds r2, 0x1
-_0801E496:
- movs r1, 0
- cmp r6, 0x3F
- bne _0801E4A6
- adds r0, r7, r4
- ldrh r0, [r0]
- cmp r0, 0x71
- bne _0801E4A6
- movs r1, 0x1
-_0801E4A6:
- lsls r5, r1, 1
- movs r3, 0
- cmp r6, 0x42
- bne _0801E4C0
- mov r0, r12
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x53
- bne _0801E4C0
- movs r3, 0x1
-_0801E4C0:
- lsls r1, r3, 1
- cmp r6, 0x29
- bne _0801E4E0
- adds r0, r5, 0x1
- adds r0, r2, r0
- b _0801E4E2
- .align 2, 0
-_0801E4CC: .4byte gPotentialItemEffectBattler
-_0801E4D0: .4byte gBattlerAttacker
-_0801E4D4: .4byte gBattleMons
-_0801E4D8: .4byte gBattleMoves
-_0801E4DC: .4byte gCurrentMove
-_0801E4E0:
- adds r0, r2, r5
-_0801E4E2:
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- cmp r5, 0x4
- bls _0801E4F0
- movs r5, 0x4
-_0801E4F0:
- ldr r0, _0801E56C @ =gBattlerTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x4
- beq _0801E580
- cmp r4, 0x4B
- beq _0801E580
- ldr r1, _0801E570 @ =gStatuses3
- mov r2, r12
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _0801E580
- ldr r4, _0801E574 @ =gBattleTypeFlags
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- bne _0801E580
- bl Random
- ldr r2, _0801E578 @ =sCriticalHitChance
- lsls r1, r5, 1
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0801E580
- ldr r0, [r4]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801E55A
- movs r0, 0x1
- bl sub_80EB2E0
- lsls r0, 24
- cmp r0, 0
- beq _0801E580
-_0801E55A:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 9
- ands r0, r1
- cmp r0, 0
- bne _0801E580
- ldr r1, _0801E57C @ =gCritMultiplier
- movs r0, 0x2
- b _0801E584
- .align 2, 0
-_0801E56C: .4byte gBattlerTarget
-_0801E570: .4byte gStatuses3
-_0801E574: .4byte gBattleTypeFlags
-_0801E578: .4byte sCriticalHitChance
-_0801E57C: .4byte gCritMultiplier
-_0801E580:
- ldr r1, _0801E594 @ =gCritMultiplier
- movs r0, 0x1
-_0801E584:
- strb r0, [r1]
- ldr r1, _0801E598 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E594: .4byte gCritMultiplier
-_0801E598: .4byte gBattlescriptCurrInstr
- thumb_func_end atk04_critcalc
-
- thumb_func_start atk05_damagecalc
-atk05_damagecalc: @ 801E59C
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r4, _0801E654 @ =gSideStatuses
- ldr r5, _0801E658 @ =gBattlerTarget
- ldrb r0, [r5]
- bl GetBattlerPosition
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldr r6, _0801E65C @ =gBattlerAttacker
- ldrb r0, [r6]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _0801E660 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r5]
- muls r1, r4
- adds r1, r2
- ldr r7, _0801E664 @ =gCurrentMove
- ldrh r2, [r7]
- ldr r4, _0801E668 @ =gDynamicBasePower
- ldrh r4, [r4]
- str r4, [sp]
- ldr r4, _0801E66C @ =gBattleStruct
- ldr r4, [r4]
- ldrb r4, [r4, 0x13]
- str r4, [sp, 0x4]
- ldrb r4, [r6]
- str r4, [sp, 0x8]
- ldrb r4, [r5]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801E670 @ =gBattleMoveDamage
- ldr r1, _0801E674 @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801E678 @ =gBattleScripting
- ldrb r0, [r0, 0xE]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801E67C @ =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801E620
- ldr r2, _0801E680 @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801E620
- lsls r0, r3, 1
- str r0, [r4]
-_0801E620:
- ldr r1, _0801E684 @ =gProtectStructs
- ldr r0, _0801E65C @ =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _0801E642
- ldr r4, _0801E670 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801E642:
- ldr r1, _0801E688 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E654: .4byte gSideStatuses
-_0801E658: .4byte gBattlerTarget
-_0801E65C: .4byte gBattlerAttacker
-_0801E660: .4byte gBattleMons
-_0801E664: .4byte gCurrentMove
-_0801E668: .4byte gDynamicBasePower
-_0801E66C: .4byte gBattleStruct
-_0801E670: .4byte gBattleMoveDamage
-_0801E674: .4byte gCritMultiplier
-_0801E678: .4byte gBattleScripting
-_0801E67C: .4byte gStatuses3
-_0801E680: .4byte gBattleMoves
-_0801E684: .4byte gProtectStructs
-_0801E688: .4byte gBattlescriptCurrInstr
- thumb_func_end atk05_damagecalc
-
- thumb_func_start AI_CalcDmg
-AI_CalcDmg: @ 801E68C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _0801E744 @ =gSideStatuses
- adds r0, r5, 0
- bl GetBattlerPosition
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x58
- adds r0, r7, 0
- muls r0, r1
- ldr r2, _0801E748 @ =gBattleMons
- adds r0, r2
- muls r1, r5
- adds r1, r2
- ldr r2, _0801E74C @ =gCurrentMove
- mov r8, r2
- ldrh r2, [r2]
- ldr r6, _0801E750 @ =gDynamicBasePower
- ldrh r4, [r6]
- str r4, [sp]
- ldr r4, _0801E754 @ =gBattleStruct
- ldr r4, [r4]
- ldrb r4, [r4, 0x13]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- str r5, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801E758 @ =gBattleMoveDamage
- movs r1, 0
- strh r1, [r6]
- ldr r1, _0801E75C @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801E760 @ =gBattleScripting
- ldrb r0, [r0, 0xE]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801E764 @ =gStatuses3
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801E71A
- ldr r2, _0801E768 @ =gBattleMoves
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801E71A
- lsls r0, r3, 1
- str r0, [r4]
-_0801E71A:
- ldr r0, _0801E76C @ =gProtectStructs
- lsls r1, r7, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- cmp r0, 0
- bge _0801E738
- ldr r4, _0801E758 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801E738:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E744: .4byte gSideStatuses
-_0801E748: .4byte gBattleMons
-_0801E74C: .4byte gCurrentMove
-_0801E750: .4byte gDynamicBasePower
-_0801E754: .4byte gBattleStruct
-_0801E758: .4byte gBattleMoveDamage
-_0801E75C: .4byte gCritMultiplier
-_0801E760: .4byte gBattleScripting
-_0801E764: .4byte gStatuses3
-_0801E768: .4byte gBattleMoves
-_0801E76C: .4byte gProtectStructs
- thumb_func_end AI_CalcDmg
-
- thumb_func_start ModulateDmgByType
-ModulateDmgByType: @ 801E770
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0801E7A0 @ =gBattleMoveDamage
- ldr r0, [r5]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _0801E790
- cmp r4, 0
- beq _0801E790
- movs r0, 0x1
- str r0, [r5]
-_0801E790:
- cmp r4, 0x5
- beq _0801E7C0
- cmp r4, 0x5
- bgt _0801E7A4
- cmp r4, 0
- beq _0801E7AA
- b _0801E842
- .align 2, 0
-_0801E7A0: .4byte gBattleMoveDamage
-_0801E7A4:
- cmp r4, 0x14
- beq _0801E800
- b _0801E842
-_0801E7AA:
- ldr r2, _0801E7BC @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801E840
- .align 2, 0
-_0801E7BC: .4byte gMoveResultFlags
-_0801E7C0:
- ldr r2, _0801E7F0 @ =gBattleMoves
- ldr r0, _0801E7F4 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801E842
- ldr r2, _0801E7F8 @ =gMoveResultFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801E842
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801E7FC
- movs r0, 0xFD
- ands r0, r1
- b _0801E840
- .align 2, 0
-_0801E7F0: .4byte gBattleMoves
-_0801E7F4: .4byte gCurrentMove
-_0801E7F8: .4byte gMoveResultFlags
-_0801E7FC:
- movs r0, 0x4
- b _0801E83E
-_0801E800:
- ldr r2, _0801E830 @ =gBattleMoves
- ldr r0, _0801E834 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801E842
- ldr r2, _0801E838 @ =gMoveResultFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801E842
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801E83C
- movs r0, 0xFB
- ands r0, r1
- b _0801E840
- .align 2, 0
-_0801E830: .4byte gBattleMoves
-_0801E834: .4byte gCurrentMove
-_0801E838: .4byte gMoveResultFlags
-_0801E83C:
- movs r0, 0x2
-_0801E83E:
- orrs r0, r1
-_0801E840:
- strb r0, [r2]
-_0801E842:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ModulateDmgByType
-
- thumb_func_start atk06_typecalc
-atk06_typecalc: @ 801E848
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0
- ldr r1, _0801E870 @ =gCurrentMove
- ldrh r0, [r1]
- cmp r0, 0xA5
- bne _0801E85C
- b _0801EA70
-_0801E85C:
- ldr r0, _0801E874 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _0801E878
- movs r1, 0x3F
- mov r8, r1
- ands r1, r0
- mov r8, r1
- b _0801E888
- .align 2, 0
-_0801E870: .4byte gCurrentMove
-_0801E874: .4byte gBattleStruct
-_0801E878:
- ldr r2, _0801E910 @ =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
-_0801E888:
- ldr r2, _0801E914 @ =gBattleMons
- ldr r0, _0801E918 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r5, r2, 0
- cmp r0, r8
- beq _0801E8AA
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801E8C0
-_0801E8AA:
- ldr r4, _0801E91C @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- str r3, [sp, 0x4]
- bl __divsi3
- str r0, [r4]
- ldr r3, [sp, 0x4]
-_0801E8C0:
- ldr r2, _0801E920 @ =gBattlerTarget
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- adds r4, r2, 0
- cmp r0, 0x1A
- bne _0801E938
- mov r1, r8
- cmp r1, 0x4
- bne _0801E938
- ldr r3, _0801E924 @ =gLastUsedAbility
- strb r0, [r3]
- ldr r2, _0801E928 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801E92C @ =gLastLandedMoves
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801E930 @ =gLastHitByType
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, _0801E934 @ =gBattleCommunication
- mov r1, r8
- strb r1, [r0, 0x6]
- ldrb r0, [r4]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _0801E9D4
- .align 2, 0
-_0801E910: .4byte gBattleMoves
-_0801E914: .4byte gBattleMons
-_0801E918: .4byte gBattlerAttacker
-_0801E91C: .4byte gBattleMoveDamage
-_0801E920: .4byte gBattlerTarget
-_0801E924: .4byte gLastUsedAbility
-_0801E928: .4byte gMoveResultFlags
-_0801E92C: .4byte gLastLandedMoves
-_0801E930: .4byte gLastHitByType
-_0801E934: .4byte gBattleCommunication
-_0801E938:
- ldr r1, _0801E944 @ =gTypeEffectiveness
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- b _0801E9B4
- .align 2, 0
-_0801E944: .4byte gTypeEffectiveness
-_0801E948:
- adds r3, 0x3
- b _0801E9B0
-_0801E94C:
- ldr r5, _0801EA84 @ =gTypeEffectiveness
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801E9A8
- adds r1, r3, 0x1
- adds r1, r5
- ldr r2, _0801EA88 @ =gBattleMons
- ldr r7, _0801EA8C @ =gBattlerTarget
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- adds r0, r2
- adds r0, 0x21
- ldrb r4, [r1]
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801E982
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r2, [sp]
- str r3, [sp, 0x4]
- bl ModulateDmgByType
- ldr r3, [sp, 0x4]
- ldr r2, [sp]
-_0801E982:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r4, r1
- bne _0801E9A8
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _0801E9A8
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r3, [sp, 0x4]
- bl ModulateDmgByType
- ldr r3, [sp, 0x4]
-_0801E9A8:
- adds r3, 0x3
- ldr r5, _0801EA88 @ =gBattleMons
- ldr r4, _0801EA8C @ =gBattlerTarget
- ldr r2, _0801EA84 @ =gTypeEffectiveness
-_0801E9B0:
- adds r0, r3, r2
- ldrb r0, [r0]
-_0801E9B4:
- cmp r0, 0xFF
- beq _0801E9D4
- cmp r0, 0xFE
- bne _0801E94C
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801E948
-_0801E9D4:
- ldr r2, _0801EA88 @ =gBattleMons
- ldr r5, _0801EA8C @ =gBattlerTarget
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _0801EA52
- ldr r0, _0801EA90 @ =gBattlerAttacker
- ldrb r0, [r0]
- ldr r7, _0801EA94 @ =gCurrentMove
- ldrh r1, [r7]
- bl AttacksThisTurn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801EA52
- ldr r1, _0801EA98 @ =gMoveResultFlags
- mov r8, r1
- ldrb r4, [r1]
- ands r0, r4
- cmp r0, 0
- beq _0801EA10
- movs r0, 0x6
- ands r0, r4
- cmp r0, 0x6
- bne _0801EA52
-_0801EA10:
- ldr r2, _0801EA9C @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801EA52
- ldr r3, _0801EAA0 @ =gLastUsedAbility
- strb r6, [r3]
- movs r0, 0x1
- orrs r0, r4
- mov r1, r8
- strb r0, [r1]
- ldr r1, _0801EAA4 @ =gLastLandedMoves
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801EAA8 @ =gLastHitByType
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801EAAC @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r5]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_0801EA52:
- ldr r0, _0801EA98 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801EA70
- ldr r2, _0801EAB0 @ =gProtectStructs
- ldr r0, _0801EA90 @ =gBattlerAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_0801EA70:
- ldr r1, _0801EAB4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801EA84: .4byte gTypeEffectiveness
-_0801EA88: .4byte gBattleMons
-_0801EA8C: .4byte gBattlerTarget
-_0801EA90: .4byte gBattlerAttacker
-_0801EA94: .4byte gCurrentMove
-_0801EA98: .4byte gMoveResultFlags
-_0801EA9C: .4byte gBattleMoves
-_0801EAA0: .4byte gLastUsedAbility
-_0801EAA4: .4byte gLastLandedMoves
-_0801EAA8: .4byte gLastHitByType
-_0801EAAC: .4byte gBattleCommunication
-_0801EAB0: .4byte gProtectStructs
-_0801EAB4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk06_typecalc
-
- thumb_func_start CheckWonderGuardAndLevitate
-CheckWonderGuardAndLevitate: @ 801EAB8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _0801EAF8 @ =gCurrentMove
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0xA5
- bne _0801EAD0
- b _0801ED18
-_0801EAD0:
- ldr r2, _0801EAFC @ =gBattleMoves
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0801EAE2
- b _0801ED18
-_0801EAE2:
- ldr r0, _0801EB00 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _0801EB04
- movs r1, 0x3F
- mov r12, r1
- mov r2, r12
- ands r2, r0
- mov r12, r2
- b _0801EB08
- .align 2, 0
-_0801EAF8: .4byte gCurrentMove
-_0801EAFC: .4byte gBattleMoves
-_0801EB00: .4byte gBattleStruct
-_0801EB04:
- ldrb r1, [r1, 0x2]
- mov r12, r1
-_0801EB08:
- ldr r2, _0801EB3C @ =gBattleMons
- ldr r3, _0801EB40 @ =gBattlerTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r1, [r0]
- adds r7, r2, 0
- mov r8, r3
- cmp r1, 0x1A
- bne _0801EB4C
- mov r0, r12
- cmp r0, 0x4
- bne _0801EB4C
- ldr r0, _0801EB44 @ =gLastUsedAbility
- strb r1, [r0]
- ldr r0, _0801EB48 @ =gBattleCommunication
- mov r1, r12
- strb r1, [r0, 0x6]
- ldrb r0, [r3]
- movs r1, 0x1A
- bl RecordAbilityBattle
- b _0801ED18
- .align 2, 0
-_0801EB3C: .4byte gBattleMons
-_0801EB40: .4byte gBattlerTarget
-_0801EB44: .4byte gLastUsedAbility
-_0801EB48: .4byte gBattleCommunication
-_0801EB4C:
- ldr r1, _0801EB58 @ =gTypeEffectiveness
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r4, r1, 0
- b _0801EC9E
- .align 2, 0
-_0801EB58: .4byte gTypeEffectiveness
-_0801EB5C:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, r12
- beq _0801EB66
- b _0801EC98
-_0801EB66:
- adds r2, r5, 0x1
- adds r3, r2, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r3]
- adds r3, r2, 0
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801EBA6
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801EBA6
- ldr r2, _0801ED24 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801ED28 @ =gProtectStructs
- ldr r0, _0801ED2C @ =gBattlerAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801EBA6:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801EBEC
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801EBEC
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801EBEC
- ldr r2, _0801ED24 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801ED28 @ =gProtectStructs
- ldr r0, _0801ED2C @ =gBattlerAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801EBEC:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801EC10
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801EC10
- movs r0, 0x1
- orrs r6, r0
-_0801EC10:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801EC3E
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801EC3E
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801EC3E
- movs r0, 0x1
- orrs r6, r0
-_0801EC3E:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801EC66
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801EC66
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801EC66:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801EC98
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801EC98
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801EC98
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801EC98:
- adds r5, 0x3
- adds r0, r5, r4
- ldrb r0, [r0]
-_0801EC9E:
- cmp r0, 0xFF
- beq _0801ECC2
- cmp r0, 0xFE
- beq _0801ECA8
- b _0801EB5C
-_0801ECA8:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r1, r7, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801EC98
-_0801ECC2:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x19
- bne _0801ED18
- ldr r0, _0801ED2C @ =gBattlerAttacker
- ldrb r0, [r0]
- mov r2, r9
- ldrh r1, [r2]
- bl AttacksThisTurn
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801ED18
- movs r0, 0x3
- ands r6, r0
- cmp r6, 0x1
- beq _0801ED18
- ldr r2, _0801ED30 @ =gBattleMoves
- mov r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801ED18
- ldr r0, _0801ED34 @ =gLastUsedAbility
- strb r4, [r0]
- ldr r1, _0801ED38 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x19
- bl RecordAbilityBattle
-_0801ED18:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801ED24: .4byte gMoveResultFlags
-_0801ED28: .4byte gProtectStructs
-_0801ED2C: .4byte gBattlerAttacker
-_0801ED30: .4byte gBattleMoves
-_0801ED34: .4byte gLastUsedAbility
-_0801ED38: .4byte gBattleCommunication
- thumb_func_end CheckWonderGuardAndLevitate
-
- thumb_func_start ModulateDmgByType2
-ModulateDmgByType2: @ 801ED3C
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, _0801ED70 @ =gBattleMoveDamage
- ldr r0, [r7]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r7]
- cmp r0, 0
- bne _0801ED62
- cmp r4, 0
- beq _0801ED62
- movs r0, 0x1
- str r0, [r7]
-_0801ED62:
- cmp r4, 0x5
- beq _0801ED8A
- cmp r4, 0x5
- bgt _0801ED74
- cmp r4, 0
- beq _0801ED7A
- b _0801EDEE
- .align 2, 0
-_0801ED70: .4byte gBattleMoveDamage
-_0801ED74:
- cmp r4, 0x14
- beq _0801EDBC
- b _0801EDEE
-_0801ED7A:
- ldrb r0, [r6]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801EDEC
-_0801ED8A:
- ldr r0, _0801EDB4 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801EDEE
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801EDEE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801EDB8
- movs r0, 0xFD
- ands r0, r1
- b _0801EDEC
- .align 2, 0
-_0801EDB4: .4byte gBattleMoves
-_0801EDB8:
- movs r0, 0x4
- b _0801EDEA
-_0801EDBC:
- ldr r0, _0801EDE4 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801EDEE
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801EDEE
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801EDE8
- movs r0, 0xFB
- ands r0, r1
- b _0801EDEC
- .align 2, 0
-_0801EDE4: .4byte gBattleMoves
-_0801EDE8:
- movs r0, 0x2
-_0801EDEA:
- orrs r0, r1
-_0801EDEC:
- strb r0, [r6]
-_0801EDEE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ModulateDmgByType2
-
- thumb_func_start TypeCalc
-TypeCalc: @ 801EDF4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- movs r0, 0
- mov r8, r0
- mov r0, sp
- mov r1, r8
- strb r1, [r0]
- mov r2, r10
- cmp r2, 0xA5
- bne _0801EE26
- movs r0, 0
- b _0801EFAE
-_0801EE26:
- ldr r1, _0801EE94 @ =gBattleMoves
- mov r3, r10
- lsls r2, r3, 1
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x8]
- ldr r1, _0801EE98 @ =gBattleMons
- movs r0, 0x58
- ldr r3, [sp, 0x4]
- muls r0, r3
- adds r3, r0, r1
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r0, [r0]
- str r2, [sp, 0xC]
- adds r5, r1, 0
- ldr r1, [sp, 0x8]
- cmp r0, r1
- beq _0801EE5A
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _0801EE6C
-_0801EE5A:
- ldr r4, _0801EE9C @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801EE6C:
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- bne _0801EEA0
- ldr r3, [sp, 0x8]
- cmp r3, 0x4
- bne _0801EEA0
- movs r1, 0x9
- mov r0, sp
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, sp
- strb r0, [r1]
- b _0801EF50
- .align 2, 0
-_0801EE94: .4byte gBattleMoves
-_0801EE98: .4byte gBattleMons
-_0801EE9C: .4byte gBattleMoveDamage
-_0801EEA0:
- ldr r1, _0801EEBC @ =gTypeEffectiveness
- mov r2, r8
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xFF
- beq _0801EF50
- cmp r0, 0xFE
- bne _0801EEC6
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- b _0801EF3E
- .align 2, 0
-_0801EEBC: .4byte gTypeEffectiveness
-_0801EEC0:
- movs r0, 0x3
- add r8, r0
- b _0801EF28
-_0801EEC6:
- ldr r7, _0801EFC0 @ =gTypeEffectiveness
- mov r1, r8
- adds r0, r1, r7
- ldrb r0, [r0]
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _0801EF20
- adds r1, 0x1
- adds r1, r7
- ldr r2, _0801EFC4 @ =gBattleMons
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r5, r0, r2
- adds r6, r5, 0
- adds r6, 0x21
- ldrb r4, [r1]
- ldrb r0, [r6]
- cmp r4, r0
- bne _0801EF00
- mov r0, r8
- adds r0, 0x2
- adds r0, r7
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl ModulateDmgByType2
-_0801EF00:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801EF20
- ldrb r0, [r6]
- cmp r0, r4
- beq _0801EF20
- mov r0, r8
- adds r0, 0x2
- adds r0, r7
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl ModulateDmgByType2
-_0801EF20:
- movs r1, 0x3
- add r8, r1
- ldr r5, _0801EFC4 @ =gBattleMons
- ldr r2, _0801EFC0 @ =gTypeEffectiveness
-_0801EF28:
- mov r3, r8
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0801EF50
- cmp r0, 0xFE
- bne _0801EEC6
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
-_0801EF3E:
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801EEC0
-_0801EF50:
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- bne _0801EFAA
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801EFAA
- ldr r0, [sp, 0x4]
- mov r1, r10
- bl AttacksThisTurn
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _0801EFAA
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0801EF92
- movs r0, 0x6
- ands r0, r3
- cmp r0, 0x6
- bne _0801EFAA
-_0801EF92:
- ldr r0, _0801EFC8 @ =gBattleMoves
- ldr r1, [sp, 0xC]
- add r1, r10
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801EFAA
- mov r0, sp
- movs r1, 0x1
- orrs r1, r3
- strb r1, [r0]
-_0801EFAA:
- mov r0, sp
- ldrb r0, [r0]
-_0801EFAE:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801EFC0: .4byte gTypeEffectiveness
-_0801EFC4: .4byte gBattleMons
-_0801EFC8: .4byte gBattleMoves
- thumb_func_end TypeCalc
-
- thumb_func_start AI_TypeCalc
-AI_TypeCalc: @ 801EFCC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- movs r7, 0
- mov r0, sp
- strb r7, [r0]
- ldr r2, _0801F008 @ =gBaseStats
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- mov r9, r1
- ldrb r0, [r0, 0x7]
- mov r8, r0
- cmp r6, 0xA5
- bne _0801F00C
- movs r0, 0
- b _0801F0B0
- .align 2, 0
-_0801F008: .4byte gBaseStats
-_0801F00C:
- ldr r2, _0801F030 @ =gBattleMoves
- lsls r1, r6, 1
- adds r0, r1, r6
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r10, r0
- str r1, [sp, 0x8]
- ldr r3, [sp, 0x4]
- cmp r3, 0x1A
- bne _0801F034
- cmp r0, 0x4
- bne _0801F034
- movs r1, 0x9
- mov r0, sp
- strb r1, [r0]
- b _0801F07A
- .align 2, 0
-_0801F030: .4byte gBattleMoves
-_0801F034:
- ldr r0, _0801F0C0 @ =gTypeEffectiveness
- adds r1, r7, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0801F07A
- adds r4, r1, 0
-_0801F040:
- ldrb r0, [r4]
- cmp r0, 0xFE
- beq _0801F06C
- cmp r0, r10
- bne _0801F06C
- ldrb r5, [r4, 0x1]
- cmp r5, r9
- bne _0801F05A
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl ModulateDmgByType2
-_0801F05A:
- cmp r5, r8
- bne _0801F06C
- cmp r9, r8
- beq _0801F06C
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl ModulateDmgByType2
-_0801F06C:
- adds r4, 0x3
- adds r7, 0x3
- ldr r1, _0801F0C0 @ =gTypeEffectiveness
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0801F040
-_0801F07A:
- ldr r3, [sp, 0x4]
- cmp r3, 0x19
- bne _0801F0AC
- mov r0, sp
- ldrb r2, [r0]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0801F094
- movs r0, 0x6
- ands r0, r2
- cmp r0, 0x6
- bne _0801F0AC
-_0801F094:
- ldr r0, _0801F0C4 @ =gBattleMoves
- ldr r3, [sp, 0x8]
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801F0AC
- mov r0, sp
- movs r1, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0801F0AC:
- mov r0, sp
- ldrb r0, [r0]
-_0801F0B0:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801F0C0: .4byte gTypeEffectiveness
-_0801F0C4: .4byte gBattleMoves
- thumb_func_end AI_TypeCalc
-
- thumb_func_start Unused_ApplyRandomDmgMultiplier
-Unused_ApplyRandomDmgMultiplier: @ 801F0C8
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801F100 @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801F0FA
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801F0FA
- movs r0, 0x1
- str r0, [r4]
-_0801F0FA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F100: .4byte gBattleMoveDamage
- thumb_func_end Unused_ApplyRandomDmgMultiplier
-
- thumb_func_start atk07_adjustnormaldamage
-atk07_adjustnormaldamage: @ 801F104
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801F15C @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801F136
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801F136
- movs r0, 0x1
- str r0, [r4]
-_0801F136:
- ldr r7, _0801F160 @ =gBattleMons
- ldr r6, _0801F164 @ =gBattlerTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801F16C
- ldr r1, _0801F168 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801F186
- .align 2, 0
-_0801F15C: .4byte gBattleMoveDamage
-_0801F160: .4byte gBattleMons
-_0801F164: .4byte gBattlerTarget
-_0801F168: .4byte gEnigmaBerries
-_0801F16C:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801F186:
- ldr r1, _0801F248 @ =gPotentialItemEffectBattler
- ldr r5, _0801F24C @ =gBattlerTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801F1C4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801F1C4
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, _0801F250 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801F1C4:
- ldr r2, _0801F254 @ =gBattleMons
- ldr r3, _0801F24C @ =gBattlerTarget
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r5, r2, 0
- cmp r1, 0
- bne _0801F294
- ldr r2, _0801F258 @ =gBattleMoves
- ldr r0, _0801F25C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _0801F216
- ldr r0, _0801F260 @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _0801F216
- ldr r0, _0801F250 @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801F294
-_0801F216:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _0801F264 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801F294
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _0801F260 @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801F26C
- ldr r0, _0801F268 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801F294
- .align 2, 0
-_0801F248: .4byte gPotentialItemEffectBattler
-_0801F24C: .4byte gBattlerTarget
-_0801F250: .4byte gSpecialStatuses
-_0801F254: .4byte gBattleMons
-_0801F258: .4byte gBattleMoves
-_0801F25C: .4byte gCurrentMove
-_0801F260: .4byte gProtectStructs
-_0801F264: .4byte gBattleMoveDamage
-_0801F268: .4byte gMoveResultFlags
-_0801F26C:
- ldr r0, _0801F2A4 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801F294
- ldr r2, _0801F2A8 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801F2AC @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801F294:
- ldr r1, _0801F2B0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F2A4: .4byte gSpecialStatuses
-_0801F2A8: .4byte gMoveResultFlags
-_0801F2AC: .4byte gLastUsedItem
-_0801F2B0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk07_adjustnormaldamage
-
- thumb_func_start atk08_adjustnormaldamage2
-atk08_adjustnormaldamage2: @ 801F2B4
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801F30C @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801F2E6
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801F2E6
- movs r0, 0x1
- str r0, [r4]
-_0801F2E6:
- ldr r7, _0801F310 @ =gBattleMons
- ldr r6, _0801F314 @ =gBattlerTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801F31C
- ldr r1, _0801F318 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801F336
- .align 2, 0
-_0801F30C: .4byte gBattleMoveDamage
-_0801F310: .4byte gBattleMons
-_0801F314: .4byte gBattlerTarget
-_0801F318: .4byte gEnigmaBerries
-_0801F31C:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801F336:
- ldr r1, _0801F3DC @ =gPotentialItemEffectBattler
- ldr r5, _0801F3E0 @ =gBattlerTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801F374
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801F374
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, _0801F3E4 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801F374:
- ldr r4, _0801F3E8 @ =gBattleMons
- ldr r6, _0801F3E0 @ =gBattlerTarget
- ldrb r2, [r6]
- movs r7, 0x58
- adds r3, r2, 0
- muls r3, r7
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _0801F420
- ldr r5, _0801F3EC @ =gProtectStructs
- lsls r0, r2, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- blt _0801F3B2
- ldr r0, _0801F3E4 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801F420
-_0801F3B2:
- adds r0, r3, r4
- ldrh r1, [r0, 0x28]
- ldr r2, _0801F3F0 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801F420
- subs r0, r1, 0x1
- str r0, [r2]
- ldrb r3, [r6]
- lsls r0, r3, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801F3F8
- ldr r0, _0801F3F4 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801F420
- .align 2, 0
-_0801F3DC: .4byte gPotentialItemEffectBattler
-_0801F3E0: .4byte gBattlerTarget
-_0801F3E4: .4byte gSpecialStatuses
-_0801F3E8: .4byte gBattleMons
-_0801F3EC: .4byte gProtectStructs
-_0801F3F0: .4byte gBattleMoveDamage
-_0801F3F4: .4byte gMoveResultFlags
-_0801F3F8:
- ldr r0, _0801F430 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801F420
- ldr r2, _0801F434 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801F438 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r7
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801F420:
- ldr r1, _0801F43C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F430: .4byte gSpecialStatuses
-_0801F434: .4byte gMoveResultFlags
-_0801F438: .4byte gLastUsedItem
-_0801F43C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk08_adjustnormaldamage2
-
- thumb_func_start atk09_attackanimation
-atk09_attackanimation: @ 801F440
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- ldr r0, _0801F488 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _0801F452
- b _0801F572
-_0801F452:
- ldr r0, _0801F48C @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- ldr r3, _0801F490 @ =gCurrentMove
- cmp r0, 0
- beq _0801F4A0
- ldrh r0, [r3]
- cmp r0, 0x90
- beq _0801F4A0
- cmp r0, 0xA4
- beq _0801F4A0
- ldr r4, _0801F494 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl BattleScriptPush
- ldr r0, _0801F498 @ =BattleScript_Pausex20
- str r0, [r4]
- ldr r1, _0801F49C @ =gBattleScripting
- ldrb r0, [r1, 0x18]
- adds r0, 0x1
- strb r0, [r1, 0x18]
- ldrb r0, [r1, 0x19]
- adds r0, 0x1
- strb r0, [r1, 0x19]
- b _0801F572
- .align 2, 0
-_0801F488: .4byte gBattleControllerExecFlags
-_0801F48C: .4byte gHitMarker
-_0801F490: .4byte gCurrentMove
-_0801F494: .4byte gBattlescriptCurrInstr
-_0801F498: .4byte BattleScript_Pausex20
-_0801F49C: .4byte gBattleScripting
-_0801F4A0:
- ldr r2, _0801F53C @ =gBattleMoves
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0801F4C6
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0801F4C6
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801F4CE
-_0801F4C6:
- ldr r0, _0801F540 @ =gBattleScripting
- ldrb r0, [r0, 0x19]
- cmp r0, 0
- bne _0801F530
-_0801F4CE:
- ldr r0, _0801F544 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F564
- ldr r1, _0801F548 @ =gActiveBattler
- ldr r0, _0801F54C @ =gBattlerAttacker
- mov r8, r0
- ldrb r0, [r0]
- strb r0, [r1]
- ldrh r1, [r3]
- ldr r6, _0801F540 @ =gBattleScripting
- ldrb r2, [r6, 0x18]
- ldr r0, _0801F550 @ =gBattleMovePower
- ldrh r3, [r0]
- ldr r0, _0801F554 @ =gBattleMoveDamage
- ldr r0, [r0]
- str r0, [sp]
- ldr r5, _0801F558 @ =gBattleMons
- mov r0, r8
- ldrb r4, [r0]
- movs r0, 0x58
- muls r0, r4
- adds r0, r5
- adds r0, 0x2B
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- mov r0, r8
- ldrb r4, [r0]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r4, _0801F55C @ =gDisableStructs
- adds r0, r4
- str r0, [sp, 0x8]
- movs r0, 0
- bl BtlController_EmitMoveAnimation
- ldrb r0, [r6, 0x18]
- adds r0, 0x1
- strb r0, [r6, 0x18]
- ldrb r0, [r6, 0x19]
- adds r0, 0x1
- strb r0, [r6, 0x19]
- mov r1, r8
- ldrb r0, [r1]
- bl MarkBattlerForControllerExec
-_0801F530:
- ldr r1, _0801F560 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0801F572
- .align 2, 0
-_0801F53C: .4byte gBattleMoves
-_0801F540: .4byte gBattleScripting
-_0801F544: .4byte gMoveResultFlags
-_0801F548: .4byte gActiveBattler
-_0801F54C: .4byte gBattlerAttacker
-_0801F550: .4byte gBattleMovePower
-_0801F554: .4byte gBattleMoveDamage
-_0801F558: .4byte gBattleMons
-_0801F55C: .4byte gDisableStructs
-_0801F560: .4byte gBattlescriptCurrInstr
-_0801F564:
- ldr r4, _0801F580 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl BattleScriptPush
- ldr r0, _0801F584 @ =BattleScript_Pausex20
- str r0, [r4]
-_0801F572:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F580: .4byte gBattlescriptCurrInstr
-_0801F584: .4byte BattleScript_Pausex20
- thumb_func_end atk09_attackanimation
-
- thumb_func_start atk0A_waitanimation
-atk0A_waitanimation: @ 801F588
- push {lr}
- ldr r0, _0801F5A0 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801F59A
- ldr r1, _0801F5A4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801F59A:
- pop {r0}
- bx r0
- .align 2, 0
-_0801F5A0: .4byte gBattleControllerExecFlags
-_0801F5A4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0A_waitanimation
-
- thumb_func_start atk0B_healthbarupdate
-atk0B_healthbarupdate: @ 801F5A8
- push {r4,lr}
- ldr r0, _0801F60C @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801F66A
- ldr r0, _0801F610 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F662
- ldr r0, _0801F614 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r2, _0801F618 @ =gActiveBattler
- strb r0, [r2]
- ldr r1, _0801F61C @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801F628
- ldr r0, _0801F620 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _0801F628
- ldr r0, _0801F624 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- bne _0801F628
- movs r0, 0x80
- adds r1, r2, 0
- bl PrepareStringBattle
- b _0801F662
- .align 2, 0
-_0801F60C: .4byte gBattleControllerExecFlags
-_0801F610: .4byte gMoveResultFlags
-_0801F614: .4byte gBattlescriptCurrInstr
-_0801F618: .4byte gActiveBattler
-_0801F61C: .4byte gBattleMons
-_0801F620: .4byte gDisableStructs
-_0801F624: .4byte gHitMarker
-_0801F628:
- ldr r0, _0801F670 @ =gBattleMoveDamage
- ldr r0, [r0]
- ldr r1, _0801F674 @ =0x00002710
- cmp r0, r1
- bgt _0801F636
- lsls r0, 16
- lsrs r1, r0, 16
-_0801F636:
- movs r0, 0
- bl BtlController_EmitHealthBarUpdate
- ldr r4, _0801F678 @ =gActiveBattler
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0801F662
- ldr r0, _0801F670 @ =gBattleMoveDamage
- ldr r0, [r0]
- cmp r0, 0
- ble _0801F662
- ldr r0, _0801F67C @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x5]
-_0801F662:
- ldr r1, _0801F680 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801F66A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F670: .4byte gBattleMoveDamage
-_0801F674: .4byte 0x00002710
-_0801F678: .4byte gActiveBattler
-_0801F67C: .4byte gBattleResults
-_0801F680: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0B_healthbarupdate
-
- thumb_func_start atk0C_datahpupdate
-atk0C_datahpupdate: @ 801F684
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _0801F6AC @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _0801F692
- b _0801FA62
-_0801F692:
- ldr r0, _0801F6B0 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x13]
- cmp r1, 0
- beq _0801F6B4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0801F6B4
- movs r6, 0x3F
- ands r6, r1
- b _0801F6C4
- .align 2, 0
-_0801F6AC: .4byte gBattleControllerExecFlags
-_0801F6B0: .4byte gBattleStruct
-_0801F6B4:
- ldr r2, _0801F750 @ =gBattleMoves
- ldr r0, _0801F754 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r6, [r0, 0x2]
-_0801F6C4:
- ldr r0, _0801F758 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801F6D2
- b _0801FA34
-_0801F6D2:
- ldr r0, _0801F75C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r7, _0801F760 @ =gActiveBattler
- strb r0, [r7]
- ldr r1, _0801F764 @ =gBattleMons
- ldrb r2, [r7]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801F7E8
- ldr r0, _0801F768 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r4, r1, r0
- ldrb r1, [r4, 0xA]
- mov r12, r0
- cmp r1, 0
- beq _0801F7E8
- ldr r0, _0801F76C @ =gHitMarker
- ldr r3, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r3, r0
- cmp r3, 0
- bne _0801F7E8
- adds r5, r1, 0
- ldr r6, _0801F770 @ =gBattleMoveDamage
- ldr r4, [r6]
- cmp r5, r4
- blt _0801F77C
- ldr r0, _0801F774 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801F736
- str r4, [r1]
-_0801F736:
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- ldr r2, [r6]
- ldrb r0, [r1, 0xA]
- subs r0, r2
- strb r0, [r1, 0xA]
- ldr r1, _0801F778 @ =gHpDealt
- ldr r0, [r6]
- str r0, [r1]
- b _0801F7AC
- .align 2, 0
-_0801F750: .4byte gBattleMoves
-_0801F754: .4byte gCurrentMove
-_0801F758: .4byte gMoveResultFlags
-_0801F75C: .4byte gBattlescriptCurrInstr
-_0801F760: .4byte gActiveBattler
-_0801F764: .4byte gBattleMons
-_0801F768: .4byte gDisableStructs
-_0801F76C: .4byte gHitMarker
-_0801F770: .4byte gBattleMoveDamage
-_0801F774: .4byte gSpecialStatuses
-_0801F778: .4byte gHpDealt
-_0801F77C:
- ldr r0, _0801F7D4 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801F790
- str r5, [r1]
-_0801F790:
- ldr r2, _0801F7D8 @ =gHpDealt
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- str r0, [r2]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- strb r3, [r0, 0xA]
-_0801F7AC:
- ldr r0, _0801F7DC @ =gActiveBattler
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0801F7C0
- b _0801FA5A
-_0801F7C0:
- ldr r4, _0801F7E0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- bl BattleScriptPushCursor
- ldr r0, _0801F7E4 @ =BattleScript_SubstituteFade
- str r0, [r4]
- b _0801FA62
- .align 2, 0
-_0801F7D4: .4byte gSpecialStatuses
-_0801F7D8: .4byte gHpDealt
-_0801F7DC: .4byte gActiveBattler
-_0801F7E0: .4byte gBattlescriptCurrInstr
-_0801F7E4: .4byte BattleScript_SubstituteFade
-_0801F7E8:
- ldr r0, _0801F828 @ =gHitMarker
- ldr r2, [r0]
- ldr r1, _0801F82C @ =0xfffffeff
- ands r2, r1
- str r2, [r0]
- ldr r1, _0801F830 @ =gBattleMoveDamage
- ldr r5, [r1]
- mov r12, r0
- adds r7, r1, 0
- cmp r5, 0
- bge _0801F83C
- ldr r4, _0801F834 @ =gBattleMons
- ldr r2, _0801F838 @ =gActiveBattler
- ldrb r0, [r2]
- movs r3, 0x58
- adds r1, r0, 0
- muls r1, r3
- adds r1, r4
- ldrh r0, [r1, 0x28]
- subs r0, r5
- strh r0, [r1, 0x28]
- ldrb r0, [r2]
- muls r0, r3
- adds r1, r0, r4
- ldrh r3, [r1, 0x2C]
- ldrh r0, [r1, 0x28]
- adds r5, r2, 0
- cmp r0, r3
- bhi _0801F824
- b _0801F9FA
-_0801F824:
- strh r3, [r1, 0x28]
- b _0801F9FA
- .align 2, 0
-_0801F828: .4byte gHitMarker
-_0801F82C: .4byte 0xfffffeff
-_0801F830: .4byte gBattleMoveDamage
-_0801F834: .4byte gBattleMons
-_0801F838: .4byte gActiveBattler
-_0801F83C:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _0801F858
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- mov r0, r12
- str r2, [r0]
- ldr r5, _0801F854 @ =gActiveBattler
- b _0801F8A0
- .align 2, 0
-_0801F854: .4byte gActiveBattler
-_0801F858:
- ldr r0, _0801F880 @ =gTakenDmg
- ldr r2, _0801F884 @ =gActiveBattler
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- adds r0, r5
- str r0, [r1]
- ldr r0, _0801F888 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- adds r5, r2, 0
- cmp r0, 0
- bne _0801F894
- ldr r1, _0801F88C @ =gTakenDmgByBattler
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801F890 @ =gBattlerAttacker
- b _0801F89C
- .align 2, 0
-_0801F880: .4byte gTakenDmg
-_0801F884: .4byte gActiveBattler
-_0801F888: .4byte gBattlescriptCurrInstr
-_0801F88C: .4byte gTakenDmgByBattler
-_0801F890: .4byte gBattlerAttacker
-_0801F894:
- ldr r1, _0801F8C0 @ =gTakenDmgByBattler
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801F8C4 @ =gBattlerTarget
-_0801F89C:
- ldrb r1, [r1]
- strb r1, [r0]
-_0801F8A0:
- ldr r4, _0801F8C8 @ =gBattleMons
- ldrb r0, [r5]
- movs r3, 0x58
- muls r0, r3
- adds r2, r0, r4
- ldrh r0, [r2, 0x28]
- ldr r1, [r7]
- cmp r0, r1
- ble _0801F8D0
- subs r0, r1
- strh r0, [r2, 0x28]
- ldr r0, _0801F8CC @ =gHpDealt
- str r1, [r0]
- adds r7, r0, 0
- b _0801F8E0
- .align 2, 0
-_0801F8C0: .4byte gTakenDmgByBattler
-_0801F8C4: .4byte gBattlerTarget
-_0801F8C8: .4byte gBattleMons
-_0801F8CC: .4byte gHpDealt
-_0801F8D0:
- ldr r2, _0801F954 @ =gHpDealt
- str r0, [r2]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x28]
- adds r7, r2, 0
-_0801F8E0:
- ldr r2, _0801F958 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0x4
- adds r3, r0, r1
- ldr r0, [r3]
- adds r4, r2, 0
- cmp r0, 0
- bne _0801F908
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801F908
- ldr r0, [r7]
- str r0, [r3]
-_0801F908:
- cmp r6, 0x8
- bhi _0801F990
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801F98C
- ldr r0, _0801F95C @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xDC
- beq _0801F98C
- ldr r3, _0801F960 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0x4
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x8
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801F964 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801F96C
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801F968 @ =gBattlerAttacker
- b _0801F974
- .align 2, 0
-_0801F954: .4byte gHpDealt
-_0801F958: .4byte gSpecialStatuses
-_0801F95C: .4byte gCurrentMove
-_0801F960: .4byte gProtectStructs
-_0801F964: .4byte gBattlescriptCurrInstr
-_0801F968: .4byte gBattlerAttacker
-_0801F96C:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801F988 @ =gBattlerTarget
-_0801F974:
- ldrb r1, [r2]
- strb r1, [r0, 0xC]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x10]
- b _0801F9FA
- .align 2, 0
-_0801F988: .4byte gBattlerTarget
-_0801F98C:
- cmp r6, 0x8
- bls _0801F9FA
-_0801F990:
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801F9FA
- ldr r3, _0801F9D4 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0
- adds r1, 0x8
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801F9D8 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801F9E0
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801F9DC @ =gBattlerAttacker
- b _0801F9E8
- .align 2, 0
-_0801F9D4: .4byte gProtectStructs
-_0801F9D8: .4byte gBattlescriptCurrInstr
-_0801F9DC: .4byte gBattlerAttacker
-_0801F9E0:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801FA28 @ =gBattlerTarget
-_0801F9E8:
- ldrb r1, [r2]
- strb r1, [r0, 0xD]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x11]
-_0801F9FA:
- mov r1, r12
- ldr r0, [r1]
- ldr r1, _0801FA2C @ =0xffefffff
- ands r0, r1
- mov r1, r12
- str r0, [r1]
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _0801FA30 @ =gUnknown_2023C0C
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2A
- movs r2, 0
- movs r3, 0x2
- bl BtlController_EmitSetMonData
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- b _0801FA5A
- .align 2, 0
-_0801FA28: .4byte gBattlerTarget
-_0801FA2C: .4byte 0xffefffff
-_0801FA30: .4byte gUnknown_2023C0C
-_0801FA34:
- ldr r0, _0801FA6C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r1, _0801FA70 @ =gActiveBattler
- strb r0, [r1]
- ldr r2, _0801FA74 @ =gSpecialStatuses
- ldrb r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r1, r0, r2
- ldr r0, [r1]
- cmp r0, 0
- bne _0801FA5A
- ldr r0, _0801FA78 @ =0x0000ffff
- str r0, [r1]
-_0801FA5A:
- ldr r1, _0801FA6C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801FA62:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FA6C: .4byte gBattlescriptCurrInstr
-_0801FA70: .4byte gActiveBattler
-_0801FA74: .4byte gSpecialStatuses
-_0801FA78: .4byte 0x0000ffff
- thumb_func_end atk0C_datahpupdate
-
- thumb_func_start atk0D_critmessage
-atk0D_critmessage: @ 801FA7C
- push {lr}
- ldr r0, _0801FAB8 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FAB2
- ldr r0, _0801FABC @ =gCritMultiplier
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0801FAAA
- ldr r0, _0801FAC0 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801FAAA
- ldr r0, _0801FAC4 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0xD9
- bl PrepareStringBattle
- ldr r1, _0801FAC8 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801FAAA:
- ldr r1, _0801FACC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801FAB2:
- pop {r0}
- bx r0
- .align 2, 0
-_0801FAB8: .4byte gBattleControllerExecFlags
-_0801FABC: .4byte gCritMultiplier
-_0801FAC0: .4byte gMoveResultFlags
-_0801FAC4: .4byte gBattlerAttacker
-_0801FAC8: .4byte gBattleCommunication
-_0801FACC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0D_critmessage
-
- thumb_func_start atk0E_effectivenesssound
-atk0E_effectivenesssound: @ 801FAD0
- push {r4,lr}
- ldr r0, _0801FB08 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FB90
- ldr r4, _0801FB0C @ =gActiveBattler
- ldr r0, _0801FB10 @ =gBattlerTarget
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _0801FB14 @ =gMoveResultFlags
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0801FB88
- movs r0, 0xFE
- ands r0, r2
- cmp r0, 0x10
- beq _0801FB42
- cmp r0, 0x10
- bgt _0801FB1E
- cmp r0, 0x4
- beq _0801FB32
- cmp r0, 0x4
- bgt _0801FB18
- cmp r0, 0x2
- beq _0801FB2C
- b _0801FB42
- .align 2, 0
-_0801FB08: .4byte gBattleControllerExecFlags
-_0801FB0C: .4byte gActiveBattler
-_0801FB10: .4byte gBattlerTarget
-_0801FB14: .4byte gMoveResultFlags
-_0801FB18:
- cmp r0, 0x8
- beq _0801FB88
- b _0801FB42
-_0801FB1E:
- cmp r0, 0x40
- beq _0801FB42
- cmp r0, 0x40
- bgt _0801FB42
- cmp r0, 0x20
- beq _0801FB88
- b _0801FB42
-_0801FB2C:
- movs r0, 0
- movs r1, 0xE
- b _0801FB36
-_0801FB32:
- movs r0, 0
- movs r1, 0xC
-_0801FB36:
- bl BtlController_EmitPlaySE
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _0801FB88
-_0801FB42:
- ldrb r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801FB52
- movs r0, 0
- movs r1, 0xE
- b _0801FB5E
-_0801FB52:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801FB70
- movs r0, 0
- movs r1, 0xC
-_0801FB5E:
- bl BtlController_EmitPlaySE
- ldr r0, _0801FB6C @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- b _0801FB88
- .align 2, 0
-_0801FB6C: .4byte gActiveBattler
-_0801FB70:
- movs r0, 0x28
- ands r0, r1
- cmp r0, 0
- bne _0801FB88
- movs r0, 0
- movs r1, 0xD
- bl BtlController_EmitPlaySE
- ldr r0, _0801FB98 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
-_0801FB88:
- ldr r1, _0801FB9C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801FB90:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FB98: .4byte gActiveBattler
-_0801FB9C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0E_effectivenesssound
-
- thumb_func_start atk0F_resultmessage
-atk0F_resultmessage: @ 801FBA0
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, _0801FBDC @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _0801FBAE
- b _0801FD40
-_0801FBAE:
- ldr r1, _0801FBE0 @ =gMoveResultFlags
- ldrb r2, [r1]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r2
- adds r6, r1, 0
- ldr r7, _0801FBE4 @ =gBattleCommunication
- cmp r0, 0
- beq _0801FBEC
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0801FBCE
- ldrb r0, [r7, 0x6]
- cmp r0, 0x2
- bls _0801FBEC
-_0801FBCE:
- ldr r1, _0801FBE8 @ =gMissStringIds
- ldrb r0, [r7, 0x6]
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- strb r4, [r7, 0x7]
- b _0801FD2A
- .align 2, 0
-_0801FBDC: .4byte gBattleControllerExecFlags
-_0801FBE0: .4byte gMoveResultFlags
-_0801FBE4: .4byte gBattleCommunication
-_0801FBE8: .4byte gMissStringIds
-_0801FBEC:
- movs r0, 0x1
- strb r0, [r7, 0x7]
- ldrb r5, [r6]
- movs r0, 0xFE
- ands r0, r5
- cmp r0, 0x10
- beq _0801FC30
- cmp r0, 0x10
- bgt _0801FC12
- cmp r0, 0x4
- beq _0801FC2C
- cmp r0, 0x4
- bgt _0801FC0C
- cmp r0, 0x2
- beq _0801FC28
- b _0801FC78
-_0801FC0C:
- cmp r0, 0x8
- beq _0801FC84
- b _0801FC78
-_0801FC12:
- cmp r0, 0x40
- beq _0801FC34
- cmp r0, 0x40
- bgt _0801FC22
- cmp r0, 0x20
- bne _0801FC20
- b _0801FD24
-_0801FC20:
- b _0801FC78
-_0801FC22:
- cmp r0, 0x80
- beq _0801FC38
- b _0801FC78
-_0801FC28:
- movs r3, 0xDE
- b _0801FD2E
-_0801FC2C:
- movs r3, 0xDD
- b _0801FD2E
-_0801FC30:
- movs r3, 0xDA
- b _0801FD2E
-_0801FC34:
- movs r3, 0x99
- b _0801FD2E
-_0801FC38:
- ldr r4, _0801FC60 @ =gLastUsedItem
- ldr r2, _0801FC64 @ =gBattleMons
- ldr r3, _0801FC68 @ =gBattlerTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801FC6C @ =gPotentialItemEffectBattler
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl BattleScriptPushCursor
- ldr r1, _0801FC70 @ =gBattlescriptCurrInstr
- ldr r0, _0801FC74 @ =BattleScript_HangedOnMsg
- b _0801FD3E
- .align 2, 0
-_0801FC60: .4byte gLastUsedItem
-_0801FC64: .4byte gBattleMons
-_0801FC68: .4byte gBattlerTarget
-_0801FC6C: .4byte gPotentialItemEffectBattler
-_0801FC70: .4byte gBattlescriptCurrInstr
-_0801FC74: .4byte BattleScript_HangedOnMsg
-_0801FC78:
- adds r2, r6, 0
- ldrb r5, [r2]
- movs r0, 0x8
- ands r0, r5
- cmp r0, 0
- beq _0801FC88
-_0801FC84:
- movs r3, 0x1B
- b _0801FD2E
-_0801FC88:
- movs r0, 0x10
- ands r0, r5
- cmp r0, 0
- beq _0801FCB0
- movs r0, 0xEF
- ands r0, r5
- movs r1, 0xFD
- ands r0, r1
- movs r1, 0xFB
- ands r0, r1
- strb r0, [r2]
- bl BattleScriptPushCursor
- ldr r1, _0801FCA8 @ =gBattlescriptCurrInstr
- ldr r0, _0801FCAC @ =BattleScript_OneHitKOMsg
- b _0801FD3E
- .align 2, 0
-_0801FCA8: .4byte gBattlescriptCurrInstr
-_0801FCAC: .4byte BattleScript_OneHitKOMsg
-_0801FCB0:
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _0801FCD0
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r2]
- bl BattleScriptPushCursor
- ldr r1, _0801FCC8 @ =gBattlescriptCurrInstr
- ldr r0, _0801FCCC @ =BattleScript_EnduredMsg
- b _0801FD3E
- .align 2, 0
-_0801FCC8: .4byte gBattlescriptCurrInstr
-_0801FCCC: .4byte BattleScript_EnduredMsg
-_0801FCD0:
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _0801FD18
- ldr r4, _0801FD00 @ =gLastUsedItem
- ldr r2, _0801FD04 @ =gBattleMons
- ldr r3, _0801FD08 @ =gBattlerTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801FD0C @ =gPotentialItemEffectBattler
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl BattleScriptPushCursor
- ldr r1, _0801FD10 @ =gBattlescriptCurrInstr
- ldr r0, _0801FD14 @ =BattleScript_HangedOnMsg
- b _0801FD3E
- .align 2, 0
-_0801FD00: .4byte gLastUsedItem
-_0801FD04: .4byte gBattleMons
-_0801FD08: .4byte gBattlerTarget
-_0801FD0C: .4byte gPotentialItemEffectBattler
-_0801FD10: .4byte gBattlescriptCurrInstr
-_0801FD14: .4byte BattleScript_HangedOnMsg
-_0801FD18:
- movs r0, 0x20
- ands r0, r5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0801FD28
-_0801FD24:
- movs r3, 0xE5
- b _0801FD2E
-_0801FD28:
- strb r0, [r7, 0x7]
-_0801FD2A:
- cmp r3, 0
- beq _0801FD38
-_0801FD2E:
- adds r0, r3, 0
- ldr r1, _0801FD48 @ =gBattlerAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
-_0801FD38:
- ldr r1, _0801FD4C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801FD3E:
- str r0, [r1]
-_0801FD40:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FD48: .4byte gBattlerAttacker
-_0801FD4C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0F_resultmessage
-
- thumb_func_start atk10_printstring
-atk10_printstring: @ 801FD50
- push {r4,lr}
- ldr r0, _0801FD80 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FD7A
- ldr r4, _0801FD84 @ =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- ldrb r1, [r1, 0x2]
- lsls r1, 8
- orrs r0, r1
- ldr r1, _0801FD88 @ =gBattlerAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801FD8C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801FD7A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FD80: .4byte gBattleControllerExecFlags
-_0801FD84: .4byte gBattlescriptCurrInstr
-_0801FD88: .4byte gBattlerAttacker
-_0801FD8C: .4byte gBattleCommunication
- thumb_func_end atk10_printstring
-
- thumb_func_start atk11_printselectionstring
-atk11_printselectionstring: @ 801FD90
- push {r4,r5,lr}
- ldr r5, _0801FDC4 @ =gActiveBattler
- ldr r0, _0801FDC8 @ =gBattlerAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _0801FDCC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl BtlController_EmitPrintSelectionString
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801FDD0 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FDC4: .4byte gActiveBattler
-_0801FDC8: .4byte gBattlerAttacker
-_0801FDCC: .4byte gBattlescriptCurrInstr
-_0801FDD0: .4byte gBattleCommunication
- thumb_func_end atk11_printselectionstring
-
- thumb_func_start atk12_waitmessage
-atk12_waitmessage: @ 801FDD4
- push {r4-r6,lr}
- ldr r0, _0801FDF0 @ =gBattleControllerExecFlags
- ldr r4, [r0]
- cmp r4, 0
- bne _0801FE22
- ldr r6, _0801FDF4 @ =gBattleCommunication
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0801FDFC
- ldr r1, _0801FDF8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- b _0801FE22
- .align 2, 0
-_0801FDF0: .4byte gBattleControllerExecFlags
-_0801FDF4: .4byte gBattleCommunication
-_0801FDF8: .4byte gBattlescriptCurrInstr
-_0801FDFC:
- ldr r5, _0801FE28 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, _0801FE2C @ =gPauseCounterBattle
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _0801FE22
- movs r1, 0
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
- strb r1, [r6, 0x7]
-_0801FE22:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FE28: .4byte gBattlescriptCurrInstr
-_0801FE2C: .4byte gPauseCounterBattle
- thumb_func_end atk12_waitmessage
-
- thumb_func_start atk13_printfromtable
-atk13_printfromtable: @ 801FE30
- push {r4,r5,lr}
- ldr r0, _0801FE74 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FE6E
- ldr r4, _0801FE78 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- 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
- ldr r5, _0801FE7C @ =gBattleCommunication
- ldrb r0, [r5, 0x5]
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r1, _0801FE80 @ =gBattlerAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- movs r0, 0x1
- strb r0, [r5, 0x7]
-_0801FE6E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FE74: .4byte gBattleControllerExecFlags
-_0801FE78: .4byte gBattlescriptCurrInstr
-_0801FE7C: .4byte gBattleCommunication
-_0801FE80: .4byte gBattlerAttacker
- thumb_func_end atk13_printfromtable
-
- thumb_func_start atk14_printselectionstringfromtable
-atk14_printselectionstringfromtable: @ 801FE84
- push {r4-r6,lr}
- ldr r0, _0801FED4 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FECE
- ldr r5, _0801FED8 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- 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
- ldr r6, _0801FEDC @ =gBattleCommunication
- ldrb r0, [r6, 0x5]
- lsls r0, 1
- adds r1, r0
- ldr r4, _0801FEE0 @ =gActiveBattler
- ldr r0, _0801FEE4 @ =gBattlerAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldrh r1, [r1]
- movs r0, 0
- bl BtlController_EmitPrintSelectionString
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r6, 0x7]
-_0801FECE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FED4: .4byte gBattleControllerExecFlags
-_0801FED8: .4byte gBattlescriptCurrInstr
-_0801FEDC: .4byte gBattleCommunication
-_0801FEE0: .4byte gActiveBattler
-_0801FEE4: .4byte gBattlerAttacker
- thumb_func_end atk14_printselectionstringfromtable
-
- thumb_func_start GetBattlerTurnOrderNum
-GetBattlerTurnOrderNum: @ 801FEE8
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r0, _0801FF18 @ =gBattlersCount
- ldrb r3, [r0]
- cmp r1, r3
- bge _0801FF0E
- ldr r4, _0801FF1C @ =gBattlerByTurnOrder
- ldrb r0, [r4]
- cmp r0, r2
- beq _0801FF0E
-_0801FF00:
- adds r1, 0x1
- cmp r1, r3
- bge _0801FF0E
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _0801FF00
-_0801FF0E:
- lsls r0, r1, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801FF18: .4byte gBattlersCount
-_0801FF1C: .4byte gBattlerByTurnOrder
- thumb_func_end GetBattlerTurnOrderNum
-
thumb_func_start SetMoveEffect
SetMoveEffect: @ 801FF20
push {r4-r7,lr}