summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_7.s34
-rw-r--r--asm/battle_anim_80A5C6C.s (renamed from asm/rom_80A5C6C.s)0
-rw-r--r--asm/battle_anim_80A9C70.s2
-rw-r--r--asm/battle_anim_80FE840.s6
-rw-r--r--asm/battle_controller_linkopponent.s24
-rw-r--r--asm/battle_controller_linkpartner.s24
-rw-r--r--asm/battle_controller_opponent.s40
-rw-r--r--asm/battle_controller_player.s1822
-rw-r--r--asm/battle_controller_player_partner.s34
-rw-r--r--asm/battle_controller_recorded_opponent.s34
-rw-r--r--asm/battle_controller_recorded_player.s36
-rw-r--r--asm/battle_controller_safari.s14
-rw-r--r--asm/battle_controller_wally.s26
-rw-r--r--asm/battle_link_817C95C.s103
-rwxr-xr-xasm/pokeball.s6
-rw-r--r--asm/pokemon_animation.s94
-rw-r--r--include/battle.h84
-rw-r--r--include/battle_2.h45
-rw-r--r--include/battle_anim.h21
-rw-r--r--include/battle_controllers.h55
-rw-r--r--include/battle_interface.h8
-rw-r--r--include/battle_link_817C95C.h11
-rw-r--r--include/link.h1
-rw-r--r--include/pokeball.h8
-rw-r--r--ld_script.txt3
-rw-r--r--src/battle_2.c5
-rw-r--r--src/battle_ai_switch_items.c18
-rw-r--r--src/battle_anim.c20
-rw-r--r--src/battle_controller_player.c1114
-rw-r--r--src/battle_controllers.c94
-rw-r--r--src/battle_interface.c53
-rw-r--r--src/battle_script_commands.c16
32 files changed, 1300 insertions, 2555 deletions
diff --git a/asm/battle_7.s b/asm/battle_7.s
index 394cb9571..d86c68dfc 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -67,8 +67,8 @@ _0805D192:
.pool
thumb_func_end FreeBattleSpritesData
- thumb_func_start sub_805D19C
-sub_805D19C: @ 805D19C
+ thumb_func_start ChooseMoveAndTargetInBattlePalace
+ChooseMoveAndTargetInBattlePalace: @ 805D19C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -448,7 +448,7 @@ _0805D496:
pop {r1}
bx r1
.pool
- thumb_func_end sub_805D19C
+ thumb_func_end ChooseMoveAndTargetInBattlePalace
thumb_func_start sub_805D4A8
sub_805D4A8: @ 805D4A8
@@ -834,8 +834,8 @@ _0805D800:
.pool
thumb_func_end sub_805D7EC
- thumb_func_start move_anim_start_t2_for_situation
-move_anim_start_t2_for_situation: @ 805D808
+ thumb_func_start DoStatusAnimation
+DoStatusAnimation: @ 805D808
push {r4-r6,lr}
adds r4, r1, 0
lsls r0, 24
@@ -962,10 +962,10 @@ _0805D902:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end move_anim_start_t2_for_situation
+ thumb_func_end DoStatusAnimation
- thumb_func_start move_anim_start_t3
-move_anim_start_t3: @ 805D908
+ thumb_func_start DoBattleAnimationFromTable
+DoBattleAnimationFromTable: @ 805D908
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1070,7 +1070,7 @@ _0805D9CC:
ldr r0, =gUnknown_082C9320
adds r1, r5, 0
movs r2, 0
- bl DoBattleAnim
+ bl LaunchBattleAnimation
ldr r0, =task0A_0803415C
movs r1, 0xA
bl CreateTask
@@ -1105,7 +1105,7 @@ _0805DA1E:
pop {r1}
bx r1
.pool
- thumb_func_end move_anim_start_t3
+ thumb_func_end DoBattleAnimationFromTable
thumb_func_start task0A_0803415C
task0A_0803415C: @ 805DA48
@@ -1172,8 +1172,8 @@ _0805DABE:
bx r1
thumb_func_end sub_805DAA0
- thumb_func_start move_anim_start_t4
-move_anim_start_t4: @ 805DAC4
+ thumb_func_start DoSpecialBattleAnimation
+DoSpecialBattleAnimation: @ 805DAC4
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
@@ -1187,7 +1187,7 @@ move_anim_start_t4: @ 805DAC4
ldr r0, =gUnknown_082C937C
adds r1, r3, 0
movs r2, 0
- bl DoBattleAnim
+ bl LaunchBattleAnimation
ldr r0, =task0A_08034248
movs r1, 0xA
bl CreateTask
@@ -1216,7 +1216,7 @@ move_anim_start_t4: @ 805DAC4
pop {r0}
bx r0
.pool
- thumb_func_end move_anim_start_t4
+ thumb_func_end DoSpecialBattleAnimation
thumb_func_start task0A_08034248
task0A_08034248: @ 805DB34
@@ -2229,8 +2229,8 @@ _0805E3EA:
.pool
thumb_func_end sub_805E394
- thumb_func_start sub_805E408
-sub_805E408: @ 805E408
+ thumb_func_start SetBattleSpriteInvisibilityBitToSpriteInvisibility
+SetBattleSpriteInvisibilityBitToSpriteInvisibility: @ 805E408
lsls r0, 24
lsrs r0, 24
ldr r1, =gBattleSpritesDataPtr
@@ -2258,7 +2258,7 @@ sub_805E408: @ 805E408
strb r0, [r3]
bx lr
.pool
- thumb_func_end sub_805E408
+ thumb_func_end SetBattleSpriteInvisibilityBitToSpriteInvisibility
thumb_func_start sub_805E448
sub_805E448: @ 805E448
diff --git a/asm/rom_80A5C6C.s b/asm/battle_anim_80A5C6C.s
index fa05e36ce..fa05e36ce 100644
--- a/asm/rom_80A5C6C.s
+++ b/asm/battle_anim_80A5C6C.s
diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s
index 9b2939673..681802e12 100644
--- a/asm/battle_anim_80A9C70.s
+++ b/asm/battle_anim_80A9C70.s
@@ -869,7 +869,7 @@ move_anim_start_t2: @ 80AA364
strb r4, [r0]
ldr r0, =gUnknown_082C92FC
movs r2, 0
- bl DoBattleAnim
+ bl LaunchBattleAnimation
ldr r0, =task0A_80788BC
movs r1, 0xA
bl CreateTask
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index dc927cacc..315f884cf 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -50443,8 +50443,8 @@ _081181CA:
bx r1
thumb_func_end sub_8118140
- thumb_func_start battle_intro_launch
-battle_intro_launch: @ 81181D4
+ thumb_func_start HandleIntroSlide
+HandleIntroSlide: @ 81181D4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -50521,7 +50521,7 @@ _08118258:
pop {r0}
bx r0
.pool
- thumb_func_end battle_intro_launch
+ thumb_func_end HandleIntroSlide
thumb_func_start sub_811828C
sub_811828C: @ 811828C
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index 1cc9191c0..1b4a01f2a 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -1163,7 +1163,7 @@ sub_8064D60: @ 8064D60
adds r1, r3, 0
adds r2, r3, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08064DA0:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -1312,7 +1312,7 @@ sub_8064E50: @ 8064E50
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldrb r0, [r5]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3970,7 +3970,7 @@ _080666E4:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_080666FE:
ldr r0, [r6]
ldrb r1, [r5]
@@ -3995,7 +3995,7 @@ _08066712:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x2
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4595,7 +4595,7 @@ LinkOpponentHandleFaintAnimation: @ 8066C40
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08066C74:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4890,7 +4890,7 @@ _08066ED2:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08066EF4:
ldr r0, [r7]
ldrb r1, [r6]
@@ -4948,7 +4948,7 @@ _08066F32:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -5285,7 +5285,7 @@ LinkOpponentHandleStatusAnimation: @ 8067214
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5481,7 +5481,7 @@ _080673B0:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -5615,7 +5615,7 @@ LinkOpponentHandleIntroSlide: @ 80674D4
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -6092,7 +6092,7 @@ LinkOpponentHandleSpriteInvisibility: @ 80678D0
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_08067916:
bl LinkOpponentBufferExecCompleted
pop {r4}
@@ -6129,7 +6129,7 @@ LinkOpponentHandleBattleAnimation: @ 8067930
adds r0, r2, 0
adds r1, r2, 0
adds r3, r6, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _08067980
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 54b3b5f8a..e8581c396 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -736,7 +736,7 @@ sub_814B4E0: @ 814B4E0
cmp r1, r0
bne _0814B532
adds r0, r3, 0
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
@@ -751,7 +751,7 @@ sub_814B4E0: @ 814B4E0
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0814B526:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -3554,7 +3554,7 @@ _0814CECC:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0814CEE6:
ldr r0, [r6]
ldrb r1, [r5]
@@ -3579,7 +3579,7 @@ _0814CEFA:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x1
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3893,7 +3893,7 @@ sub_814D19C: @ 814D19C
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0814D1D0:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4216,7 +4216,7 @@ _0814D46E:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0814D490:
ldr r0, [r7]
ldrb r1, [r6]
@@ -4274,7 +4274,7 @@ _0814D4CE:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -4611,7 +4611,7 @@ sub_814D7B0: @ 814D7B0
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4807,7 +4807,7 @@ _0814D94C:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -4942,7 +4942,7 @@ dp01t_2E_4_battle_intro: @ 814DA74
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -5503,7 +5503,7 @@ sub_814DF40: @ 814DF40
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_0814DF86:
bl LinkPartnerBufferExecCompleted
pop {r4}
@@ -5540,7 +5540,7 @@ sub_814DFA0: @ 814DFA0
adds r0, r2, 0
adds r1, r2, 0
adds r3, r6, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _0814DFF0
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index d4df7ea94..b627404c8 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -1256,7 +1256,7 @@ sub_805FC10: @ 805FC10
adds r1, r3, 0
adds r2, r3, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0805FC50:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -1405,7 +1405,7 @@ sub_805FD00: @ 805FD00
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldrb r0, [r5]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4131,7 +4131,7 @@ _0806162C:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08061646:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4156,7 +4156,7 @@ _0806165A:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x2
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4746,7 +4746,7 @@ OpponentHandleFaintAnimation: @ 8061B9C
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08061BD0:
ldr r0, [r6]
ldrb r1, [r5]
@@ -5029,7 +5029,7 @@ _08061E12:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08061E34:
ldr r0, [r7]
ldrb r1, [r6]
@@ -5087,7 +5087,7 @@ _08061E72:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -5218,14 +5218,14 @@ OpponentHandleChooseMove: @ 8061FB8
ands r0, r2
cmp r0, 0
beq _08061FE4
- bl sub_805D19C
+ bl ChooseMoveAndTargetInBattlePalace
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
_08061FD6:
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
_08061FDA:
bl OpponentBufferExecCompleted
b _08062156
@@ -5329,7 +5329,7 @@ _0806209C:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _08061FDA
.pool
_080620C4:
@@ -5360,7 +5360,7 @@ _080620C6:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _08062152
.pool
_08062108:
@@ -5383,7 +5383,7 @@ _08062108:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _08062152
.pool
_0806213C:
@@ -5395,7 +5395,7 @@ _0806213C:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
_08062152:
bl OpponentBufferExecCompleted
_08062156:
@@ -5417,7 +5417,7 @@ OpponentHandleOpenBag: @ 806215C
adds r0, 0xC0
ldrb r1, [r0]
movs r0, 0x1
- bl EmitCmd35
+ bl EmitOneReturnValue
bl OpponentBufferExecCompleted
pop {r0}
bx r0
@@ -5532,7 +5532,7 @@ _0806225A:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl EmitCmd34
+ bl EmitChosenMonReturnValue
bl OpponentBufferExecCompleted
pop {r4-r7}
pop {r0}
@@ -5734,7 +5734,7 @@ OpponentHandleStatusAnimation: @ 8062408
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5930,7 +5930,7 @@ _080625A4:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -6064,7 +6064,7 @@ OpponentHandleIntroSlide: @ 80626C8
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -6546,7 +6546,7 @@ OpponentHandleSpriteInvisibility: @ 8062AD0
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_08062B16:
bl OpponentBufferExecCompleted
pop {r4}
@@ -6582,7 +6582,7 @@ OpponentHandleBattleAnimation: @ 8062B30
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _08062B7C
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
deleted file mode 100644
index efad0fb13..000000000
--- a/asm/battle_controller_player.s
+++ /dev/null
@@ -1,1822 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start sub_805C114
-sub_805C114: @ 805C114
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805C13E
- ldr r0, =gBattle_BG0_X
- strh r1, [r0]
- ldr r1, =gBattle_BG0_Y
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gBattleBankFunc
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, =HandleInputChooseMove
- str r1, [r0]
-_0805C13E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_805C114
-
- thumb_func_start sub_805C158
-sub_805C158: @ 805C158
- push {lr}
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r1, r0
- movs r0, 0xA6
- lsls r0, 2
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _0805C194
- ldr r1, =gBattlePalaceMoveSelectionRngValue
- ldr r0, =gRngValue
- ldr r0, [r0]
- str r0, [r1]
- bl sub_805D19C
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r1, 0xA
- bl EmitChoiceReturnValue
- bl PlayerBufferExecCompleted
-_0805C194:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_805C158
-
- thumb_func_start PlayerHandleChooseMove
-PlayerHandleChooseMove: @ 805C1A8
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- beq _0805C1EC
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA6
- lsls r1, 2
- adds r0, r1
- movs r1, 0x8
- strb r1, [r0]
- ldr r1, =gBattleBankFunc
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_805C158
- b _0805C1FC
- .pool
-_0805C1EC:
- bl sub_805C210
- ldr r1, =gBattleBankFunc
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_805C114
-_0805C1FC:
- str r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleChooseMove
-
- thumb_func_start sub_805C210
-sub_805C210: @ 805C210
- push {lr}
- bl MoveSelectionDisplayMoveNames
- ldr r1, =gMultiUsePlayerCursor
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, =gMoveSelectionCursor
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl MoveSelectionCreateCursorAt
- bl MoveSelectionDisplayPpString
- bl MoveSelectionDisplayPpNumber
- bl MoveSelectionDisplayMoveType
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_805C210
-
- thumb_func_start PlayerHandleOpenBag
-PlayerHandleOpenBag: @ 805C248
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gBattleBankFunc
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_80598A4
- str r1, [r0]
- ldr r1, =gBankInMenu
- ldrb r0, [r2]
- strb r0, [r1]
- movs r3, 0
- ldr r5, =gUnknown_0203CF00
- ldr r4, =gBattleBufferA
-_0805C276:
- adds r0, r3, r5
- ldrb r1, [r2]
- lsls r1, 9
- adds r1, 0x1
- adds r1, r3, r1
- adds r1, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0805C276
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleOpenBag
-
- thumb_func_start PlayerHandleChoosePokemon
-PlayerHandleChoosePokemon: @ 805C2AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r3, 0
- ldr r0, =gUnknown_0203CF00
- mov r12, r0
- ldr r1, =gBattleBufferA
- mov r8, r1
- ldr r2, =gActiveBank
- ldr r7, =gBattleTypeFlags
- mov r6, r12
- mov r5, r8
- adds r4, r2, 0
-_0805C2C8:
- adds r0, r3, r6
- ldrb r1, [r4]
- lsls r1, 9
- adds r1, 0x4
- adds r1, r3, r1
- adds r1, r5
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0805C2C8
- ldr r0, [r7]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0805C330
- ldrb r3, [r2]
- lsls r0, r3, 9
- mov r1, r8
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x2
- beq _0805C330
- ldr r1, =gBattlePartyID
- lsls r0, r3, 1
- adds r0, r1
- ldrb r1, [r0]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- mov r2, r12
- bl EmitCmd34
- bl PlayerBufferExecCompleted
- b _0805C3BC
- .pool
-_0805C330:
- ldr r0, =TaskDummy
- movs r1, 0xFF
- bl CreateTask
- ldr r3, =gUnknown_03005D7C
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- adds r1, r3
- movs r2, 0
- mov r8, r2
- strb r0, [r1]
- ldr r5, =gTasks
- ldrb r2, [r4]
- adds r3, r2, r3
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r5
- ldr r5, =gBattleBufferA
- lsls r2, 9
- adds r6, r5, 0x1
- adds r2, r6
- ldrb r2, [r2]
- movs r0, 0xF
- ands r0, r2
- strh r0, [r1, 0x8]
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r1, 0x49
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r6
- ldrb r0, [r0]
- lsrs r0, 4
- strb r0, [r1]
- ldr r2, [r3]
- adds r2, 0x8B
- ldrb r0, [r4]
- lsls r0, 9
- adds r1, r5, 0x2
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, [r3]
- adds r1, 0xB0
- ldrb r0, [r4]
- lsls r0, 9
- adds r5, 0x3
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- mov r1, r8
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_80597CC
- str r1, [r0]
- ldr r1, =gBankInMenu
- ldrb r0, [r4]
- strb r0, [r1]
-_0805C3BC:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleChoosePokemon
-
- thumb_func_start PlayerHandleCmd23
-PlayerHandleCmd23: @ 805C3EC
- push {lr}
- sub sp, 0x4
- bl BattleMusicStop
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl PlayerBufferExecCompleted
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd23
-
- thumb_func_start PlayerHandleHealthBarUpdate
-PlayerHandleHealthBarUpdate: @ 805C410
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r0, 0
- bl LoadBattleBarGfx
- ldr r3, =gBattleBufferA
- ldr r0, =gActiveBank
- mov r9, r0
- ldrb r1, [r0]
- lsls r1, 9
- adds r0, r3, 0x2
- adds r0, r1, r0
- ldrb r2, [r0]
- adds r3, 0x3
- adds r1, r3
- ldrb r0, [r1]
- lsls r0, 8
- orrs r2, r0
- lsls r2, 16
- asrs r7, r2, 16
- cmp r7, 0
- ble _0805C44A
- ldr r1, =gUnknown_0203CD70
- ldr r0, [r1]
- adds r0, r7
- str r0, [r1]
-_0805C44A:
- ldr r0, =0x00007fff
- cmp r7, r0
- beq _0805C4B4
- ldr r6, =gBattlePartyID
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- mov r8, r0
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r1, =gHealthBoxesIds
- adds r1, r0, r1
- ldrb r1, [r1]
- str r7, [sp]
- mov r2, r8
- bl SetBattleBarStruct
- b _0805C4F2
- .pool
-_0805C4B4:
- ldr r1, =gBattlePartyID
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x3A
- bl GetMonData
- adds r2, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r4, =gHealthBoxesIds
- adds r1, r0, r4
- ldrb r1, [r1]
- str r7, [sp]
- movs r3, 0
- bl SetBattleBarStruct
- mov r2, r9
- ldrb r0, [r2]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0
- bl UpdateHpTextInHealthbox
-_0805C4F2:
- ldr r1, =gBattleBankFunc
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, =bx_t1_healthbar_update
- str r1, [r0]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleHealthBarUpdate
-
- thumb_func_start PlayerHandleExpUpdate
-PlayerHandleExpUpdate: @ 805C528
- push {r4-r7,lr}
- ldr r5, =gBattleBufferA
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- lsls r0, 9
- adds r1, r5, 0x1
- adds r0, r1
- ldrb r7, [r0]
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x63
- bls _0805C560
- bl PlayerBufferExecCompleted
- b _0805C5AC
- .pool
-_0805C560:
- movs r0, 0x1
- bl LoadBattleBarGfx
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 9
- adds r0, r5, 0x2
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r0, r5, 0x3
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 8
- orrs r4, r0
- ldr r0, =sub_80591B8
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r7, [r1, 0x8]
- strh r4, [r1, 0xA]
- ldrb r0, [r6]
- strh r0, [r1, 0xC]
- ldr r1, =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, =nullsub_21
- str r1, [r0]
-_0805C5AC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleExpUpdate
-
- thumb_func_start PlayerHandleStatusIconUpdate
-PlayerHandleStatusIconUpdate: @ 805C5C4
- push {r4,lr}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _0805C618
- ldr r0, =gHealthBoxesIds
- ldrb r1, [r4]
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r2, =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0x9
- bl UpdateHealthboxAttribute
- ldrb r2, [r4]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_8059D60
- str r1, [r0]
-_0805C618:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleStatusIconUpdate
-
- thumb_func_start PlayerHandleStatusAnimation
-PlayerHandleStatusAnimation: @ 805C63C
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _0805C68C
- ldr r4, =gBattleBufferA
- ldrb r3, [r5]
- lsls r3, 9
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0x2
- adds r1, r3, r1
- ldrb r1, [r1]
- adds r2, r4, 0x3
- adds r2, r3, r2
- ldrb r2, [r2]
- lsls r2, 8
- orrs r1, r2
- adds r2, r4, 0x4
- adds r2, r3, r2
- ldrb r2, [r2]
- lsls r2, 16
- orrs r1, r2
- adds r4, 0x5
- adds r3, r4
- ldrb r2, [r3]
- lsls r2, 24
- orrs r1, r2
- bl move_anim_start_t2_for_situation
- ldr r1, =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_8059D60
- str r1, [r0]
-_0805C68C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleStatusAnimation
-
- thumb_func_start PlayerHandleStatusXor
-PlayerHandleStatusXor: @ 805C6A4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- ldr r0, =gBattlePartyID
- mov r8, r0
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x37
- bl GetMonData
- ldr r2, =gBattleBufferA
- ldrb r1, [r4]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- eors r0, r1
- mov r1, sp
- strb r0, [r1]
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- bl PlayerBufferExecCompleted
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleStatusXor
-
- thumb_func_start PlayerHandleDataTransfer
-PlayerHandleDataTransfer: @ 805C710
- push {lr}
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleDataTransfer
-
- thumb_func_start PlayerHandleDMA3Transfer
-PlayerHandleDMA3Transfer: @ 805C71C
- push {r4,r5,lr}
- ldr r3, =gBattleBufferA
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r2, 9
- adds r0, r3, 0x1
- adds r0, r2, r0
- ldrb r5, [r0]
- adds r0, r3, 0x2
- adds r0, r2, r0
- ldrb r0, [r0]
- lsls r0, 8
- orrs r5, r0
- adds r0, r3, 0x3
- adds r0, r2, r0
- ldrb r0, [r0]
- lsls r0, 16
- orrs r5, r0
- adds r0, r3, 0x4
- adds r0, r2, r0
- ldrb r4, [r0]
- lsls r4, 24
- adds r0, r3, 0x5
- adds r0, r2, r0
- ldrb r1, [r0]
- adds r0, r3, 0x6
- adds r0, r2, r0
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- adds r3, 0x7
- adds r2, r3
- orrs r5, r4
- lsrs r4, r1, 16
- movs r0, 0x80
- lsls r0, 5
- cmp r4, r0
- bhi _0805C78C
- ldr r0, =0x040000d4
- str r2, [r0]
- str r5, [r0, 0x4]
- lsrs r1, 17
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _0805C7B8
- .pool
-_0805C78C:
- ldr r3, =0x040000d4
- str r2, [r3]
- str r5, [r3, 0x4]
- ldr r0, =0x80000800
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r2, r0
- adds r5, r0
- ldr r1, =0xfffff000
- adds r4, r1
- cmp r4, r0
- bhi _0805C78C
- str r2, [r3]
- str r5, [r3, 0x4]
- lsrs r0, r4, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
-_0805C7B8:
- bl PlayerBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleDMA3Transfer
-
- thumb_func_start PlayerHandlePlayBGM
-PlayerHandlePlayBGM: @ 805C7D0
- push {lr}
- ldr r2, =gBattleBufferA
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayBGM
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandlePlayBGM
-
- thumb_func_start PlayerHandleCmd32
-PlayerHandleCmd32: @ 805C800
- push {lr}
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd32
-
- thumb_func_start PlayerHandleCmd33
-PlayerHandleCmd33: @ 805C80C
- push {lr}
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl EmitChoiceReturnValue
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd33
-
- thumb_func_start PlayerHandleCmd34
-PlayerHandleCmd34: @ 805C820
- push {lr}
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl EmitCmd34
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd34
-
- thumb_func_start PlayerHandleCmd35
-PlayerHandleCmd35: @ 805C834
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl EmitCmd35
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd35
-
- thumb_func_start PlayerHandleCmd36
-PlayerHandleCmd36: @ 805C848
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl EmitCmd36
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd36
-
- thumb_func_start PlayerHandleCmd37
-PlayerHandleCmd37: @ 805C85C
- push {lr}
- ldr r2, =gUnknown_02022D0C
- ldrb r1, [r2]
- movs r0, 0x80
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd37
-
- thumb_func_start PlayerHandleCmd38
-PlayerHandleCmd38: @ 805C878
- push {lr}
- ldr r3, =gUnknown_02022D0C
- ldr r1, =gBattleBufferA
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x7F
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x80
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd38
-
- thumb_func_start PlayerHandleCmd39
-PlayerHandleCmd39: @ 805C8B0
- push {lr}
- ldr r2, =gUnknown_02022D0C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd39
-
- thumb_func_start PlayerHandleCmd40
-PlayerHandleCmd40: @ 805C8C8
- push {lr}
- ldr r3, =gUnknown_02022D0C
- ldr r1, [r3]
- lsls r1, 24
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- lsls r1, 7
- ldrb r2, [r3]
- movs r0, 0x7F
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd40
-
- thumb_func_start PlayerHandleHitAnimation
-PlayerHandleHitAnimation: @ 805C8F0
- push {r4,lr}
- ldr r3, =gSprites
- ldr r2, =gBankSpriteIds
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _0805C924
- bl PlayerBufferExecCompleted
- b _0805C94E
- .pool
-_0805C924:
- ldr r1, =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x30]
- ldrb r0, [r4]
- bl sub_80769F4
- ldr r1, =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, =DoHitAnimBlinkEffect
- str r1, [r0]
-_0805C94E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleHitAnimation
-
- thumb_func_start PlayerHandleCmd42
-PlayerHandleCmd42: @ 805C960
- push {lr}
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleCmd42
-
- thumb_func_start PlayerHandleEffectivenessSound
-PlayerHandleEffectivenessSound: @ 805C96C
- push {r4,lr}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- movs r3, 0x3F
- cmp r0, 0
- bne _0805C980
- movs r3, 0xC0
-_0805C980:
- ldr r2, =gBattleBufferA
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- lsls r1, r3, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- bl PlayerBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleEffectivenessSound
-
- thumb_func_start PlayerHandlePlayFanfareOrBGM
-PlayerHandlePlayFanfareOrBGM: @ 805C9B0
- push {r4,r5,lr}
- ldr r4, =gBattleBufferA
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r3, r0, 9
- adds r0, r4, 0x3
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805C9EC
- bl BattleMusicStop
- ldrb r1, [r5]
- lsls r1, 9
- adds r0, r4, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, r4, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayBGM
- b _0805CA00
- .pool
-_0805C9EC:
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0x2
- adds r1, r3, r1
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayFanfare
-_0805CA00:
- bl PlayerBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end PlayerHandlePlayFanfareOrBGM
-
- thumb_func_start PlayerHandleFaintingCry
-PlayerHandleFaintingCry: @ 805CA0C
- push {lr}
- ldr r1, =gBattlePartyID
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- negs r1, r1
- movs r2, 0x5
- bl PlayCry3
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleFaintingCry
-
- thumb_func_start PlayerHandleIntroSlide
-PlayerHandleIntroSlide: @ 805CA4C
- push {lr}
- ldr r1, =gBattleBufferA
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- bl battle_intro_launch
- ldr r2, =gUnknown_020243FC
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleIntroSlide
-
- thumb_func_start PlayerHandleIntroTrainerBallThrow
-PlayerHandleIntroTrainerBallThrow: @ 805CA80
- push {r4-r7,lr}
- ldr r6, =gBankSpriteIds
- ldr r7, =gActiveBank
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, =gSprites
- adds r0, r5
- bl oamt_add_pos2_onto_pos1
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x32
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =0x0000ffd8
- strh r1, [r0, 0x32]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0x36]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_80A6EEC
- str r1, [r0]
- ldrb r2, [r7]
- adds r0, r2, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x38]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =sub_805CC00
- bl StoreSpriteCallbackInData6
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, =0x0000d6f8
- bl AllocSpritePalette
- adds r4, r0, 0
- lsls r4, 24
- ldr r1, =gTrainerBackPicPaletteTable
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- lsrs r4, 20
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- movs r2, 0x20
- bl LoadCompressedPalette
- ldrb r0, [r7]
- adds r0, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r4
- strb r0, [r1, 0x5]
- ldr r0, =task05_08033660
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- ldrb r0, [r7]
- strh r0, [r1, 0x8]
- ldr r3, =gBattleSpritesDataPtr
- ldr r0, [r3]
- ldrb r2, [r7]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805CBA2
- ldr r0, =gUnknown_020244B4
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldr r1, =sub_8073C30
- str r1, [r0]
-_0805CBA2:
- ldr r0, [r3]
- ldr r2, [r0, 0x8]
- ldrb r0, [r2, 0x9]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
- ldr r1, =gBattleBankFunc
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r1, =nullsub_21
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleIntroTrainerBallThrow
-
- thumb_func_start sub_805CC00
-sub_805CC00: @ 805CC00
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r4, [r5, 0x38]
- lsls r4, 24
- lsrs r4, 24
- bl FreeSpriteOamMatrix
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl DestroySprite
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl BattleLoadPlayerMonSpriteGfx
- ldr r0, =gBankSpriteIds
- adds r4, r0
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_805CC00
-
- thumb_func_start task05_08033660
-task05_08033660: @ 805CC68
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0x1E
- bgt _0805CC94
- adds r0, r2, 0x1
- strh r0, [r1, 0xA]
- b _0805CD50
- .pool
-_0805CC94:
- ldr r7, =gActiveBank
- ldrb r0, [r7]
- mov r9, r0
- ldrh r0, [r1, 0x8]
- strb r0, [r7]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0805CCB4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0805CCE4
-_0805CCB4:
- ldr r0, =gBattleBufferA
- ldrb r1, [r7]
- lsls r2, r1, 9
- adds r0, 0x1
- adds r2, r0
- ldr r0, =gBattlePartyID
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- strb r0, [r2]
- ldrb r0, [r7]
- movs r1, 0
- bl sub_805B258
- b _0805CD38
- .pool
-_0805CCE4:
- ldr r4, =gBattleBufferA
- ldrb r0, [r7]
- lsls r1, r0, 9
- adds r4, 0x1
- adds r1, r4
- ldr r5, =gBattlePartyID
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- movs r1, 0
- bl sub_805B258
- ldrb r0, [r7]
- movs r6, 0x2
- eors r0, r6
- strb r0, [r7]
- ldrb r0, [r7]
- lsls r1, r0, 9
- adds r1, r4
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r0, r1, 1
- adds r0, r5
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, =gPlayerParty
- adds r0, r2
- bl BattleLoadPlayerMonSpriteGfx
- ldrb r0, [r7]
- movs r1, 0
- bl sub_805B258
- ldrb r0, [r7]
- eors r0, r6
- strb r0, [r7]
-_0805CD38:
- ldr r1, =gBattleBankFunc
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_8058B40
- str r1, [r0]
- mov r3, r9
- strb r3, [r2]
- mov r0, r8
- bl DestroyTask
-_0805CD50:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task05_08033660
-
- thumb_func_start PlayerHandleDrawPartyStatusSummary
-PlayerHandleDrawPartyStatusSummary: @ 805CD74
- push {r4-r6,lr}
- ldr r1, =gBattleBufferA
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805CDA4
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0805CDA4
- bl PlayerBufferExecCompleted
- b _0805CE18
- .pool
-_0805CDA4:
- ldr r6, =gBattleSpritesDataPtr
- ldr r0, [r6]
- ldr r5, =gActiveBank
- ldrb r1, [r5]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r5]
- lsls r3, r0, 9
- ldr r4, =gBattleBufferA + 4
- adds r1, r3, r4
- subs r2, r4, 0x3
- adds r2, r3, r2
- ldrb r2, [r2]
- subs r4, 0x2
- adds r3, r4
- ldrb r3, [r3]
- bl CreatePartyStatusSummarySprites
- ldr r2, =gUnknown_020244B4
- ldrb r1, [r5]
- adds r1, r2
- movs r3, 0
- strb r0, [r1]
- ldr r0, [r6]
- ldrb r1, [r5]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strb r3, [r0, 0x5]
- ldrb r2, [r5]
- lsls r0, r2, 9
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805CE0C
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x5D
- strb r1, [r0, 0x5]
-_0805CE0C:
- ldr r0, =gBattleBankFunc
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, =sub_805CE38
- str r0, [r1]
-_0805CE18:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleDrawPartyStatusSummary
-
- thumb_func_start sub_805CE38
-sub_805CE38: @ 805CE38
- push {r4,lr}
- ldr r4, =gBattleSpritesDataPtr
- ldr r0, [r4]
- ldr r3, =gActiveBank
- ldrb r1, [r3]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- adds r2, r1, 0x1
- strb r2, [r0, 0x5]
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x5C
- bls _0805CE70
- ldr r0, [r4]
- ldrb r1, [r3]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x5]
- bl PlayerBufferExecCompleted
-_0805CE70:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_805CE38
-
- thumb_func_start PlayerHandleCmd49
-PlayerHandleCmd49: @ 805CE80
- push {lr}
- ldr r0, =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, =gActiveBank
- ldrb r3, [r0]
- ldr r1, [r1, 0x4]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805CEB2
- ldr r2, =gTasks
- ldr r0, =gUnknown_020244B4
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, =sub_8073C30
- str r1, [r0]
-_0805CEB2:
- bl PlayerBufferExecCompleted
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd49
-
- thumb_func_start PlayerHandleCmd50
-PlayerHandleCmd50: @ 805CED0
- push {r4,lr}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- ldrb r0, [r4]
- movs r1, 0
- bl dp11b_obj_free
- bl PlayerBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd50
-
- thumb_func_start PlayerHandleSpriteInvisibility
-PlayerHandleSpriteInvisibility: @ 805CEF4
- push {r4,lr}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl AnimBankSpriteExists
- lsls r0, 24
- cmp r0, 0
- beq _0805CF3A
- ldr r3, =gSprites
- ldr r0, =gBankSpriteIds
- ldrb r1, [r4]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldr r0, =gBattleBufferA
- lsls r1, 9
- adds r0, 0x1
- adds r1, r0
- adds r2, 0x3E
- movs r0, 0x1
- ldrb r1, [r1]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- bl sub_805E408
-_0805CF3A:
- bl PlayerBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleSpriteInvisibility
-
- thumb_func_start PlayerHandleBattleAnimation
-PlayerHandleBattleAnimation: @ 805CF54
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _0805CFB6
- ldr r4, =gBattleBufferA
- ldrb r2, [r5]
- lsls r1, r2, 9
- adds r0, r4, 0x1
- adds r0, r1, r0
- ldrb r6, [r0]
- adds r0, r4, 0x2
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r4, 0x3
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 8
- orrs r3, r0
- str r3, [sp]
- adds r0, r2, 0
- adds r1, r2, 0
- adds r3, r6, 0
- bl move_anim_start_t3
- lsls r0, 24
- cmp r0, 0
- beq _0805CFA4
- bl PlayerBufferExecCompleted
- b _0805CFB0
- .pool
-_0805CFA4:
- ldr r0, =gBattleBankFunc
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, =sub_8059D90
- str r0, [r1]
-_0805CFB0:
- adds r0, r6, 0
- bl sub_817E32C
-_0805CFB6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleBattleAnimation
-
- thumb_func_start PlayerHandleLinkStandbyMsg
-PlayerHandleLinkStandbyMsg: @ 805CFC8
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- ldr r4, =gBattleBufferA + 2
- adds r0, r4
- bl sub_81851A8
- ldrb r0, [r5]
- lsls r0, 9
- subs r4, 0x1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0805D002
- cmp r0, 0x1
- bgt _0805CFF8
- cmp r0, 0
- beq _0805CFFE
- b _0805D020
- .pool
-_0805CFF8:
- cmp r0, 0x2
- beq _0805D01C
- b _0805D020
-_0805CFFE:
- bl PrintLinkStandbyMsg
-_0805D002:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- ldrb r0, [r4]
- movs r1, 0
- bl dp11b_obj_free
- b _0805D020
- .pool
-_0805D01C:
- bl PrintLinkStandbyMsg
-_0805D020:
- bl PlayerBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end PlayerHandleLinkStandbyMsg
-
- thumb_func_start PlayerHandleResetActionMoveSelection
-PlayerHandleResetActionMoveSelection: @ 805D02C
- push {r4,lr}
- ldr r1, =gBattleBufferA
- ldr r4, =gActiveBank
- ldrb r3, [r4]
- lsls r0, r3, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _0805D074
- cmp r2, 0x1
- bgt _0805D054
- cmp r2, 0
- beq _0805D05A
- b _0805D084
- .pool
-_0805D054:
- cmp r2, 0x2
- beq _0805D07C
- b _0805D084
-_0805D05A:
- ldr r0, =gActionSelectionCursor
- adds r0, r3, r0
- strb r2, [r0]
- ldr r1, =gMoveSelectionCursor
- ldrb r0, [r4]
- adds r0, r1
- strb r2, [r0]
- b _0805D084
- .pool
-_0805D074:
- ldr r0, =gActionSelectionCursor
- b _0805D07E
- .pool
-_0805D07C:
- ldr r0, =gMoveSelectionCursor
-_0805D07E:
- adds r0, r3, r0
- movs r1, 0
- strb r1, [r0]
-_0805D084:
- bl PlayerBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleResetActionMoveSelection
-
- thumb_func_start PlayerHandleCmd55
-PlayerHandleCmd55: @ 805D094
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- ldr r4, =gBattleBufferA + 4
- adds r0, r4
- bl sub_81851A8
- ldr r2, =gBattleOutcome
- ldrb r0, [r5]
- lsls r0, 9
- subs r1, r4, 0x3
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, =gSaveBlock2Ptr
- ldr r3, [r0]
- ldrb r0, [r5]
- lsls r0, 9
- subs r4, 0x2
- adds r0, r4
- ldrb r0, [r0]
- ldr r1, =0x00000ca9
- adds r3, r1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 3
- ldrb r2, [r3]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x5
- bl FadeOutMapMusic
- movs r0, 0x3
- bl BeginFastPaletteFade
- bl PlayerBufferExecCompleted
- ldr r1, =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, =sub_80587B0
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerHandleCmd55
-
- thumb_func_start nullsub_22
-nullsub_22: @ 805D114
- bx lr
- thumb_func_end nullsub_22
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index c7ba486a8..dd96fda80 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -645,7 +645,7 @@ _081BB2E2:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
strb r5, [r4]
bl IsDoubleBattle
lsls r0, 24
@@ -918,7 +918,7 @@ _081BB514:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
strb r5, [r4]
ldr r0, =sub_81BB628
str r0, [r6]
@@ -981,7 +981,7 @@ _081BB65C:
adds r1, r4, 0
adds r2, r4, 0
movs r3, 0
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, =gTasks
lsls r1, r5, 2
adds r1, r5
@@ -1311,7 +1311,7 @@ sub_81BB92C: @ 81BB92C
cmp r1, r0
bne _081BB97E
adds r0, r3, 0
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
@@ -1326,7 +1326,7 @@ sub_81BB92C: @ 81BB92C
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_081BB972:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -4129,7 +4129,7 @@ _081BD318:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_081BD332:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4154,7 +4154,7 @@ _081BD346:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x1
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4517,7 +4517,7 @@ sub_81BD674: @ 81BD674
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_081BD6A8:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4828,7 +4828,7 @@ _081BD92A:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_081BD94C:
ldr r0, [r7]
ldrb r1, [r6]
@@ -4886,7 +4886,7 @@ _081BD98A:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -5068,7 +5068,7 @@ _081BDB3C:
orrs r2, r5
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl PlayerPartnerBufferExecCompleted
pop {r4-r6}
pop {r0}
@@ -5138,7 +5138,7 @@ _081BDBD0:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl EmitCmd34
+ bl EmitChosenMonReturnValue
bl PlayerPartnerBufferExecCompleted
pop {r4-r6}
pop {r0}
@@ -5398,7 +5398,7 @@ sub_81BDE14: @ 81BDE14
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5594,7 +5594,7 @@ _081BDFB0:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -5729,7 +5729,7 @@ dp01t_2E_3_battle_intro: @ 81BE0D8
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -6236,7 +6236,7 @@ sub_81BE53C: @ 81BE53C
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_081BE582:
bl PlayerPartnerBufferExecCompleted
pop {r4}
@@ -6272,7 +6272,7 @@ sub_81BE59C: @ 81BE59C
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _081BE5E8
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index 189d41771..0f5477e88 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -1161,7 +1161,7 @@ sub_8186EA4: @ 8186EA4
adds r1, r3, 0
adds r2, r3, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08186EE4:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -1310,7 +1310,7 @@ sub_8186F94: @ 8186F94
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldrb r0, [r5]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3968,7 +3968,7 @@ _08188828:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08188842:
ldr r0, [r6]
ldrb r1, [r5]
@@ -3993,7 +3993,7 @@ _08188856:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x2
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4301,7 +4301,7 @@ sub_8188AF8: @ 8188AF8
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08188B2C:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4584,7 +4584,7 @@ _08188D6E:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_08188D90:
ldr r0, [r7]
ldrb r1, [r6]
@@ -4642,7 +4642,7 @@ _08188DCE:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -4754,7 +4754,7 @@ sub_8188EF0: @ 8188EF0
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl RecordedOpponentBufferExecCompleted
pop {r0}
bx r0
@@ -4779,13 +4779,13 @@ sub_8188F20: @ 8188F20
ands r0, r1
cmp r0, 0
beq _08188F48
- bl sub_805D19C
+ bl ChooseMoveAndTargetInBattlePalace
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _08188F6C
.pool
_08188F48:
@@ -4803,7 +4803,7 @@ _08188F48:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
_08188F6C:
bl RecordedOpponentBufferExecCompleted
pop {r4,r5}
@@ -4839,7 +4839,7 @@ sub_8188F88: @ 8188F88
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0
- bl EmitCmd34
+ bl EmitChosenMonReturnValue
bl RecordedOpponentBufferExecCompleted
pop {r4}
pop {r0}
@@ -5041,7 +5041,7 @@ sub_8189144: @ 8189144
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5237,7 +5237,7 @@ _081892E0:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -5371,7 +5371,7 @@ sub_8189404: @ 8189404
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -5848,7 +5848,7 @@ sub_8189800: @ 8189800
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_08189846:
bl RecordedOpponentBufferExecCompleted
pop {r4}
@@ -5884,7 +5884,7 @@ sub_8189860: @ 8189860
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _081898AC
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index a5702f5a0..451b6178b 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -1112,7 +1112,7 @@ sub_818A2B4: @ 818A2B4
cmp r1, r0
bne _0818A306
adds r0, r3, 0
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
@@ -1127,7 +1127,7 @@ sub_818A2B4: @ 818A2B4
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0818A2FA:
ldr r0, =gBattleBankFunc
ldrb r1, [r4]
@@ -3930,7 +3930,7 @@ _0818BCA0:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0818BCBA:
ldr r0, [r6]
ldrb r1, [r5]
@@ -3955,7 +3955,7 @@ _0818BCCE:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x1
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4373,7 +4373,7 @@ sub_818C064: @ 818C064
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0818C098:
ldr r0, [r6]
ldrb r1, [r5]
@@ -4684,7 +4684,7 @@ _0818C31A:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0818C33C:
ldr r0, [r7]
ldrb r1, [r6]
@@ -4742,7 +4742,7 @@ _0818C37A:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, [r7]
ldrb r1, [r6]
ldr r0, [r0]
@@ -4861,7 +4861,7 @@ sub_818C49C: @ 818C49C
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl RecordedPlayerBufferExecCompleted
_0818C4C6:
pop {r0}
@@ -4897,7 +4897,7 @@ _0818C508:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl RecordedPlayerBufferExecCompleted
_0818C522:
pop {r0}
@@ -4923,13 +4923,13 @@ sub_818C538: @ 818C538
ands r0, r1
cmp r0, 0
beq _0818C560
- bl sub_805D19C
+ bl ChooseMoveAndTargetInBattlePalace
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _0818C584
.pool
_0818C560:
@@ -4947,7 +4947,7 @@ _0818C560:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
_0818C584:
bl RecordedPlayerBufferExecCompleted
pop {r4,r5}
@@ -4983,7 +4983,7 @@ sub_818C5A0: @ 818C5A0
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0
- bl EmitCmd34
+ bl EmitChosenMonReturnValue
bl RecordedPlayerBufferExecCompleted
pop {r4}
pop {r0}
@@ -5192,7 +5192,7 @@ sub_818C76C: @ 818C76C
ldrb r2, [r3]
lsls r2, 24
orrs r1, r2
- bl move_anim_start_t2_for_situation
+ bl DoStatusAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5388,7 +5388,7 @@ _0818C908:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -5523,7 +5523,7 @@ dp01t_2E_2_battle_intro: @ 818CA30
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -6032,7 +6032,7 @@ sub_818CE98: @ 818CE98
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
- bl sub_805E408
+ bl SetBattleSpriteInvisibilityBitToSpriteInvisibility
_0818CEDE:
bl RecordedPlayerBufferExecCompleted
pop {r4}
@@ -6068,7 +6068,7 @@ sub_818CEF8: @ 818CEF8
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _0818CF44
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index 9745fa7c8..4093d433b 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -103,13 +103,13 @@ _0815942A:
movs r1, 0x7
_0815942E:
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
b _08159440
_08159436:
movs r0, 0x1
movs r1, 0x8
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
_08159440:
bl SafariBufferExecCompleted
b _0815954E
@@ -399,7 +399,7 @@ sub_8159698: @ 8159698
ldr r0, =gScriptItemId
ldrh r1, [r0]
movs r0, 0x1
- bl EmitCmd35
+ bl EmitOneReturnValue
bl SafariBufferExecCompleted
_081596BE:
pop {r0}
@@ -707,7 +707,7 @@ sub_8159910: @ 8159910
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -746,7 +746,7 @@ sub_8159964: @ 8159964
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -1227,7 +1227,7 @@ dp01t_2E_6_battle_intro: @ 8159D5C
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -1329,7 +1329,7 @@ sub_8159E1C: @ 8159E1C
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _08159E5C
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 473582d0e..10b6d30be 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -121,7 +121,7 @@ _081684CE:
movs r1, 0x9
_081684E4:
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl WallyBufferExecCompleted
ldr r1, [r4]
adds r1, 0x94
@@ -176,7 +176,7 @@ _08168540:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl WallyBufferExecCompleted
_08168564:
pop {r4,r5}
@@ -279,7 +279,7 @@ sub_8168610: @ 8168610
ldr r0, =gScriptItemId
ldrh r1, [r0]
movs r0, 0x1
- bl EmitCmd35
+ bl EmitOneReturnValue
bl WallyBufferExecCompleted
_08168636:
pop {r0}
@@ -2952,7 +2952,7 @@ WallyHandleReturnMonToBall: @ 8169E44
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x1
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r0, =gBattleBankFunc
ldrb r1, [r6]
lsls r1, 2
@@ -3207,7 +3207,7 @@ WallyHandleCmd12: @ 816A084
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3246,7 +3246,7 @@ WallyHandleBallThrow: @ 816A0D8
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3452,7 +3452,7 @@ _0816A2C6:
adds r1, r3, 0
adds r2, r3, 0
movs r3, 0x5
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0816A2E2:
ldr r0, [r7]
ldrb r1, [r6]
@@ -3507,7 +3507,7 @@ _0816A320:
adds r0, r2, 0
adds r1, r2, 0
movs r3, 0x6
- bl move_anim_start_t4
+ bl DoSpecialBattleAnimation
_0816A354:
ldr r0, [r7]
ldrb r1, [r6]
@@ -3700,7 +3700,7 @@ _0816A504:
beq _0816A550
b _0816A574
_0816A50A:
- bl sub_805C210
+ bl InitMoveSelectionsVarsAndStrings
ldr r1, [r4]
adds r1, 0x95
ldrb r0, [r1]
@@ -3745,7 +3745,7 @@ _0816A550:
lsls r2, 1
movs r0, 0x1
movs r1, 0xA
- bl EmitChoiceReturnValue
+ bl EmitTwoReturnValues
bl WallyBufferExecCompleted
_0816A574:
pop {r4}
@@ -4062,7 +4062,7 @@ _0816A7C8:
movs r1, 0
strh r1, [r0, 0x30]
ldrb r0, [r4]
- bl sub_80769F4
+ bl DoHitAnimHealthboxEffect
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -4184,7 +4184,7 @@ WallyHandleIntroSlide: @ 816A8D8
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
- bl battle_intro_launch
+ bl HandleIntroSlide
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
@@ -4672,7 +4672,7 @@ WallyHandleBattleAnimation: @ 816AD20
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
- bl move_anim_start_t3
+ bl DoBattleAnimationFromTable
lsls r0, 24
cmp r0, 0
beq _0816AD60
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
index aa887bc25..fedb50c45 100644
--- a/asm/battle_link_817C95C.s
+++ b/asm/battle_link_817C95C.s
@@ -110,7 +110,7 @@ _0817CA4C:
ldr r1, =gStringInfo
ldr r1, [r1]
ldrh r1, [r1]
- bl sub_817F33C
+ bl GetBankMoveSlotId
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -2572,7 +2572,7 @@ _0817E122:
mov r1, r10
ldrb r0, [r1]
adds r1, r7, 0
- bl sub_817F33C
+ bl GetBankMoveSlotId
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x3
@@ -4793,8 +4793,8 @@ _0817F324:
.pool
thumb_func_end sub_817F2A8
- thumb_func_start sub_817F33C
-sub_817F33C: @ 817F33C
+ thumb_func_start GetBankMoveSlotId
+GetBankMoveSlotId: @ 817F33C
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -4835,7 +4835,7 @@ _0817F388:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_817F33C
+ thumb_func_end GetBankMoveSlotId
thumb_func_start sub_817F394
sub_817F394: @ 817F394
@@ -4888,97 +4888,4 @@ _0817F3E6:
bx r0
thumb_func_end sub_817F394
- thumb_func_start nullsub_69
-nullsub_69: @ 817F3EC
- bx lr
- thumb_func_end nullsub_69
-
- thumb_func_start sub_817F3F0
-sub_817F3F0: @ 817F3F0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r9, r0
- mov r8, r1
- adds r5, r2, 0
- adds r4, r3, 0
- lsls r5, 16
- negs r5, r5
- lsls r4, 16
- negs r4, r4
- lsrs r4, 16
- mov r0, r8
- lsls r0, 16
- asrs r0, 16
- mov r8, r0
- asrs r5, 16
- adds r1, r5, 0
- bl Cos
- adds r6, r0, 0
- lsls r4, 16
- asrs r4, 16
- mov r0, r8
- adds r1, r4, 0
- bl Sin
- subs r6, r0
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- adds r1, r4, 0
- bl Cos
- adds r2, r0, 0
- mov r0, r8
- adds r1, r5, 0
- str r2, [sp]
- bl Sin
- ldr r2, [sp]
- adds r2, r0
- negs r5, r5
- negs r4, r4
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- adds r6, r5
- mov r0, r9
- strh r6, [r0, 0x24]
- lsls r2, 16
- asrs r2, 16
- lsls r4, 16
- asrs r4, 16
- adds r2, r4
- strh r2, [r0, 0x26]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_817F3F0
-
- thumb_func_start GetSpeciesBackAnimId
-GetSpeciesBackAnimId: @ 817F474
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_0860A8C8
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0817F48C
- movs r0, 0
- b _0817F492
- .pool
-_0817F48C:
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_0817F492:
- pop {r1}
- bx r1
- thumb_func_end GetSpeciesBackAnimId
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokeball.s b/asm/pokeball.s
index fed227c80..0afd27932 100755
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -2685,8 +2685,8 @@ _080769EA:
.pool
thumb_func_end sub_80769CC
- thumb_func_start sub_80769F4
-sub_80769F4: @ 80769F4
+ thumb_func_start DoHitAnimHealthboxEffect
+DoHitAnimHealthboxEffect: @ 80769F4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
@@ -2714,7 +2714,7 @@ sub_80769F4: @ 80769F4
pop {r0}
bx r0
.pool
- thumb_func_end sub_80769F4
+ thumb_func_end DoHitAnimHealthboxEffect
thumb_func_start oamc_804BEB4
oamc_804BEB4: @ 8076A38
diff --git a/asm/pokemon_animation.s b/asm/pokemon_animation.s
index a29ecb729..870e658f7 100644
--- a/asm/pokemon_animation.s
+++ b/asm/pokemon_animation.s
@@ -4,6 +4,100 @@
.syntax unified
.text
+
+
+ thumb_func_start nullsub_69
+nullsub_69: @ 817F3EC
+ bx lr
+ thumb_func_end nullsub_69
+
+ thumb_func_start sub_817F3F0
+sub_817F3F0: @ 817F3F0
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x4
+ mov r9, r0
+ mov r8, r1
+ adds r5, r2, 0
+ adds r4, r3, 0
+ lsls r5, 16
+ negs r5, r5
+ lsls r4, 16
+ negs r4, r4
+ lsrs r4, 16
+ mov r0, r8
+ lsls r0, 16
+ asrs r0, 16
+ mov r8, r0
+ asrs r5, 16
+ adds r1, r5, 0
+ bl Cos
+ adds r6, r0, 0
+ lsls r4, 16
+ asrs r4, 16
+ mov r0, r8
+ adds r1, r4, 0
+ bl Sin
+ subs r6, r0
+ lsls r6, 16
+ lsrs r6, 16
+ mov r0, r8
+ adds r1, r4, 0
+ bl Cos
+ adds r2, r0, 0
+ mov r0, r8
+ adds r1, r5, 0
+ str r2, [sp]
+ bl Sin
+ ldr r2, [sp]
+ adds r2, r0
+ negs r5, r5
+ negs r4, r4
+ lsls r6, 16
+ asrs r6, 16
+ lsls r5, 16
+ asrs r5, 16
+ adds r6, r5
+ mov r0, r9
+ strh r6, [r0, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ lsls r4, 16
+ asrs r4, 16
+ adds r2, r4
+ strh r2, [r0, 0x26]
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_817F3F0
+
+ thumb_func_start GetSpeciesBackAnimId
+GetSpeciesBackAnimId: @ 817F474
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, =gUnknown_0860A8C8
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0817F48C
+ movs r0, 0
+ b _0817F492
+ .pool
+_0817F48C:
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+_0817F492:
+ pop {r1}
+ bx r1
+ thumb_func_end GetSpeciesBackAnimId
thumb_func_start sub_817F498
sub_817F498: @ 817F498
diff --git a/include/battle.h b/include/battle.h
index 7d97f7777..6079d019e 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -750,38 +750,39 @@ extern struct BattleStruct* gBattleStruct;
#define MOVE_EFFECT_AFFECTS_USER 0x40
#define MOVE_EFFECT_CERTAIN 0x80
-// battle animations ids
-
-#define B_ANIM_CASTFORM_CHANGE 0x0
-#define B_ANIM_STATS_CHANGE 0x1
-#define B_ANIM_SUBSTITUTE_FADE 0x2
-#define B_ANIM_SUBSTITUTE_APPEAR 0x3
-#define B_ANIM_x4 0x4
-#define B_ANIM_ITEM_KNOCKOFF 0x5
-#define B_ANIM_TURN_TRAP 0x6
-#define B_ANIM_ITEM_EFFECT 0x7
-#define B_ANIM_SMOKEBALL_ESCAPE 0x8
-#define B_ANIM_HANGED_ON 0x9
-#define B_ANIM_RAIN_CONTINUES 0xA
-#define B_ANIM_SUN_CONTINUES 0xB
-#define B_ANIM_SANDSTORM_CONTINUES 0xC
-#define B_ANIM_HAIL_CONTINUES 0xD
-#define B_ANIM_LEECH_SEED_DRAIN 0xE
-#define B_ANIM_MON_HIT 0xF
-#define B_ANIM_ITEM_STEAL 0x10
-#define B_ANIM_SNATCH_MOVE 0x11
-#define B_ANIM_FUTURE_SIGHT_HIT 0x12
-#define B_ANIM_x13 0x13
-#define B_ANIM_x14 0x14
-#define B_ANIM_INGRAIN_HEAL 0x15
-#define B_ANIM_WISH_HEAL 0x16
-#define B_ANIM_x17 0x17
-#define B_ANIM_x18 0x18
-#define B_ANIM_x19 0x19
-#define B_ANIM_x1A 0x1A
-#define B_ANIM_x1B 0x1B
-#define B_ANIM_x1C 0x1C
-#define B_ANIM_x1D 0x1D
+// table ids for general animations
+#define B_ANIM_CASTFORM_CHANGE 0x0
+#define B_ANIM_STATS_CHANGE 0x1
+#define B_ANIM_SUBSTITUTE_FADE 0x2
+#define B_ANIM_SUBSTITUTE_APPEAR 0x3
+#define B_ANIM_x4 0x4
+#define B_ANIM_ITEM_KNOCKOFF 0x5
+#define B_ANIM_TURN_TRAP 0x6
+#define B_ANIM_ITEM_EFFECT 0x7
+#define B_ANIM_SMOKEBALL_ESCAPE 0x8
+#define B_ANIM_HANGED_ON 0x9
+#define B_ANIM_RAIN_CONTINUES 0xA
+#define B_ANIM_SUN_CONTINUES 0xB
+#define B_ANIM_SANDSTORM_CONTINUES 0xC
+#define B_ANIM_HAIL_CONTINUES 0xD
+#define B_ANIM_LEECH_SEED_DRAIN 0xE
+#define B_ANIM_MON_HIT 0xF
+#define B_ANIM_ITEM_STEAL 0x10
+#define B_ANIM_SNATCH_MOVE 0x11
+#define B_ANIM_FUTURE_SIGHT_HIT 0x12
+#define B_ANIM_x13 0x13
+#define B_ANIM_x14 0x14
+#define B_ANIM_INGRAIN_HEAL 0x15
+#define B_ANIM_WISH_HEAL 0x16
+
+// special animations table
+#define B_ANIM_LVL_UP 0x0
+#define B_ANIM_SWITCH_OUT_MON 0x1
+#define B_ANIM_SPECIAL_2 0x2
+#define B_ANIM_BALL_THROW 0x3
+#define B_ANIM_SPECIAL_4 0x4
+#define B_ANIM_SUBSTITUTE_TO_MON 0x5
+#define B_ANIM_MON_TO_SUBSTITUTE 0x6
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
@@ -868,6 +869,13 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
void sub_805EB9C(u8 arg0);
void sub_805E394(void);
void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
+void DoStatusAnimation(bool8 isStatus2, u32 status);
+void DoSpecialBattleAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
+bool8 DoBattleAnimationFromTable(u8 active, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
+void SetBattleSpriteInvisibilityBitToSpriteInvisibility(u8 bank);
+u16 ChooseMoveAndTargetInBattlePalace(void);
+void LoadBattleBarGfx(u8 arg0);
+bool8 mplay_80342A4(u8 bank);
enum
{
@@ -905,7 +913,7 @@ struct BattleAnimationInfo
u8 field_5;
u8 field_6;
u8 field_7;
- u8 field_8;
+ u8 ballThrowCaseId;
u8 field_9_x1 : 1;
u8 field_9_x2 : 1;
u8 field_9_x1C : 3;
@@ -920,9 +928,9 @@ struct BattleHealthboxInfo
u8 flag_x2 : 1;
u8 flag_x4 : 1;
u8 flag_x8 : 1;
- u8 flag_x10 : 1;
- u8 flag_x20 : 1;
- u8 flag_x40 : 1;
+ u8 statusAnimActive : 1; // x10
+ u8 animFromTableActive : 1; // x20
+ u8 specialAnimActive : 1; //x40
u8 flag_x80 : 1;
u8 field_1_x1 : 1;
u8 field_1_x2 : 1;
@@ -934,7 +942,7 @@ struct BattleHealthboxInfo
u8 field_1_x80 : 1;
u8 field_2;
u8 field_3;
- u8 field_4;
+ u8 animationState;
u8 field_5;
u8 field_6;
u8 field_7;
@@ -949,7 +957,7 @@ struct BattleBarInfo
u8 healthboxSpriteId;
s32 maxValue;
s32 currentValue;
- s32 field_C;
+ s32 receivedValue;
s32 field_10;
};
diff --git a/include/battle_2.h b/include/battle_2.h
index 0d4bcbc67..ee61efd9b 100644
--- a/include/battle_2.h
+++ b/include/battle_2.h
@@ -2,26 +2,45 @@
#define GUARD_BATTLE_2_H
void CB2_InitBattle(void);
-void CB2_QuitRecordedBattle(void);
-void FaintClearSetData(void);
-void SwitchInClearSetData(void);
-void sub_803BDA0(u8 bank);
void BattleMainCB2(void);
+void CB2_QuitRecordedBattle(void);
+void sub_8038528(struct Sprite* sprite);
+void sub_8038A04(void); // unused
void VBlankCB_Battle(void);
-bool8 TryRunFromBattle(u8 bank);
-u8 IsRunningFromBattleImpossible(void);
-u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
-void SwapTurnOrder(u8 id1, u8 id2);
-void BattleTurnPassed(void);
+void nullsub_17(void);
+void sub_8038B74(struct Sprite *sprite);
void sub_8038D64(void);
-void RunBattleScriptCommands_PopCallbacksStack(void);
-void RunBattleScriptCommands(void);
+u32 sub_80391E0(u8 arrayId, u8 caseId);
u32 sub_80397C4(u32 setId, u32 tableId);
-void sub_8039E9C(struct Sprite *sprite);
-void sub_8039B2C(struct Sprite *sprite);
+void oac_poke_opponent(struct Sprite *sprite);
+void SpriteCallbackDummy_2(struct Sprite *sprite);
+void sub_8039934(struct Sprite *sprite);
void sub_8039AD8(struct Sprite *sprite);
+void sub_8039B2C(struct Sprite *sprite);
+void sub_8039B58(struct Sprite *sprite);
+void sub_8039BB4(struct Sprite *sprite);
+void sub_80105DC(struct Sprite *sprite);
+void sub_8039C00(struct Sprite *sprite);
+void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d);
+void dp11b_obj_free(u8 bank, bool8 b);
+void sub_8039E44(struct Sprite *sprite);
+void sub_8039E60(struct Sprite *sprite);
+void sub_8039E84(struct Sprite *sprite);
+void sub_8039E9C(struct Sprite *sprite);
void nullsub_20(void);
void BeginBattleIntro(void);
+void SwitchInClearSetData(void);
+void FaintClearSetData(void);
+void sub_803B3AC(void); // unused
+void sub_803B598(void); // unused
+void BattleTurnPassed(void);
+u8 IsRunningFromBattleImpossible(void);
+void sub_803BDA0(u8 bank);
+void SwapTurnOrder(u8 id1, u8 id2);
+u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
+void RunBattleScriptCommands_PopCallbacksStack(void);
+void RunBattleScriptCommands(void);
+bool8 TryRunFromBattle(u8 bank);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 5282916c0..67f0813bc 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -60,7 +60,7 @@ extern u8 gUnknown_02038440;
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
-void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim);
+void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim);
void DestroyAnimSprite(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 taskId);
void DestroyAnimSoundTask(u8 taskId);
@@ -75,5 +75,24 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
// battle_anim_80FE840.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+void HandleIntroSlide(u8 terrainId);
+
+// battle_anim_80A5C6C.s
+void sub_80A6EEC(struct Sprite *sprite);
+void sub_80A8278(void);
+void sub_80A6B30(struct UnknownAnimStruct2*);
+void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
+u8 sub_80A82E4(u8 bank);
+u8 sub_80A5C6C(u8 bank, u8 attributeId);
+bool8 AnimBankSpriteExists(u8 bank);
+void sub_80A6C68(u8 arg0);
+u8 GetAnimBankSpriteId(u8 wantedBank);
+bool8 IsDoubleBattle(void);
+u8 sub_80A6D94(void);
+u8 sub_80A8364(u8);
+void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
+void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
+u8 sub_80A6138(u8 bank);
+u8 sub_80A82E4(u8 bank);
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 0b8fb0c0e..8affb1406 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -76,6 +76,16 @@ enum
#define BALL_3_SHAKES_SUCCESS 4
#define BALL_TRAINER_BLOCK 5
+#define RET_VALUE_LEVELLED_UP 11
+
+#define INSTANT_HP_BAR_DROP 32767
+
+struct UnusedControllerStruct
+{
+ u8 field_0 : 7;
+ u8 flag_x80 : 1;
+};
+
struct HpAndStatus
{
u16 hp;
@@ -113,14 +123,14 @@ enum
CONTROLLER_TRAINERSLIDEBACK,
CONTROLLER_FAINTANIMATION,
CONTROLLER_PALETTEFADE,
- CONTROLLER_12,
- CONTROLLER_BALLTHROW,
+ CONTROLLER_SUCCESSBALLTHROWANIM,
+ CONTROLLER_BALLTHROWANIM,
CONTROLLER_PAUSE,
CONTROLLER_MOVEANIMATION,
CONTROLLER_PRINTSTRING,
CONTROLLER_PRINTSTRINGPLAYERONLY,
CONTROLLER_CHOOSEACTION,
- CONTROLLER_YESNOBOX,
+ CONTROLLER_UNKNOWNYESNOBOX,
CONTROLLER_CHOOSEMOVE,
CONTROLLER_OPENBAG,
CONTROLLER_CHOOSEPOKEMON,
@@ -134,10 +144,10 @@ enum
CONTROLLER_DMA3TRANSFER,
CONTROLLER_31,
CONTROLLER_32,
- CONTROLLER_CHOICERETURNVALUE,
- CONTROLLER_34,
- CONTROLLER_35,
- CONTROLLER_36,
+ CONTROLLER_TWORETURNVALUES,
+ CONTROLLER_CHOSENMONRETURNVALUE,
+ CONTROLLER_ONERETURNVALUE,
+ CONTROLLER_ONERETURNVALUE_DUPLICATE,
CONTROLLER_37,
CONTROLLER_38,
CONTROLLER_39,
@@ -182,16 +192,16 @@ void EmitTrainerSlide(u8 bufferId);
void EmitTrainerSlideBack(u8 bufferId);
void EmitFaintAnimation(u8 bufferId);
void EmitPaletteFade(u8 bufferId); // unused
-void EmitCmd12(u8 bufferId); // unused
-void EmitBallThrow(u8 bufferId, u8 caseId);
+void EmitSuccessBallThrowAnim(u8 bufferId); // unused
+void EmitBallThrowAnim(u8 bufferId, u8 caseId);
void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void EmitPrintString(u8 bufferId, u16 stringId);
void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
-void EmitYesNoBox(u8 bufferId);
+void EmitUnknownYesNoBox(u8 bufferId);
void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
-void EmitOpenBag(u8 bufferId, u8* arg1);
+void EmitChooseItem(u8 bufferId, u8* arg1);
void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
void EmitCmd23(u8 bufferId); // unused
void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
@@ -203,14 +213,14 @@ void EmitDataTransfer(u8 bufferId, u16 size, void *data);
void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
void EmitCmd32(u8 bufferId, u16 size, void *c); // unused
-void EmitChoiceReturnValue(u8 bufferId, u8 arg1, u16 arg2);
-void EmitCmd34(u8 bufferId, u8 b, u8 *c);
-void EmitCmd35(u8 bufferId, u16 b);
-void EmitCmd36(u8 bufferId, u16 b);
-void EmitCmd37(u8 bufferId);
-void EmitCmd38(u8 bufferId, u8 b);
-void EmitCmd39(u8 bufferId);
-void EmitCmd40(u8 bufferId);
+void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
+void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
+void EmitOneReturnValue(u8 bufferId, u16 arg1);
+void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
+void EmitCmd37(u8 bufferId); // unused
+void EmitCmd38(u8 bufferId, u8 b); // unused
+void EmitCmd39(u8 bufferId); // unused
+void EmitCmd40(u8 bufferId); // unused
void EmitHitAnimation(u8 bufferId);
void EmitCmd42(u8 bufferId);
void EmitEffectivenessSound(u8 bufferId, u16 songId);
@@ -230,8 +240,15 @@ void EmitCmd55(u8 bufferId, u8 arg1);
// player controller
void SetBankFuncToPlayerBufferRunCommand(void);
void nullsub_21(void);
+void PlayerHandleGetRawMonData(void);
+void sub_80587B0(void);
+void sub_805CC00(struct Sprite *sprite);
+void SetCB2ToReshowScreenAfterMenu(void);
+void SetCB2ToReshowScreenAfterMenu2(void);
+void c3_0802FDF4(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
+void InitMoveSelectionsVarsAndStrings(void);
// recorded player controller
void SetBankFuncToRecordedPlayerBufferRunCommand(void);
diff --git a/include/battle_interface.h b/include/battle_interface.h
index 0980b0002..aad30f7b3 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -9,6 +9,12 @@ enum
HP_MAX
};
+enum
+{
+ HEALTH_BAR,
+ EXP_BAR
+};
+
#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
@@ -41,7 +47,7 @@ enum
u8 CreateBankHealthboxSprites(u8 bank);
u8 CreateSafariPlayerHealthboxSprites(void);
-void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C);
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
void DestoryHealthboxSprite(u8 healthboxSpriteId);
diff --git a/include/battle_link_817C95C.h b/include/battle_link_817C95C.h
new file mode 100644
index 000000000..815c1f058
--- /dev/null
+++ b/include/battle_link_817C95C.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_BATTLE_LINK_817C95C_H
+#define GUARD_BATTLE_LINK_817C95C_H
+
+void sub_817C95C(u16 stringId);
+void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
+void sub_817E32C(u8 animationId);
+void sub_817E3F4(void);
+void sub_817F2A8(void);
+u8 GetBankMoveSlotId(u8 bank, u16 move);
+
+#endif // GUARD_BATTLE_LINK_817C95C_H
diff --git a/include/link.h b/include/link.h
index b8835ce04..7a6563144 100644
--- a/include/link.h
+++ b/include/link.h
@@ -191,5 +191,6 @@ void sub_800A620(void);
void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
+void sub_800AC34(void);
#endif // GUARD_LINK_H
diff --git a/include/pokeball.h b/include/pokeball.h
new file mode 100644
index 000000000..76f084465
--- /dev/null
+++ b/include/pokeball.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_POKEBALL_H
+#define GUARD_POKEBALL_H
+
+u8 sub_80753E8(u16, u8);
+void sub_8076918(u8 bank);
+void DoHitAnimHealthboxEffect(u8 bank);
+
+#endif // GUARD_POKEBALL_H
diff --git a/ld_script.txt b/ld_script.txt
index 71320dd90..31d2fd728 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -62,7 +62,6 @@ SECTIONS {
src/battle_script_commands.o(.text);
asm/battle_5.o(.text);
src/battle_controller_player.o(.text);
- asm/battle_controller_player.o(.text);
asm/battle_7.o(.text);
src/battle_controller_opponent.o(.text);
asm/battle_controller_opponent.o(.text);
@@ -117,7 +116,7 @@ SECTIONS {
src/palette.o(.text);
src/sound.o(.text);
src/battle_anim.o(.text);
- asm/rom_80A5C6C.o(.text);
+ asm/battle_anim_80A5C6C.o(.text);
src/task.o(.text);
src/reshow_battle_screen.o(.text);
asm/battle_anim_80A9C70.o(.text);
diff --git a/src/battle_2.c b/src/battle_2.c
index f2a5508e0..fd1b88b48 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -238,7 +238,6 @@ static void sub_8038F34(void);
static void sub_80392A8(void);
static void sub_803937C(void);
static void sub_803939C(void);
-void oac_poke_opponent(struct Sprite *sprite);
static void sub_803980C(struct Sprite *sprite);
static void sub_8039838(struct Sprite *sprite);
static void sub_8039894(struct Sprite *sprite);
@@ -4025,7 +4024,7 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]);
+ EmitChooseItem(0, gBattleStruct->field_60[gActiveBank]);
MarkBufferBankForExecution(gActiveBank);
}
break;
@@ -4070,7 +4069,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case ACTION_POKEBLOCK_CASE:
- EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]);
+ EmitChooseItem(0, gBattleStruct->field_60[gActiveBank]);
MarkBufferBankForExecution(gActiveBank);
break;
case ACTION_CANCEL_PARTNER:
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 3f97c59a5..de440054c 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -39,7 +39,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
&& gDisableStructs[gActiveBank].perishSong1 == 0)
{
*(gBattleStruct->field_294 + gActiveBank) = 6;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
@@ -121,7 +121,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
{
// we found a mon
*(gBattleStruct->field_294 + gActiveBank) = i;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -221,7 +221,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
{
// we found a mon
*(gBattleStruct->field_294 + gActiveBank) = i;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -241,13 +241,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1)
{
*(gBattleStruct->field_294 + gActiveBank) = 6;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1)
{
*(gBattleStruct->field_294 + gActiveBank) = 6;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
@@ -258,7 +258,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if (Random() & 1)
{
*(gBattleStruct->field_294 + gActiveBank) = 6;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
@@ -426,7 +426,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0)
{
*(gBattleStruct->field_294 + gActiveBank) = i;
- EmitChoiceReturnValue(1, 2, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -611,7 +611,7 @@ void AI_TrySwitchOrUseItem(void)
}
}
- EmitChoiceReturnValue(1, 0, (gActiveBank ^ BIT_SIDE) << 8);
+ EmitTwoReturnValues(1, ACTION_USE_MOVE, (gActiveBank ^ BIT_SIDE) << 8);
}
#define TYPE_FORESIGHT 0xFE
@@ -940,7 +940,7 @@ static bool8 ShouldUseItem(void)
if (shouldUse)
{
- EmitChoiceReturnValue(1, 1, 0);
+ EmitTwoReturnValues(1, ACTION_USE_ITEM, 0);
*(gBattleStruct->field_C0 + (gActiveBank / 2) * 2) = item;
gBattleResources->battleHistory->trainerItems[i] = 0;
return shouldUse;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 023272017..d41dc77c4 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -47,18 +47,6 @@ extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
-extern void sub_80A8278(void); // rom_80A5C6C.s
-extern void sub_80A6B30(struct UnknownAnimStruct2*); // rom_80A5C6C.s
-extern void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); // rom_80A5C6C.s
-extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s
-extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s
-extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s
-extern void sub_80A6C68(u8 arg0); // rom_80A5C6C.s
-extern u8 GetAnimBankSpriteId(u8 wantedBank); // rom_80A5C6C.s
-extern u8 sub_80A6D94(void);
-extern u8 sub_80A8364(u8);
-extern bool8 IsDoubleBattle(void);
-
// this file's functions
static void ScriptCmd_loadspritegfx(void);
static void ScriptCmd_unloadspritegfx(void);
@@ -234,10 +222,10 @@ void DoMoveAnim(u16 move)
{
gAnimBankAttacker = gBankAttacker;
gAnimBankTarget = gBankTarget;
- DoBattleAnim(gBattleAnims_Moves, move, TRUE);
+ LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE);
}
-void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim)
+void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim)
{
s32 i;
@@ -1281,7 +1269,7 @@ static void ScriptCmd_changebg(void)
s8 BattleAnimAdjustPanning(s8 pan)
{
- if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10)
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].statusAnimActive)
{
if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
pan = PAN_SIDE_OPPONENT;
@@ -1323,7 +1311,7 @@ s8 BattleAnimAdjustPanning(s8 pan)
s8 BattleAnimAdjustPanning2(s8 pan)
{
- if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10)
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].statusAnimActive)
{
if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
pan = PAN_SIDE_OPPONENT;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 03b67c28f..b41dbf0bc 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -4,6 +4,7 @@
#include "battle_message.h"
#include "battle_interface.h"
#include "battle_anim.h"
+#include "battle_link_817C95C.h"
#include "pokemon.h"
#include "link.h"
#include "util.h"
@@ -21,6 +22,8 @@
#include "string_util.h"
#include "bg.h"
#include "reshow_battle_screen.h"
+#include "rng.h"
+#include "pokeball.h"
extern u32 gBattleExecBuffer;
extern u8 gActiveBank;
@@ -39,98 +42,134 @@ extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
extern u8 gMultiUsePlayerCursor;
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlay_BGM;
+extern u16 gPartnerTrainerId;
+extern struct SpriteTemplate gUnknown_0202499C;
+extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
+extern u16 gScriptItemId;
+extern u8 gUnknown_0203CEE8;
+extern u8 gUnknown_0203CEE9;
+extern u8 gUnknown_0203CF00[];
+extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+extern u8 gBattleOutcome;
+extern u8 gNumberOfMovesToChoose;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern s32 gUnknown_0203CD70;
+extern u8 gBankInMenu;
+extern u32 gBattlePalaceMoveSelectionRngValue;
+extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_020244B4[];
+extern u16 gUnknown_020243FC;
+extern struct UnusedControllerStruct gUnknown_02022D0C;
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+extern const u8 gTypeNames[][7];
extern const struct BattleMove gBattleMoves[];
-extern void dp11b_obj_instanciate(u8, u8, s8, s8);
-extern void dp11b_obj_free(u8, u8);
-extern void sub_800AC34(void);
+extern const u8 gText_BattleSwitchWhich[];
+extern const u8 gText_MoveInterfacePP[];
+extern const u8 gText_MoveInterfaceType[];
+extern const u8 gText_LinkStandby[];
+extern const u8 gText_BattleMenu[];
+extern const u8 gText_WhatWillPkmnDo[];
+extern const u8 gText_BattleYesNoChoice[];
+
+extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
+extern void sub_81B89AC(u8 arg0);
+extern void sub_81AABB0(void);
+extern void sub_806A068(u16, u8);
+extern void sub_81A57E4(u8 bank, u16 stringId);
+extern void sub_81851A8(u8 *);
// this file's functions
-void PlayerHandleGetMonData(void);
+static void PlayerHandleGetMonData(void);
void PlayerHandleGetRawMonData(void);
-void PlayerHandleSetMonData(void);
-void PlayerHandleSetRawMonData(void);
-void PlayerHandleLoadMonSprite(void);
-void PlayerHandleSwitchInAnim(void);
-void PlayerHandleReturnMonToBall(void);
-void PlayerHandleDrawTrainerPic(void);
-void PlayerHandleTrainerSlide(void);
-void PlayerHandleTrainerSlideBack(void);
-void PlayerHandleFaintAnimation(void);
-void PlayerHandlePaletteFade(void);
-void PlayerHandleCmd12(void);
-void PlayerHandleBallThrow(void);
-void PlayerHandlePause(void);
-void PlayerHandleMoveAnimation(void);
-void PlayerHandlePrintString(void);
-void PlayerHandlePrintStringPlayerOnly(void);
-void PlayerHandleChooseAction(void);
-void PlayerHandleCmd19(void);
-void PlayerHandleChooseMove(void);
-void PlayerHandleOpenBag(void);
-void PlayerHandleChoosePokemon(void);
-void PlayerHandleCmd23(void);
-void PlayerHandleHealthBarUpdate(void);
-void PlayerHandleExpUpdate(void);
-void PlayerHandleStatusIconUpdate(void);
-void PlayerHandleStatusAnimation(void);
-void PlayerHandleStatusXor(void);
-void PlayerHandleDataTransfer(void);
-void PlayerHandleDMA3Transfer(void);
-void PlayerHandlePlayBGM(void);
-void PlayerHandleCmd32(void);
-void PlayerHandleCmd33(void);
-void PlayerHandleCmd34(void);
-void PlayerHandleCmd35(void);
-void PlayerHandleCmd36(void);
-void PlayerHandleCmd37(void);
-void PlayerHandleCmd38(void);
-void PlayerHandleCmd39(void);
-void PlayerHandleCmd40(void);
-void PlayerHandleHitAnimation(void);
-void PlayerHandleCmd42(void);
-void PlayerHandleEffectivenessSound(void);
-void PlayerHandlePlayFanfareOrBGM(void);
-void PlayerHandleFaintingCry(void);
-void PlayerHandleIntroSlide(void);
-void PlayerHandleIntroTrainerBallThrow(void);
-void PlayerHandleDrawPartyStatusSummary(void);
-void PlayerHandleCmd49(void);
-void PlayerHandleCmd50(void);
-void PlayerHandleSpriteInvisibility(void);
-void PlayerHandleBattleAnimation(void);
-void PlayerHandleLinkStandbyMsg(void);
-void PlayerHandleResetActionMoveSelection(void);
-void PlayerHandleCmd55(void);
-void nullsub_22(void);
-
-void PlayerBufferRunCommand(void);
-void HandleInputChooseTarget(void);
-void HandleInputChooseMove(void);
-void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
-void MoveSelectionDestroyCursorAt(u8 cursorPos);
-void MoveSelectionDisplayPpNumber(void);
-void MoveSelectionDisplayPpString(void);
-void MoveSelectionDisplayMoveType(void);
-void MoveSelectionDisplayMoveNames(void);
-void HandleMoveSwitchting(void);
-void sub_8058FC0(void);
-void sub_8059828(void);
-void sub_80598E0(void);
-void sub_8059544(u8 taskId);
-void sub_8059330(u8 taskId);
-void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
-void sub_8059400(u8 taskId);
-void sub_80595A4(u8 taskId);
-void PrintLinkStandbyMsg(void);
-u32 CopyPlayerMonData(u8 monId, u8 *dst);
-void SetPlayerMonData(u8 monId);
-void sub_805B258(u8 bank, bool8 dontClearSubstituteBit);
-void sub_805B464(void);
-void PlayerDoMoveAnimation(void);
-
-void (*const gPlayerBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
+static void PlayerHandleSetMonData(void);
+static void PlayerHandleSetRawMonData(void);
+static void PlayerHandleLoadMonSprite(void);
+static void PlayerHandleSwitchInAnim(void);
+static void PlayerHandleReturnMonToBall(void);
+static void PlayerHandleDrawTrainerPic(void);
+static void PlayerHandleTrainerSlide(void);
+static void PlayerHandleTrainerSlideBack(void);
+static void PlayerHandleFaintAnimation(void);
+static void PlayerHandlePaletteFade(void);
+static void PlayerHandleSuccessBallThrowAnim(void);
+static void PlayerHandleBallThrowAnim(void);
+static void PlayerHandlePause(void);
+static void PlayerHandleMoveAnimation(void);
+static void PlayerHandlePrintString(void);
+static void PlayerHandlePrintStringPlayerOnly(void);
+static void PlayerHandleChooseAction(void);
+static void PlayerHandleUnknownYesNoBox(void);
+static void PlayerHandleChooseMove(void);
+static void PlayerHandleChooseItem(void);
+static void PlayerHandleChoosePokemon(void);
+static void PlayerHandleCmd23(void);
+static void PlayerHandleHealthBarUpdate(void);
+static void PlayerHandleExpUpdate(void);
+static void PlayerHandleStatusIconUpdate(void);
+static void PlayerHandleStatusAnimation(void);
+static void PlayerHandleStatusXor(void);
+static void PlayerHandleDataTransfer(void);
+static void PlayerHandleDMA3Transfer(void);
+static void PlayerHandlePlayBGM(void);
+static void PlayerHandleCmd32(void);
+static void PlayerHandleTwoReturnValues(void);
+static void PlayerHandleChosenMonReturnValue(void);
+static void PlayerHandleOneReturnValue(void);
+static void PlayerHandleOneReturnValue_Duplicate(void);
+static void PlayerHandleCmd37(void);
+static void PlayerHandleCmd38(void);
+static void PlayerHandleCmd39(void);
+static void PlayerHandleCmd40(void);
+static void PlayerHandleHitAnimation(void);
+static void PlayerHandleCmd42(void);
+static void PlayerHandleEffectivenessSound(void);
+static void PlayerHandlePlayFanfareOrBGM(void);
+static void PlayerHandleFaintingCry(void);
+static void PlayerHandleIntroSlide(void);
+static void PlayerHandleIntroTrainerBallThrow(void);
+static void PlayerHandleDrawPartyStatusSummary(void);
+static void PlayerHandleCmd49(void);
+static void PlayerHandleCmd50(void);
+static void PlayerHandleSpriteInvisibility(void);
+static void PlayerHandleBattleAnimation(void);
+static void PlayerHandleLinkStandbyMsg(void);
+static void PlayerHandleResetActionMoveSelection(void);
+static void PlayerHandleCmd55(void);
+static void nullsub_22(void);
+
+static void PlayerBufferRunCommand(void);
+static void HandleInputChooseTarget(void);
+static void HandleInputChooseMove(void);
+static void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
+static void MoveSelectionDestroyCursorAt(u8 cursorPos);
+static void MoveSelectionDisplayPpNumber(void);
+static void MoveSelectionDisplayPpString(void);
+static void MoveSelectionDisplayMoveType(void);
+static void MoveSelectionDisplayMoveNames(void);
+static void HandleMoveSwitchting(void);
+static void sub_8058FC0(void);
+static void sub_8059828(void);
+static void sub_80598E0(void);
+static void sub_8059544(u8 taskId);
+static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
+static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
+static void sub_8059400(u8 taskId);
+static void sub_80595A4(u8 taskId);
+static void PrintLinkStandbyMsg(void);
+static u32 CopyPlayerMonData(u8 monId, u8 *dst);
+static void SetPlayerMonData(u8 monId);
+static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit);
+static void DoSwitchOutAnimation(void);
+static void PlayerDoMoveAnimation(void);
+static void task05_08033660(u8 taskId);
+static void sub_805CE38(void);
+
+static void (*const gPlayerBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
{
PlayerHandleGetMonData,
PlayerHandleGetRawMonData,
@@ -144,16 +183,16 @@ void (*const gPlayerBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
PlayerHandleTrainerSlideBack,
PlayerHandleFaintAnimation,
PlayerHandlePaletteFade,
- PlayerHandleCmd12,
- PlayerHandleBallThrow,
+ PlayerHandleSuccessBallThrowAnim,
+ PlayerHandleBallThrowAnim,
PlayerHandlePause,
PlayerHandleMoveAnimation,
PlayerHandlePrintString,
PlayerHandlePrintStringPlayerOnly,
PlayerHandleChooseAction,
- PlayerHandleCmd19,
+ PlayerHandleUnknownYesNoBox,
PlayerHandleChooseMove,
- PlayerHandleOpenBag,
+ PlayerHandleChooseItem,
PlayerHandleChoosePokemon,
PlayerHandleCmd23,
PlayerHandleHealthBarUpdate,
@@ -165,10 +204,10 @@ void (*const gPlayerBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
PlayerHandleDMA3Transfer,
PlayerHandlePlayBGM,
PlayerHandleCmd32,
- PlayerHandleCmd33,
- PlayerHandleCmd34,
- PlayerHandleCmd35,
- PlayerHandleCmd36,
+ PlayerHandleTwoReturnValues,
+ PlayerHandleChosenMonReturnValue,
+ PlayerHandleOneReturnValue,
+ PlayerHandleOneReturnValue_Duplicate,
PlayerHandleCmd37,
PlayerHandleCmd38,
PlayerHandleCmd39,
@@ -207,7 +246,7 @@ void SetBankFuncToPlayerBufferRunCommand(void)
gUnknown_020244CC = 0;
}
-void PlayerBufferExecCompleted(void)
+static void PlayerBufferExecCompleted(void)
{
gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -223,7 +262,7 @@ void PlayerBufferExecCompleted(void)
}
}
-void PlayerBufferRunCommand(void)
+static void PlayerBufferRunCommand(void)
{
if (gBattleExecBuffer & gBitTable[gActiveBank])
{
@@ -234,13 +273,13 @@ void PlayerBufferRunCommand(void)
}
}
-void CompleteOnBankSpritePosX_0(void)
+static void CompleteOnBankSpritePosX_0(void)
{
if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
PlayerBufferExecCompleted();
}
-void HandleInputChooseAction(void)
+static void HandleInputChooseAction(void)
{
u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
@@ -259,16 +298,16 @@ void HandleInputChooseAction(void)
switch (gActionSelectionCursor[gActiveBank])
{
case ACTION_USE_MOVE:
- EmitChoiceReturnValue(1, ACTION_USE_MOVE, 0);
+ EmitTwoReturnValues(1, ACTION_USE_MOVE, 0);
break;
case ACTION_USE_ITEM:
- EmitChoiceReturnValue(1, ACTION_USE_ITEM, 0);
+ EmitTwoReturnValues(1, ACTION_USE_ITEM, 0);
break;
case ACTION_SWITCH:
- EmitChoiceReturnValue(1, ACTION_SWITCH, 0);
+ EmitTwoReturnValues(1, ACTION_SWITCH, 0);
break;
case ACTION_RUN:
- EmitChoiceReturnValue(1, ACTION_RUN, 0);
+ EmitTwoReturnValues(1, ACTION_RUN, 0);
break;
}
PlayerBufferExecCompleted();
@@ -329,7 +368,7 @@ void HandleInputChooseAction(void)
return;
}
PlaySE(SE_SELECT);
- EmitChoiceReturnValue(1, ACTION_CANCEL_PARTNER, 0);
+ EmitTwoReturnValues(1, ACTION_CANCEL_PARTNER, 0);
PlayerBufferExecCompleted();
}
}
@@ -339,14 +378,14 @@ void HandleInputChooseAction(void)
}
}
-void sub_80577F0(void) // unused
+static void sub_80577F0(void) // unused
{
dp11b_obj_free(gActiveBank, 1);
dp11b_obj_free(gActiveBank, 0);
gBattleBankFunc[gActiveBank] = HandleInputChooseTarget;
}
-void HandleInputChooseTarget(void)
+static void HandleInputChooseTarget(void)
{
s32 i;
u8 identities[4];
@@ -375,7 +414,7 @@ void HandleInputChooseTarget(void)
{
PlaySE(SE_SELECT);
gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
- EmitChoiceReturnValue(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
+ EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
dp11b_obj_free(gMultiUsePlayerCursor, 1);
PlayerBufferExecCompleted();
}
@@ -474,10 +513,7 @@ void HandleInputChooseTarget(void)
}
}
-extern u8 gNumberOfMovesToChoose;
-extern const u8 gText_BattleSwitchWhich[];
-
-void HandleInputChooseMove(void)
+static void HandleInputChooseMove(void)
{
bool32 canSelectTarget = FALSE;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
@@ -532,7 +568,7 @@ void HandleInputChooseMove(void)
if (!canSelectTarget)
{
- EmitChoiceReturnValue(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
+ EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
PlayerBufferExecCompleted();
}
else
@@ -552,7 +588,7 @@ void HandleInputChooseMove(void)
else if (gMain.newKeys & B_BUTTON || gUnknown_020244CC > 59)
{
PlaySE(SE_SELECT);
- EmitChoiceReturnValue(1, 10, 0xFFFF);
+ EmitTwoReturnValues(1, 10, 0xFFFF);
PlayerBufferExecCompleted();
}
else if (gMain.newKeys & DPAD_LEFT)
@@ -623,9 +659,6 @@ void HandleInputChooseMove(void)
}
}
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-
u32 sub_8057FBC(void) // unused
{
u32 var = 0;
@@ -676,7 +709,7 @@ u32 sub_8057FBC(void) // unused
return var;
}
-void HandleMoveSwitchting(void)
+static void HandleMoveSwitchting(void)
{
u8 perMovePPBonuses[4];
struct ChooseMoveStruct moveStruct;
@@ -860,10 +893,7 @@ void HandleMoveSwitchting(void)
}
}
-extern u8 gBattleOutcome;
-extern void sub_817E3F4(void); // battle_link_817C95C
-
-void sub_80586F8(void)
+static void sub_80586F8(void)
{
if (gLinkVSyncDisabled == 0)
{
@@ -919,19 +949,19 @@ void sub_80587B0(void)
}
}
-void CompleteOnBankSpriteCallbackDummy(void)
+static void CompleteOnBankSpriteCallbackDummy(void)
{
if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
-void CompleteOnBankSpriteCallbackDummy2(void)
+static void CompleteOnBankSpriteCallbackDummy2(void)
{
if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
-void sub_80588B4(void)
+static void sub_80588B4(void)
{
if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
@@ -942,7 +972,7 @@ void sub_80588B4(void)
}
}
-void sub_8058924(void)
+static void sub_8058924(void)
{
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
{
@@ -951,11 +981,7 @@ void sub_8058924(void)
}
}
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-
-extern bool8 IsDoubleBattle(void);
-
-void sub_805896C(void)
+static void sub_805896C(void)
{
bool8 var = FALSE;
@@ -991,11 +1017,7 @@ void sub_805896C(void)
}
}
-extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
-extern void sub_8076918(u8 bank);
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-
-void sub_8058B40(void)
+static void sub_8058B40(void)
{
bool32 r9 = FALSE;
bool32 r8 = FALSE;
@@ -1071,31 +1093,28 @@ void sub_8058B40(void)
}
}
-extern void sub_805E408(u8 bank);
-extern void move_anim_start_t4(u8 arg0, u8 atkBank, u8 defBank, u8 tableId);
-
-void sub_8058EDC(void)
+static void sub_8058EDC(void)
{
if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
&& gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
- sub_805E408(gActiveBank);
+ SetBattleSpriteInvisibilityBitToSpriteInvisibility(gActiveBank);
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
gBattleBankFunc[gActiveBank] = sub_8058FC0;
}
}
-void sub_8058FC0(void)
+static void sub_8058FC0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
&& !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
@@ -1104,7 +1123,7 @@ void sub_8058FC0(void)
}
}
-void sub_805902C(void)
+static void sub_805902C(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
@@ -1132,7 +1151,7 @@ void c3_0802FDF4(u8 taskId)
}
}
-void bx_t1_healthbar_update(void)
+static void CompleteOnHealthbarDone(void)
{
s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], 0, 0);
@@ -1149,19 +1168,24 @@ void bx_t1_healthbar_update(void)
}
}
-void CompleteOnInactiveTextPrinter(void)
+static void CompleteOnInactiveTextPrinter(void)
{
if (!IsTextPrinterActive(0))
PlayerBufferExecCompleted();
}
-void sub_80591B8(u8 taskId)
+#define tExpTask_monId data[0]
+#define tExpTask_gainedExp data[1]
+#define tExpTask_bank data[2]
+#define tExpTask_frames data[10]
+
+static void Task_GiveExpToMon(u8 taskId)
{
- u32 monId = (u8)(gTasks[taskId].data[0]);
- u8 bank = gTasks[taskId].data[2];
- s16 gainedExp = gTasks[taskId].data[1];
+ u32 monId = (u8)(gTasks[taskId].tExpTask_monId);
+ u8 bank = gTasks[taskId].tExpTask_bank;
+ s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
- if (IsDoubleBattle() == TRUE || monId != gBattlePartyID[bank])
+ if (IsDoubleBattle() == TRUE || monId != gBattlePartyID[bank]) // give exp without the expbar
{
struct Pokemon *mon = &gPlayerParty[monId];
u16 species = GetMonData(mon, MON_DATA_SPECIES);
@@ -1178,7 +1202,7 @@ void sub_80591B8(u8 taskId)
gainedExp -= nextLvlExp - currExp;
savedActiveBank = gActiveBank;
gActiveBank = bank;
- EmitChoiceReturnValue(1, 11, gainedExp);
+ EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
gActiveBank = savedActiveBank;
if (IsDoubleBattle() == TRUE
@@ -1197,15 +1221,15 @@ void sub_80591B8(u8 taskId)
}
else
{
- gTasks[taskId].func = sub_8059330;
+ gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar;
}
}
-void sub_8059330(u8 taskId)
+static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
{
- u8 monIndex = gTasks[taskId].data[0];
- s32 gainedExp = gTasks[taskId].data[1];
- u8 bank = gTasks[taskId].data[2];
+ u8 monIndex = gTasks[taskId].tExpTask_monId;
+ s32 gainedExp = gTasks[taskId].tExpTask_gainedExp;
+ u8 bank = gTasks[taskId].tExpTask_bank;
struct Pokemon *mon = &gPlayerParty[monIndex];
u8 level = GetMonData(mon, MON_DATA_LEVEL);
u16 species = GetMonData(mon, MON_DATA_SPECIES);
@@ -1220,20 +1244,20 @@ void sub_8059330(u8 taskId)
gTasks[taskId].func = sub_8059400;
}
-void sub_8059400(u8 taskId)
+static void sub_8059400(u8 taskId)
{
- if (gTasks[taskId].data[10] < 13)
+ if (gTasks[taskId].tExpTask_frames < 13)
{
- gTasks[taskId].data[10]++;
+ gTasks[taskId].tExpTask_frames++;
}
else
{
- u8 monId = gTasks[taskId].data[0];
- s16 gainedExp = gTasks[taskId].data[1];
- u8 bank = gTasks[taskId].data[2];
+ u8 monId = gTasks[taskId].tExpTask_monId;
+ s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
+ u8 bank = gTasks[taskId].tExpTask_bank;
s16 r4;
- r4 = sub_8074AA0(bank, gHealthBoxesIds[bank], 1, 0);
+ r4 = sub_8074AA0(bank, gHealthBoxesIds[bank], EXP_BAR, 0);
SetHealthboxSpriteVisible(gHealthBoxesIds[bank]);
if (r4 == -1)
{
@@ -1257,7 +1281,7 @@ void sub_8059400(u8 taskId)
gainedExp -= expOnNextLvl - currExp;
savedActiveBank = gActiveBank;
gActiveBank = bank;
- EmitChoiceReturnValue(1, 11, gainedExp);
+ EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
gActiveBank = savedActiveBank;
gTasks[taskId].func = sub_8059544;
}
@@ -1272,25 +1296,25 @@ void sub_8059400(u8 taskId)
}
}
-void sub_8059544(u8 taskId)
+static void sub_8059544(u8 taskId)
{
- u8 bank = gTasks[taskId].data[2];
- u8 monIndex = gTasks[taskId].data[0];
+ u8 bank = gTasks[taskId].tExpTask_bank;
+ u8 monIndex = gTasks[taskId].tExpTask_monId;
if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON])
bank ^= BIT_MON;
- move_anim_start_t4(bank, bank, bank, 0);
+ DoSpecialBattleAnimation(bank, bank, bank, B_ANIM_LVL_UP);
gTasks[taskId].func = sub_80595A4;
}
-void sub_80595A4(u8 taskId)
+static void sub_80595A4(u8 taskId)
{
- u8 bank = gTasks[taskId].data[2];
+ u8 bank = gTasks[taskId].tExpTask_bank;
- if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[bank].specialAnimActive)
{
- u8 monIndex = gTasks[taskId].data[0];
+ u8 monIndex = gTasks[taskId].tExpTask_monId;
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
@@ -1303,19 +1327,19 @@ void sub_80595A4(u8 taskId)
}
}
-void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
+static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
{
u8 monIndex;
u8 bank;
- monIndex = gTasks[taskId].data[0];
+ monIndex = gTasks[taskId].tExpTask_monId;
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
- bank = gTasks[taskId].data[2];
+ bank = gTasks[taskId].tExpTask_bank;
gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
-void sub_80596A8(void)
+static void sub_80596A8(void)
{
if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
{
@@ -1329,9 +1353,9 @@ void sub_80596A8(void)
}
}
-void sub_8059744(void)
+static void sub_8059744(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
{
FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
@@ -1340,15 +1364,13 @@ void sub_8059744(void)
}
}
-void CompleteOnInactiveTextPrinter2(void)
+static void CompleteOnInactiveTextPrinter2(void)
{
if (!IsTextPrinterActive(0))
PlayerBufferExecCompleted();
}
-extern void sub_81B89AC(u8 arg0);
-
-void sub_80597CC(void)
+static void sub_80597CC(void)
{
if (!gPaletteFade.active)
{
@@ -1362,18 +1384,14 @@ void sub_80597CC(void)
}
}
-extern u8 gUnknown_0203CEE8;
-extern u8 gUnknown_0203CEE9;
-extern u8 gUnknown_0203CF00[];
-
-void sub_8059828(void)
+static void sub_8059828(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gUnknown_0203CEE8 == 1)
- EmitCmd34(1, gUnknown_0203CEE9, gUnknown_0203CF00);
+ EmitChosenMonReturnValue(1, gUnknown_0203CEE9, gUnknown_0203CF00);
else
- EmitCmd34(1, 6, NULL);
+ EmitChosenMonReturnValue(1, 6, NULL);
if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1)
PrintLinkStandbyMsg();
@@ -1382,10 +1400,7 @@ void sub_8059828(void)
}
}
-extern void sub_81AABB0(void);
-extern void nullsub_35(void);
-
-void sub_80598A4(void)
+static void sub_80598A4(void)
{
if (!gPaletteFade.active)
{
@@ -1396,24 +1411,22 @@ void sub_80598A4(void)
}
}
-extern u16 gScriptItemId;
-
-void sub_80598E0(void)
+static void sub_80598E0(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- EmitCmd35(1, gScriptItemId);
+ EmitOneReturnValue(1, gScriptItemId);
PlayerBufferExecCompleted();
}
}
-void sub_805991C(void)
+static void CompleteOnSpecialAnimDone(void)
{
- if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
PlayerBufferExecCompleted();
}
-void DoHitAnimBlinkEffect(void)
+static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
@@ -1432,7 +1445,7 @@ void DoHitAnimBlinkEffect(void)
}
}
-void PlayerHandleYesNoInput(void)
+static void PlayerHandleUnknownYesNoInput(void)
{
if (gMain.newKeys & DPAD_UP && gMultiUsePlayerCursor != 0)
{
@@ -1454,9 +1467,9 @@ void PlayerHandleYesNoInput(void)
PlaySE(SE_SELECT);
if (gMultiUsePlayerCursor != 0)
- EmitChoiceReturnValue(1, 0xE, 0);
+ EmitTwoReturnValues(1, 0xE, 0);
else
- EmitChoiceReturnValue(1, 0xD, 0);
+ EmitTwoReturnValues(1, 0xD, 0);
PlayerBufferExecCompleted();
}
@@ -1468,10 +1481,7 @@ void PlayerHandleYesNoInput(void)
}
}
-extern const u8 gText_MoveInterfacePP[];
-extern const u8 gText_MoveInterfaceType[];
-
-void MoveSelectionDisplayMoveNames(void)
+static void MoveSelectionDisplayMoveNames(void)
{
s32 i;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
@@ -1487,13 +1497,13 @@ void MoveSelectionDisplayMoveNames(void)
}
}
-void MoveSelectionDisplayPpString(void)
+static void MoveSelectionDisplayPpString(void)
{
StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 7);
}
-void MoveSelectionDisplayPpNumber(void)
+static void MoveSelectionDisplayPpNumber(void)
{
u8 *txtPtr;
struct ChooseMoveStruct *moveInfo;
@@ -1511,9 +1521,7 @@ void MoveSelectionDisplayPpNumber(void)
BattleHandleAddTextPrinter(gDisplayedStringBattle, 9);
}
-extern const u8 gTypeNames[][7];
-
-void MoveSelectionDisplayMoveType(void)
+static void MoveSelectionDisplayMoveType(void)
{
u8 *txtPtr;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
@@ -1530,7 +1538,7 @@ void MoveSelectionDisplayMoveType(void)
BattleHandleAddTextPrinter(gDisplayedStringBattle, 10);
}
-void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
+static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
{
u16 src[2];
src[0] = arg1 + 1;
@@ -1540,7 +1548,7 @@ void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
CopyBgTilemapBufferToVram(0);
}
-void MoveSelectionDestroyCursorAt(u8 cursorPosition)
+static void MoveSelectionDestroyCursorAt(u8 cursorPosition)
{
u16 src[2];
src[0] = 0x1016;
@@ -1580,21 +1588,19 @@ void SetCB2ToReshowScreenAfterMenu2(void)
SetMainCallback2(ReshowBattleScreenAfterMenu);
}
-void sub_8059D60(void)
+static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x10)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
PlayerBufferExecCompleted();
}
-void sub_8059D90(void)
+static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
PlayerBufferExecCompleted();
}
-extern const u8 gText_LinkStandby[];
-
-void PrintLinkStandbyMsg(void)
+static void PrintLinkStandbyMsg(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
@@ -1604,7 +1610,7 @@ void PrintLinkStandbyMsg(void)
}
}
-void PlayerHandleGetMonData(void)
+static void PlayerHandleGetMonData(void)
{
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
u32 size = 0;
@@ -1629,7 +1635,7 @@ void PlayerHandleGetMonData(void)
PlayerBufferExecCompleted();
}
-u32 CopyPlayerMonData(u8 monId, u8 *dst)
+static u32 CopyPlayerMonData(u8 monId, u8 *dst)
{
struct BattlePokemon battleMon;
struct MovePpInfo moveData;
@@ -1949,7 +1955,7 @@ void PlayerHandleGetRawMonData(void)
PlayerBufferExecCompleted();
}
-void PlayerHandleSetMonData(void)
+static void PlayerHandleSetMonData(void)
{
u8 monsToCheck;
u8 i;
@@ -1971,7 +1977,7 @@ void PlayerHandleSetMonData(void)
PlayerBufferExecCompleted();
}
-void SetPlayerMonData(u8 monId)
+static void SetPlayerMonData(u8 monId)
{
struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
@@ -2189,7 +2195,7 @@ void SetPlayerMonData(u8 monId)
sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
}
-void PlayerHandleSetRawMonData(void)
+static void PlayerHandleSetRawMonData(void)
{
u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
u8 i;
@@ -2200,14 +2206,14 @@ void PlayerHandleSetRawMonData(void)
PlayerBufferExecCompleted();
}
-void PlayerHandleLoadMonSprite(void)
+static void PlayerHandleLoadMonSprite(void)
{
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpritePosX_0;
}
-void PlayerHandleSwitchInAnim(void)
+static void PlayerHandleSwitchInAnim(void)
{
ClearTemporarySpeciesSpriteData(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
@@ -2218,16 +2224,7 @@ void PlayerHandleSwitchInAnim(void)
gBattleBankFunc[gActiveBank] = sub_805902C;
}
-extern struct SpriteTemplate gUnknown_0202499C;
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-
-extern u8 sub_80A5C6C(u16, u8);
-extern u8 sub_80A6138(u8 bank);
-extern u8 sub_80A82E4(u8 bank);
-extern u8 sub_80753E8(u16, u8);
-extern void sub_806A068(u16, u8);
-
-void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
+static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
{
u16 species;
@@ -2258,12 +2255,12 @@ void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
}
-void PlayerHandleReturnMonToBall(void)
+static void PlayerHandleReturnMonToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_805B464;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
}
else
{
@@ -2274,21 +2271,21 @@ void PlayerHandleReturnMonToBall(void)
}
}
-void sub_805B464(void)
+static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
{
case 0:
if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_MON);
gBattleBankFunc[gActiveBank] = sub_8059744;
}
break;
@@ -2306,14 +2303,10 @@ struct MonCoords
extern const struct MonCoords gTrainerBackPicCoords[];
extern const struct MonCoords gTrainerFrontPicCoords[];
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-
-extern u16 gPartnerTrainerId;
-
// some explanation here
// in emerald it's possible to have a tag battle in the battle frontier facilities with AI
// which use the front sprite for both the player and the partner as opposed to any other battles (including the one with Steven) that use the back pic as well as animate it
-void PlayerHandleDrawTrainerPic(void)
+static void PlayerHandleDrawTrainerPic(void)
{
s16 xPos, yPos;
u32 trainerPicId;
@@ -2396,7 +2389,7 @@ void PlayerHandleDrawTrainerPic(void)
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
}
-void PlayerHandleTrainerSlide(void)
+static void PlayerHandleTrainerSlide(void)
{
u32 trainerPicId;
@@ -2434,12 +2427,7 @@ void PlayerHandleTrainerSlide(void)
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
}
-extern void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
-extern void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
-extern void sub_80A6EEC(struct Sprite *sprite);
-extern void sub_8039C00(struct Sprite *sprite);
-
-void PlayerHandleTrainerSlideBack(void)
+static void PlayerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
@@ -2451,19 +2439,19 @@ void PlayerHandleTrainerSlideBack(void)
gBattleBankFunc[gActiveBank] = sub_80588B4;
}
-void PlayerHandleFaintAnimation(void)
+static void PlayerHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
{
if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4++;
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
@@ -2474,31 +2462,31 @@ void PlayerHandleFaintAnimation(void)
}
}
-void PlayerHandlePaletteFade(void)
+static void PlayerHandlePaletteFade(void)
{
BeginNormalPaletteFade(-1, 2, 0, 16, 0);
PlayerBufferExecCompleted();
}
-void PlayerHandleCmd12(void)
+static void PlayerHandleSuccessBallThrowAnim(void)
{
- gBattleSpritesDataPtr->animationData->field_8 = 4;
+ gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), 3);
- gBattleBankFunc[gActiveBank] = sub_805991C;
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW);
+ gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
}
-void PlayerHandleBallThrow(void)
+static void PlayerHandleBallThrowAnim(void)
{
- u8 var = gBattleBufferA[gActiveBank][1];
+ u8 ballThrowCaseId = gBattleBufferA[gActiveBank][1];
- gBattleSpritesDataPtr->animationData->field_8 = var;
+ gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), 3);
- gBattleBankFunc[gActiveBank] = sub_805991C;
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW);
+ gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
}
-void PlayerHandlePause(void)
+static void PlayerHandlePause(void)
{
u8 var = gBattleBufferA[gActiveBank][1];
@@ -2509,12 +2497,7 @@ void PlayerHandlePause(void)
PlayerBufferExecCompleted();
}
-extern void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
-extern bool8 mplay_80342A4(u8 bank);
-
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
-
-void PlayerHandleMoveAnimation(void)
+static void PlayerHandleMoveAnimation(void)
{
if (!mplay_80342A4(gActiveBank))
{
@@ -2533,35 +2516,35 @@ void PlayerHandleMoveAnimation(void)
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
gBattleBankFunc[gActiveBank] = PlayerDoMoveAnimation;
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
}
-void PlayerDoMoveAnimation(void)
+static void PlayerDoMoveAnimation(void)
{
u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
u8 multihit = gBattleBufferA[gActiveBank][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
{
case 0:
if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
&& !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
{
gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
}
break;
case 2:
@@ -2571,28 +2554,25 @@ void PlayerDoMoveAnimation(void)
sub_805EB9C(1);
if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
{
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ DoSpecialBattleAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x40)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
{
sub_805E394();
TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_4 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
PlayerBufferExecCompleted();
}
break;
}
}
-extern void sub_817C95C(u16 stringId);
-extern void sub_81A57E4(u8 bank, u16 stringId);
-
-void PlayerHandlePrintString(void)
+static void PlayerHandlePrintString(void)
{
u16 *stringId;
@@ -2606,7 +2586,7 @@ void PlayerHandlePrintString(void)
sub_81A57E4(gActiveBank, *stringId);
}
-void PlayerHandlePrintStringPlayerOnly(void)
+static void PlayerHandlePrintStringPlayerOnly(void)
{
if (GetBankSide(gActiveBank) == SIDE_PLAYER)
PlayerHandlePrintString();
@@ -2614,7 +2594,7 @@ void PlayerHandlePrintStringPlayerOnly(void)
PlayerBufferExecCompleted();
}
-void HandleChooseActionAfterDma3(void)
+static void HandleChooseActionAfterDma3(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
@@ -2624,12 +2604,7 @@ void HandleChooseActionAfterDma3(void)
}
}
-extern void sub_817F2A8(void);
-extern const u8 gText_BattleMenu[];
-extern const u8 gText_WhatWillPkmnDo[];
-extern const u8 gText_BattleYesNoChoice[];
-
-void PlayerHandleChooseAction(void)
+static void PlayerHandleChooseAction(void)
{
s32 i;
@@ -2645,7 +2620,7 @@ void PlayerHandleChooseAction(void)
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
}
-void PlayerHandleCmd19(void)
+static void PlayerHandleUnknownYesNoBox(void)
{
if (GetBankSide(gActiveBank) == SIDE_PLAYER)
{
@@ -2653,10 +2628,533 @@ void PlayerHandleCmd19(void)
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 12);
gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1);
- gBattleBankFunc[gActiveBank] = PlayerHandleYesNoInput;
+ gBattleBankFunc[gActiveBank] = PlayerHandleUnknownYesNoInput;
+ }
+ else
+ {
+ PlayerBufferExecCompleted();
+ }
+}
+
+static void HandleChooseMoveAfterDma3(void)
+{
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 320;
+ gBattleBankFunc[gActiveBank] = HandleInputChooseMove;
+ }
+}
+
+static void PlayerChooseMoveInBattlePalace(void)
+{
+ if (--*(gBattleStruct->field_298 + gActiveBank) == 0)
+ {
+ gBattlePalaceMoveSelectionRngValue = gRngValue;
+ EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ PlayerBufferExecCompleted();
+ }
+}
+
+static void PlayerHandleChooseMove(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
+ {
+ *(gBattleStruct->field_298 + gActiveBank) = 8;
+ gBattleBankFunc[gActiveBank] = PlayerChooseMoveInBattlePalace;
+ }
+ else
+ {
+ InitMoveSelectionsVarsAndStrings();
+ gBattleBankFunc[gActiveBank] = HandleChooseMoveAfterDma3;
+ }
+}
+
+void InitMoveSelectionsVarsAndStrings(void)
+{
+ MoveSelectionDisplayMoveNames();
+ gMultiUsePlayerCursor = 0xFF;
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionDisplayPpString();
+ MoveSelectionDisplayPpNumber();
+ MoveSelectionDisplayMoveType();
+}
+
+static void PlayerHandleChooseItem(void)
+{
+ s32 i;
+
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleBankFunc[gActiveBank] = sub_80598A4;
+ gBankInMenu = gActiveBank;
+
+ for (i = 0; i < 3; i++)
+ gUnknown_0203CF00[i] = gBattleBufferA[gActiveBank][1 + i];
+}
+
+static void PlayerHandleChoosePokemon(void)
+{
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ gUnknown_0203CF00[i] = gBattleBufferA[gActiveBank][4 + i];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBank][1] & 0xF) != 2)
+ {
+ EmitChosenMonReturnValue(1, gBattlePartyID[gActiveBank] + 1, gUnknown_0203CF00);
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gUnknown_03005D7C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gUnknown_03005D7C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
+ *(&gBattleStruct->field_49) = gBattleBufferA[gActiveBank][1] >> 4;
+ *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBank][2];
+ *(&gBattleStruct->field_B0) = gBattleBufferA[gActiveBank][3];
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_80597CC;
+ gBankInMenu = gActiveBank;
+ }
+}
+
+static void PlayerHandleCmd23(void)
+{
+ BattleMusicStop();
+ BeginNormalPaletteFade(-1, 2, 0, 16, 0);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleHealthBarUpdate(void)
+{
+ s16 hpVal;
+
+ LoadBattleBarGfx(0);
+ hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (hpVal > 0)
+ gUnknown_0203CD70 += hpVal;
+
+ if (hpVal != INSTANT_HP_BAR_DROP)
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+
+ SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ }
+ else
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+
+ SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], 0, HP_CURRENT);
+ }
+
+ gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+}
+
+static void PlayerHandleExpUpdate(void)
+{
+ u8 monId = gBattleBufferA[gActiveBank][1];
+
+ if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_MON_LEVEL)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ s16 expPointsToGive;
+ u8 taskId;
+
+ LoadBattleBarGfx(1);
+ GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // unused return value
+ expPointsToGive = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ taskId = CreateTask(Task_GiveExpToMon, 10);
+ gTasks[taskId].tExpTask_monId = monId;
+ gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
+ gTasks[taskId].tExpTask_bank = gActiveBank;
+ gBattleBankFunc[gActiveBank] = nullsub_21;
+ }
+}
+
+#undef tExpTask_monId
+#undef tExpTask_gainedExp
+#undef tExpTask_bank
+#undef tExpTask_frames
+
+static void PlayerHandleStatusIconUpdate(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u8 bank;
+
+ UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBank;
+ gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
+ gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ }
+}
+
+static void PlayerHandleStatusAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ DoStatusAnimation(gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
+ gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ }
+}
+
+static void PlayerHandleStatusXor(void)
+{
+ u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
+
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleDataTransfer(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleDMA3Transfer(void)
+{
+ u32 dstArg = gBattleBufferA[gActiveBank][1]
+ | (gBattleBufferA[gActiveBank][2] << 8)
+ | (gBattleBufferA[gActiveBank][3] << 16)
+ | (gBattleBufferA[gActiveBank][4] << 24);
+ u16 sizeArg = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
+
+ const u8 *src = &gBattleBufferA[gActiveBank][7];
+ u8 *dst = (u8*)(dstArg);
+ u32 size = sizeArg;
+
+ while (1)
+ {
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, src, dst, size);
+ break;
+ }
+ DmaCopy16(3, src, dst, 0x1000);
+ src += 0x1000;
+ dst += 0x1000;
+ size -= 0x1000;
+ }
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandlePlayBGM(void)
+{
+ PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd32(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleTwoReturnValues(void)
+{
+ EmitTwoReturnValues(1, 0, 0);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleChosenMonReturnValue(void)
+{
+ EmitChosenMonReturnValue(1, 0, NULL);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleOneReturnValue(void)
+{
+ EmitOneReturnValue(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleOneReturnValue_Duplicate(void)
+{
+ EmitOneReturnValue_Duplicate(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd37(void)
+{
+ gUnknown_02022D0C.field_0 = 0;
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd38(void)
+{
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd39(void)
+{
+ gUnknown_02022D0C.flag_x80 = 0;
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd40(void)
+{
+ gUnknown_02022D0C.flag_x80 ^= 1;
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleHitAnimation(void)
+{
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gDoingBattleAnim = 1;
+ gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ DoHitAnimHealthboxEffect(gActiveBank);
+ gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ }
+}
+
+static void PlayerHandleCmd42(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ pan = PAN_SIDE_PLAYER;
+ else
+ pan = PAN_SIDE_OPPONENT;
+
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandlePlayFanfareOrBGM(void)
+{
+ if (gBattleBufferA[gActiveBank][3])
+ {
+ BattleMusicStop();
+ PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ }
+ else
+ {
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ }
+
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleFaintingCry(void)
+{
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ PlayCry3(species, -25, 5);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleIntroSlide(void)
+{
+ HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
+ gUnknown_020243FC |= 1;
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleIntroTrainerBallThrow(void)
+{
+ u8 paletteNum;
+ u8 taskId;
+
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+
+ gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
+ gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+
+ StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+
+ paletteNum = AllocSpritePalette(0xD6F8);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+
+ taskId = CreateTask(task05_08033660, 5);
+ gTasks[taskId].data[0] = gActiveBank;
+
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
+ gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+
+ gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
+ gBattleBankFunc[gActiveBank] = nullsub_21;
+}
+
+void sub_805CC00(struct Sprite *sprite)
+{
+ u8 bank = sprite->data5;
+
+ FreeSpriteOamMatrix(sprite);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
+ DestroySprite(sprite);
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], 0);
+}
+
+static void task05_08033660(u8 taskId)
+{
+ if (gTasks[taskId].data[1] < 31)
+ {
+ gTasks[taskId].data[1]++;
}
else
{
+ u8 savedActiveBank = gActiveBank;
+
+ gActiveBank = gTasks[taskId].data[0];
+ if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_805B258(gActiveBank, FALSE);
+ }
+ else
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_805B258(gActiveBank, FALSE);
+ gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ sub_805B258(gActiveBank, FALSE);
+ gActiveBank ^= BIT_MON;
+ }
+ gBattleBankFunc[gActiveBank] = sub_8058B40;
+ gActiveBank = savedActiveBank;
+ DestroyTask(taskId);
+ }
+}
+
+static void PlayerHandleDrawPartyStatusSummary(void)
+{
+ if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
PlayerBufferExecCompleted();
}
+ else
+ {
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
+ gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+
+ if (gBattleBufferA[gActiveBank][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+
+ gBattleBankFunc[gActiveBank] = sub_805CE38;
+ }
+}
+
+static void sub_805CE38(void)
+{
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ PlayerBufferExecCompleted();
+ }
+}
+
+static void PlayerHandleCmd49(void)
+{
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
+ gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd50(void)
+{
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleSpriteInvisibility(void)
+{
+ if (AnimBankSpriteExists(gActiveBank))
+ {
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ SetBattleSpriteInvisibilityBitToSpriteInvisibility(gActiveBank);
+ }
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleBattleAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u8 animationId = gBattleBufferA[gActiveBank][1];
+ u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (DoBattleAnimationFromTable(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ PlayerBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+
+ sub_817E32C(animationId);
+ }
+}
+
+static void PlayerHandleLinkStandbyMsg(void)
+{
+ sub_81851A8(&gBattleBufferA[gActiveBank][2]);
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ PrintLinkStandbyMsg();
+ // fall through
+ case 1:
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ break;
+ case 2:
+ PrintLinkStandbyMsg();
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleResetActionMoveSelection(void)
+{
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case RESET_ACTION_MOVE_SELECTION:
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ case RESET_ACTION_SELECTION:
+ gActionSelectionCursor[gActiveBank] = 0;
+ break;
+ case RESET_MOVE_SELECTION:
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+static void PlayerHandleCmd55(void)
+{
+ sub_81851A8(&gBattleBufferA[gActiveBank][4]);
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBank][2];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ PlayerBufferExecCompleted();
+ gBattleBankFunc[gActiveBank] = sub_80587B0;
+}
+
+static void nullsub_22(void)
+{
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 1086c6955..bf6962b1b 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -984,9 +984,9 @@ void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
void EmitLoadMonSprite(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE;
- gBattleBuffersTransferData[1] = 4;
- gBattleBuffersTransferData[2] = 4;
- gBattleBuffersTransferData[3] = 4;
+ gBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE;
+ gBattleBuffersTransferData[2] = CONTROLLER_LOADMONSPRITE;
+ gBattleBuffersTransferData[3] = CONTROLLER_LOADMONSPRITE;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
@@ -1009,27 +1009,27 @@ void EmitReturnMonToBall(u8 bufferId, u8 arg1)
void EmitDrawTrainerPic(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC;
- gBattleBuffersTransferData[1] = 7;
- gBattleBuffersTransferData[2] = 7;
- gBattleBuffersTransferData[3] = 7;
+ gBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC;
+ gBattleBuffersTransferData[2] = CONTROLLER_DRAWTRAINERPIC;
+ gBattleBuffersTransferData[3] = CONTROLLER_DRAWTRAINERPIC;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
void EmitTrainerSlide(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE;
- gBattleBuffersTransferData[1] = 8;
- gBattleBuffersTransferData[2] = 8;
- gBattleBuffersTransferData[3] = 8;
+ gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE;
+ gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDE;
+ gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDE;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
void EmitTrainerSlideBack(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK;
- gBattleBuffersTransferData[1] = 9;
- gBattleBuffersTransferData[2] = 9;
- gBattleBuffersTransferData[3] = 9;
+ gBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK;
+ gBattleBuffersTransferData[2] = CONTROLLER_TRAINERSLIDEBACK;
+ gBattleBuffersTransferData[3] = CONTROLLER_TRAINERSLIDEBACK;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
@@ -1051,18 +1051,18 @@ void EmitPaletteFade(u8 bufferId)
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitCmd12(u8 bufferId)
+void EmitSuccessBallThrowAnim(u8 bufferId)
{
- gBattleBuffersTransferData[0] = CONTROLLER_12;
- gBattleBuffersTransferData[1] = 12;
- gBattleBuffersTransferData[2] = 12;
- gBattleBuffersTransferData[3] = 12;
+ gBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
+ gBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM;
+ gBattleBuffersTransferData[2] = CONTROLLER_SUCCESSBALLTHROWANIM;
+ gBattleBuffersTransferData[3] = CONTROLLER_SUCCESSBALLTHROWANIM;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitBallThrow(u8 bufferId, u8 caseId)
+void EmitBallThrowAnim(u8 bufferId, u8 caseId)
{
- gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROW;
+ gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM;
gBattleBuffersTransferData[1] = caseId;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
}
@@ -1178,12 +1178,12 @@ void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitYesNoBox(u8 bufferId)
+void EmitUnknownYesNoBox(u8 bufferId)
{
- gBattleBuffersTransferData[0] = CONTROLLER_YESNOBOX;
- gBattleBuffersTransferData[1] = CONTROLLER_YESNOBOX;
- gBattleBuffersTransferData[2] = CONTROLLER_YESNOBOX;
- gBattleBuffersTransferData[3] = CONTROLLER_YESNOBOX;
+ gBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
+ gBattleBuffersTransferData[1] = CONTROLLER_UNKNOWNYESNOBOX;
+ gBattleBuffersTransferData[2] = CONTROLLER_UNKNOWNYESNOBOX;
+ gBattleBuffersTransferData[3] = CONTROLLER_UNKNOWNYESNOBOX;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
@@ -1200,7 +1200,7 @@ void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(*movePpData) + 4);
}
-void EmitOpenBag(u8 bufferId, u8 *arg1)
+void EmitChooseItem(u8 bufferId, u8 *arg1)
{
s32 i;
@@ -1337,38 +1337,38 @@ void EmitCmd32(u8 bufferId, u16 size, void *data)
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 3);
}
-void EmitChoiceReturnValue(u8 bufferId, u8 arg1, u16 arg2)
+void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
{
- gBattleBuffersTransferData[0] = CONTROLLER_CHOICERETURNVALUE;
+ gBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
gBattleBuffersTransferData[1] = arg1;
gBattleBuffersTransferData[2] = arg2;
gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitCmd34(u8 bufferId, u8 b, u8 *c)
+void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
{
s32 i;
- gBattleBuffersTransferData[0] = CONTROLLER_34;
+ gBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE;
gBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[2 + i] = c[i];
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 5);
}
-void EmitCmd35(u8 bufferId, u16 b)
+void EmitOneReturnValue(u8 bufferId, u16 arg1)
{
- gBattleBuffersTransferData[0] = CONTROLLER_35;
- gBattleBuffersTransferData[1] = b;
- gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
+ gBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
+ gBattleBuffersTransferData[1] = arg1;
+ gBattleBuffersTransferData[2] = (arg1 & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitCmd36(u8 bufferId, u16 b)
+void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
{
- gBattleBuffersTransferData[0] = CONTROLLER_36;
+ gBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
@@ -1378,9 +1378,9 @@ void EmitCmd36(u8 bufferId, u16 b)
void EmitCmd37(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_37;
- gBattleBuffersTransferData[1] = 37;
- gBattleBuffersTransferData[2] = 37;
- gBattleBuffersTransferData[3] = 37;
+ gBattleBuffersTransferData[1] = CONTROLLER_37;
+ gBattleBuffersTransferData[2] = CONTROLLER_37;
+ gBattleBuffersTransferData[3] = CONTROLLER_37;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
@@ -1394,27 +1394,27 @@ void EmitCmd38(u8 bufferId, u8 b)
void EmitCmd39(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_39;
- gBattleBuffersTransferData[1] = 39;
- gBattleBuffersTransferData[2] = 39;
- gBattleBuffersTransferData[3] = 39;
+ gBattleBuffersTransferData[1] = CONTROLLER_39;
+ gBattleBuffersTransferData[2] = CONTROLLER_39;
+ gBattleBuffersTransferData[3] = CONTROLLER_39;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
void EmitCmd40(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_40;
- gBattleBuffersTransferData[1] = 40;
- gBattleBuffersTransferData[2] = 40;
- gBattleBuffersTransferData[3] = 40;
+ gBattleBuffersTransferData[1] = CONTROLLER_40;
+ gBattleBuffersTransferData[2] = CONTROLLER_40;
+ gBattleBuffersTransferData[3] = CONTROLLER_40;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
void EmitHitAnimation(u8 bufferId)
{
gBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION;
- gBattleBuffersTransferData[1] = 41;
- gBattleBuffersTransferData[2] = 41;
- gBattleBuffersTransferData[3] = 41;
+ gBattleBuffersTransferData[1] = CONTROLLER_HITANIMATION;
+ gBattleBuffersTransferData[2] = CONTROLLER_HITANIMATION;
+ gBattleBuffersTransferData[3] = CONTROLLER_HITANIMATION;
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 2318517f5..5f582a366 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -21,17 +21,11 @@
#include "safari_zone.h"
#include "battle_anim.h"
-enum
-{
- HEALTH_BAR,
- EXP_BAR
-};
-
struct TestingBar
{
s32 maxValue;
s32 currValue;
- s32 field_8;
+ s32 receivedValue;
u32 unkC_0:5;
u32 unk10;
};
@@ -183,7 +177,6 @@ extern const u16 gBattleInterface_BallDisplayPal[];
extern const u8 gHealthboxElementsGfxTable[][32];
// functions
-extern bool8 IsDoubleBattle(void);
extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); // menu.h
extern void LoadBattleBarGfx(u8 arg0);
@@ -214,10 +207,10 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite);
static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite);
static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank);
-static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5);
-static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale);
+static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5);
+static u8 GetScaledExpFraction(s32 currValue, s32 receivedValue, s32 maxValue, u8 scale);
static void sub_8074B9C(u8 bank, u8 whichBar);
-static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5);
+static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 *arg4, u8 arg5);
static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2);
// const rom data
@@ -1049,12 +1042,12 @@ static void sub_8072924(struct Sprite *sprite)
sprite->pos2.y = gSprites[otherSpriteId].pos2.y;
}
-void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C)
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue)
{
gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId = healthboxSpriteId;
gBattleSpritesDataPtr->battleBars[bank].maxValue = maxVal;
gBattleSpritesDataPtr->battleBars[bank].currentValue = currVal;
- gBattleSpritesDataPtr->battleBars[bank].field_C = field_C;
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue = receivedValue;
gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768;
}
@@ -2262,22 +2255,22 @@ s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3)
{
var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue,
gBattleSpritesDataPtr->battleBars[bank].currentValue,
- gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue,
&gBattleSpritesDataPtr->battleBars[bank].field_10,
6, 1);
}
else // exp bar
{
u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[bank].currentValue,
- gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue,
gBattleSpritesDataPtr->battleBars[bank].maxValue, 8);
if (expFraction == 0)
expFraction = 1;
- expFraction = abs(gBattleSpritesDataPtr->battleBars[bank].field_C / expFraction);
+ expFraction = abs(gBattleSpritesDataPtr->battleBars[bank].receivedValue / expFraction);
var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue,
gBattleSpritesDataPtr->battleBars[bank].currentValue,
- gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue,
&gBattleSpritesDataPtr->battleBars[bank].field_10,
8, expFraction);
}
@@ -2293,7 +2286,7 @@ s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3)
static void sub_8074B9C(u8 bank, u8 whichBar)
{
- u8 array[7];
+ u8 array[8];
u8 subRet, level;
u8 barElementId;
u8 i;
@@ -2303,7 +2296,7 @@ static void sub_8074B9C(u8 bank, u8 whichBar)
case HEALTH_BAR:
subRet = sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue,
gBattleSpritesDataPtr->battleBars[bank].currentValue,
- gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue,
&gBattleSpritesDataPtr->battleBars[bank].field_10,
array, 6);
barElementId = 3;
@@ -2327,7 +2320,7 @@ static void sub_8074B9C(u8 bank, u8 whichBar)
case EXP_BAR:
sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue,
gBattleSpritesDataPtr->battleBars[bank].currentValue,
- gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].receivedValue,
&gBattleSpritesDataPtr->battleBars[bank].field_10,
array, 8);
level = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_LEVEL);
@@ -2349,7 +2342,7 @@ static void sub_8074B9C(u8 bank, u8 whichBar)
}
}
-static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5)
+static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5)
{
s32 r6;
s32 ret;
@@ -2363,7 +2356,7 @@ static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4
*arg3 = currValue;
}
- currValue -= arg2;
+ currValue -= receivedValue;
if (currValue < 0)
currValue = 0;
else if (currValue > maxValue)
@@ -2388,7 +2381,7 @@ static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4
{
s32 var = (maxValue << 8) / arg4;
- if (arg2 < 0)
+ if (receivedValue < 0)
{
*arg3 = r6 + var;
ret = *arg3 >> 8;
@@ -2413,7 +2406,7 @@ static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4
}
else
{
- if (arg2 < 0)
+ if (receivedValue < 0)
{
*arg3 += arg5;
if (*arg3 > currValue)
@@ -2432,9 +2425,9 @@ static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4
return ret;
}
-static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5)
+static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 *arg4, u8 arg5)
{
- s32 r5 = currValue - arg2;
+ s32 r5 = currValue - receivedValue;
u8 ret;
u8 i;
u8 r2;
@@ -2487,7 +2480,7 @@ static s16 sub_8074F28(struct TestingBar *barInfo, s32 *arg1, u16 *arg2, s32 arg
ret = sub_8074DB8(barInfo->maxValue,
barInfo->currValue,
- barInfo->field_8,
+ barInfo->receivedValue,
arg1, 6, 1);
sub_8074F88(barInfo, arg1, arg2);
@@ -2508,7 +2501,7 @@ static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2)
u8 i;
sub_8074E8C(barInfo->maxValue, barInfo->currValue,
- barInfo->field_8, arg1, sp8, 6);
+ barInfo->receivedValue, arg1, sp8, 6);
for (i = 0; i < 6; i++)
sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]);
@@ -2516,13 +2509,13 @@ static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2)
CpuCopy16(sp10, arg2, sizeof(sp10));
}
-static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale)
+static u8 GetScaledExpFraction(s32 currValue, s32 receivedValue, s32 maxValue, u8 scale)
{
s32 r5, result;
s8 r4, r0;
scale *= 8;
- r5 = currValue - arg1;
+ r5 = currValue - receivedValue;
if (r5 < 0)
r5 = 0;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index a112cd7b9..b2afd9837 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -3625,7 +3625,7 @@ static void atk23_getexp(void)
if (gBattleExecBuffer == 0)
{
gActiveBank = gBattleStruct->expGetterBank;
- if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB)
+ if (gBattleBufferB[gActiveBank][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBank][1] == RET_VALUE_LEVELLED_UP)
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId)
sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
@@ -7137,7 +7137,7 @@ static void atk76_various(void)
gDisableStructs[1].truantUnknownBit = 1;
break;
case VARIOUS_EMIT_YESNOBOX:
- EmitYesNoBox(0);
+ EmitUnknownYesNoBox(0);
MarkBufferBankForExecution(gActiveBank);
break;
case 14:
@@ -7255,7 +7255,7 @@ static void atk78_faintifabilitynotdamp(void)
{
gActiveBank = gBankAttacker;
gBattleMoveDamage = gBattleMons[gActiveBank].hp;
- EmitHealthBarUpdate(0, 0x7FFF);
+ EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr++;
@@ -10184,7 +10184,7 @@ static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
{
gActiveBank = gBankAttacker;
gBattleMoveDamage = gBattleMons[gActiveBank].hp;
- EmitHealthBarUpdate(0, 0x7FFF);
+ EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 5;
}
@@ -11003,13 +11003,13 @@ static void atkEF_pokeball_catch_calculation(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- EmitBallThrow(0, BALL_TRAINER_BLOCK);
+ EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- EmitBallThrow(0, BALL_3_SHAKES_SUCCESS);
+ EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
@@ -11098,7 +11098,7 @@ static void atkEF_pokeball_catch_calculation(void)
if (odds > 254) // mon caught
{
- EmitBallThrow(0, BALL_3_SHAKES_SUCCESS);
+ EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
@@ -11120,7 +11120,7 @@ static void atkEF_pokeball_catch_calculation(void)
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
- EmitBallThrow(0, shakes);
+ EmitBallThrowAnim(0, shakes);
MarkBufferBankForExecution(gActiveBank);
if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above