summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-08-26 14:38:40 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-08-26 14:38:40 +0800
commit184066d1c106d6dc61621504abe808112b48674e (patch)
treed62ab69e194b98defb519d825efa8cae48ee8fc6
parentdb0d8e5bdbc0d043312ac78c5cec0ec53d7f45d6 (diff)
thru atk6B
-rw-r--r--asm/battle_script_commands.s3695
-rw-r--r--asm/evolution_scene.s4
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/pokemon_summary_screen.s6
-rw-r--r--asm/script_pokemon_util_80BF8FC.s2
-rw-r--r--include/battle.h3
-rw-r--r--include/battle_main.h3
-rw-r--r--include/battle_script_commands.h4
-rw-r--r--include/battle_scripts.h1
-rw-r--r--include/constants/trainers.h12
-rw-r--r--include/overworld.h1
-rw-r--r--include/pokemon_summary_screen.h36
-rw-r--r--include/strings.h3
-rw-r--r--src/battle_script_commands.c1233
15 files changed, 1300 insertions, 3707 deletions
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index ed848ba78..7a0f29fb8 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -5,3701 +5,6 @@
.text
- thumb_func_start atk50_openpartyscreen
-atk50_openpartyscreen: @ 80243EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r7, 0
- movs r0, 0
- mov r9, r0
- ldr r6, _08024498 @ =gBattlescriptCurrInstr
- ldr r2, [r6]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- mov r8, r1
- ldrb r1, [r2, 0x1]
- adds r0, r1, 0
- mov r12, r6
- cmp r0, 0x5
- beq _08024422
- b _080248B8
-_08024422:
- ldr r0, _0802449C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x41
- ands r1, r0
- cmp r1, 0x1
- beq _08024510
- ldr r1, _080244A0 @ =gActiveBattler
- strb r7, [r1]
- ldr r0, _080244A4 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r7, r0
- bcc _0802443C
- b _080248A6
-_0802443C:
- ldr r7, _080244A8 @ =gHitMarker
- ldr r6, _080244AC @ =gBitTable
- adds r4, r1, 0
- ldr r2, _080244B0 @ =gAbsentBattlerFlags
- mov r8, r2
-_08024446:
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- ands r0, r1
- cmp r0, 0
- beq _080244E8
- adds r0, r2, 0
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _080244B4
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- mov r2, r8
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _080244F6
- .align 2, 0
-_08024498: .4byte gBattlescriptCurrInstr
-_0802449C: .4byte gBattleTypeFlags
-_080244A0: .4byte gActiveBattler
-_080244A4: .4byte gBattlersCount
-_080244A8: .4byte gHitMarker
-_080244AC: .4byte gBitTable
-_080244B0: .4byte gAbsentBattlerFlags
-_080244B4:
- ldr r5, _080244E4 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _080244F6
- movs r0, 0x6
- bl sub_8024398
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _080244F6
- .align 2, 0
-_080244E4: .4byte gSpecialStatuses
-_080244E8:
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_080244F6:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _0802450C @ =gBattlersCount
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08024446
- b _080248A6
- .align 2, 0
-_0802450C: .4byte gBattlersCount
-_08024510:
- ands r0, r1
- cmp r0, 0
- bne _08024518
- b _080248A6
-_08024518:
- ldr r0, _08024570 @ =gHitMarker
- mov r8, r0
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r6, _08024574 @ =gBitTable
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- beq _080245CE
- ldr r4, _08024578 @ =gActiveBattler
- strb r7, [r4]
- movs r0, 0
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _08024580
- ldr r2, _0802457C @ =gAbsentBattlerFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- mov r2, r8
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _080245CE
- .align 2, 0
-_08024570: .4byte gHitMarker
-_08024574: .4byte gBitTable
-_08024578: .4byte gActiveBattler
-_0802457C: .4byte gAbsentBattlerFlags
-_08024580:
- ldr r6, _080245B4 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _080245BC
- ldr r0, _080245B8 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5E
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _080245CE
- .align 2, 0
-_080245B4: .4byte gSpecialStatuses
-_080245B8: .4byte gBattleStruct
-_080245BC:
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- movs r0, 0x1
- mov r9, r0
-_080245CE:
- ldr r6, _08024628 @ =gBitTable
- ldr r0, [r6, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0802468C
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- bne _0802468C
- ldr r4, _0802462C @ =gActiveBattler
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _08024638
- ldr r2, _08024630 @ =gAbsentBattlerFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08024634 @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _0802468C
- .align 2, 0
-_08024628: .4byte gBitTable
-_0802462C: .4byte gActiveBattler
-_08024630: .4byte gAbsentBattlerFlags
-_08024634: .4byte gHitMarker
-_08024638:
- ldr r6, _0802466C @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08024674
- ldr r0, _08024670 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5C
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0802468C
- .align 2, 0
-_0802466C: .4byte gSpecialStatuses
-_08024670: .4byte gBattleStruct
-_08024674:
- movs r0, 0x1
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _0802468C
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_0802468C:
- ldr r6, _080246DC @ =gBitTable
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- beq _0802473E
- ldr r4, _080246E0 @ =gActiveBattler
- movs r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _080246EC
- ldr r2, _080246E4 @ =gAbsentBattlerFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080246E8 @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _0802473E
- .align 2, 0
-_080246DC: .4byte gBitTable
-_080246E0: .4byte gActiveBattler
-_080246E4: .4byte gAbsentBattlerFlags
-_080246E8: .4byte gHitMarker
-_080246EC:
- ldr r6, _08024720 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08024728
- ldr r0, _08024724 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5F
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0802473E
- .align 2, 0
-_08024720: .4byte gSpecialStatuses
-_08024724: .4byte gBattleStruct
-_08024728:
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- movs r0, 0x2
- mov r2, r9
- orrs r2, r0
- mov r9, r2
-_0802473E:
- ldr r6, _08024798 @ =gBitTable
- ldr r0, [r6, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _080247FC
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- bne _080247FC
- ldr r4, _0802479C @ =gActiveBattler
- movs r0, 0x3
- strb r0, [r4]
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _080247A8
- ldr r2, _080247A0 @ =gAbsentBattlerFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080247A4 @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- b _080247FC
- .align 2, 0
-_08024798: .4byte gBitTable
-_0802479C: .4byte gActiveBattler
-_080247A0: .4byte gAbsentBattlerFlags
-_080247A4: .4byte gHitMarker
-_080247A8:
- ldr r6, _080247DC @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _080247E4
- ldr r0, _080247E0 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5D
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _080247FC
- .align 2, 0
-_080247DC: .4byte gSpecialStatuses
-_080247E0: .4byte gBattleStruct
-_080247E4:
- movs r0, 0x2
- mov r1, r9
- ands r1, r0
- cmp r1, 0
- bne _080247FC
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_080247FC:
- ldr r1, _0802482C @ =gSpecialStatuses
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08024850
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _08024850
- cmp r5, 0
- beq _08024850
- ldr r0, _08024830 @ =gAbsentBattlerFlags
- ldrb r1, [r0]
- ldr r0, _08024834 @ =gBitTable
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802483C
- ldr r1, _08024838 @ =gActiveBattler
- movs r0, 0x2
- strb r0, [r1]
- b _08024840
- .align 2, 0
-_0802482C: .4byte gSpecialStatuses
-_08024830: .4byte gAbsentBattlerFlags
-_08024834: .4byte gBitTable
-_08024838: .4byte gActiveBattler
-_0802483C:
- ldr r0, _08024880 @ =gActiveBattler
- strb r1, [r0]
-_08024840:
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldr r0, _08024880 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
-_08024850:
- ldr r1, _08024884 @ =gSpecialStatuses
- ldrb r0, [r1, 0x14]
- lsls r0, 25
- cmp r0, 0
- blt _080248A6
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _080248A6
- cmp r5, 0
- beq _080248A6
- ldr r0, _08024888 @ =gAbsentBattlerFlags
- ldrb r0, [r0]
- ldr r1, _0802488C @ =gBitTable
- ldr r1, [r1, 0x4]
- ands r0, r1
- cmp r0, 0
- beq _08024890
- ldr r1, _08024880 @ =gActiveBattler
- movs r0, 0x3
- b _08024894
- .align 2, 0
-_08024880: .4byte gActiveBattler
-_08024884: .4byte gSpecialStatuses
-_08024888: .4byte gAbsentBattlerFlags
-_0802488C: .4byte gBitTable
-_08024890:
- ldr r1, _080248B0 @ =gActiveBattler
- movs r0, 0x1
-_08024894:
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldr r0, _080248B0 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
-_080248A6:
- ldr r1, _080248B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- b _08024C2E
- .align 2, 0
-_080248B0: .4byte gActiveBattler
-_080248B4: .4byte gBattlescriptCurrInstr
-_080248B8:
- cmp r0, 0x6
- beq _080248BE
- b _08024AAC
-_080248BE:
- ldr r0, _08024934 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080248CC
- b _08024A48
-_080248CC:
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- bne _080248D6
- b _08024A48
-_080248D6:
- ldr r7, _08024938 @ =gHitMarker
- ldr r0, [r7]
- lsrs r5, r0, 28
- ldr r4, _0802493C @ =gBitTable
- ldr r0, [r4, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0802497E
- ldr r0, [r4]
- ands r0, r5
- cmp r0, 0
- beq _0802497E
- ldr r6, _08024940 @ =gActiveBattler
- movs r0, 0x2
- strb r0, [r6]
- ldr r0, _08024944 @ =gBattleBufferB
- ldrb r1, [r0, 0x1]
- movs r0, 0x2
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _0802494C
- ldr r2, _08024948 @ =gAbsentBattlerFlags
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r6]
- bl MarkBattlerForControllerExec
- b _0802497E
- .align 2, 0
-_08024934: .4byte gBattleTypeFlags
-_08024938: .4byte gHitMarker
-_0802493C: .4byte gBitTable
-_08024940: .4byte gActiveBattler
-_08024944: .4byte gBattleBufferB
-_08024948: .4byte gAbsentBattlerFlags
-_0802494C:
- ldr r4, _080249DC @ =gSpecialStatuses
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0802497E
- ldr r0, _080249E0 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5C
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_0802497E:
- ldr r4, _080249E4 @ =gBitTable
- ldr r0, [r4, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _08024A2E
- ldr r0, [r4, 0x4]
- ands r5, r0
- cmp r5, 0
- beq _08024A2E
- ldr r5, _080249E8 @ =gActiveBattler
- movs r0, 0x3
- strb r0, [r5]
- ldr r0, _080249EC @ =gBattleBufferB
- ldr r2, _080249F0 @ =0x00000201
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x3
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _080249FC
- ldr r2, _080249F4 @ =gAbsentBattlerFlags
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080249F8 @ =gHitMarker
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl BtlController_EmitCmd42
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- b _08024A2E
- .align 2, 0
-_080249DC: .4byte gSpecialStatuses
-_080249E0: .4byte gBattleStruct
-_080249E4: .4byte gBitTable
-_080249E8: .4byte gActiveBattler
-_080249EC: .4byte gBattleBufferB
-_080249F0: .4byte 0x00000201
-_080249F4: .4byte gAbsentBattlerFlags
-_080249F8: .4byte gHitMarker
-_080249FC:
- ldr r4, _08024A3C @ =gSpecialStatuses
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08024A2E
- ldr r0, _08024A40 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5D
- ldrb r0, [r0]
- bl sub_8024398
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_08024A2E:
- ldr r1, _08024A44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- mov r12, r1
- b _08024A4C
- .align 2, 0
-_08024A3C: .4byte gSpecialStatuses
-_08024A40: .4byte gBattleStruct
-_08024A44: .4byte gBattlescriptCurrInstr
-_08024A48:
- adds r0, r2, 0x6
- str r0, [r6]
-_08024A4C:
- ldr r0, _08024A9C @ =gHitMarker
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r1, _08024AA0 @ =gBattlerFainted
- movs r0, 0
- strb r0, [r1]
- ldr r4, _08024AA4 @ =gBitTable
- ldr r2, [r4]
- ands r2, r5
- ldr r6, _08024AA8 @ =gBattlersCount
- cmp r2, 0
- bne _08024A88
- adds r7, r6, 0
- ldrb r0, [r6]
- cmp r2, r0
- bcs _08024A88
- adds r3, r1, 0
-_08024A6E:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldrb r2, [r3]
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- bne _08024A88
- ldrb r0, [r7]
- cmp r2, r0
- bcc _08024A6E
-_08024A88:
- ldrb r0, [r1]
- ldrb r6, [r6]
- cmp r0, r6
- beq _08024A92
- b _08024C2E
-_08024A92:
- mov r1, r8
- mov r2, r12
- str r1, [r2]
- b _08024C2E
- .align 2, 0
-_08024A9C: .4byte gHitMarker
-_08024AA0: .4byte gBattlerFainted
-_08024AA4: .4byte gBitTable
-_08024AA8: .4byte gBattlersCount
-_08024AAC:
- movs r0, 0x80
- ands r0, r1
- movs r5, 0x1
- cmp r0, 0
- beq _08024AB8
- movs r5, 0
-_08024AB8:
- movs r0, 0x7F
- ands r0, r1
- bl GetBattlerForBattleScript
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _08024AE0 @ =gSpecialStatuses
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _08024AE4
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- b _08024C2E
- .align 2, 0
-_08024AE0: .4byte gSpecialStatuses
-_08024AE4:
- adds r0, r7, 0
- movs r1, 0x6
- movs r2, 0x6
- bl HasNoMonsToSwitch
- lsls r0, 24
- cmp r0, 0
- beq _08024B34
- ldr r2, _08024B24 @ =gActiveBattler
- strb r7, [r2]
- ldr r3, _08024B28 @ =gAbsentBattlerFlags
- ldr r4, _08024B2C @ =gBitTable
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- ldr r3, _08024B30 @ =gHitMarker
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
- mov r0, r8
- str r0, [r6]
- b _08024C2E
- .align 2, 0
-_08024B24: .4byte gActiveBattler
-_08024B28: .4byte gAbsentBattlerFlags
-_08024B2C: .4byte gBitTable
-_08024B30: .4byte gHitMarker
-_08024B34:
- ldr r4, _08024BD8 @ =gActiveBattler
- strb r7, [r4]
- ldrb r0, [r4]
- ldr r3, _08024BDC @ =gBattleStruct
- ldr r1, [r3]
- adds r1, r0, r1
- adds r1, 0x58
- ldr r2, _08024BE0 @ =gBattlerPartyIndexes
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- ldr r3, [r3]
- adds r0, r3
- adds r0, 0x5C
- ldrb r2, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0x60
- adds r3, r0
- str r3, [sp]
- movs r0, 0
- adds r1, r5, 0
- movs r3, 0
- bl BtlController_EmitChoosePokemon
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- ldrb r0, [r4]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _08024B94
- ldr r1, _08024BE4 @ =gBattleResults
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFE
- bhi _08024B94
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_08024B94:
- ldr r0, _08024BE8 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08024BF0
- ldr r1, _08024BD8 @ =gActiveBattler
- movs r0, 0
- strb r0, [r1]
- ldr r0, _08024BEC @ =gBattlersCount
- ldrb r0, [r0]
- cmp r0, 0
- beq _08024C2E
- adds r4, r1, 0
-_08024BB0:
- ldrb r0, [r4]
- cmp r0, r7
- beq _08024BC4
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_08024BC4:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08024BEC @ =gBattlersCount
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08024BB0
- b _08024C2E
- .align 2, 0
-_08024BD8: .4byte gActiveBattler
-_08024BDC: .4byte gBattleStruct
-_08024BE0: .4byte gBattlerPartyIndexes
-_08024BE4: .4byte gBattleResults
-_08024BE8: .4byte gBattleTypeFlags
-_08024BEC: .4byte gBattlersCount
-_08024BF0:
- adds r0, r7, 0
- bl GetBattlerPosition
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- ldr r4, _08024C3C @ =gActiveBattler
- strb r0, [r4]
- ldr r0, _08024C40 @ =gAbsentBattlerFlags
- ldrb r1, [r0]
- ldr r2, _08024C44 @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08024C20
- movs r0, 0x2
- eors r3, r0
- strb r3, [r4]
-_08024C20:
- movs r0, 0
- movs r1, 0x2
- bl BtlController_EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_08024C2E:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024C3C: .4byte gActiveBattler
-_08024C40: .4byte gAbsentBattlerFlags
-_08024C44: .4byte gBitTable
- thumb_func_end atk50_openpartyscreen
-
- thumb_func_start atk51_switchhandleorder
-atk51_switchhandleorder: @ 8024C48
- push {r4-r7,lr}
- ldr r0, _08024C74 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _08024C54
- b _08024E16
-_08024C54:
- ldr r4, _08024C78 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r7, _08024C7C @ =gActiveBattler
- strb r0, [r7]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- beq _08024CC4
- cmp r0, 0x1
- bgt _08024C80
- cmp r0, 0
- beq _08024C86
- b _08024E0E
- .align 2, 0
-_08024C74: .4byte gBattleControllerExecFlags
-_08024C78: .4byte gBattlescriptCurrInstr
-_08024C7C: .4byte gActiveBattler
-_08024C80:
- cmp r0, 0x2
- beq _08024CE0
- b _08024E0E
-_08024C86:
- movs r3, 0
- ldr r0, _08024CB8 @ =gBattlersCount
- ldrb r1, [r0]
- cmp r3, r1
- blt _08024C92
- b _08024E0E
-_08024C92:
- ldr r6, _08024CBC @ =gBattleStruct
- ldr r2, _08024CC0 @ =gBattleBufferB
- movs r5, 0x80
- lsls r5, 2
- adds r4, r0, 0
-_08024C9C:
- ldrb r0, [r2]
- cmp r0, 0x22
- bne _08024CAC
- ldr r0, [r6]
- adds r0, r3, r0
- adds r0, 0x5C
- ldrb r1, [r2, 0x1]
- strb r1, [r0]
-_08024CAC:
- adds r2, r5
- adds r3, 0x1
- ldrb r0, [r4]
- cmp r3, r0
- blt _08024C9C
- b _08024E0E
- .align 2, 0
-_08024CB8: .4byte gBattlersCount
-_08024CBC: .4byte gBattleStruct
-_08024CC0: .4byte gBattleBufferB
-_08024CC4:
- ldr r0, _08024CDC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08024CD2
- b _08024E0E
-_08024CD2:
- ldrb r0, [r7]
- bl sub_8013F6C
- b _08024E0E
- .align 2, 0
-_08024CDC: .4byte gBattleTypeFlags
-_08024CE0:
- ldr r1, _08024DAC @ =gBattleCommunication
- ldr r4, _08024DB0 @ =gBattleBufferB
- ldrb r0, [r7]
- lsls r0, 9
- adds r2, r4, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldr r6, _08024DB4 @ =gBattleStruct
- ldr r1, [r6]
- adds r1, r0, r1
- adds r1, 0x5C
- lsls r0, 9
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _08024DB8 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08024DBC
- ldrb r0, [r7]
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- lsls r0, 9
- adds r5, r4, 0x2
- adds r0, r5
- ldrb r2, [r0]
- movs r3, 0xF0
- adds r0, r3, 0
- ands r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- ldr r2, [r6]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, r2
- adds r0, 0x61
- lsls r1, 9
- adds r4, 0x3
- mov r12, r4
- add r1, r12
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r0, [r7]
- movs r4, 0x2
- eors r0, r4
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- eors r0, r4
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r0, [r7]
- lsls r0, 9
- adds r0, r5
- ldrb r0, [r0]
- ands r3, r0
- lsrs r3, 4
- ldrb r0, [r1]
- orrs r3, r0
- strb r3, [r1]
- ldrb r0, [r7]
- eors r4, r0
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r1, r4
- adds r1, r0
- adds r1, 0x62
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r12
- ldrb r0, [r0]
- strb r0, [r1]
- b _08024DC2
- .align 2, 0
-_08024DAC: .4byte gBattleCommunication
-_08024DB0: .4byte gBattleBufferB
-_08024DB4: .4byte gBattleStruct
-_08024DB8: .4byte gBattleTypeFlags
-_08024DBC:
- ldrb r0, [r7]
- bl sub_8013F6C
-_08024DC2:
- ldr r1, _08024E1C @ =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, _08024E20 @ =gBattleMons
- ldr r3, _08024E24 @ =gBattlerAttacker
- ldrb r0, [r3]
- movs r2, 0x58
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r2, _08024E28 @ =gBattleTextBuff2
- strb r5, [r2]
- movs r0, 0x7
- strb r0, [r2, 0x1]
- ldr r3, _08024E2C @ =gActiveBattler
- ldrb r0, [r3]
- strb r0, [r2, 0x2]
- ldr r1, _08024E30 @ =gBattleBufferB
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2, 0x4]
-_08024E0E:
- ldr r1, _08024E34 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
-_08024E16:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024E1C: .4byte gBattleTextBuff1
-_08024E20: .4byte gBattleMons
-_08024E24: .4byte gBattlerAttacker
-_08024E28: .4byte gBattleTextBuff2
-_08024E2C: .4byte gActiveBattler
-_08024E30: .4byte gBattleBufferB
-_08024E34: .4byte gBattlescriptCurrInstr
- thumb_func_end atk51_switchhandleorder
-
- thumb_func_start atk52_switchineffects
-atk52_switchineffects: @ 8024E38
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r6, _08024F40 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r4, _08024F44 @ =gActiveBattler
- strb r0, [r4]
- ldrb r0, [r4]
- bl sub_80174B8
- ldr r2, _08024F48 @ =gHitMarker
- ldr r1, _08024F4C @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r2, _08024F50 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- bl GetBattlerSide
- ldr r5, _08024F54 @ =gSideStatuses
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 2
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- bne _08024F88
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08024F88
- ldr r1, _08024F58 @ =gBattleMons
- mov r9, r1
- ldrb r2, [r4]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08024F88
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08024F88
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _08024F88
- adds r0, r2, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r2, [r0]
- mov r1, r8
- orrs r1, r2
- strh r1, [r0]
- ldrb r0, [r4]
- bl GetBattlerSide
- ldr r2, _08024F5C @ =gSideTimers
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0xA]
- movs r1, 0x5
- subs r1, r0
- lsls r1, 25
- lsrs r1, 24
- ldr r5, _08024F60 @ =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2C]
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08024F28
- movs r0, 0x1
- str r0, [r5]
-_08024F28:
- ldr r0, _08024F64 @ =gBattleScripting
- ldrb r1, [r4]
- strb r1, [r0, 0x17]
- bl BattleScriptPushCursor
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08024F6C
- ldr r0, _08024F68 @ =BattleScript_SpikesOnTarget
- str r0, [r6]
- b _080250C6
- .align 2, 0
-_08024F40: .4byte gBattlescriptCurrInstr
-_08024F44: .4byte gActiveBattler
-_08024F48: .4byte gHitMarker
-_08024F4C: .4byte gBitTable
-_08024F50: .4byte gSpecialStatuses
-_08024F54: .4byte gSideStatuses
-_08024F58: .4byte gBattleMons
-_08024F5C: .4byte gSideTimers
-_08024F60: .4byte gBattleMoveDamage
-_08024F64: .4byte gBattleScripting
-_08024F68: .4byte BattleScript_SpikesOnTarget
-_08024F6C:
- cmp r0, 0x1
- bne _08024F7C
- ldr r0, _08024F78 @ =BattleScript_SpikesOnAttacker
- str r0, [r6]
- b _080250C6
- .align 2, 0
-_08024F78: .4byte BattleScript_SpikesOnAttacker
-_08024F7C:
- ldr r0, _08024F84 @ =BattleScript_SpikesOnFaintedBattler
- str r0, [r6]
- b _080250C6
- .align 2, 0
-_08024F84: .4byte BattleScript_SpikesOnFaintedBattler
-_08024F88:
- ldr r1, _08025064 @ =gBattleMons
- ldr r5, _08025068 @ =gActiveBattler
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x36
- bne _08024FAE
- ldr r1, _0802506C @ =gDisableStructs
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x18]
-_08024FAE:
- ldrb r1, [r5]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08024FC4
- b _080250C6
-_08024FC4:
- ldrb r1, [r5]
- movs r0, 0
- movs r2, 0
- bl ItemBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _080250C6
- ldrb r0, [r5]
- bl GetBattlerSide
- ldr r1, _08025070 @ =gSideStatuses
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, _08025074 @ =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- movs r4, 0
- ldr r0, _08025078 @ =gBattlersCount
- ldrb r3, [r0]
- cmp r4, r3
- bge _08025012
- ldr r6, _0802507C @ =gBattlerByTurnOrder
- ldr r3, _08025080 @ =gActionsByTurnOrder
- movs r2, 0xC
- adds r1, r0, 0
-_08024FFC:
- adds r0, r4, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _0802500A
- adds r0, r4, r3
- strb r2, [r0]
-_0802500A:
- adds r4, 0x1
- ldrb r0, [r1]
- cmp r4, r0
- blt _08024FFC
-_08025012:
- movs r4, 0
- ldr r0, _08025078 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- bge _08025046
- ldr r6, _08025084 @ =gBattleStruct
- ldr r5, _08025064 @ =gBattleMons
-_08025020:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0xA8
- ldr r1, [r6]
- adds r1, r0
- movs r0, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x28]
- strh r0, [r1]
- adds r4, 0x1
- ldr r0, _08025078 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r4, r0
- blt _08025020
-_08025046:
- ldr r0, _08025088 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _080250C0
- ldr r0, _0802508C @ =gHitMarker
- ldr r0, [r0]
- lsrs r4, r0, 28
- ldr r1, _08025090 @ =gBattlerFainted
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, _08025094 @ =gBitTable
- b _080250A6
- .align 2, 0
-_08025064: .4byte gBattleMons
-_08025068: .4byte gActiveBattler
-_0802506C: .4byte gDisableStructs
-_08025070: .4byte gSideStatuses
-_08025074: .4byte 0x0000fdff
-_08025078: .4byte gBattlersCount
-_0802507C: .4byte gBattlerByTurnOrder
-_08025080: .4byte gActionsByTurnOrder
-_08025084: .4byte gBattleStruct
-_08025088: .4byte gBattlescriptCurrInstr
-_0802508C: .4byte gHitMarker
-_08025090: .4byte gBattlerFainted
-_08025094: .4byte gBitTable
-_08025098:
- ldr r0, _080250D4 @ =gBattlersCount
- ldrb r3, [r1]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080250C0
- adds r0, r3, 0x1
- strb r0, [r1]
-_080250A6:
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r3, [r0]
- adds r0, r4, 0
- ands r0, r3
- cmp r0, 0
- beq _08025098
- ldr r0, _080250D8 @ =gAbsentBattlerFlags
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- bne _08025098
-_080250C0:
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_080250C6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080250D4: .4byte gBattlersCount
-_080250D8: .4byte gAbsentBattlerFlags
- thumb_func_end atk52_switchineffects
-
- thumb_func_start atk53_trainerslidein
-atk53_trainerslidein: @ 80250DC
- push {lr}
- ldr r0, _080250EC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080250F0
- movs r0, 0
- b _080250F2
- .align 2, 0
-_080250EC: .4byte gBattlescriptCurrInstr
-_080250F0:
- movs r0, 0x1
-_080250F2:
- bl GetBattlerAtPosition
- ldr r1, _08025114 @ =gActiveBattler
- strb r0, [r1]
- movs r0, 0
- bl BtlController_EmitTrainerSlide
- ldr r0, _08025114 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- ldr r1, _08025118 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025114: .4byte gActiveBattler
-_08025118: .4byte gBattlescriptCurrInstr
- thumb_func_end atk53_trainerslidein
-
- thumb_func_start atk54_playse
-atk54_playse: @ 802511C
- push {r4,r5,lr}
- ldr r5, _0802514C @ =gActiveBattler
- ldr r0, _08025150 @ =gBattlerAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08025154 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl BtlController_EmitPlaySE
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802514C: .4byte gActiveBattler
-_08025150: .4byte gBattlerAttacker
-_08025154: .4byte gBattlescriptCurrInstr
- thumb_func_end atk54_playse
-
- thumb_func_start atk55_fanfare
-atk55_fanfare: @ 8025158
- push {r4,r5,lr}
- ldr r5, _08025188 @ =gActiveBattler
- ldr r0, _0802518C @ =gBattlerAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08025190 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl BtlController_EmitPlayFanfare
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025188: .4byte gActiveBattler
-_0802518C: .4byte gBattlerAttacker
-_08025190: .4byte gBattlescriptCurrInstr
- thumb_func_end atk55_fanfare
-
- thumb_func_start atk56_playfaintcry
-atk56_playfaintcry: @ 8025194
- push {r4,r5,lr}
- ldr r5, _080251BC @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r4, _080251C0 @ =gActiveBattler
- strb r0, [r4]
- movs r0, 0
- bl BtlController_EmitFaintingCry
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080251BC: .4byte gBattlescriptCurrInstr
-_080251C0: .4byte gActiveBattler
- thumb_func_end atk56_playfaintcry
-
- thumb_func_start atk57
-atk57: @ 80251C4
- push {r4,lr}
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r4, _080251F0 @ =gActiveBattler
- strb r0, [r4]
- ldr r0, _080251F4 @ =gBattleOutcome
- ldrb r1, [r0]
- movs r0, 0
- bl BtlController_EmitCmd55
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r1, _080251F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080251F0: .4byte gActiveBattler
-_080251F4: .4byte gBattleOutcome
-_080251F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk57
-
- thumb_func_start atk58_returntoball
-atk58_returntoball: @ 80251FC
- push {r4,r5,lr}
- ldr r5, _08025228 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r4, _0802522C @ =gActiveBattler
- strb r0, [r4]
- movs r0, 0
- movs r1, 0x1
- bl BtlController_EmitReturnMonToBall
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025228: .4byte gBattlescriptCurrInstr
-_0802522C: .4byte gActiveBattler
- thumb_func_end atk58_returntoball
-
- thumb_func_start atk59_handlelearnnewmove
-atk59_handlelearnnewmove: @ 8025230
- push {r4-r7,lr}
- ldr r0, _080252A4 @ =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r6, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r6, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r6, r0
- ldrb r4, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- orrs r4, r0
- ldr r0, _080252A8 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080252AC @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x9]
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080252B0 @ =0x0000fffe
- cmp r5, r0
- bne _0802529A
- adds r7, r5, 0
-_0802527E:
- ldr r0, _080252A8 @ =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080252AC @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r7
- beq _0802527E
-_0802529A:
- cmp r5, 0
- bne _080252B4
- ldr r0, _080252A4 @ =gBattlescriptCurrInstr
- str r4, [r0]
- b _0802535C
- .align 2, 0
-_080252A4: .4byte gBattlescriptCurrInstr
-_080252A8: .4byte gBattleStruct
-_080252AC: .4byte gPlayerParty
-_080252B0: .4byte 0x0000fffe
-_080252B4:
- ldr r0, _080252C4 @ =0x0000ffff
- cmp r5, r0
- bne _080252CC
- ldr r1, _080252C8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _0802535C
- .align 2, 0
-_080252C4: .4byte 0x0000ffff
-_080252C8: .4byte gBattlescriptCurrInstr
-_080252CC:
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, _08025364 @ =gActiveBattler
- strb r0, [r1]
- ldr r2, _08025368 @ =gBattlerPartyIndexes
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldr r1, _0802536C @ =gBattleStruct
- ldr r1, [r1]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _0802530C
- ldr r4, _08025370 @ =gBattleMons
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0802530C
- adds r0, r2, r4
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_0802530C:
- ldr r0, _08025374 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08025358
- movs r0, 0x2
- bl GetBattlerAtPosition
- ldr r1, _08025364 @ =gActiveBattler
- strb r0, [r1]
- ldr r2, _08025368 @ =gBattlerPartyIndexes
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldr r1, _0802536C @ =gBattleStruct
- ldr r1, [r1]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _08025358
- ldr r4, _08025370 @ =gBattleMons
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08025358
- adds r0, r2, r4
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_08025358:
- ldr r0, _08025378 @ =gBattlescriptCurrInstr
- str r6, [r0]
-_0802535C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025364: .4byte gActiveBattler
-_08025368: .4byte gBattlerPartyIndexes
-_0802536C: .4byte gBattleStruct
-_08025370: .4byte gBattleMons
-_08025374: .4byte gBattleTypeFlags
-_08025378: .4byte gBattlescriptCurrInstr
- thumb_func_end atk59_handlelearnnewmove
-
- thumb_func_start atk5A_yesnoboxlearnmove
-atk5A_yesnoboxlearnmove: @ 802537C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r0, _080253A0 @ =gActiveBattler
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080253A4 @ =gBattleScripting
- ldrb r1, [r0, 0x1F]
- adds r2, r0, 0
- cmp r1, 0x5
- bls _08025396
- b _080256D0
-_08025396:
- lsls r0, r1, 2
- ldr r1, _080253A8 @ =_080253AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080253A0: .4byte gActiveBattler
-_080253A4: .4byte gBattleScripting
-_080253A8: .4byte _080253AC
- .align 2, 0
-_080253AC:
- .4byte _080253C4
- .4byte _080253FC
- .4byte _080254A8
- .4byte _08025500
- .4byte _080256A4
- .4byte _080256C4
-_080253C4:
- movs r4, 0
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r0, _080253F0 @ =gText_BattleYesNoChoice
- movs r1, 0xE
- bl BattlePutTextOnWindow
- ldr r1, _080253F4 @ =gBattleScripting
- ldrb r0, [r1, 0x1F]
- adds r0, 0x1
- strb r0, [r1, 0x1F]
- ldr r0, _080253F8 @ =gBattleCommunication
- strb r4, [r0, 0x1]
- bl BattleCreateYesNoCursorAt
- b _080256D0
- .align 2, 0
-_080253F0: .4byte gText_BattleYesNoChoice
-_080253F4: .4byte gBattleScripting
-_080253F8: .4byte gBattleCommunication
-_080253FC:
- ldr r0, _08025484 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08025422
- ldr r4, _08025488 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08025422
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_08025422:
- ldr r0, _08025484 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08025448
- ldr r4, _08025488 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08025448
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_08025448:
- ldr r0, _08025484 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0802548C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08025488 @ =gBattleCommunication
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- bne _0802549C
- str r5, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _080254D8
- .align 2, 0
-_08025484: .4byte gMain
-_08025488: .4byte gBattleCommunication
-_0802548C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08025496
- b _080256D0
-_08025496:
- movs r0, 0x5
- bl PlaySE
-_0802549C:
- ldr r1, _080254A4 @ =gBattleScripting
- movs r0, 0x4
- strb r0, [r1, 0x1F]
- b _080256D0
- .align 2, 0
-_080254A4: .4byte gBattleScripting
-_080254A8:
- ldr r0, _080254E4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080254B6
- b _080256D0
-_080254B6:
- bl FreeAllWindowBuffers
- ldr r0, _080254E8 @ =gPlayerParty
- ldr r1, _080254EC @ =gBattleStruct
- ldr r1, [r1]
- ldrb r1, [r1, 0x10]
- ldr r2, _080254F0 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080254F4 @ =ReshowBattleScreenAfterMenu
- ldr r4, _080254F8 @ =gMoveToLearn
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_8134738
-_080254D8:
- ldr r1, _080254FC @ =gBattleScripting
- ldrb r0, [r1, 0x1F]
- adds r0, 0x1
- strb r0, [r1, 0x1F]
- b _080256D0
- .align 2, 0
-_080254E4: .4byte gPaletteFade
-_080254E8: .4byte gPlayerParty
-_080254EC: .4byte gBattleStruct
-_080254F0: .4byte gPlayerPartyCount
-_080254F4: .4byte ReshowBattleScreenAfterMenu
-_080254F8: .4byte gMoveToLearn
-_080254FC: .4byte gBattleScripting
-_08025500:
- ldr r0, _0802552C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802550E
- b _080256D0
-_0802550E:
- ldr r0, _08025530 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _08025534 @ =BattleMainCB2
- cmp r1, r0
- beq _0802551A
- b _080256D0
-_0802551A:
- bl sub_8138B2C
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bne _0802553C
- ldr r0, _08025538 @ =gBattleScripting
- strb r5, [r0, 0x1F]
- b _080256D0
- .align 2, 0
-_0802552C: .4byte gPaletteFade
-_08025530: .4byte gMain
-_08025534: .4byte BattleMainCB2
-_08025538: .4byte gBattleScripting
-_0802553C:
- ldr r6, _08025578 @ =gBattleStruct
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, _0802557C @ =gPlayerParty
- adds r0, r7
- adds r1, r5, 0
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _0802558C
- ldr r0, _08025580 @ =0x0000013f
- ldr r1, _08025584 @ =gActiveBattler
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r1, _08025588 @ =gBattleScripting
- movs r0, 0x5
- strb r0, [r1, 0x1F]
- b _080256D0
- .align 2, 0
-_08025578: .4byte gBattleStruct
-_0802557C: .4byte gPlayerParty
-_08025580: .4byte 0x0000013f
-_08025584: .4byte gActiveBattler
-_08025588: .4byte gBattleScripting
-_0802558C:
- ldr r3, _08025680 @ =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]
- ldr r1, _08025684 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r5, 0
- bl RemoveMonPPBonus
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- ldr r7, _08025688 @ =gMoveToLearn
- ldrh r1, [r7]
- adds r2, r5, 0
- bl SetMonMoveSlot
- ldr r0, _0802568C @ =gBattlerPartyIndexes
- ldr r1, [r6]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _08025622
- ldr r4, _08025690 @ =gBattleMons
- ldr r0, [r4, 0x50]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08025622
- ldr r0, _08025694 @ =gDisableStructs
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _08025698 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08025622
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldrh r1, [r7]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
-_08025622:
- ldr r0, _0802569C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080256D0
- ldr r2, _0802568C @ =gBattlerPartyIndexes
- ldr r0, _080256A0 @ =gBattleStruct
- ldr r1, [r0]
- ldrh r0, [r2, 0x4]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _080256D0
- ldr r4, _08025690 @ =gBattleMons
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _080256D0
- ldr r0, _08025694 @ =gDisableStructs
- adds r0, 0x50
- ldrb r1, [r0]
- lsrs r1, 4
- ldr r2, _08025698 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080256D0
- adds r4, 0xB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldr r0, _08025688 @ =gMoveToLearn
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
- b _080256D0
- .align 2, 0
-_08025680: .4byte gBattlescriptCurrInstr
-_08025684: .4byte gBattleTextBuff2
-_08025688: .4byte gMoveToLearn
-_0802568C: .4byte gBattlerPartyIndexes
-_08025690: .4byte gBattleMons
-_08025694: .4byte gDisableStructs
-_08025698: .4byte gBitTable
-_0802569C: .4byte gBattleTypeFlags
-_080256A0: .4byte gBattleStruct
-_080256A4:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r1, _080256C0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080256D0
- .align 2, 0
-_080256C0: .4byte gBattlescriptCurrInstr
-_080256C4:
- ldr r0, _080256DC @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _080256D0
- movs r0, 0x2
- strb r0, [r2, 0x1F]
-_080256D0:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080256DC: .4byte gBattleControllerExecFlags
- thumb_func_end atk5A_yesnoboxlearnmove
-
- thumb_func_start atk5B_yesnoboxstoplearningmove
-atk5B_yesnoboxstoplearningmove: @ 80256E0
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _080256F4 @ =gBattleScripting
- ldrb r4, [r5, 0x1F]
- cmp r4, 0
- beq _080256F8
- cmp r4, 0x1
- beq _08025728
- b _0802580E
- .align 2, 0
-_080256F4: .4byte gBattleScripting
-_080256F8:
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r0, _08025720 @ =gText_BattleYesNoChoice
- movs r1, 0xE
- bl BattlePutTextOnWindow
- ldrb r0, [r5, 0x1F]
- adds r0, 0x1
- strb r0, [r5, 0x1F]
- ldr r0, _08025724 @ =gBattleCommunication
- strb r4, [r0, 0x1]
- bl BattleCreateYesNoCursorAt
- b _0802580E
- .align 2, 0
-_08025720: .4byte gText_BattleYesNoChoice
-_08025724: .4byte gBattleCommunication
-_08025728:
- ldr r0, _080257AC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802574E
- ldr r4, _080257B0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0802574E
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_0802574E:
- ldr r0, _080257AC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08025774
- ldr r4, _080257B0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08025774
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_08025774:
- ldr r0, _080257AC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080257D8
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080257B0 @ =gBattleCommunication
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080257B8
- ldr r3, _080257B4 @ =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 _080257C0
- .align 2, 0
-_080257AC: .4byte gMain
-_080257B0: .4byte gBattleCommunication
-_080257B4: .4byte gBattlescriptCurrInstr
-_080257B8:
- ldr r1, _080257D4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080257C0:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- b _0802580E
- .align 2, 0
-_080257D4: .4byte gBattlescriptCurrInstr
-_080257D8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802580E
- movs r0, 0x5
- bl PlaySE
- ldr r3, _08025818 @ =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]
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
-_0802580E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025818: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5B_yesnoboxstoplearningmove
-
- thumb_func_start atk5C_hitanimation
-atk5C_hitanimation: @ 802581C
- push {r4,lr}
- ldr r4, _08025888 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r2, _0802588C @ =gActiveBattler
- strb r0, [r2]
- ldr r0, _08025890 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080258A0
- ldr r0, _08025894 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- beq _0802586E
- ldr r1, _08025898 @ =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 _0802586E
- ldr r0, _0802589C @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _080258A0
-_0802586E:
- movs r0, 0
- bl BtlController_EmitHitAnimation
- ldr r0, _0802588C @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- ldr r1, _08025888 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- b _080258A6
- .align 2, 0
-_08025888: .4byte gBattlescriptCurrInstr
-_0802588C: .4byte gActiveBattler
-_08025890: .4byte gMoveResultFlags
-_08025894: .4byte gHitMarker
-_08025898: .4byte gBattleMons
-_0802589C: .4byte gDisableStructs
-_080258A0:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
-_080258A6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk5C_hitanimation
-
- thumb_func_start atk5D_getmoneyreward
-atk5D_getmoneyreward: @ 80258AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _080258F0 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080258C0
- b _080259FA
-_080258C0:
- ldr r0, _080258F4 @ =gTrainerBattleOpponent_A
- ldrh r2, [r0]
- movs r1, 0x80
- lsls r1, 3
- cmp r2, r1
- bne _08025904
- ldr r0, _080258F8 @ =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x94
- ldrb r2, [r0]
- ldr r0, _080258FC @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4A
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r4, r2, 0
- muls r4, r0
- ldr r0, _08025900 @ =gSaveBlock1Ptr
- mov r8, r0
- b _080259E8
- .align 2, 0
-_080258F0: .4byte gBattleOutcome
-_080258F4: .4byte gTrainerBattleOpponent_A
-_080258F8: .4byte gBattleResources
-_080258FC: .4byte gBattleStruct
-_08025900: .4byte gSaveBlock1Ptr
-_08025904:
- ldr r2, _08025920 @ =gTrainers
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r3, r0, 3
- adds r4, r3, r2
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _0802595A
- cmp r1, 0x1
- bgt _08025924
- cmp r1, 0
- beq _0802592E
- b _08025970
- .align 2, 0
-_08025920: .4byte gTrainers
-_08025924:
- cmp r1, 0x2
- beq _08025944
- cmp r1, 0x3
- beq _0802595A
- b _08025970
-_0802592E:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _0802596E
-_08025944:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _0802596E
-_0802595A:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- subs r0, 0x10
-_0802596E:
- ldrb r5, [r0, 0x2]
-_08025970:
- ldr r0, _080259CC @ =gTrainerMoneyTable
- lsls r1, r6, 2
- adds r3, r1, r0
- ldrb r1, [r3]
- ldr r7, _080259D0 @ =gBattleStruct
- mov r12, r0
- lsls r4, r5, 2
- ldr r5, _080259D4 @ =gBattleTypeFlags
- ldr r0, _080259D8 @ =gSaveBlock1Ptr
- mov r8, r0
- cmp r1, 0xFF
- beq _080259AA
- ldr r2, _080259DC @ =gTrainers
- ldr r0, _080259E0 @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r2, [r0, 0x1]
- adds r1, r3, 0
-_0802599A:
- ldrb r0, [r1]
- cmp r0, r2
- beq _080259AA
- adds r1, 0x4
- adds r6, 0x1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0802599A
-_080259AA:
- ldr r0, [r7]
- adds r0, 0x4A
- ldrb r0, [r0]
- adds r3, r4, 0
- muls r3, r0
- lsls r0, r6, 2
- add r0, r12
- ldrb r2, [r0, 0x1]
- ldr r0, [r5]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080259E4
- lsls r0, r2, 1
- adds r4, r3, 0
- muls r4, r0
- b _080259E8
- .align 2, 0
-_080259CC: .4byte gTrainerMoneyTable
-_080259D0: .4byte gBattleStruct
-_080259D4: .4byte gBattleTypeFlags
-_080259D8: .4byte gSaveBlock1Ptr
-_080259DC: .4byte gTrainers
-_080259E0: .4byte gTrainerBattleOpponent_A
-_080259E4:
- adds r4, r3, 0
- muls r4, r2
-_080259E8:
- mov r1, r8
- ldr r0, [r1]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- adds r1, r4, 0
- bl AddMoney
- b _08025A00
-_080259FA:
- bl sub_8054C04
- adds r4, r0, 0
-_08025A00:
- ldr r1, _08025A40 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- strb r4, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r4
- lsrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r4
- lsrs r0, 16
- strb r0, [r1, 0x6]
- lsrs r0, r4, 24
- strb r0, [r1, 0x7]
- movs r0, 0xFF
- strb r0, [r1, 0x8]
- cmp r4, 0
- beq _08025A48
- ldr r1, _08025A44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08025A62
- .align 2, 0
-_08025A40: .4byte gBattleTextBuff1
-_08025A44: .4byte gBattlescriptCurrInstr
-_08025A48:
- ldr r3, _08025A6C @ =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]
-_08025A62:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025A6C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5D_getmoneyreward
-
- thumb_func_start atk5E
-atk5E: @ 8025A70
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _08025A94 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r6, _08025A98 @ =gActiveBattler
- strb r0, [r6]
- ldr r5, _08025A9C @ =gBattleCommunication
- ldrb r0, [r5]
- mov r8, r4
- cmp r0, 0
- beq _08025AA0
- cmp r0, 0x1
- beq _08025AB8
- b _08025B0C
- .align 2, 0
-_08025A94: .4byte gBattlescriptCurrInstr
-_08025A98: .4byte gActiveBattler
-_08025A9C: .4byte gBattleCommunication
-_08025AA0:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl BtlController_EmitGetMonData
- ldrb r0, [r6]
- bl MarkBattlerForControllerExec
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _08025B0C
-_08025AB8:
- ldr r0, _08025B18 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _08025B0C
- ldrb r0, [r6]
- lsls r0, 9
- ldr r1, _08025B1C @ =gUnknown_20233C8
- adds r0, r1
- mov r12, r0
- movs r2, 0
- adds r4, r6, 0
- movs r5, 0x58
- ldr r6, _08025B20 @ =gUnknown_2023C08
- adds r7, r6, 0
- subs r7, 0x18
- mov r3, r12
- adds r3, 0xC
-_08025ADA:
- lsls r1, r2, 1
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0
- adds r1, r7
- ldrh r0, [r3]
- strh r0, [r1]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r2, r1
- adds r1, r6
- mov r0, r12
- adds r0, 0x24
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _08025ADA
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08025B0C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025B18: .4byte gBattleControllerExecFlags
-_08025B1C: .4byte gUnknown_20233C8
-_08025B20: .4byte gUnknown_2023C08
- thumb_func_end atk5E
-
- thumb_func_start atk5F_swapattackerwithtarget
-atk5F_swapattackerwithtarget: @ 8025B24
- push {lr}
- ldr r0, _08025B4C @ =gActiveBattler
- ldr r2, _08025B50 @ =gBattlerAttacker
- ldrb r3, [r2]
- strb r3, [r0]
- ldr r1, _08025B54 @ =gBattlerTarget
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- ldr r2, _08025B58 @ =gHitMarker
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 5
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _08025B60
- ldr r0, _08025B5C @ =0xffffefff
- ands r1, r0
- b _08025B62
- .align 2, 0
-_08025B4C: .4byte gActiveBattler
-_08025B50: .4byte gBattlerAttacker
-_08025B54: .4byte gBattlerTarget
-_08025B58: .4byte gHitMarker
-_08025B5C: .4byte 0xffffefff
-_08025B60:
- orrs r1, r3
-_08025B62:
- str r1, [r2]
- ldr r1, _08025B70 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025B70: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5F_swapattackerwithtarget
-
- thumb_func_start atk60_incrementgamestat
-atk60_incrementgamestat: @ 8025B74
- push {lr}
- ldr r0, _08025B9C @ =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08025B8E
- ldr r0, _08025BA0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl IncrementGameStat
-_08025B8E:
- ldr r1, _08025BA0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025B9C: .4byte gBattlerAttacker
-_08025BA0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk60_incrementgamestat
-
- thumb_func_start atk61_drawpartystatussummary
-atk61_drawpartystatussummary: @ 8025BA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, _08025C08 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _08025C58
- ldr r0, _08025C0C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r1, _08025C10 @ =gActiveBattler
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBattlerSide
- lsls r0, 24
- ldr r1, _08025C14 @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _08025BD6
- ldr r0, _08025C18 @ =gPlayerParty
- mov r8, r0
-_08025BD6:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_08025BDC:
- movs r0, 0x64
- muls r0, r7
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08025C00
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08025C20
-_08025C00:
- ldr r0, _08025C1C @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _08025C32
- .align 2, 0
-_08025C08: .4byte gBattleControllerExecFlags
-_08025C0C: .4byte gBattlescriptCurrInstr
-_08025C10: .4byte gActiveBattler
-_08025C14: .4byte gEnemyParty
-_08025C18: .4byte gPlayerParty
-_08025C1C: .4byte 0x0000ffff
-_08025C20:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_08025C32:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08025BDC
- movs r0, 0
- mov r1, sp
- movs r2, 0x1
- bl BtlController_EmitDrawPartyStatusSummary
- ldr r0, _08025C64 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- ldr r1, _08025C68 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08025C58:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025C64: .4byte gActiveBattler
-_08025C68: .4byte gBattlescriptCurrInstr
- thumb_func_end atk61_drawpartystatussummary
-
- thumb_func_start atk62_hidepartystatussummary
-atk62_hidepartystatussummary: @ 8025C6C
- push {r4,r5,lr}
- ldr r5, _08025C94 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r4, _08025C98 @ =gActiveBattler
- strb r0, [r4]
- movs r0, 0
- bl BtlController_EmitHidePartyStatusSummary
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025C94: .4byte gBattlescriptCurrInstr
-_08025C98: .4byte gActiveBattler
- thumb_func_end atk62_hidepartystatussummary
-
- thumb_func_start atk63_jumptocalledmove
-atk63_jumptocalledmove: @ 8025C9C
- push {r4,lr}
- ldr r0, _08025CB4 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0
- beq _08025CC0
- ldr r0, _08025CB8 @ =gCurrentMove
- ldr r1, _08025CBC @ =gCalledMove
- ldrh r1, [r1]
- strh r1, [r0]
- b _08025CCE
- .align 2, 0
-_08025CB4: .4byte gBattlescriptCurrInstr
-_08025CB8: .4byte gCurrentMove
-_08025CBC: .4byte gCalledMove
-_08025CC0:
- ldr r2, _08025CEC @ =gChosenMove
- ldr r1, _08025CF0 @ =gCurrentMove
- ldr r0, _08025CF4 @ =gCalledMove
- ldrh r0, [r0]
- strh r0, [r1]
- strh r0, [r2]
- adds r0, r1, 0
-_08025CCE:
- ldr r3, _08025CF8 @ =gBattleScriptsForMoveEffects
- ldr r2, _08025CFC @ =gBattleMoves
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08025CEC: .4byte gChosenMove
-_08025CF0: .4byte gCurrentMove
-_08025CF4: .4byte gCalledMove
-_08025CF8: .4byte gBattleScriptsForMoveEffects
-_08025CFC: .4byte gBattleMoves
- thumb_func_end atk63_jumptocalledmove
-
- thumb_func_start atk64_statusanimation
-atk64_statusanimation: @ 8025D00
- push {r4,lr}
- ldr r0, _08025D70 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _08025D68
- ldr r0, _08025D74 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r4, _08025D78 @ =gActiveBattler
- strb r0, [r4]
- ldr r1, _08025D7C @ =gStatuses3
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08025D80 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08025D60
- ldr r0, _08025D84 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08025D60
- ldr r0, _08025D88 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08025D60
- ldr r1, _08025D8C @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- movs r1, 0
- bl BtlController_EmitStatusAnimation
- ldrb r0, [r4]
- bl MarkBattlerForControllerExec
-_08025D60:
- ldr r1, _08025D74 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08025D68:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08025D70: .4byte gBattleControllerExecFlags
-_08025D74: .4byte gBattlescriptCurrInstr
-_08025D78: .4byte gActiveBattler
-_08025D7C: .4byte gStatuses3
-_08025D80: .4byte 0x000400c0
-_08025D84: .4byte gDisableStructs
-_08025D88: .4byte gHitMarker
-_08025D8C: .4byte gBattleMons
- thumb_func_end atk64_statusanimation
-
- thumb_func_start atk65_status2animation
-atk65_status2animation: @ 8025D90
- push {r4,r5,lr}
- ldr r0, _08025E18 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _08025E10
- ldr r4, _08025E1C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r5, _08025E20 @ =gActiveBattler
- strb r0, [r5]
- ldr r1, [r4]
- ldrb r3, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r3, r0
- ldr r1, _08025E24 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08025E28 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08025E08
- ldr r0, _08025E2C @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08025E08
- ldr r0, _08025E30 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08025E08
- ldr r1, _08025E34 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r2, [r0]
- ands r2, r3
- movs r0, 0
- movs r1, 0x1
- bl BtlController_EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
-_08025E08:
- ldr r1, _08025E1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_08025E10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025E18: .4byte gBattleControllerExecFlags
-_08025E1C: .4byte gBattlescriptCurrInstr
-_08025E20: .4byte gActiveBattler
-_08025E24: .4byte gStatuses3
-_08025E28: .4byte 0x000400c0
-_08025E2C: .4byte gDisableStructs
-_08025E30: .4byte gHitMarker
-_08025E34: .4byte gBattleMons
- thumb_func_end atk65_status2animation
-
- thumb_func_start atk66_chosenstatusanimation
-atk66_chosenstatusanimation: @ 8025E38
- push {r4,r5,lr}
- ldr r0, _08025EB0 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- bne _08025EAA
- ldr r4, _08025EB4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r5, _08025EB8 @ =gActiveBattler
- strb r0, [r5]
- ldr r4, [r4]
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
- orrs r2, r0
- ldr r1, _08025EBC @ =gStatuses3
- ldrb r3, [r5]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08025EC0 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08025EA2
- ldr r0, _08025EC4 @ =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08025EA2
- ldr r0, _08025EC8 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08025EA2
- ldrb r1, [r4, 0x2]
- movs r0, 0
- bl BtlController_EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
-_08025EA2:
- ldr r1, _08025EB4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
-_08025EAA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025EB0: .4byte gBattleControllerExecFlags
-_08025EB4: .4byte gBattlescriptCurrInstr
-_08025EB8: .4byte gActiveBattler
-_08025EBC: .4byte gStatuses3
-_08025EC0: .4byte 0x000400c0
-_08025EC4: .4byte gDisableStructs
-_08025EC8: .4byte gHitMarker
- thumb_func_end atk66_chosenstatusanimation
-
- thumb_func_start atk67_yesnobox
-atk67_yesnobox: @ 8025ECC
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08025EE0 @ =gBattleCommunication
- ldrb r4, [r5]
- cmp r4, 0
- beq _08025EE4
- cmp r4, 0x1
- beq _08025F0C
- b _08025F9A
- .align 2, 0
-_08025EE0: .4byte gBattleCommunication
-_08025EE4:
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r0, _08025F08 @ =gText_BattleYesNoChoice
- movs r1, 0xE
- bl BattlePutTextOnWindow
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- strb r4, [r5, 0x1]
- bl BattleCreateYesNoCursorAt
- b _08025F9A
- .align 2, 0
-_08025F08: .4byte gText_BattleYesNoChoice
-_08025F0C:
- ldr r0, _08025F6C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08025F30
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _08025F30
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0
- strb r0, [r5, 0x1]
- bl BattleCreateYesNoCursorAt
-_08025F30:
- ldr r0, _08025F6C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08025F56
- ldr r4, _08025F70 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08025F56
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_08025F56:
- ldr r0, _08025F6C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08025F74
- ldr r0, _08025F70 @ =gBattleCommunication
- movs r4, 0x1
- strb r4, [r0, 0x1]
- b _08025F7E
- .align 2, 0
-_08025F6C: .4byte gMain
-_08025F70: .4byte gBattleCommunication
-_08025F74:
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08025F9A
-_08025F7E:
- movs r0, 0x5
- bl PlaySE
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r1, _08025FA4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08025F9A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025FA4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk67_yesnobox
-
- thumb_func_start atk68_cancelallactions
-atk68_cancelallactions: @ 8025FA8
- push {r4,r5,lr}
- movs r1, 0
- ldr r2, _08025FD4 @ =gBattlersCount
- ldr r5, _08025FD8 @ =gBattlescriptCurrInstr
- ldrb r0, [r2]
- cmp r1, r0
- bge _08025FC6
- ldr r4, _08025FDC @ =gActionsByTurnOrder
- movs r3, 0xC
-_08025FBA:
- adds r0, r1, r4
- strb r3, [r0]
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _08025FBA
-_08025FC6:
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025FD4: .4byte gBattlersCount
-_08025FD8: .4byte gBattlescriptCurrInstr
-_08025FDC: .4byte gActionsByTurnOrder
- thumb_func_end atk68_cancelallactions
-
- thumb_func_start atk69_adjustsetdamage
-atk69_adjustsetdamage: @ 8025FE0
- push {r4-r7,lr}
- ldr r7, _08026008 @ =gBattleMons
- ldr r6, _0802600C @ =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 _08026014
- ldr r1, _08026010 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0802602E
- .align 2, 0
-_08026008: .4byte gBattleMons
-_0802600C: .4byte gBattlerTarget
-_08026010: .4byte gEnigmaBerries
-_08026014:
- 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
-_0802602E:
- ldr r1, _080260F0 @ =gPotentialItemEffectBattler
- ldr r5, _080260F4 @ =gBattlerTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0802606C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0802606C
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, _080260F8 @ =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]
-_0802606C:
- ldr r2, _080260FC @ =gBattleMons
- ldr r3, _080260F4 @ =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 _0802613C
- ldr r2, _08026100 @ =gBattleMoves
- ldr r0, _08026104 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _080260BE
- ldr r0, _08026108 @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _080260BE
- ldr r0, _080260F8 @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0802613C
-_080260BE:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _0802610C @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0802613C
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _08026108 @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _08026114
- ldr r0, _08026110 @ =gMoveResultFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0802613C
- .align 2, 0
-_080260F0: .4byte gPotentialItemEffectBattler
-_080260F4: .4byte gBattlerTarget
-_080260F8: .4byte gSpecialStatuses
-_080260FC: .4byte gBattleMons
-_08026100: .4byte gBattleMoves
-_08026104: .4byte gCurrentMove
-_08026108: .4byte gProtectStructs
-_0802610C: .4byte gBattleMoveDamage
-_08026110: .4byte gMoveResultFlags
-_08026114:
- ldr r0, _0802614C @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0802613C
- ldr r2, _08026150 @ =gMoveResultFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026154 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0802613C:
- ldr r1, _08026158 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802614C: .4byte gSpecialStatuses
-_08026150: .4byte gMoveResultFlags
-_08026154: .4byte gLastUsedItem
-_08026158: .4byte gBattlescriptCurrInstr
- thumb_func_end atk69_adjustsetdamage
-
- thumb_func_start atk6A_removeitem
-atk6A_removeitem: @ 802615C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _080261BC @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl GetBattlerForBattleScript
- ldr r5, _080261C0 @ =gActiveBattler
- strb r0, [r5]
- ldr r1, _080261C4 @ =gBattleStruct
- ldrb r4, [r5]
- lsls r0, r4, 1
- adds r0, 0xB8
- ldr r1, [r1]
- adds r1, r0
- ldr r2, _080261C8 @ =gBattleMons
- movs r3, 0x58
- adds r0, r4, 0
- muls r0, r3
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r5]
- muls r0, r3
- adds r2, 0x2E
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl BtlController_EmitSetMonData
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080261BC: .4byte gBattlescriptCurrInstr
-_080261C0: .4byte gActiveBattler
-_080261C4: .4byte gBattleStruct
-_080261C8: .4byte gBattleMons
- thumb_func_end atk6A_removeitem
-
- thumb_func_start atk6B_atknameinbuff1
-atk6B_atknameinbuff1: @ 80261CC
- ldr r1, _080261F8 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- ldr r2, _080261FC @ =gBattlerAttacker
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, _08026200 @ =gBattlerPartyIndexes
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08026204 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_080261F8: .4byte gBattleTextBuff1
-_080261FC: .4byte gBattlerAttacker
-_08026200: .4byte gBattlerPartyIndexes
-_08026204: .4byte gBattlescriptCurrInstr
- thumb_func_end atk6B_atknameinbuff1
-
thumb_func_start atk6C_drawlvlupbox
atk6C_drawlvlupbox: @ 8026208
push {r4,lr}
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 8669270af..d88145fde 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -2449,7 +2449,7 @@ _080CF2C2:
ldr r4, _080CF308 @ =gMoveToLearn
ldrh r4, [r4]
str r4, [sp]
- bl sub_8134738
+ bl ShowSelectMovePokemonSummaryScreen
ldrh r0, [r5, 0x14]
adds r0, 0x1
strh r0, [r5, 0x14]
@@ -3718,7 +3718,7 @@ _080CFDC6:
ldr r4, _080CFE2C @ =gMoveToLearn
ldrh r4, [r4]
str r4, [sp]
- bl sub_8134738
+ bl ShowSelectMovePokemonSummaryScreen
ldrh r0, [r5, 0x14]
adds r0, 0x1
strh r0, [r5, 0x14]
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 6684874bb..a7a5b264d 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -758,7 +758,7 @@ _080E4C7E:
adds r5, r4
ldrh r4, [r5]
str r4, [sp]
- bl sub_8134738
+ bl ShowSelectMovePokemonSummaryScreen
ldr r1, [r7]
movs r0, 0x1C
b _080E4ED8
diff --git a/asm/party_menu.s b/asm/party_menu.s
index e7126dfda..661dddf60 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -14645,7 +14645,7 @@ sub_8125E4C: @ 8125E4C
ldr r3, _08125E80 @ =sub_8125E84
ldrh r4, [r4, 0xE]
str r4, [sp]
- bl sub_8134738
+ bl ShowSelectMovePokemonSummaryScreen
add sp, 0x4
pop {r4}
pop {r0}
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 3385c3d5c..14577269c 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -270,8 +270,8 @@ _08134730: .4byte 0x00003204
_08134734: .4byte sub_8135C34
thumb_func_end sub_81344F8
- thumb_func_start sub_8134738
-sub_8134738: @ 8134738
+ thumb_func_start ShowSelectMovePokemonSummaryScreen
+ShowSelectMovePokemonSummaryScreen: @ 8134738
push {r4,r5,lr}
sub sp, 0x4
ldr r5, [sp, 0x10]
@@ -296,7 +296,7 @@ sub_8134738: @ 8134738
.align 2, 0
_08134764: .4byte gUnknown_203B140
_08134768: .4byte 0x00003260
- thumb_func_end sub_8134738
+ thumb_func_end ShowSelectMovePokemonSummaryScreen
thumb_func_start sub_813476C
sub_813476C: @ 813476C
diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s
index b5ef5f090..297d09e9a 100644
--- a/asm/script_pokemon_util_80BF8FC.s
+++ b/asm/script_pokemon_util_80BF8FC.s
@@ -115,7 +115,7 @@ sub_80BF9BC: @ 80BF9BC
ldr r3, _080BF9FC @ =CB2_ReturnToField
movs r4, 0
str r4, [sp]
- bl sub_8134738
+ bl ShowSelectMovePokemonSummaryScreen
movs r0, 0x3
bl sub_8138B38
ldr r1, _080BFA00 @ =gFieldCallback
diff --git a/include/battle.h b/include/battle.h
index 144d0a3bb..8abb95333 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -264,7 +264,7 @@ struct DisableStruct
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
- /*0x18*/ u8 truantSwitchInHack : 1;
+ /*0x18*/ u8 truantSwitchInHack : 1; // unused?
/*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 mimickedMoves : 4;
/*0x19*/ u8 rechargeTimer;
@@ -941,5 +941,6 @@ extern u16 gExpShareExp;
extern u8 gLeveledUpInBattle;
extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT];
extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
+extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_main.h b/include/battle_main.h
index 86de8f39a..27aae9970 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -75,7 +75,7 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
-void sub_803BDA0(u8 bank);
+void sub_8013F6C(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
@@ -98,5 +98,6 @@ extern const u8 gStatusConditionString_LoveJpn[8];
extern const u8 * const gStatusConditionStringsTable[7][2];
extern const u8 gTypeEffectiveness[336];
+extern const struct TrainerMoney gTrainerMoneyTable[];
#endif // GUARD_BATTLE_MAIN_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index c75a029c2..8e5274844 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -56,8 +56,8 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
u8 GetBattlerTurnOrderNum(u8 bank);
void SetMoveEffect(bool8 primary, u8 certain);
-void BattleDestroyYesNoCursorAt(u8 cursorPosition);
-void BattleCreateYesNoCursorAt(u8 cursorPosition);
+void BattleDestroyYesNoCursorAt(void);
+void BattleCreateYesNoCursorAt(void);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 bank);
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index 165b580de..769c4a84a 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -224,5 +224,6 @@ extern const u8 BattleScript_IgnoresWhileAsleep[];
extern const u8 BattleScript_IgnoresAndHitsItself[];
extern const u8 BattleScript_MoveEffectRecoil[];
extern const u8 BattleScript_FlushMessageBox[];
+extern const u8 BattleScript_SpikesOnFaintedBattler[];
#endif // GUARD_BATTLE_SCRIPTS_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
new file mode 100644
index 000000000..1aad499a1
--- /dev/null
+++ b/include/constants/trainers.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_TRAINERS_H
+#define GUARD_TRAINERS_H
+
+#define F_TRAINER_FEMALE (1 << 7)
+
+// All trainer parties specify the IV, level, and species for each Pokémon in the
+// party. Some trainer parties also specify held items and custom moves for each
+// Pokémon.
+#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0)
+#define F_TRAINER_PARTY_HELD_ITEM (1 << 1)
+
+#endif // GUARD_TRAINERS_H
diff --git a/include/overworld.h b/include/overworld.h
index 7c1f34e41..ea877730e 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -96,6 +96,7 @@ void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y);
void ResetInitialPlayerAvatarState(void);
void sub_8055D40(u16 mapDataId);
void CleanupOverworldWindowsAndTilemaps(void);
+u32 sub_8054C04(void);
extern u8 gUnknown_2031DD8;
extern u8 gUnknown_2036E28;
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
new file mode 100644
index 000000000..7b250b647
--- /dev/null
+++ b/include/pokemon_summary_screen.h
@@ -0,0 +1,36 @@
+#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
+#define GUARD_POKEMON_SUMMARY_SCREEN_H
+
+#include "main.h"
+
+extern u8 gLastViewedMonIndex;
+
+extern const u8 *const gMoveDescriptionPointers[];
+extern const u8 *const gNatureNamePointers[];
+
+void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
+void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
+void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
+u8 sub_8138B2C(void);
+void SummaryScreen_SetUnknownTaskId(u8 a0);
+void SummaryScreen_DestroyUnknownTask(void);
+
+// The Pokemon Summary Screen can operate in different modes. Certain features,
+// such as move re-ordering, are available in the different modes.
+enum PokemonSummaryScreenMode
+{
+ PSS_MODE_NORMAL,
+ PSS_MODE_UNK1,
+ PSS_MODE_BOX,
+ PSS_MODE_SELECT_MOVE,
+};
+
+enum PokemonSummaryScreenPage
+{
+ PSS_PAGE_INFO,
+ PSS_PAGE_SKILLS,
+ PSS_PAGE_BATTLE_MOVES,
+ PSS_PAGE_CONTEST_MOVES,
+};
+
+#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/strings.h b/include/strings.h
index 2b914dfc8..2da65d3e0 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -223,4 +223,7 @@ extern const u8 gText_LinkStandby[];
extern const u8 gUnknown_83FE725[];
extern const u8 gText_WhatWillPkmnDo[];
+// battle_script_commands
+extern const u8 gText_BattleYesNoChoice[];
+
#endif //GUARD_STRINGS_H
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index aa3ef9504..7816f4f7e 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -17,7 +17,9 @@
#include "m4a.h"
#include "mail.h"
#include "event_data.h"
+#include "strings.h"
#include "pokemon_storage_system.h"
+#include "pokemon_summary_screen.h"
#include "task.h"
#include "naming_screen.h"
#include "overworld.h"
@@ -43,6 +45,7 @@
#include "constants/moves.h"
#include "constants/abilities.h"
#include "constants/pokemon.h"
+#include "constants/trainers.h"
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
@@ -4502,3 +4505,1233 @@ void sub_8024398(u8 arg0)
BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
+
+void atk50_openpartyscreen(void)
+{
+ u32 flags;
+ u8 hitmarkerFaintBits;
+ u8 battlerId;
+ const u8 *jumpPtr;
+
+ battlerId = 0;
+ flags = 0;
+ jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
+ if (gBattlescriptCurrInstr[1] == 5)
+ {
+ if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ {
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler)
+ {
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
+ {
+ if (HasNoMonsToSwitch(gActiveBattler, 6, 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(6);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ else
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ u8 flag40_0, flag40_1, flag40_2, flag40_3;
+
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+ if (gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 0;
+ if (HasNoMonsToSwitch(0, 6, 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[2]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ flags |= 1;
+ }
+ }
+ if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
+ {
+ gActiveBattler = 2;
+ if (HasNoMonsToSwitch(2, 6, 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[0]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else if (!(flags & 1))
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ if (gBitTable[1] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 1;
+ if (HasNoMonsToSwitch(1, 6, 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[3]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ flags |= 2;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
+ {
+ gActiveBattler = 3;
+ if (HasNoMonsToSwitch(3, 6, 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[1]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else if (!(flags & 2))
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ flag40_0 = gSpecialStatuses[0].flag40;
+ if (!flag40_0)
+ {
+ flag40_2 = gSpecialStatuses[2].flag40;
+ if (!flag40_2 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBattlerFlags & gBitTable[0])
+ gActiveBattler = 2;
+ else
+ gActiveBattler = 0;
+
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+
+ }
+ flag40_1 = gSpecialStatuses[1].flag40;
+ if (!flag40_1)
+ {
+ flag40_3 = gSpecialStatuses[3].flag40;
+ if (!flag40_3 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBattlerFlags & gBitTable[1])
+ gActiveBattler = 3;
+ else
+ gActiveBattler = 1;
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (gBattlescriptCurrInstr[1] == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+ if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 2;
+ if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[0]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
+ {
+ gActiveBattler = 3;
+ if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], 6))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8024398(gBattleStruct->monToSwitchIntoId[1]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+
+ gBattlerFainted = 0;
+ while (1)
+ {
+ if (gBitTable[gBattlerFainted] & hitmarkerFaintBits)
+ break;
+ if (gBattlerFainted >= gBattlersCount)
+ break;
+ ++gBattlerFainted;
+ }
+
+ if (gBattlerFainted == gBattlersCount)
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ if (gBattlescriptCurrInstr[1] & 0x80)
+ hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function.
+ else
+ hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON;
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
+ if (gSpecialStatuses[battlerId].flag40)
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (HasNoMonsToSwitch(battlerId, 6, 6))
+ {
+ gActiveBattler = battlerId;
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ gActiveBattler = battlerId;
+ *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->field_60[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 6;
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT && gBattleResults.playerSwitchesCounter < 0xFF)
+ ++gBattleResults.playerSwitchesCounter;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler)
+ {
+ if (gActiveBattler != battlerId)
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ }
+ else
+ {
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ gActiveBattler ^= BIT_FLANK;
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ }
+}
+
+void atk51_switchhandleorder(void)
+{
+ s32 i;
+
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ switch (gBattlescriptCurrInstr[2])
+ {
+ case 0:
+ for (i = 0; i < gBattlersCount; ++i)
+ if (gBattleBufferB[i][0] == 0x22)
+ *(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1];
+ break;
+ case 1:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ sub_8013F6C(gActiveBattler);
+ break;
+ case 2:
+ gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8 *)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ }
+ else
+ {
+ sub_8013F6C(gActiveBattler);
+ }
+ PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species)
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBattler, gBattleBufferB[gActiveBattler][1])
+ break;
+ }
+ gBattlescriptCurrInstr += 3;
+ }
+}
+
+void atk52_switchineffects(void)
+{
+ s32 i;
+
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ sub_80174B8(gActiveBattler);
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ gSpecialStatuses[gActiveBattler].flag40 = 0;
+ if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED)
+ && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES)
+ && !IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_FLYING)
+ && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE)
+ {
+ u8 spikesDmg;
+
+ gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED;
+ spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleScripting.battler = gActiveBattler;
+ BattleScriptPushCursor();
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
+ gBattlescriptCurrInstr = BattleScript_SpikesOnTarget;
+ else if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
+ gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker;
+ else
+ gBattlescriptCurrInstr = BattleScript_SpikesOnFaintedBattler;
+ }
+ else
+ {
+ if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT)
+ gDisableStructs[gActiveBattler].truantCounter = 1;
+ if (!AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0)
+ && !ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE))
+ {
+ gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+
+ for (i = 0; i < gBattlersCount; ++i)
+ {
+ if (gBattlerByTurnOrder[i] == gActiveBattler)
+ gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER;
+ }
+ for (i = 0; i < gBattlersCount; ++i)
+ {
+ u16 *hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(i)];
+ *hpOnSwitchout = gBattleMons[i].hp;
+ }
+
+ if (gBattlescriptCurrInstr[1] == 5)
+ {
+ u32 hitmarkerFaintBits = gHitMarker >> 0x1C;
+
+ ++gBattlerFainted;
+ while (TRUE)
+ {
+ if (hitmarkerFaintBits & gBitTable[gBattlerFainted] && !(gAbsentBattlerFlags & gBitTable[gBattlerFainted]))
+ break;
+ if (gBattlerFainted >= gBattlersCount)
+ break;
+ ++gBattlerFainted;
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ }
+}
+
+void atk53_trainerslidein(void)
+{
+ if (!gBattlescriptCurrInstr[1])
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ else
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ BtlController_EmitTrainerSlide(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk54_playse(void)
+{
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 3;
+}
+
+void atk55_fanfare(void)
+{
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitPlayFanfare(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 3;
+}
+
+void atk56_playfaintcry(void)
+{
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitFaintingCry(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk57(void)
+{
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ BtlController_EmitCmd55(0, gBattleOutcome);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 1;
+}
+
+void atk58_returntoball(void)
+{
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitReturnMonToBall(0, 1);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk59_handlelearnnewmove(void)
+{
+ const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
+
+ while (ret == 0xFFFE)
+ ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
+ if (ret == 0)
+ {
+ gBattlescriptCurrInstr = jumpPtr2;
+ }
+ else if (ret == 0xFFFF)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else
+ {
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
+ {
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
+ {
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
+ }
+ }
+ gBattlescriptCurrInstr = jumpPtr1;
+ }
+}
+
+void atk5A_yesnoboxlearnmove(void)
+{
+ gActiveBattler = 0;
+
+ switch (gBattleScripting.learnMoveState)
+ {
+ case 0:
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE);
+ ++gBattleScripting.learnMoveState;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ break;
+ case 1:
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+ ++gBattleScripting.learnMoveState;
+ }
+ else
+ {
+ gBattleScripting.learnMoveState = 4;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ gBattleScripting.learnMoveState = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ ++gBattleScripting.learnMoveState;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
+ {
+ u8 movePosition = sub_8138B2C();
+
+ if (movePosition == 4)
+ {
+ gBattleScripting.learnMoveState = 4;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
+
+ if (IsHMMove2(moveId))
+ {
+ PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBattler);
+ gBattleScripting.learnMoveState = 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId)
+ RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
+ SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[0].mimickedMoves & gBitTable[movePosition]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[0], movePosition);
+ SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[2].mimickedMoves & gBitTable[movePosition]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[2], movePosition);
+ SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition);
+ }
+ }
+ }
+ }
+ break;
+ case 4:
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ gBattlescriptCurrInstr += 5;
+ break;
+ case 5:
+ if (!gBattleControllerExecFlags)
+ {
+ gBattleScripting.learnMoveState = 2;
+ }
+ break;
+ }
+}
+
+void atk5B_yesnoboxstoplearningmove(void)
+{
+ switch (gBattleScripting.learnMoveState)
+ {
+ case 0:
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE);
+ ++gBattleScripting.learnMoveState;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ break;
+ case 1:
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+
+ if (gBattleCommunication[1] != 0)
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ HandleBattleWindow(0x17, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ }
+ break;
+ }
+}
+
+void atk5C_hitanimation(void)
+{
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ {
+ gBattlescriptCurrInstr += 2;
+ }
+ else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)
+ || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
+ || gDisableStructs[gActiveBattler].substituteHP == 0)
+ {
+ BtlController_EmitHitAnimation(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+#ifdef NONMATCHING
+void atk5D_getmoneyreward(void)
+{
+ u32 i = 0;
+ u32 lastMonLevel = 0;
+ u32 moneyReward = 0;
+ u32 value;
+
+ // The whole function is using wrong registers.
+ if (gBattleOutcome == B_OUTCOME_WON)
+ {
+ if (gTrainerBattleOpponent_A == 0x400)
+ {
+ moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier;
+ }
+ else
+ {
+ switch (gTrainers[gTrainerBattleOpponent_A].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves;
+
+ lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
+ {
+ const struct TrainerMonNoItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves;
+
+ lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves;
+
+ lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves;
+
+ lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl;
+ }
+ break;
+ }
+ for (; gTrainerMoneyTable[i].classId != 0xFF; ++i)
+ {
+ if (gTrainerMoneyTable[i].classId == gTrainers[gTrainerBattleOpponent_A].trainerClass)
+ break;
+ }
+ moneyReward = 4 * lastMonLevel;
+ moneyReward *= gBattleStruct->moneyMultiplier;
+ value = gTrainerMoneyTable[i].value;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ moneyReward *= (value << 1);
+ else
+ moneyReward *= value;
+ }
+ AddMoney(&gSaveBlock1Ptr->money, moneyReward);
+ }
+ else
+ {
+ moneyReward = sub_8054C04();
+ }
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward);
+ if (moneyReward)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+}
+#else
+NAKED
+void atk5D_getmoneyreward(void)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r0, _080258F0 @ =gBattleOutcome\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _080258C0\n\
+ b _080259FA\n\
+ _080258C0:\n\
+ ldr r0, _080258F4 @ =gTrainerBattleOpponent_A\n\
+ ldrh r2, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 3\n\
+ cmp r2, r1\n\
+ bne _08025904\n\
+ ldr r0, _080258F8 @ =gBattleResources\n\
+ ldr r0, [r0]\n\
+ ldr r0, [r0]\n\
+ adds r0, 0x94\n\
+ ldrb r2, [r0]\n\
+ ldr r0, _080258FC @ =gBattleStruct\n\
+ ldr r0, [r0]\n\
+ adds r0, 0x4A\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r4, r2, 0\n\
+ muls r4, r0\n\
+ ldr r0, _08025900 @ =gSaveBlock1Ptr\n\
+ mov r8, r0\n\
+ b _080259E8\n\
+ .align 2, 0\n\
+ _080258F0: .4byte gBattleOutcome\n\
+ _080258F4: .4byte gTrainerBattleOpponent_A\n\
+ _080258F8: .4byte gBattleResources\n\
+ _080258FC: .4byte gBattleStruct\n\
+ _08025900: .4byte gSaveBlock1Ptr\n\
+ _08025904:\n\
+ ldr r2, _08025920 @ =gTrainers\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r3, r0, 3\n\
+ adds r4, r3, r2\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ beq _0802595A\n\
+ cmp r1, 0x1\n\
+ bgt _08025924\n\
+ cmp r1, 0\n\
+ beq _0802592E\n\
+ b _08025970\n\
+ .align 2, 0\n\
+ _08025920: .4byte gTrainers\n\
+ _08025924:\n\
+ cmp r1, 0x2\n\
+ beq _08025944\n\
+ cmp r1, 0x3\n\
+ beq _0802595A\n\
+ b _08025970\n\
+ _0802592E:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _0802596E\n\
+ _08025944:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _0802596E\n\
+ _0802595A:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ subs r0, 0x10\n\
+ _0802596E:\n\
+ ldrb r5, [r0, 0x2]\n\
+ _08025970:\n\
+ ldr r0, _080259CC @ =gTrainerMoneyTable\n\
+ lsls r1, r6, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r1, [r3]\n\
+ ldr r7, _080259D0 @ =gBattleStruct\n\
+ mov r12, r0\n\
+ lsls r4, r5, 2\n\
+ ldr r5, _080259D4 @ =gBattleTypeFlags\n\
+ ldr r0, _080259D8 @ =gSaveBlock1Ptr\n\
+ mov r8, r0\n\
+ cmp r1, 0xFF\n\
+ beq _080259AA\n\
+ ldr r2, _080259DC @ =gTrainers\n\
+ ldr r0, _080259E0 @ =gTrainerBattleOpponent_A\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ ldrb r2, [r0, 0x1]\n\
+ adds r1, r3, 0\n\
+ _0802599A:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r2\n\
+ beq _080259AA\n\
+ adds r1, 0x4\n\
+ adds r6, 0x1\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFF\n\
+ bne _0802599A\n\
+ _080259AA:\n\
+ ldr r0, [r7]\n\
+ adds r0, 0x4A\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0\n\
+ muls r3, r0\n\
+ lsls r0, r6, 2\n\
+ add r0, r12\n\
+ ldrb r2, [r0, 0x1]\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080259E4\n\
+ lsls r0, r2, 1\n\
+ adds r4, r3, 0\n\
+ muls r4, r0\n\
+ b _080259E8\n\
+ .align 2, 0\n\
+ _080259CC: .4byte gTrainerMoneyTable\n\
+ _080259D0: .4byte gBattleStruct\n\
+ _080259D4: .4byte gBattleTypeFlags\n\
+ _080259D8: .4byte gSaveBlock1Ptr\n\
+ _080259DC: .4byte gTrainers\n\
+ _080259E0: .4byte gTrainerBattleOpponent_A\n\
+ _080259E4:\n\
+ adds r4, r3, 0\n\
+ muls r4, r2\n\
+ _080259E8:\n\
+ mov r1, r8\n\
+ ldr r0, [r1]\n\
+ movs r1, 0xA4\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ adds r1, r4, 0\n\
+ bl AddMoney\n\
+ b _08025A00\n\
+ _080259FA:\n\
+ bl sub_8054C04\n\
+ adds r4, r0, 0\n\
+ _08025A00:\n\
+ ldr r1, _08025A40 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x2]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x3]\n\
+ strb r4, [r1, 0x4]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r4\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 16\n\
+ ands r0, r4\n\
+ lsrs r0, 16\n\
+ strb r0, [r1, 0x6]\n\
+ lsrs r0, r4, 24\n\
+ strb r0, [r1, 0x7]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x8]\n\
+ cmp r4, 0\n\
+ beq _08025A48\n\
+ ldr r1, _08025A44 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08025A62\n\
+ .align 2, 0\n\
+ _08025A40: .4byte gBattleTextBuff1\n\
+ _08025A44: .4byte gBattlescriptCurrInstr\n\
+ _08025A48:\n\
+ ldr r3, _08025A6C @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ _08025A62:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+ _08025A6C: .4byte gBattlescriptCurrInstr\n\
+ ");
+}
+#endif
+
+void atk5E(void)
+{
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ ++gBattleCommunication[0];
+ break;
+ case 1:
+ if (!gBattleControllerExecFlags)
+ {
+ s32 i;
+ struct BattlePokemon *bufferPoke = (struct BattlePokemon *) &gBattleBufferB[gActiveBattler][4];
+
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ {
+ gBattleMons[gActiveBattler].moves[i] = bufferPoke->moves[i];
+ gBattleMons[gActiveBattler].pp[i] = bufferPoke->pp[i];
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+
+void atk5F_swapattackerwithtarget(void)
+{
+ gActiveBattler = gBattlerAttacker;
+ gBattlerAttacker = gBattlerTarget;
+ gBattlerTarget = gActiveBattler;
+ if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET)
+ gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET);
+ else
+ gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET;
+ ++gBattlescriptCurrInstr;
+}
+
+void atk60_incrementgamestat(void)
+{
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ IncrementGameStat(gBattlescriptCurrInstr[1]);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk61_drawpartystatussummary(void)
+{
+ s32 i;
+ struct Pokemon *party;
+ struct HpAndStatus hpStatuses[PARTY_SIZE];
+
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < PARTY_SIZE; ++i)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatuses[i].hp = 0xFFFF;
+ hpStatuses[i].status = 0;
+ }
+ else
+ {
+ hpStatuses[i].hp = GetMonData(&party[i], MON_DATA_HP);
+ hpStatuses[i].status = GetMonData(&party[i], MON_DATA_STATUS);
+ }
+ }
+ BtlController_EmitDrawPartyStatusSummary(0, hpStatuses, 1);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+void atk62_hidepartystatussummary(void)
+{
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitHidePartyStatusSummary(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk63_jumptocalledmove(void)
+{
+ if (gBattlescriptCurrInstr[1])
+ gCurrentMove = gCalledMove;
+ else
+ gChosenMove = gCurrentMove = gCalledMove;
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+}
+
+void atk64_statusanimation(void)
+{
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+void atk65_status2animation(void)
+{
+ u32 wantedToAnimate;
+
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ wantedToAnimate = T1_READ_32(gBattlescriptCurrInstr + 2);
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+void atk66_chosenstatusanimation(void)
+{
+ u32 wantedStatus;
+
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ wantedStatus = T1_READ_32(gBattlescriptCurrInstr + 3);
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ BtlController_EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+void atk67_yesnobox(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE);
+ ++gBattleCommunication[0];
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ break;
+ case 1:
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateYesNoCursorAt();
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ PlaySE(SE_SELECT);
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ ++gBattlescriptCurrInstr;
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ ++gBattlescriptCurrInstr;
+ }
+ break;
+ }
+}
+
+void atk68_cancelallactions(void)
+{
+ s32 i;
+
+ for (i = 0; i < gBattlersCount; ++i)
+ gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER;
+ ++gBattlescriptCurrInstr;
+}
+
+// The same as 0x7, except there's no random damage multiplier.
+void atk69_adjustsetdamage(void)
+{
+ u8 holdEffect, param;
+
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
+ }
+ gPotentialItemEffectBattler = gBattlerTarget;
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
+ {
+ RecordItemEffectBattle(gBattlerTarget, holdEffect);
+ gSpecialStatuses[gBattlerTarget].focusBanded = 1;
+ }
+ if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
+ && (gBattleMoves[gCurrentMove].effect == EFFECT_FALSE_SWIPE || gProtectStructs[gBattlerTarget].endured || gSpecialStatuses[gBattlerTarget].focusBanded)
+ && gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
+ {
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ if (gProtectStructs[gBattlerTarget].endured)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
+ }
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
+ {
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ }
+ }
+ ++gBattlescriptCurrInstr;
+}
+
+void atk6A_removeitem(void)
+{
+ u16 *usedHeldItem;
+
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
+ *usedHeldItem = gBattleMons[gActiveBattler].item;
+ gBattleMons[gActiveBattler].item = ITEM_NONE;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk6B_atknameinbuff1(void)
+{
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
+ ++gBattlescriptCurrInstr;
+}