summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim.s28
-rw-r--r--asm/battle_anim_effects_1.s10
-rw-r--r--asm/battle_anim_effects_2.s6
-rw-r--r--asm/battle_anim_effects_3.s18
-rw-r--r--asm/battle_anim_mons.s4
-rw-r--r--asm/battle_anim_sound_tasks.s927
-rw-r--r--asm/electric.s4
-rw-r--r--asm/psychic.s2
-rw-r--r--asm/rock.s4
-rw-r--r--include/battle_anim.h3
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_anim_sound_tasks.c313
-rw-r--r--sym_ewram.txt2
13 files changed, 356 insertions, 967 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 9d16e91e1..2edd4df5f 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -152,7 +152,7 @@ LaunchBattleAnimation: @ 80725D4
movs r4, 0
ldr r6, _08072618 @ =gBattlerPartyIndexes
movs r7, 0x64
- ldr r5, _0807261C @ =gUnknown_2037F1C
+ ldr r5, _0807261C @ =gAnimBattlerSpecies
_08072600:
lsls r0, r4, 24
lsrs r0, 24
@@ -166,7 +166,7 @@ _08072600:
b _0807262A
.align 2, 0
_08072618: .4byte gBattlerPartyIndexes
-_0807261C: .4byte gUnknown_2037F1C
+_0807261C: .4byte gAnimBattlerSpecies
_08072620: .4byte gEnemyParty
_08072624:
ldrh r0, [r6]
@@ -2767,8 +2767,8 @@ ScriptCmd_changebg: @ 8073A24
_08073A40: .4byte gUnknown_2037ED4
thumb_func_end ScriptCmd_changebg
- thumb_func_start sub_8073A44
-sub_8073A44: @ 8073A44
+ thumb_func_start BattleAnimAdjustPanning
+BattleAnimAdjustPanning: @ 8073A44
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2867,7 +2867,7 @@ _08073AFC:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8073A44
+ thumb_func_end BattleAnimAdjustPanning
thumb_func_start sub_8073B08
sub_8073B08: @ 8073B08
@@ -2916,8 +2916,8 @@ _08073B56:
bx r1
thumb_func_end sub_8073B08
- thumb_func_start sub_8073B60
-sub_8073B60: @ 8073B60
+ thumb_func_start KeepPanInRange
+KeepPanInRange: @ 8073B60
push {lr}
lsls r0, 16
lsrs r1, r0, 16
@@ -2939,7 +2939,7 @@ _08073B7A:
bx r1
.align 2, 0
_08073B84: .4byte 0x0000ffc0
- thumb_func_end sub_8073B60
+ thumb_func_end KeepPanInRange
thumb_func_start CalculatePanIncrement
CalculatePanIncrement: @ 8073B88
@@ -2994,7 +2994,7 @@ ScriptCmd_playsewithpan: @ 8073BC8
orrs r4, r0
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3019,7 +3019,7 @@ ScriptCmd_setpan: @ 8073C00
str r0, [r4]
movs r0, 0x1
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
bl SE12PanpotControl
@@ -3058,14 +3058,14 @@ ScriptCmd_panse_1B: @ 8073C2C
ldrb r7, [r1, 0x5]
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
mov r8, r0
lsls r5, 24
asrs r5, 24
@@ -3387,7 +3387,7 @@ ScriptCmd_loopsewithpan: @ 8073ED0
mov r9, r2
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3498,7 +3498,7 @@ ScriptCmd_waitplaysewithpan: @ 8073FB4
mov r8, r0
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s
index 2d436f3ef..b09edc9ae 100644
--- a/asm/battle_anim_effects_1.s
+++ b/asm/battle_anim_effects_1.s
@@ -2672,7 +2672,7 @@ _080A3756:
cmp r0, 0
bne _080A378A
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2690,7 +2690,7 @@ _080A378A:
str r0, [r4, 0x1C]
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -5915,7 +5915,7 @@ _080A5004:
adds r0, r1
strh r0, [r5, 0x38]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -6126,7 +6126,7 @@ _080A51A4:
movs r2, 0x4
bl LoadPalette
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -7436,7 +7436,7 @@ sub_80A5B7C: @ 80A5B7C
strh r5, [r4, 0x34]
strh r5, [r4, 0x36]
subs r0, 0x42
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x38]
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
index 722ff51ba..2fac4c956 100644
--- a/asm/battle_anim_effects_2.s
+++ b/asm/battle_anim_effects_2.s
@@ -1118,7 +1118,7 @@ _080A7690:
strh r0, [r4, 0xA]
movs r0, 0x3F
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -1789,7 +1789,7 @@ sub_80A7C1C: @ 80A7C1C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3626,7 +3626,7 @@ sub_80A8A1C: @ 80A8A1C
adds r0, 0x2
strh r0, [r4, 0x38]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x3A]
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
index d1356c619..192e2b15f 100644
--- a/asm/battle_anim_effects_3.s
+++ b/asm/battle_anim_effects_3.s
@@ -1414,7 +1414,7 @@ sub_80DED48: @ 80DED48
bne _080DEDA6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2109,7 +2109,7 @@ _080DF2A8:
lsrs r4, r0, 24
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3603,7 +3603,7 @@ _080DFE66:
strh r0, [r1, 0x8]
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10554,7 +10554,7 @@ _080E3412:
bne _080E34C6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10627,7 +10627,7 @@ _080E34A4:
bne _080E34C6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10724,7 +10724,7 @@ _080E3564:
cmp r0, 0
blt _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10753,7 +10753,7 @@ _080E3588:
cmp r1, 0x7F
ble _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10797,7 +10797,7 @@ _080E35F8:
cmp r0, 0x8
ble _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -11883,7 +11883,7 @@ _080E3E96:
cmp r1, r0
bne _080E3F28
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s
index ddb5d6977..81716bdc8 100644
--- a/asm/battle_anim_mons.s
+++ b/asm/battle_anim_mons.s
@@ -512,14 +512,14 @@ sub_8074844: @ 8074844
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _0807487C
- ldr r1, _08074878 @ =gUnknown_2037F1C
+ ldr r1, _08074878 @ =gAnimBattlerSpecies
lsls r0, r2, 1
adds r0, r1
ldrh r1, [r0]
b _0807487E
.align 2, 0
_08074874: .4byte gBattleSpritesDataPtr
-_08074878: .4byte gUnknown_2037F1C
+_08074878: .4byte gAnimBattlerSpecies
_0807487C:
ldrh r1, [r1, 0x2]
_0807487E:
diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s
deleted file mode 100644
index dc5517ca0..000000000
--- a/asm/battle_anim_sound_tasks.s
+++ /dev/null
@@ -1,927 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80DCE10
-sub_80DCE10: @ 80DCE10
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080DCE6C @ =gTasks
- lsls r6, r0, 2
- adds r6, r0
- lsls r6, 3
- adds r6, r1
- ldr r1, _080DCE70 @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r6, 0x8]
- ldrh r0, [r1, 0x2]
- strh r0, [r6, 0xA]
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x3F
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl CalculatePanIncrement
- strh r4, [r6, 0xC]
- strh r5, [r6, 0xE]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r6, 0x10]
- movs r0, 0xA
- strh r0, [r6, 0x1C]
- ldr r0, _080DCE74 @ =sub_80DCE78
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCE6C: .4byte gTasks
-_080DCE70: .4byte gBattleAnimArgs
-_080DCE74: .4byte sub_80DCE78
- thumb_func_end sub_80DCE10
-
- thumb_func_start sub_80DCE78
-sub_80DCE78: @ 80DCE78
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DCEA8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r5, [r4, 0xC]
- ldrb r6, [r4, 0x10]
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- bne _080DCEB0
- movs r0, 0x5
- strh r0, [r4, 0x1C]
- strh r1, [r4, 0x1E]
- ldr r0, _080DCEAC @ =sub_80DCEE4
- str r0, [r4]
- b _080DCEDE
- .align 2, 0
-_080DCEA8: .4byte gTasks
-_080DCEAC: .4byte sub_80DCEE4
-_080DCEB0:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _080DCECA
- strh r1, [r4, 0x1C]
- ldrh r0, [r4, 0x8]
- lsls r1, r5, 24
- asrs r1, 24
- bl PlaySE12WithPanning
-_080DCECA:
- lsls r1, r6, 24
- asrs r1, 24
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- bl sub_8073B60
- strh r0, [r4, 0xC]
-_080DCEDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DCE78
-
- thumb_func_start sub_80DCEE4
-sub_80DCEE4: @ 80DCEE4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DCF34 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080DCF2C
- movs r0, 0
- strh r0, [r4, 0x1C]
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- ldrh r0, [r4, 0xA]
- lsls r1, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080DCF2C
- adds r0, r5, 0
- bl DestroyAnimSoundTask
-_080DCF2C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCF34: .4byte gTasks
- thumb_func_end sub_80DCEE4
-
- thumb_func_start mas_80DCF38
-mas_80DCF38: @ 80DCF38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080DCFDC @ =gBattleAnimArgs
- ldrh r1, [r0]
- str r1, [sp]
- ldrb r5, [r0, 0x4]
- ldrb r6, [r0, 0x6]
- ldrb r3, [r0, 0x8]
- mov r10, r3
- ldrb r7, [r0, 0xA]
- ldrb r1, [r0, 0xC]
- mov r9, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r5, 0
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- lsls r6, 24
- asrs r6, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CalculatePanIncrement
- ldr r2, _080DCFE0 @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- mov r6, sp
- ldrh r6, [r6]
- strh r6, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0xE]
- mov r0, r10
- strh r0, [r1, 0x10]
- strh r7, [r1, 0x12]
- mov r3, r9
- strh r3, [r1, 0x14]
- strh r2, [r1, 0x1C]
- strh r4, [r1, 0x1E]
- strh r3, [r1, 0x20]
- ldr r2, _080DCFE4 @ =sub_80DCFE8
- str r2, [r1]
- mov r0, r8
- bl _call_via_r2
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCFDC: .4byte gBattleAnimArgs
-_080DCFE0: .4byte gTasks
-_080DCFE4: .4byte sub_80DCFE8
- thumb_func_end mas_80DCF38
-
- thumb_func_start sub_80DCFE8
-sub_80DCFE8: @ 80DCFE8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DD02C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x20]
- adds r1, r0, 0x1
- strh r1, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080DD030
- movs r0, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x8]
- movs r1, 0x1E
- ldrsb r1, [r4, r1]
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _080DD030
- adds r0, r5, 0
- bl DestroyAnimSoundTask
- b _080DD062
- .align 2, 0
-_080DD02C: .4byte gTasks
-_080DD030:
- ldr r1, _080DD068 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080DD062
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0xE]
- ldrh r1, [r4, 0x1E]
- adds r0, r1
- strh r0, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- bl sub_8073B60
- strh r0, [r4, 0x1E]
-_080DD062:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD068: .4byte gTasks
- thumb_func_end sub_80DCFE8
-
- thumb_func_start sub_80DD06C
-sub_80DD06C: @ 80DD06C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080DD090 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DD098
- ldr r0, _080DD094 @ =gBattleAnimAttacker
- ldrb r4, [r0]
- b _080DD0BE
- .align 2, 0
-_080DD090: .4byte gBattleAnimArgs
-_080DD094: .4byte gBattleAnimAttacker
-_080DD098:
- cmp r0, 0x1
- bne _080DD0A8
- ldr r0, _080DD0A4 @ =gBattleAnimTarget
- ldrb r4, [r0]
- b _080DD0BE
- .align 2, 0
-_080DD0A4: .4byte gBattleAnimTarget
-_080DD0A8:
- cmp r0, 0x2
- bne _080DD0B4
- ldr r0, _080DD0B0 @ =gBattleAnimAttacker
- b _080DD0B6
- .align 2, 0
-_080DD0B0: .4byte gBattleAnimAttacker
-_080DD0B4:
- ldr r0, _080DD0E0 @ =gBattleAnimTarget
-_080DD0B6:
- ldrb r1, [r0]
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r1
-_080DD0BE:
- ldr r0, _080DD0E4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080DD0CC
- cmp r0, 0x3
- bne _080DD0E8
-_080DD0CC:
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080DD0E8
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080DD13A
- .align 2, 0
-_080DD0E0: .4byte gBattleAnimTarget
-_080DD0E4: .4byte gBattleAnimArgs
-_080DD0E8:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD10C
- ldr r1, _080DD104 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD108 @ =gEnemyParty
- b _080DD11A
- .align 2, 0
-_080DD104: .4byte gBattlerPartyIndexes
-_080DD108: .4byte gEnemyParty
-_080DD10C:
- ldr r1, _080DD140 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD144 @ =gPlayerParty
-_080DD11A:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080DD134
- lsls r1, r6, 24
- asrs r1, 24
- movs r2, 0x3
- bl PlayCry3
-_080DD134:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD13A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD140: .4byte gBattlerPartyIndexes
-_080DD144: .4byte gPlayerParty
- thumb_func_end sub_80DD06C
-
- thumb_func_start sub_80DD148
-sub_80DD148: @ 80DD148
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080DD16C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DD174
- ldr r0, _080DD170 @ =gBattleAnimAttacker
- ldrb r4, [r0]
- b _080DD19A
- .align 2, 0
-_080DD16C: .4byte gBattleAnimArgs
-_080DD170: .4byte gBattleAnimAttacker
-_080DD174:
- cmp r0, 0x1
- bne _080DD184
- ldr r0, _080DD180 @ =gBattleAnimTarget
- ldrb r4, [r0]
- b _080DD19A
- .align 2, 0
-_080DD180: .4byte gBattleAnimTarget
-_080DD184:
- cmp r0, 0x2
- bne _080DD190
- ldr r0, _080DD18C @ =gBattleAnimAttacker
- b _080DD192
- .align 2, 0
-_080DD18C: .4byte gBattleAnimAttacker
-_080DD190:
- ldr r0, _080DD1BC @ =gBattleAnimTarget
-_080DD192:
- ldrb r1, [r0]
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r1
-_080DD19A:
- ldr r0, _080DD1C0 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _080DD1A8
- cmp r0, 0x3
- bne _080DD1C4
-_080DD1A8:
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080DD1C4
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080DD26A
- .align 2, 0
-_080DD1BC: .4byte gBattleAnimTarget
-_080DD1C0: .4byte gBattleAnimArgs
-_080DD1C4:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD1E8
- ldr r1, _080DD1E0 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD1E4 @ =gEnemyParty
- b _080DD1F6
- .align 2, 0
-_080DD1E0: .4byte gBattlerPartyIndexes
-_080DD1E4: .4byte gEnemyParty
-_080DD1E8:
- ldr r1, _080DD234 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD238 @ =gPlayerParty
-_080DD1F6:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, _080DD23C @ =gTasks
- lsls r2, r6, 2
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r4, _080DD240 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x2]
- strh r1, [r0, 0x8]
- strh r3, [r0, 0xA]
- lsls r1, r5, 24
- asrs r1, 24
- strh r1, [r0, 0xC]
- adds r5, r2, 0
- cmp r3, 0
- beq _080DD264
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- bne _080DD244
- adds r0, r3, 0
- movs r2, 0x9
- bl PlayCry3
- b _080DD24C
- .align 2, 0
-_080DD234: .4byte gBattlerPartyIndexes
-_080DD238: .4byte gPlayerParty
-_080DD23C: .4byte gTasks
-_080DD240: .4byte gBattleAnimArgs
-_080DD244:
- adds r0, r3, 0
- movs r2, 0x7
- bl PlayCry3
-_080DD24C:
- ldr r0, _080DD25C @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DD260 @ =sub_80DD270
- str r0, [r1]
- b _080DD26A
- .align 2, 0
-_080DD25C: .4byte gTasks
-_080DD260: .4byte sub_80DD270
-_080DD264:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080DD26A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD148
-
- thumb_func_start sub_80DD270
-sub_80DD270: @ 80DD270
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r9, r4
- ldr r1, _080DD2A0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r6, [r1, 0xA]
- mov r8, r6
- ldrb r5, [r1, 0xC]
- adds r7, r5, 0
- ldrh r2, [r1, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bgt _080DD2A4
- adds r0, r2, 0x1
- strh r0, [r1, 0x1A]
- b _080DD2E6
- .align 2, 0
-_080DD2A0: .4byte gTasks
-_080DD2A4:
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- bne _080DD2CA
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD2E6
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0xA
- bl PlayCry3
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080DD2E6
-_080DD2CA:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD2E6
- lsls r1, r7, 24
- asrs r1, 24
- mov r0, r8
- movs r2, 0x8
- bl PlayCry3
- mov r0, r9
- bl DestroyAnimVisualTask
-_080DD2E6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD270
-
- thumb_func_start sub_80DD2F4
-sub_80DD2F4: @ 80DD2F4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _080DD318 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bgt _080DD31C
- adds r0, r2, 0x1
- strh r0, [r1, 0x1A]
- b _080DD32C
- .align 2, 0
-_080DD318: .4byte gTasks
-_080DD31C:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD32C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080DD32C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD2F4
-
- thumb_func_start sub_80DD334
-sub_80DD334: @ 80DD334
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- ldr r2, _080DD374 @ =gUnknown_2037F1C
- ldr r1, _080DD378 @ =gBattleAnimAttacker
- ldrb r1, [r1]
- lsls r1, 1
- adds r1, r2
- ldrh r3, [r1]
- ldr r2, _080DD37C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r2
- strh r3, [r4, 0xA]
- lsls r0, 24
- asrs r1, r0, 24
- strh r1, [r4, 0xC]
- cmp r3, 0
- beq _080DD384
- adds r0, r3, 0
- movs r2, 0x4
- bl PlayCry3
- ldr r0, _080DD380 @ =sub_80DD390
- str r0, [r4]
- b _080DD38A
- .align 2, 0
-_080DD374: .4byte gUnknown_2037F1C
-_080DD378: .4byte gBattleAnimAttacker
-_080DD37C: .4byte gTasks
-_080DD380: .4byte sub_80DD390
-_080DD384:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD38A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD334
-
- thumb_func_start sub_80DD390
-sub_80DD390: @ 80DD390
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DD3B4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _080DD3B8
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
- b _080DD3D4
- .align 2, 0
-_080DD3B4: .4byte gTasks
-_080DD3B8:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD3D4
- ldrh r0, [r4, 0xA]
- movs r1, 0xC
- ldrsb r1, [r4, r1]
- movs r2, 0x6
- bl PlayCry3
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD3D4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD390
-
- thumb_func_start sub_80DD3DC
-sub_80DD3DC: @ 80DD3DC
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080DD40C @ =gBattleAnimArgs
- ldrh r5, [r0]
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl PlaySE1WithPanning
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD40C: .4byte gBattleAnimArgs
- thumb_func_end sub_80DD3DC
-
- thumb_func_start sub_80DD410
-sub_80DD410: @ 80DD410
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080DD440 @ =gBattleAnimArgs
- ldrh r5, [r0]
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl PlaySE2WithPanning
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD440: .4byte gBattleAnimArgs
- thumb_func_end sub_80DD410
-
- thumb_func_start sub_80DD444
-sub_80DD444: @ 80DD444
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080DD4C8 @ =gBattleAnimArgs
- ldrb r5, [r0, 0x2]
- ldrb r6, [r0, 0x4]
- ldrh r1, [r0, 0x6]
- mov r9, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r5, 0
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- lsls r6, 24
- asrs r6, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CalculatePanIncrement
- ldr r2, _080DD4CC @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0xE]
- mov r0, r9
- strh r0, [r1, 0x12]
- strh r2, [r1, 0x1C]
- strh r4, [r1, 0x1E]
- ldr r2, _080DD4D0 @ =sub_80DD4D4
- str r2, [r1]
- mov r0, r8
- bl _call_via_r2
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD4C8: .4byte gBattleAnimArgs
-_080DD4CC: .4byte gTasks
-_080DD4D0: .4byte sub_80DD4D4
- thumb_func_end sub_80DD444
-
- thumb_func_start sub_80DD4D4
-sub_80DD4D4: @ 80DD4D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DD52C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r2, [r4, 0xE]
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080DD50E
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r0, r2, r1
- strh r0, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- bl sub_8073B60
- strh r0, [r4, 0x1E]
-_080DD50E:
- ldr r1, _080DD530 @ =gUnknown_2037F24
- ldrh r0, [r4, 0x1E]
- strb r0, [r1]
- movs r3, 0x1E
- ldrsh r1, [r4, r3]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080DD526
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD526:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD52C: .4byte gTasks
-_080DD530: .4byte gUnknown_2037F24
- thumb_func_end sub_80DD4D4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/electric.s b/asm/electric.s
index d020459d5..44e85bb50 100644
--- a/asm/electric.s
+++ b/asm/electric.s
@@ -2279,12 +2279,12 @@ _080AED20:
movs r0, 0xC
strh r0, [r5, 0x1E]
subs r0, 0x4C
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x20]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x22]
diff --git a/asm/psychic.s b/asm/psychic.s
index cff45fc8c..32c5bed30 100644
--- a/asm/psychic.s
+++ b/asm/psychic.s
@@ -2099,7 +2099,7 @@ _080B3EFC:
beq _080B3FA4
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
diff --git a/asm/rock.s b/asm/rock.s
index c0da2bcfa..a40f4935d 100644
--- a/asm/rock.s
+++ b/asm/rock.s
@@ -806,13 +806,13 @@ _080B4C7A:
strh r4, [r6, 0x16]
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
asrs r4, 8
lsrs r4, 16
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
strh r4, [r6, 0x22]
asrs r0, 24
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 3536e89f4..e1cdc1c13 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -65,6 +65,8 @@ extern u8 gUnknown_02038440;
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
extern u16 gAnimMovePower;
extern s32 gAnimMoveDmg;
+extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
+extern u8 gUnknown_2037F24;
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
@@ -80,6 +82,7 @@ s8 BattleAnimAdjustPanning2(s8 pan);
s16 sub_80A52EC(s16 a);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
bool8 IsBattlerSpriteVisible(u8 battlerId);
+s16 KeepPanInRange(s16 a, s32 oldPan);
// battle_anim_80FE840.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
diff --git a/ld_script.txt b/ld_script.txt
index fbf00f9c1..a09d3f607 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -200,7 +200,7 @@ SECTIONS {
src/save.o(.text);
src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
- asm/battle_anim_sound_tasks.o(.text);
+ src/battle_anim_sound_tasks.o(.text);
src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
asm/battle_anim_effects_3.o(.text);
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
new file mode 100644
index 000000000..e67c91bfa
--- /dev/null
+++ b/src/battle_anim_sound_tasks.c
@@ -0,0 +1,313 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "task.h"
+#include "constants/battle_anim.h"
+#include "constants/species.h"
+
+static void sub_80DCE78(u8 taskId);
+static void sub_80DCEE4(u8 taskId);
+static void sub_80DCFE8(u8 taskId);
+static void sub_80DD270(u8 taskId);
+static void sub_80DD390(u8 taskId);
+static void sub_80DD4D4(u8 taskId);
+
+void sub_80DCE10(u8 taskId)
+{
+ s8 pan1, pan2, panIncrement;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+ pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ panIncrement = CalculatePanIncrement(pan1, pan2, 2);
+ gTasks[taskId].data[2] = pan1;
+ gTasks[taskId].data[3] = pan2;
+ gTasks[taskId].data[4] = panIncrement;
+ gTasks[taskId].data[10] = 10;
+ gTasks[taskId].func = sub_80DCE78;
+}
+
+static void sub_80DCE78(u8 taskId)
+{
+ s16 pan = gTasks[taskId].data[2];
+ s8 panIncrement = gTasks[taskId].data[4];
+
+ if (++gTasks[taskId].data[11] == 111)
+ {
+ gTasks[taskId].data[10] = 5;
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].func = sub_80DCEE4;
+ }
+ else
+ {
+ if (++gTasks[taskId].data[10] == 11)
+ {
+ gTasks[taskId].data[10] = 0;
+ PlaySE12WithPanning(gTasks[taskId].data[0], pan);
+ }
+ pan += panIncrement;
+ gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement);
+ }
+}
+
+static void sub_80DCEE4(u8 taskId)
+{
+ if (++gTasks[taskId].data[10] == 6)
+ {
+ s8 pan;
+
+ gTasks[taskId].data[10] = 0;
+ pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ PlaySE12WithPanning(gTasks[taskId].data[1], pan);
+ if (++gTasks[taskId].data[11] == 2)
+ DestroyAnimSoundTask(taskId);
+ }
+}
+
+void mas_80DCF38(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 targetPan = gBattleAnimArgs[2];
+ s8 panIncrement = gBattleAnimArgs[3];
+ u8 r10 = gBattleAnimArgs[4];
+ u8 r7 = gBattleAnimArgs[5];
+ u8 r9 = gBattleAnimArgs[6];
+ s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ targetPan = BattleAnimAdjustPanning(targetPan);
+ panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
+ gTasks[taskId].data[0] = songId;
+ gTasks[taskId].data[1] = sourcePan;
+ gTasks[taskId].data[2] = targetPan;
+ gTasks[taskId].data[3] = panIncrement;
+ gTasks[taskId].data[4] = r10;
+ gTasks[taskId].data[5] = r7;
+ gTasks[taskId].data[6] = r9;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = sourcePan;
+ gTasks[taskId].data[12] = r9;
+ gTasks[taskId].func = sub_80DCFE8;
+ sub_80DCFE8(taskId);
+}
+
+static void sub_80DCFE8(u8 taskId)
+{
+ if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[12] = 0;
+ PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[11]);
+ if (--gTasks[taskId].data[4] == 0)
+ {
+ DestroyAnimSoundTask(taskId);
+ return;
+ }
+ }
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
+ {
+ u16 dPan, oldPan;
+
+ gTasks[taskId].data[10] = 0;
+ dPan = gTasks[taskId].data[3];
+ oldPan = gTasks[taskId].data[11] ;
+ gTasks[taskId].data[11] = dPan + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
+ }
+}
+
+void sub_80DD06C(u8 taskId)
+{
+ u16 species = SPECIES_NONE;
+ u8 battlerId;
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+
+ // Get wanted battler.
+ if (gBattleAnimArgs[0] == ANIM_ATTACKER)
+ battlerId = gBattleAnimAttacker;
+ else if (gBattleAnimArgs[0] == ANIM_TARGET)
+ battlerId = gBattleAnimTarget;
+ else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
+ battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ else
+ battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ // Check if battler is visible.
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
+ && !IsBattlerSpriteVisible(battlerId))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ if (species != SPECIES_NONE)
+ PlayCry3(species, pan, 3);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD148(u8 taskId)
+{
+ u16 species = SPECIES_NONE;
+ u8 battlerId;
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+
+ // Get wanted battler.
+ if (gBattleAnimArgs[0] == ANIM_ATTACKER)
+ battlerId = gBattleAnimAttacker;
+ else if (gBattleAnimArgs[0] == ANIM_TARGET)
+ battlerId = gBattleAnimTarget;
+ else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
+ battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ else
+ battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ // Check if battler is visible.
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
+ && !IsBattlerSpriteVisible(battlerId))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = species;
+ gTasks[taskId].data[2] = pan;
+ if (species != SPECIES_NONE)
+ {
+ if (gBattleAnimArgs[1] == TASK_NONE)
+ PlayCry3(species, pan, 9);
+ else
+ PlayCry3(species, pan, 7);
+ gTasks[taskId].func = sub_80DD270;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80DD270(u8 taskId)
+{
+ u16 species = gTasks[taskId].data[1];
+ s8 pan = gTasks[taskId].data[2];
+
+ if (gTasks[taskId].data[9] < 2)
+ {
+ ++gTasks[taskId].data[9];
+ }
+ else if (gTasks[taskId].data[0] == TASK_NONE)
+ {
+ if (!IsCryPlaying())
+ {
+ PlayCry3(species, pan, 10);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else if (!IsCryPlaying())
+ {
+ PlayCry3(species, pan, 8);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DD2F4(u8 taskId)
+{
+ if (gTasks[taskId].data[9] < 2)
+ ++gTasks[taskId].data[9];
+ else if (!IsCryPlaying())
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD334(u8 taskId)
+{
+ u16 species;
+ s8 pan;
+
+ pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+ species = gAnimBattlerSpecies[gBattleAnimAttacker];
+ gTasks[taskId].data[1] = species;
+ gTasks[taskId].data[2] = pan;
+ if (species != SPECIES_NONE)
+ {
+ PlayCry3(species, pan, 4);
+ gTasks[taskId].func = sub_80DD390;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80DD390(u8 taskId)
+{
+
+ if (gTasks[taskId].data[9] < 2)
+ {
+ ++gTasks[taskId].data[9];
+ }
+ else if (!IsCryPlaying())
+ {
+ u16 species = gTasks[taskId].data[1];
+ s8 pan = gTasks[taskId].data[2];
+
+ PlayCry3(species, pan, 6);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DD3DC(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ PlaySE1WithPanning(songId, pan);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD410(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ PlaySE2WithPanning(songId, pan);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD444(u8 taskId)
+{
+ s8 targetPan = gBattleAnimArgs[1];
+ s8 panIncrement = gBattleAnimArgs[2];
+ u16 r9 = gBattleAnimArgs[3];
+ s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[0]);
+
+ targetPan = BattleAnimAdjustPanning(targetPan);
+ panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
+ gTasks[taskId].data[1] = sourcePan;
+ gTasks[taskId].data[2] = targetPan;
+ gTasks[taskId].data[3] = panIncrement;
+ gTasks[taskId].data[5] = r9;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = sourcePan;
+ gTasks[taskId].func = sub_80DD4D4;
+ sub_80DD4D4(taskId);
+}
+
+static void sub_80DD4D4(u8 taskId)
+{
+ u16 oldPan, panIncrement = gTasks[taskId].data[3];
+
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
+ {
+ gTasks[taskId].data[10] = 0;
+ oldPan = gTasks[taskId].data[11];
+ gTasks[taskId].data[11] = panIncrement + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
+ }
+ gUnknown_2037F24 = gTasks[taskId].data[11];
+ if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f821f7170..b405f8362 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -669,7 +669,7 @@ gBattleAnimAttacker: @ 2037F1A
gBattleAnimTarget: @ 2037F1B
.space 0x1
-gUnknown_2037F1C: @ 2037F1C
+gAnimBattlerSpecies: @ 2037F1C
.space 0x8
gUnknown_2037F24: @ 2037F24