summaryrefslogtreecommitdiff
path: root/asm/battle_9.s
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-10-10 18:01:45 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-10-10 18:01:45 +0200
commit57e5624e0619b8d96fb43ff68d9eeefe734b1a4f (patch)
treef62c13b0836f07817ee3dbd716c74947179d4ee1 /asm/battle_9.s
parent8914645231c9301579ed39bdd9200ad50e5296d0 (diff)
battle9 is being worked on
Diffstat (limited to 'asm/battle_9.s')
-rw-r--r--asm/battle_9.s1487
1 files changed, 3 insertions, 1484 deletions
diff --git a/asm/battle_9.s b/asm/battle_9.s
index 0dfc105ec..6d77d1593 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -5,1487 +5,6 @@
.text
- thumb_func_start ai_switch_perish_song
-ai_switch_perish_song: @ 8062BF8
- push {lr}
- ldr r1, =gStatuses3
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08062C50
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xF]
- lsls r0, 28
- cmp r0, 0
- bne _08062C50
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062C52
- .pool
-_08062C50:
- movs r0, 0
-_08062C52:
- pop {r1}
- bx r1
- thumb_func_end ai_switch_perish_song
-
- thumb_func_start sub_8062C58
-sub_8062C58: @ 8062C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062C72
- b _08062E2C
-_08062C72:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r4, =gBattleMons
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- beq _08062C9E
- b _08062E2C
-_08062C9E:
- mov r0, r10
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r2, r0, 24
- movs r6, 0
- mov r8, r4
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r4, r0, r4
- movs r0, 0x20
- adds r0, r4
- mov r9, r0
-_08062CBA:
- lsls r1, r6, 1
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- muls r0, r7
- adds r1, r0
- mov r0, r8
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08062CE8
- ldrh r1, [r4]
- mov r3, r9
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062CE8
- b _08062E2C
-_08062CE8:
- adds r6, 0x1
- cmp r6, 0x3
- ble _08062CBA
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062D50
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- adds r1, r5, 0
- cmp r0, 0
- bne _08062D20
- movs r4, 0
- movs r0, 0x3
- str r0, [sp]
- b _08062D58
- .pool
-_08062D20:
- movs r4, 0x3
- movs r3, 0x6
- str r3, [sp]
- b _08062D58
-_08062D28:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062E2E
- .pool
-_08062D50:
- movs r4, 0
- movs r3, 0x6
- str r3, [sp]
- adds r1, r5, 0
-_08062D58:
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08062D6C
- ldr r3, =gPlayerParty
- mov r9, r3
-_08062D6C:
- adds r6, r4, 0
- ldr r0, [sp]
- cmp r6, r0
- bge _08062E2C
-_08062D74:
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- mov r1, r9
- adds r4, r1, r5
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08062E24
- ldr r1, =gBattlePartyID
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r0, r10
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r2, r0, 24
- movs r4, 0
- mov r8, r5
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_08062DE0:
- adds r1, r4, 0
- adds r1, 0xD
- mov r0, r9
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _08062E1E
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062E1E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _08062D28
-_08062E1E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08062DE0
-_08062E24:
- adds r6, 0x1
- ldr r3, [sp]
- cmp r6, r3
- blt _08062D74
-_08062E2C:
- movs r0, 0
-_08062E2E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8062C58
-
- thumb_func_start sub_8062E54
-sub_8062E54: @ 8062E54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0x1
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- beq _08062E82
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08062E82
- b _080630AC
-_08062E82:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r4, r0, r1
- ldrh r1, [r4]
- cmp r1, 0
- bne _08062E94
- b _080630AC
-_08062E94:
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08062E9C
- b _080630AC
-_08062E9C:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08062EB0
- b _080630AC
-_08062EB0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062F1A
- mov r8, r3
- mov r0, r8
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08062F04
- ldrb r7, [r5]
- b _08062F1E
- .pool
-_08062F04:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r7, r0, 24
- b _08062F1E
-_08062F1A:
- adds r7, r3, 0
- mov r8, r7
-_08062F1E:
- ldr r3, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- cmp r0, 0xA
- bne _08062F4C
- movs r0, 0x12
- b _08062F5E
- .pool
-_08062F4C:
- cmp r0, 0xB
- bne _08062F56
- movs r1, 0xB
- str r1, [sp]
- b _08062F60
-_08062F56:
- cmp r0, 0xD
- beq _08062F5C
- b _080630AC
-_08062F5C:
- movs r0, 0xA
-_08062F5E:
- str r0, [sp]
-_08062F60:
- ldr r1, =gBattleMons
- ldrb r3, [r2]
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- ldr r1, [sp]
- cmp r0, r1
- bne _08062F76
- b _080630AC
-_08062F76:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062FCC
- movs r0, 0x2
- ands r3, r0
- cmp r3, 0
- bne _08062F9C
- movs r4, 0
- movs r0, 0x3
- b _08062FD0
- .pool
-_08062F9C:
- movs r4, 0x3
- movs r1, 0x6
- mov r10, r1
- b _08062FD2
-_08062FA4:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r5, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080630AE
- .pool
-_08062FCC:
- movs r4, 0
- movs r0, 0x6
-_08062FD0:
- mov r10, r0
-_08062FD2:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0x4]
- cmp r0, 0
- bne _08062FE6
- ldr r2, =gPlayerParty
- str r2, [sp, 0x4]
-_08062FE6:
- adds r5, r4, 0
- cmp r5, r10
- bge _080630AC
- ldr r0, =gBaseStats
- mov r9, r0
-_08062FF0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, [sp, 0x4]
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080630A6
- ldr r1, =gBattlePartyID
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r6, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063088
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _08063092
- .pool
-_08063088:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_08063092:
- ldr r1, [sp]
- cmp r1, r0
- bne _080630A6
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080630A6
- b _08062FA4
-_080630A6:
- adds r5, 0x1
- cmp r5, r10
- blt _08062FF0
-_080630AC:
- movs r0, 0
-_080630AE:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8062E54
-
- thumb_func_start ai_switchout_natural_cure
-ai_switchout_natural_cure: @ 80630C0
- push {r4,r5,lr}
- ldr r3, =gBattleMons
- ldr r5, =gActiveBank
- ldrb r4, [r5]
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08063188
- adds r1, r2, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _08063188
- ldrh r0, [r1, 0x2C]
- ldrh r1, [r1, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bcc _08063188
- ldr r1, =gUnknown_02024250
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _08063106
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08063128
-_08063106:
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063128
- ldrb r0, [r5]
- b _08063190
- .pool
-_08063128:
- ldr r2, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08063160
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063160
- ldrb r0, [r4]
- b _08063190
- .pool
-_08063160:
- movs r0, 0x8
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- movs r0, 0x4
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0806318C
-_08063188:
- movs r0, 0
- b _080631AC
-_0806318C:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
-_08063190:
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080631AA:
- movs r0, 0x1
-_080631AC:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_natural_cure
-
- thumb_func_start ai_has_super_effective_move_on_field
-ai_has_super_effective_move_on_field: @ 80631BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08063256
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r0, 0x20
- adds r0, r5
- mov r8, r0
-_0806320A:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08063250
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08063250
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_08063250:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0806320A
-_08063256:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0806327C
- b _080632FA
- .pool
-_08063278:
- movs r0, 0x1
- b _080632FC
-_0806327C:
- movs r1, 0x2
- mov r0, r10
- eors r0, r1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080632FA
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r3, 0x20
- adds r3, r5
- mov r8, r3
-_080632AE:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _080632F4
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080632F4
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_080632F4:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080632AE
-_080632FA:
- movs r0, 0
-_080632FC:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_has_super_effective_move_on_field
-
- thumb_func_start ai_is_too_invested_in_stat_buffs
-ai_is_too_invested_in_stat_buffs: @ 806331C
- push {r4,lr}
- movs r4, 0
- ldr r1, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x18
- adds r2, r0, r1
- movs r3, 0x7
-_08063330:
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x6
- ble _08063346
- subs r1, 0x6
- lsls r0, r4, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
-_08063346:
- adds r2, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _08063330
- movs r0, 0
- cmp r4, 0x3
- bls _08063356
- movs r0, 0x1
-_08063356:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_is_too_invested_in_stat_buffs
-
- thumb_func_start ai_switchout_something
-ai_switchout_something: @ 8063364
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- ldr r2, =gUnknown_02024250
- ldr r1, =gActiveBank
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r4, r0, r2
- ldrh r2, [r4]
- adds r5, r1, 0
- cmp r2, 0
- bne _08063390
- b _080635EE
-_08063390:
- ldr r0, =0x0000ffff
- cmp r2, r0
- bne _08063398
- b _080635EE
-_08063398:
- ldr r0, =gUnknown_02024270
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080633A4
- b _080635EE
-_080633A4:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080633B8
- b _080635EE
-_080633B8:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806342C
- mov r9, r3
- mov r0, r9
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063414
- ldrb r5, [r5]
- mov r10, r5
- b _08063430
- .pool
-_08063414:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- b _08063430
-_0806342C:
- mov r9, r3
- mov r10, r9
-_08063430:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063490
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- adds r5, r2, 0
- cmp r0, 0
- bne _08063460
- movs r4, 0
- movs r0, 0x3
- str r0, [sp, 0x8]
- b _08063498
- .pool
-_08063460:
- movs r4, 0x3
- movs r1, 0x6
- str r1, [sp, 0x8]
- b _08063498
-_08063468:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080635F0
- .pool
-_08063490:
- movs r4, 0
- movs r0, 0x6
- str r0, [sp, 0x8]
- ldr r5, =gActiveBank
-_08063498:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0xC]
- cmp r0, 0
- bne _080634AC
- ldr r2, =gPlayerParty
- str r2, [sp, 0xC]
-_080634AC:
- adds r6, r4, 0
- b _080635E6
- .pool
-_080634BC:
- movs r0, 0x64
- muls r0, r6
- ldr r1, [sp, 0xC]
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080634D2
- b _080635E4
-_080634D2:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- bne _080634E0
- b _080635E4
-_080634E0:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080635E4
- ldr r1, =gBattlePartyID
- mov r2, r9
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- mov r2, r9
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063558
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, =gBaseStats
- adds r0, r1
- ldrb r2, [r0, 0x17]
- b _08063564
- .pool
-_08063558:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r2, =gBaseStats
- adds r0, r2
- ldrb r2, [r0, 0x16]
-_08063564:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r4, 0
- bl AI_TypeCalc
- ldr r1, [sp]
- ands r1, r0
- cmp r1, 0
- beq _080635E4
- ldr r1, =gUnknown_02024270
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- mov r9, r0
- movs r4, 0
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- mov r8, r1
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_080635A2:
- adds r1, r4, 0
- adds r1, 0xD
- ldr r0, [sp, 0xC]
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080635DE
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080635DE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x4]
- bl __modsi3
- cmp r0, 0
- bne _080635DE
- b _08063468
-_080635DE:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080635A2
-_080635E4:
- adds r6, 0x1
-_080635E6:
- ldr r0, [sp, 0x8]
- cmp r6, r0
- bge _080635EE
- b _080634BC
-_080635EE:
- movs r0, 0
-_080635F0:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_something
-
- thumb_func_start sub_8063614
-sub_8063614: @ 8063614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r6, =gBattleMons
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r6, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- beq _0806363E
- b _0806386C
-_0806363E:
- ldr r0, =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- lsls r0, 3
- ands r1, r0
- cmp r1, 0
- beq _08063652
- b _0806386C
-_08063652:
- str r1, [sp]
- movs r0, 0xC
- adds r1, r2, 0
- movs r2, 0x17
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0806366A
- b _0806386C
-_0806366A:
- ldrb r1, [r4]
- str r0, [sp]
- movs r0, 0xC
- movs r2, 0x47
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063682
- b _0806386C
-_08063682:
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080636B4
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636A8
- b _0806386C
-_080636A8:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636B4
- b _0806386C
-_080636B4:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- beq _080636C4
- b _0806386C
-_080636C4:
- movs r0, 0
- mov r10, r0
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0806372E
- ldrb r7, [r4]
- adds r0, r7, 0
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063718
- ldrb r6, [r4]
- b _08063732
- .pool
-_08063718:
- ldrb r0, [r4]
- bl GetBankIdentity
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r6, r0, 24
- b _08063732
-_0806372E:
- ldrb r6, [r4]
- adds r7, r6, 0
-_08063732:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063768
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063760
- movs r4, 0
- movs r1, 0x3
- mov r8, r1
- b _08063770
- .pool
-_08063760:
- movs r4, 0x3
- movs r0, 0x6
- mov r8, r0
- b _08063770
-_08063768:
- movs r4, 0
- movs r1, 0x6
- mov r8, r1
- ldr r2, =gActiveBank
-_08063770:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08063784
- ldr r0, =gPlayerParty
- mov r9, r0
-_08063784:
- adds r5, r4, 0
- cmp r5, r8
- bge _080637F2
-_0806378A:
- movs r0, 0x64
- muls r0, r5
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080637EC
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- movs r0, 0x1
- add r10, r0
-_080637EC:
- adds r5, 0x1
- cmp r5, r8
- blt _0806378A
-_080637F2:
- mov r1, r10
- cmp r1, 0
- beq _0806386C
- bl ai_switch_perish_song
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062C58
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062E54
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl ai_switchout_natural_cure
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- bl ai_is_too_invested_in_stat_buffs
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- movs r0, 0x8
- movs r1, 0x2
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0x4
- movs r1, 0x3
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- beq _0806386C
-_08063852:
- movs r0, 0x1
- b _0806386E
- .pool
-_0806386C:
- movs r0, 0
-_0806386E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8063614
-
thumb_func_start sub_8063880
sub_8063880: @ 8063880
push {r4-r7,lr}
@@ -1515,7 +34,7 @@ _080638A8:
bne _080638B6
b _080639E6
_080638B6:
- bl sub_8063614
+ bl ShouldSwitch
lsls r0, 24
cmp r0, 0
bne _080638C2
@@ -1659,7 +178,7 @@ _080639E6:
lsls r2, 8
movs r0, 0x1
movs r1, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_080639F8:
pop {r3}
mov r8, r3
@@ -2802,7 +1321,7 @@ _08064328:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
ldr r0, =gActiveBank
ldrb r0, [r0]
lsrs r0, 1