summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-10-05 23:21:03 -0500
committerGitHub <noreply@github.com>2018-10-05 23:21:03 -0500
commit2cb551cf0df29e2602d6a80c16f8bac0a136b134 (patch)
treeed6f6f0faa3a88b86d1332a70ee8b1a64778cd25
parent0659d53c27fcb85b70c6f5a5065967fdc3da115d (diff)
parent4fafb81b2f2e04e910ac05eaee038ff12889d846 (diff)
Merge pull request #13 from ProjectRevoTPP/sound
decompile sound.c
-rw-r--r--asm/battle_anim.s32
-rw-r--r--asm/battle_controller_link_opponent.s12
-rw-r--r--asm/battle_controller_opponent.s12
-rw-r--r--asm/battle_controller_player.s16
-rw-r--r--asm/battle_gfx_sfx_util.s8
-rw-r--r--asm/diploma.s2
-rw-r--r--asm/hall_of_fame.s8
-rw-r--r--asm/help_system.s16
-rw-r--r--asm/item_use.s2
-rw-r--r--asm/link.s12
-rw-r--r--asm/overworld.s4
-rw-r--r--asm/party_menu.s2
-rw-r--r--asm/pokeball.s8
-rw-r--r--asm/save_failed_screen.s8
-rw-r--r--asm/scrcmd.s4
-rw-r--r--asm/sound.s1541
-rw-r--r--asm/unk_81507FC.s4
-rw-r--r--common_syms/m4a_2.txt8
-rw-r--r--common_syms/sound.txt1
-rw-r--r--data/data.s2
-rw-r--r--data/sound_data.s4
-rw-r--r--include/constants/songs.h1
-rw-r--r--include/gba/m4a_internal.h4
-rw-r--r--ld_script.txt2
-rw-r--r--src/m4a_2.c8
-rw-r--r--src/sound.c628
-rw-r--r--src/text.c8
-rw-r--r--sym_bss.txt16
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt7
30 files changed, 730 insertions, 1654 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 4bed76663..c258fa7b1 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -272,7 +272,7 @@ _080726EE:
beq _08072706
cmp r8, r0
bne _080726EC
- ldr r0, _0807272C @ =gMPlay_BGM
+ ldr r0, _0807272C @ =gMPlayInfo_BGM
movs r2, 0x80
bl m4aMPlayVolumeControl
_08072706:
@@ -295,7 +295,7 @@ _08072706:
bx r0
.align 2, 0
_08072728: .4byte 0x0000ffff
-_0807272C: .4byte gMPlay_BGM
+_0807272C: .4byte gMPlayInfo_BGM
_08072730: .4byte gUnknown_2022984
_08072734: .4byte gUnknown_2022986
_08072738: .4byte gUnknown_2022988
@@ -868,9 +868,9 @@ _08072B62:
_08072B6C: .4byte gUnknown_2037F12
_08072B70: .4byte gUnknown_2037EE0
_08072B74:
- ldr r0, _08072BE8 @ =gMPlay_SE1
+ ldr r0, _08072BE8 @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _08072BEC @ =gMPlay_SE2
+ ldr r0, _08072BEC @ =gMPlayInfo_SE2
bl m4aMPlayStop
_08072B80:
ldr r1, _08072BF0 @ =gUnknown_2037F12
@@ -905,7 +905,7 @@ _08072BB2:
mov r1, r8
cmp r1, 0
bne _08072BDC
- ldr r0, _08072C00 @ =gMPlay_BGM
+ ldr r0, _08072C00 @ =gMPlayInfo_BGM
ldr r1, _08072BF4 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -923,13 +923,13 @@ _08072BDC:
pop {r0}
bx r0
.align 2, 0
-_08072BE8: .4byte gMPlay_SE1
-_08072BEC: .4byte gMPlay_SE2
+_08072BE8: .4byte gMPlayInfo_SE1
+_08072BEC: .4byte gMPlayInfo_SE2
_08072BF0: .4byte gUnknown_2037F12
_08072BF4: .4byte 0x0000ffff
_08072BF8: .4byte gUnknown_83ACC08
_08072BFC: .4byte gUnknown_2037EEE
-_08072C00: .4byte gMPlay_BGM
+_08072C00: .4byte gMPlayInfo_BGM
_08072C04: .4byte gUnknown_2037EE1
thumb_func_end sub_8072B08
@@ -3652,17 +3652,17 @@ ScriptCmd_waitsound: @ 80740E0
lsrs r0, 16
cmp r0, 0x5A
bls _0807412E
- ldr r0, _08074120 @ =gMPlay_SE1
+ ldr r0, _08074120 @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _08074124 @ =gMPlay_SE2
+ ldr r0, _08074124 @ =gMPlayInfo_SE2
bl m4aMPlayStop
strh r5, [r4]
b _08074152
.align 2, 0
_08074118: .4byte gUnknown_2037EE3
_0807411C: .4byte gUnknown_2037F12
-_08074120: .4byte gMPlay_SE1
-_08074124: .4byte gMPlay_SE2
+_08074120: .4byte gMPlayInfo_SE1
+_08074124: .4byte gMPlayInfo_SE2
_08074128:
ldr r1, _08074138 @ =gUnknown_2037F12
movs r0, 0
@@ -4088,9 +4088,9 @@ _08074454: .4byte gSprites
thumb_func_start sub_8074458
sub_8074458: @ 8074458
push {lr}
- ldr r0, _08074474 @ =gMPlay_SE1
+ ldr r0, _08074474 @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _08074478 @ =gMPlay_SE2
+ ldr r0, _08074478 @ =gMPlayInfo_SE2
bl m4aMPlayStop
ldr r1, _0807447C @ =gUnknown_2037ED4
ldr r0, [r1]
@@ -4099,8 +4099,8 @@ sub_8074458: @ 8074458
pop {r0}
bx r0
.align 2, 0
-_08074474: .4byte gMPlay_SE1
-_08074478: .4byte gMPlay_SE2
+_08074474: .4byte gMPlayInfo_SE1
+_08074478: .4byte gMPlayInfo_SE2
_0807447C: .4byte gUnknown_2037ED4
thumb_func_end sub_8074458
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index 8114a4c7b..405114d91 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -381,7 +381,7 @@ _0803A936:
lsrs r0, 24
cmp r0, 0x1
bne _0803A988
- ldr r0, _0803A978 @ =gMPlay_BGM
+ ldr r0, _0803A978 @ =gMPlayInfo_BGM
bl m4aMPlayContinue
b _0803A988
.align 2, 0
@@ -392,9 +392,9 @@ _0803A968: .4byte SpriteCallbackDummy
_0803A96C: .4byte gUnknown_2024018
_0803A970: .4byte 0x000027f9
_0803A974: .4byte gBattleTypeFlags
-_0803A978: .4byte gMPlay_BGM
+_0803A978: .4byte gMPlayInfo_BGM
_0803A97C:
- ldr r0, _0803A9B4 @ =gMPlay_BGM
+ ldr r0, _0803A9B4 @ =gMPlayInfo_BGM
ldr r1, _0803A9B8 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -424,7 +424,7 @@ _0803A9AA:
pop {r0}
bx r0
.align 2, 0
-_0803A9B4: .4byte gMPlay_BGM
+_0803A9B4: .4byte gMPlayInfo_BGM
_0803A9B8: .4byte 0x0000ffff
_0803A9BC: .4byte gUnknown_2024018
_0803A9C0: .4byte gActiveBattler
@@ -1078,7 +1078,7 @@ sub_803AEDC: @ 803AEDC
lsls r0, 24
cmp r0, 0
bne _0803AF14
- ldr r0, _0803AF20 @ =gMPlay_BGM
+ ldr r0, _0803AF20 @ =gMPlayInfo_BGM
ldr r1, _0803AF24 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -1090,7 +1090,7 @@ _0803AF14:
.align 2, 0
_0803AF18: .4byte gUnknown_2024018
_0803AF1C: .4byte gActiveBattler
-_0803AF20: .4byte gMPlay_BGM
+_0803AF20: .4byte gMPlayInfo_BGM
_0803AF24: .4byte 0x0000ffff
thumb_func_end sub_803AEDC
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 9de63d725..5a7b6d684 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -394,7 +394,7 @@ _08035CD0:
ands r0, r1
cmp r0, 0
beq _08035DA4
- ldr r0, _08035DA0 @ =gMPlay_BGM
+ ldr r0, _08035DA0 @ =gMPlayInfo_BGM
bl m4aMPlayContinue
b _08035DB0
.align 2, 0
@@ -405,9 +405,9 @@ _08035D90: .4byte SpriteCallbackDummy
_08035D94: .4byte gUnknown_2024018
_08035D98: .4byte 0x000027f9
_08035D9C: .4byte gBattleTypeFlags
-_08035DA0: .4byte gMPlay_BGM
+_08035DA0: .4byte gMPlayInfo_BGM
_08035DA4:
- ldr r0, _08035DD8 @ =gMPlay_BGM
+ ldr r0, _08035DD8 @ =gMPlayInfo_BGM
ldr r1, _08035DDC @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -435,7 +435,7 @@ _08035DD2:
pop {r0}
bx r0
.align 2, 0
-_08035DD8: .4byte gMPlay_BGM
+_08035DD8: .4byte gMPlayInfo_BGM
_08035DDC: .4byte 0x0000ffff
_08035DE0: .4byte gUnknown_2024018
_08035DE4: .4byte gActiveBattler
@@ -1074,7 +1074,7 @@ sub_80362E8: @ 80362E8
lsls r0, 24
cmp r0, 0
bne _08036320
- ldr r0, _0803632C @ =gMPlay_BGM
+ ldr r0, _0803632C @ =gMPlayInfo_BGM
ldr r1, _08036330 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -1086,7 +1086,7 @@ _08036320:
.align 2, 0
_08036324: .4byte gUnknown_2024018
_08036328: .4byte gActiveBattler
-_0803632C: .4byte gMPlay_BGM
+_0803632C: .4byte gMPlayInfo_BGM
_08036330: .4byte 0x0000ffff
thumb_func_end sub_80362E8
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index b036c9a78..6c6587e9c 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -2775,7 +2775,7 @@ _0802F934:
ands r0, r1
cmp r0, 0
beq _0802F9D0
- ldr r0, _0802F9CC @ =gMPlay_BGM
+ ldr r0, _0802F9CC @ =gMPlayInfo_BGM
bl m4aMPlayContinue
b _0802F9DC
.align 2, 0
@@ -2786,9 +2786,9 @@ _0802F9BC: .4byte SpriteCallbackDummy
_0802F9C0: .4byte gUnknown_2024018
_0802F9C4: .4byte 0x000027f9
_0802F9C8: .4byte gBattleTypeFlags
-_0802F9CC: .4byte gMPlay_BGM
+_0802F9CC: .4byte gMPlayInfo_BGM
_0802F9D0:
- ldr r0, _0802FA38 @ =gMPlay_BGM
+ ldr r0, _0802FA38 @ =gMPlayInfo_BGM
ldr r1, _0802FA3C @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -2840,7 +2840,7 @@ _0802FA32:
pop {r0}
bx r0
.align 2, 0
-_0802FA38: .4byte gMPlay_BGM
+_0802FA38: .4byte gMPlayInfo_BGM
_0802FA3C: .4byte 0x0000ffff
_0802FA40: .4byte gBattlerPartyIndexes
_0802FA44: .4byte gActiveBattler
@@ -3153,7 +3153,7 @@ sub_802FCAC: @ 802FCAC
lsls r0, 24
cmp r0, 0
bne _0802FCFA
- ldr r0, _0802FD08 @ =gMPlay_BGM
+ ldr r0, _0802FD08 @ =gMPlayInfo_BGM
ldr r1, _0802FD0C @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -3176,7 +3176,7 @@ _0802FCFA:
.align 2, 0
_0802FD00: .4byte gUnknown_2024018
_0802FD04: .4byte gActiveBattler
-_0802FD08: .4byte gMPlay_BGM
+_0802FD08: .4byte gMPlayInfo_BGM
_0802FD0C: .4byte 0x0000ffff
_0802FD10: .4byte gBattlerPartyIndexes
_0802FD14: .4byte gPlayerParty
@@ -3291,7 +3291,7 @@ c3_0802FDF4: @ 802FDF4
lsls r0, 24
cmp r0, 0
bne _0802FE16
- ldr r0, _0802FE1C @ =gMPlay_BGM
+ ldr r0, _0802FE1C @ =gMPlayInfo_BGM
ldr r1, _0802FE20 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -3303,7 +3303,7 @@ _0802FE16:
pop {r0}
bx r0
.align 2, 0
-_0802FE1C: .4byte gMPlay_BGM
+_0802FE1C: .4byte gMPlayInfo_BGM
_0802FE20: .4byte 0x0000ffff
thumb_func_end c3_0802FDF4
diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s
index c280b1ffd..e56df1923 100644
--- a/asm/battle_gfx_sfx_util.s
+++ b/asm/battle_gfx_sfx_util.s
@@ -676,9 +676,9 @@ mplay_80342A4: @ 80342A4
ldrb r0, [r0, 0x8]
cmp r0, 0x1D
bls _080342F0
- ldr r0, _080342FC @ =gMPlay_SE1
+ ldr r0, _080342FC @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _08034300 @ =gMPlay_SE2
+ ldr r0, _08034300 @ =gMPlayInfo_SE2
bl m4aMPlayStop
_080342EC:
cmp r5, 0
@@ -689,8 +689,8 @@ _080342F0:
.align 2, 0
_080342F4: .4byte gUnknown_2024018
_080342F8: .4byte gActiveBattler
-_080342FC: .4byte gMPlay_SE1
-_08034300: .4byte gMPlay_SE2
+_080342FC: .4byte gMPlayInfo_SE1
+_08034300: .4byte gMPlayInfo_SE2
_08034304:
ldr r0, _0803431C @ =gUnknown_2024018
ldr r0, [r0]
diff --git a/asm/diploma.s b/asm/diploma.s
index 651264528..4ff605295 100644
--- a/asm/diploma.s
+++ b/asm/diploma.s
@@ -154,7 +154,7 @@ _080F4D30:
cmp r0, 0
bne _080F4D50
movs r0, 0x5
- bl sub_8071BC4
+ bl PlayFanfareByFanfareNum
ldr r0, _080F4D68 @ =gTasks
lsls r1, r4, 2
adds r1, r4
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index a344a99c9..0f66e62de 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -2151,7 +2151,7 @@ _080F2F0C:
cmp r0, 0
beq _080F2F26
bl StopCryAndClearCrySongs
- ldr r0, _080F2F2C @ =gMPlay_BGM
+ ldr r0, _080F2F2C @ =gMPlayInfo_BGM
ldr r1, _080F2F30 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -2161,7 +2161,7 @@ _080F2F26:
str r0, [r4]
b _080F2FD8
.align 2, 0
-_080F2F2C: .4byte gMPlay_BGM
+_080F2F2C: .4byte gMPlayInfo_BGM
_080F2F30: .4byte 0x0000ffff
_080F2F34: .4byte sub_80F2FEC
_080F2F38:
@@ -2174,7 +2174,7 @@ _080F2F38:
cmp r0, 0
beq _080F2F5A
bl StopCryAndClearCrySongs
- ldr r0, _080F2F6C @ =gMPlay_BGM
+ ldr r0, _080F2F6C @ =gMPlayInfo_BGM
ldr r1, _080F2F70 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -2189,7 +2189,7 @@ _080F2F5A:
str r0, [r1]
b _080F2FD8
.align 2, 0
-_080F2F6C: .4byte gMPlay_BGM
+_080F2F6C: .4byte gMPlayInfo_BGM
_080F2F70: .4byte 0x0000ffff
_080F2F74: .4byte gTasks
_080F2F78: .4byte sub_80F2FEC
diff --git a/asm/help_system.s b/asm/help_system.s
index b19c6ea58..9a447ebbe 100644
--- a/asm/help_system.s
+++ b/asm/help_system.s
@@ -83,9 +83,9 @@ _0813B90C: .4byte gMain
_0813B910: .4byte gUnknown_203F175
_0813B914: .4byte gUnknown_3005ECC
_0813B918:
- ldr r0, _0813B94C @ =gMPlay_SE1
+ ldr r0, _0813B94C @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _0813B950 @ =gMPlay_SE2
+ ldr r0, _0813B950 @ =gMPlayInfo_SE2
bl m4aMPlayStop
movs r0, 0xFA
bl PlaySE
@@ -93,7 +93,7 @@ _0813B918:
ldrb r0, [r0]
cmp r0, 0
bne _0813B93C
- ldr r0, _0813B958 @ =gMPlay_BGM
+ ldr r0, _0813B958 @ =gMPlayInfo_BGM
ldr r1, _0813B95C @ =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
@@ -106,10 +106,10 @@ _0813B93C:
movs r0, 0x1
b _0813BB22
.align 2, 0
-_0813B94C: .4byte gMPlay_SE1
-_0813B950: .4byte gMPlay_SE2
+_0813B94C: .4byte gMPlayInfo_SE1
+_0813B950: .4byte gMPlayInfo_SE2
_0813B954: .4byte gUnknown_203F174
-_0813B958: .4byte gMPlay_BGM
+_0813B958: .4byte gMPlayInfo_BGM
_0813B95C: .4byte 0x0000ffff
_0813B960: .4byte gUnknown_203F177
_0813B964: .4byte gUnknown_203F178
@@ -269,7 +269,7 @@ _0813BAE0:
ldrb r0, [r0]
cmp r0, 0
bne _0813BAF4
- ldr r0, _0813BB08 @ =gMPlay_BGM
+ ldr r0, _0813BB08 @ =gMPlayInfo_BGM
ldr r1, _0813BB0C @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -282,7 +282,7 @@ _0813BAF4:
b _0813BB22
.align 2, 0
_0813BB04: .4byte gUnknown_203F174
-_0813BB08: .4byte gMPlay_BGM
+_0813BB08: .4byte gMPlayInfo_BGM
_0813BB0C: .4byte 0x0000ffff
_0813BB10: .4byte gUnknown_203F178
_0813BB14:
diff --git a/asm/item_use.s b/asm/item_use.s
index cb8143749..e2cad1322 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -838,7 +838,7 @@ sub_80A1648: @ 80A1648
lsls r4, 24
lsrs r4, 24
movs r0, 0xB
- bl sub_8071BC4
+ bl PlayFanfareByFanfareNum
ldr r1, _080A166C @ =gTasks
lsls r0, r4, 2
adds r0, r4
diff --git a/asm/link.s b/asm/link.s
index a08422258..0849f6590 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -3234,11 +3234,11 @@ c2_800ACD4: @ 800ACD4
movs r0, 0
movs r1, 0
bl SetGpuReg
- ldr r0, _0800ADE0 @ =gMPlay_SE1
+ ldr r0, _0800ADE0 @ =gMPlayInfo_SE1
bl m4aMPlayStop
- ldr r0, _0800ADE4 @ =gMPlay_SE2
+ ldr r0, _0800ADE4 @ =gMPlayInfo_SE2
bl m4aMPlayStop
- ldr r0, _0800ADE8 @ =gMPlay_SE3
+ ldr r0, _0800ADE8 @ =gMPlayInfo_SE3
bl m4aMPlayStop
ldr r0, _0800ADEC @ =gHeap
movs r1, 0xE0
@@ -3333,9 +3333,9 @@ _0800ADD8:
pop {r0}
bx r0
.align 2, 0
-_0800ADE0: .4byte gMPlay_SE1
-_0800ADE4: .4byte gMPlay_SE2
-_0800ADE8: .4byte gMPlay_SE3
+_0800ADE0: .4byte gMPlayInfo_SE1
+_0800ADE4: .4byte gMPlayInfo_SE2
+_0800ADE8: .4byte gMPlayInfo_SE3
_0800ADEC: .4byte gHeap
_0800ADF0: .4byte gUnknown_3003F3C
_0800ADF4: .4byte gUnknown_2022854
diff --git a/asm/overworld.s b/asm/overworld.s
index 9dbce6c55..5e6315b9f 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -2409,7 +2409,7 @@ _08055DDC:
subs r0, 0x7
cmp r0, 0xA
bgt _08055E24
- ldr r0, _08055E1C @ =gMPlay_BGM
+ ldr r0, _08055E1C @ =gMPlayInfo_BGM
ldr r1, [r0]
ldr r0, _08055E20 @ =gUnknown_86E6B0C
cmp r1, r0
@@ -2420,7 +2420,7 @@ _08055DDC:
.align 2, 0
_08055E14: .4byte gSaveBlock1Ptr
_08055E18: .4byte 0x00004f01
-_08055E1C: .4byte gMPlay_BGM
+_08055E1C: .4byte gMPlayInfo_BGM
_08055E20: .4byte gUnknown_86E6B0C
_08055E24:
bl sub_8055D8C
diff --git a/asm/party_menu.s b/asm/party_menu.s
index a0a504527..c23e401ef 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -15270,7 +15270,7 @@ sub_8126350: @ 8126350
adds r1, r4, 0
bl sub_80A2294
movs r0, 0
- bl sub_8071BC4
+ bl PlayFanfareByFanfareNum
ldrb r0, [r6, 0x9]
adds r1, r4, 0
bl sub_8126440
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 77d9152c5..5408e5567 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -1287,7 +1287,7 @@ _0804B34E:
lsls r0, 24
cmp r0, 0
beq _0804B3A6
- ldr r0, _0804B398 @ =gMPlay_BGM
+ ldr r0, _0804B398 @ =gMPlayInfo_BGM
bl m4aMPlayStop
b _0804B3A6
.align 2, 0
@@ -1295,9 +1295,9 @@ _0804B388: .4byte gBattlerPartyIndexes
_0804B38C: .4byte gPlayerParty
_0804B390: .4byte gUnknown_2024018
_0804B394: .4byte gBattleTypeFlags
-_0804B398: .4byte gMPlay_BGM
+_0804B398: .4byte gMPlayInfo_BGM
_0804B39C:
- ldr r0, _0804B3C4 @ =gMPlay_BGM
+ ldr r0, _0804B3C4 @ =gMPlayInfo_BGM
ldr r1, _0804B3C8 @ =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
@@ -1318,7 +1318,7 @@ _0804B3C0:
movs r4, 0
b _0804B3F2
.align 2, 0
-_0804B3C4: .4byte gMPlay_BGM
+_0804B3C4: .4byte gMPlayInfo_BGM
_0804B3C8: .4byte 0x0000ffff
_0804B3CC: .4byte gUnknown_2024018
_0804B3D0:
diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s
index 98706e4a8..ade020812 100644
--- a/asm/save_failed_screen.s
+++ b/asm/save_failed_screen.s
@@ -69,7 +69,7 @@ _080F515C:
.align 2, 0
_080F5168: .4byte gUnknown_3005430
_080F516C:
- ldr r0, _080F5184 @ =gMPlay_BGM
+ ldr r0, _080F5184 @ =gMPlayInfo_BGM
ldr r1, _080F5188 @ =0x0000ffff
movs r2, 0x80
bl m4aMPlayVolumeControl
@@ -79,7 +79,7 @@ _080F516C:
strb r0, [r1]
b _080F52D6
.align 2, 0
-_080F5184: .4byte gMPlay_BGM
+_080F5184: .4byte gMPlayInfo_BGM
_080F5188: .4byte 0x0000ffff
_080F518C: .4byte gUnknown_203AB50
_080F5190:
@@ -206,7 +206,7 @@ _080F5298:
.align 2, 0
_080F52B0: .4byte gUnknown_203AB50
_080F52B4:
- ldr r0, _080F52DC @ =gMPlay_BGM
+ ldr r0, _080F52DC @ =gMPlayInfo_BGM
ldr r1, _080F52E0 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
@@ -225,7 +225,7 @@ _080F52D8:
pop {r1}
bx r1
.align 2, 0
-_080F52DC: .4byte gMPlay_BGM
+_080F52DC: .4byte gMPlayInfo_BGM
_080F52E0: .4byte 0x0000ffff
_080F52E4: .4byte gUnknown_3005430
_080F52E8: .4byte gUnknown_203AB50
diff --git a/asm/scrcmd.s b/asm/scrcmd.s
index 23d2bdc54..ec78da1d5 100644
--- a/asm/scrcmd.s
+++ b/asm/scrcmd.s
@@ -3897,7 +3897,7 @@ sub_806BB9C: @ 806BB9C
bl sub_809D2F0
adds r0, r4, 0
movs r1, 0
- bl sub_8071F24
+ bl PlayCry7
movs r0, 0
pop {r4,r5}
pop {r1}
@@ -5165,7 +5165,7 @@ ScrCmd_playmoncry: @ 806C508
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl sub_8071F24
+ bl PlayCry7
movs r0, 0
pop {r4,r5}
pop {r1}
diff --git a/asm/sound.s b/asm/sound.s
deleted file mode 100644
index 2c2c1b379..000000000
--- a/asm/sound.s
+++ /dev/null
@@ -1,1541 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start InitMapMusic
-InitMapMusic: @ 8071938
- push {lr}
- ldr r1, _08071948 @ =gUnknown_3005080
- movs r0, 0
- strb r0, [r1]
- bl ResetMapMusic
- pop {r0}
- bx r0
- .align 2, 0
-_08071948: .4byte gUnknown_3005080
- thumb_func_end InitMapMusic
-
- thumb_func_start MapMusicMain
-MapMusicMain: @ 807194C
- push {r4,r5,lr}
- ldr r0, _08071964 @ =gUnknown_3000FC4
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0x7
- bhi _08071A2E
- lsls r0, r1, 2
- ldr r1, _08071968 @ =_0807196C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08071964: .4byte gUnknown_3000FC4
-_08071968: .4byte _0807196C
- .align 2, 0
-_0807196C:
- .4byte _08071A2E
- .4byte _0807198C
- .4byte _08071A2E
- .4byte _08071A2E
- .4byte _08071A2E
- .4byte _080719A0
- .4byte _080719C0
- .4byte _080719FC
-_0807198C:
- movs r0, 0x2
- strb r0, [r2]
- ldr r0, _0807199C @ =gUnknown_3000FC0
- ldrh r0, [r0]
- bl PlayBGM
- b _08071A2E
- .align 2, 0
-_0807199C: .4byte gUnknown_3000FC0
-_080719A0:
- bl IsBGMStopped
- lsls r0, 24
- cmp r0, 0
- beq _08071A2E
- ldr r0, _080719B8 @ =gUnknown_3000FC2
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080719BC @ =gUnknown_3000FC4
- strb r1, [r0]
- b _08071A2E
- .align 2, 0
-_080719B8: .4byte gUnknown_3000FC2
-_080719BC: .4byte gUnknown_3000FC4
-_080719C0:
- bl IsBGMStopped
- lsls r0, 24
- cmp r0, 0
- beq _08071A2E
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08071A2E
- ldr r2, _080719F0 @ =gUnknown_3000FC0
- ldr r1, _080719F4 @ =gUnknown_3000FC2
- ldrh r0, [r1]
- strh r0, [r2]
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080719F8 @ =gUnknown_3000FC4
- movs r0, 0x2
- strb r0, [r1]
- ldrh r0, [r2]
- bl PlayBGM
- b _08071A2E
- .align 2, 0
-_080719F0: .4byte gUnknown_3000FC0
-_080719F4: .4byte gUnknown_3000FC2
-_080719F8: .4byte gUnknown_3000FC4
-_080719FC:
- bl IsBGMStopped
- lsls r0, 24
- cmp r0, 0
- beq _08071A2E
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08071A2E
- ldr r4, _08071A34 @ =gUnknown_3000FC2
- ldrh r0, [r4]
- ldr r5, _08071A38 @ =gUnknown_3000FC5
- ldrb r1, [r5]
- bl FadeInNewBGM
- ldr r1, _08071A3C @ =gUnknown_3000FC0
- ldrh r0, [r4]
- strh r0, [r1]
- movs r2, 0
- strh r2, [r4]
- ldr r1, _08071A40 @ =gUnknown_3000FC4
- movs r0, 0x2
- strb r0, [r1]
- strb r2, [r5]
-_08071A2E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071A34: .4byte gUnknown_3000FC2
-_08071A38: .4byte gUnknown_3000FC5
-_08071A3C: .4byte gUnknown_3000FC0
-_08071A40: .4byte gUnknown_3000FC4
- thumb_func_end MapMusicMain
-
- thumb_func_start ResetMapMusic
-ResetMapMusic: @ 8071A44
- ldr r0, _08071A58 @ =gUnknown_3000FC0
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08071A5C @ =gUnknown_3000FC2
- strh r1, [r0]
- ldr r0, _08071A60 @ =gUnknown_3000FC4
- strb r1, [r0]
- ldr r0, _08071A64 @ =gUnknown_3000FC5
- strb r1, [r0]
- bx lr
- .align 2, 0
-_08071A58: .4byte gUnknown_3000FC0
-_08071A5C: .4byte gUnknown_3000FC2
-_08071A60: .4byte gUnknown_3000FC4
-_08071A64: .4byte gUnknown_3000FC5
- thumb_func_end ResetMapMusic
-
- thumb_func_start GetCurrentMapMusic
-GetCurrentMapMusic: @ 8071A68
- ldr r0, _08071A70 @ =gUnknown_3000FC0
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_08071A70: .4byte gUnknown_3000FC0
- thumb_func_end GetCurrentMapMusic
-
- thumb_func_start PlayNewMapMusic
-PlayNewMapMusic: @ 8071A74
- ldr r1, _08071A88 @ =gUnknown_3000FC0
- strh r0, [r1]
- ldr r1, _08071A8C @ =gUnknown_3000FC2
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08071A90 @ =gUnknown_3000FC4
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08071A88: .4byte gUnknown_3000FC0
-_08071A8C: .4byte gUnknown_3000FC2
-_08071A90: .4byte gUnknown_3000FC4
- thumb_func_end PlayNewMapMusic
-
- thumb_func_start StopMapMusic
-StopMapMusic: @ 8071A94
- ldr r0, _08071AA8 @ =gUnknown_3000FC0
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08071AAC @ =gUnknown_3000FC2
- strh r1, [r0]
- ldr r1, _08071AB0 @ =gUnknown_3000FC4
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08071AA8: .4byte gUnknown_3000FC0
-_08071AAC: .4byte gUnknown_3000FC2
-_08071AB0: .4byte gUnknown_3000FC4
- thumb_func_end StopMapMusic
-
- thumb_func_start FadeOutMapMusic
-FadeOutMapMusic: @ 8071AB4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsNotWaitingForBGMStop
- lsls r0, 24
- cmp r0, 0
- beq _08071ACA
- adds r0, r4, 0
- bl FadeOutBGM
-_08071ACA:
- ldr r0, _08071AE0 @ =gUnknown_3000FC0
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08071AE4 @ =gUnknown_3000FC2
- strh r1, [r0]
- ldr r1, _08071AE8 @ =gUnknown_3000FC4
- movs r0, 0x5
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071AE0: .4byte gUnknown_3000FC0
-_08071AE4: .4byte gUnknown_3000FC2
-_08071AE8: .4byte gUnknown_3000FC4
- thumb_func_end FadeOutMapMusic
-
- thumb_func_start FadeOutAndPlayNewMapMusic
-FadeOutAndPlayNewMapMusic: @ 8071AEC
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- bl FadeOutMapMusic
- ldr r1, _08071B14 @ =gUnknown_3000FC0
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08071B18 @ =gUnknown_3000FC2
- strh r4, [r0]
- ldr r1, _08071B1C @ =gUnknown_3000FC4
- movs r0, 0x6
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071B14: .4byte gUnknown_3000FC0
-_08071B18: .4byte gUnknown_3000FC2
-_08071B1C: .4byte gUnknown_3000FC4
- thumb_func_end FadeOutAndPlayNewMapMusic
-
- thumb_func_start FadeOutAndFadeInNewMapMusic
-FadeOutAndFadeInNewMapMusic: @ 8071B20
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- bl FadeOutMapMusic
- ldr r1, _08071B54 @ =gUnknown_3000FC0
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08071B58 @ =gUnknown_3000FC2
- strh r4, [r0]
- ldr r1, _08071B5C @ =gUnknown_3000FC4
- movs r0, 0x7
- strb r0, [r1]
- ldr r0, _08071B60 @ =gUnknown_3000FC5
- strb r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071B54: .4byte gUnknown_3000FC0
-_08071B58: .4byte gUnknown_3000FC2
-_08071B5C: .4byte gUnknown_3000FC4
-_08071B60: .4byte gUnknown_3000FC5
- thumb_func_end FadeOutAndFadeInNewMapMusic
-
- thumb_func_start FadeInNewMapMusic
-FadeInNewMapMusic: @ 8071B64
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FadeInNewBGM
- ldr r0, _08071B90 @ =gUnknown_3000FC0
- strh r4, [r0]
- ldr r0, _08071B94 @ =gUnknown_3000FC2
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08071B98 @ =gUnknown_3000FC4
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, _08071B9C @ =gUnknown_3000FC5
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071B90: .4byte gUnknown_3000FC0
-_08071B94: .4byte gUnknown_3000FC2
-_08071B98: .4byte gUnknown_3000FC4
-_08071B9C: .4byte gUnknown_3000FC5
- thumb_func_end FadeInNewMapMusic
-
- thumb_func_start IsNotWaitingForBGMStop
-IsNotWaitingForBGMStop: @ 8071BA0
- push {lr}
- ldr r0, _08071BB8 @ =gUnknown_3000FC4
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _08071BBC
- cmp r0, 0x5
- beq _08071BBC
- cmp r0, 0x7
- beq _08071BBC
- movs r0, 0x1
- b _08071BBE
- .align 2, 0
-_08071BB8: .4byte gUnknown_3000FC4
-_08071BBC:
- movs r0, 0
-_08071BBE:
- pop {r1}
- bx r1
- thumb_func_end IsNotWaitingForBGMStop
-
- thumb_func_start sub_8071BC4
-sub_8071BC4: @ 8071BC4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08071BDC @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08071BE4
- ldr r1, _08071BE0 @ =gUnknown_3000FC6
- movs r0, 0xFF
- strh r0, [r1]
- b _08071BFC
- .align 2, 0
-_08071BDC: .4byte gUnknown_203ADFA
-_08071BE0: .4byte gUnknown_3000FC6
-_08071BE4:
- ldr r0, _08071C04 @ =gMPlay_BGM
- bl m4aMPlayStop
- ldr r0, _08071C08 @ =gUnknown_83AC990
- lsls r1, r4, 2
- adds r1, r0
- ldrh r0, [r1]
- ldr r2, _08071C0C @ =gUnknown_3000FC6
- ldrh r1, [r1, 0x2]
- strh r1, [r2]
- bl m4aSongNumStart
-_08071BFC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071C04: .4byte gMPlay_BGM
-_08071C08: .4byte gUnknown_83AC990
-_08071C0C: .4byte gUnknown_3000FC6
- thumb_func_end sub_8071BC4
-
- thumb_func_start WaitFanfare
-WaitFanfare: @ 8071C10
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _08071C28 @ =gUnknown_3000FC6
- ldrh r0, [r2]
- cmp r0, 0
- beq _08071C2C
- subs r0, 0x1
- strh r0, [r2]
- movs r0, 0
- b _08071C44
- .align 2, 0
-_08071C28: .4byte gUnknown_3000FC6
-_08071C2C:
- cmp r1, 0
- bne _08071C3C
- ldr r0, _08071C38 @ =gMPlay_BGM
- bl m4aMPlayContinue
- b _08071C42
- .align 2, 0
-_08071C38: .4byte gMPlay_BGM
-_08071C3C:
- movs r0, 0
- bl m4aSongNumStart
-_08071C42:
- movs r0, 0x1
-_08071C44:
- pop {r1}
- bx r1
- thumb_func_end WaitFanfare
-
- thumb_func_start StopFanfareByFanfareNum
-StopFanfareByFanfareNum: @ 8071C48
- push {lr}
- lsls r0, 24
- ldr r1, _08071C5C @ =gUnknown_83AC990
- lsrs r0, 22
- adds r0, r1
- ldrh r0, [r0]
- bl m4aSongNumStop
- pop {r0}
- bx r0
- .align 2, 0
-_08071C5C: .4byte gUnknown_83AC990
- thumb_func_end StopFanfareByFanfareNum
-
- thumb_func_start PlayFanfare
-PlayFanfare: @ 8071C60
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0
- ldr r2, _08071C80 @ =gUnknown_83AC990
-_08071C6A:
- ldrh r0, [r2]
- cmp r0, r3
- bne _08071C84
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_8071BC4
- bl CreateFanfareTask
- b _08071C96
- .align 2, 0
-_08071C80: .4byte gUnknown_83AC990
-_08071C84:
- adds r2, 0x4
- adds r1, 0x1
- cmp r1, 0xD
- bls _08071C6A
- movs r0, 0
- bl sub_8071BC4
- bl CreateFanfareTask
-_08071C96:
- pop {r0}
- bx r0
- thumb_func_end PlayFanfare
-
- thumb_func_start IsFanfareTaskInactive
-IsFanfareTaskInactive: @ 8071C9C
- push {lr}
- ldr r0, _08071CB0 @ =Task_Fanfare
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08071CB4
- movs r0, 0x1
- b _08071CB6
- .align 2, 0
-_08071CB0: .4byte Task_Fanfare
-_08071CB4:
- movs r0, 0
-_08071CB6:
- pop {r1}
- bx r1
- thumb_func_end IsFanfareTaskInactive
-
- thumb_func_start Task_Fanfare
-Task_Fanfare: @ 8071CBC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08071CD0 @ =gUnknown_3000FC6
- ldrh r0, [r1]
- cmp r0, 0
- beq _08071CD4
- subs r0, 0x1
- strh r0, [r1]
- b _08071CE0
- .align 2, 0
-_08071CD0: .4byte gUnknown_3000FC6
-_08071CD4:
- ldr r0, _08071CE8 @ =gMPlay_BGM
- bl m4aMPlayContinue
- adds r0, r4, 0
- bl DestroyTask
-_08071CE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071CE8: .4byte gMPlay_BGM
- thumb_func_end Task_Fanfare
-
- thumb_func_start CreateFanfareTask
-CreateFanfareTask: @ 8071CEC
- push {r4,lr}
- ldr r4, _08071D0C @ =Task_Fanfare
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08071D06
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_08071D06:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08071D0C: .4byte Task_Fanfare
- thumb_func_end CreateFanfareTask
-
- thumb_func_start FadeInNewBGM
-FadeInNewBGM: @ 8071D10
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _08071D58 @ =gUnknown_3005080
- ldrb r0, [r0]
- cmp r0, 0
- beq _08071D24
- movs r5, 0
-_08071D24:
- ldr r6, _08071D5C @ =0x0000ffff
- cmp r5, r6
- bne _08071D2C
- movs r5, 0
-_08071D2C:
- adds r0, r5, 0
- bl m4aSongNumStart
- ldr r4, _08071D60 @ =gMPlay_BGM
- adds r0, r4, 0
- bl m4aMPlayImmInit
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0
- bl m4aMPlayVolumeControl
- adds r0, r5, 0
- bl m4aSongNumStop
- adds r0, r4, 0
- adds r1, r7, 0
- bl m4aMPlayFadeIn
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08071D58: .4byte gUnknown_3005080
-_08071D5C: .4byte 0x0000ffff
-_08071D60: .4byte gMPlay_BGM
- thumb_func_end FadeInNewBGM
-
- thumb_func_start FadeOutBGMTemporarily
-FadeOutBGMTemporarily: @ 8071D64
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08071D78 @ =gMPlay_BGM
- bl m4aMPlayFadeOutTemporarily
- pop {r0}
- bx r0
- .align 2, 0
-_08071D78: .4byte gMPlay_BGM
- thumb_func_end FadeOutBGMTemporarily
-
- thumb_func_start IsBGMPausedOrStopped
-IsBGMPausedOrStopped: @ 8071D7C
- push {lr}
- ldr r0, _08071D94 @ =gMPlay_BGM
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _08071D9C
- ldr r0, _08071D98 @ =0x0000ffff
- ands r1, r0
- cmp r1, 0
- beq _08071D9C
- movs r0, 0
- b _08071D9E
- .align 2, 0
-_08071D94: .4byte gMPlay_BGM
-_08071D98: .4byte 0x0000ffff
-_08071D9C:
- movs r0, 0x1
-_08071D9E:
- pop {r1}
- bx r1
- thumb_func_end IsBGMPausedOrStopped
-
- thumb_func_start FadeInBGM
-FadeInBGM: @ 8071DA4
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08071DB8 @ =gMPlay_BGM
- bl m4aMPlayFadeIn
- pop {r0}
- bx r0
- .align 2, 0
-_08071DB8: .4byte gMPlay_BGM
- thumb_func_end FadeInBGM
-
- thumb_func_start FadeOutBGM
-FadeOutBGM: @ 8071DBC
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08071DD0 @ =gMPlay_BGM
- bl m4aMPlayFadeOut
- pop {r0}
- bx r0
- .align 2, 0
-_08071DD0: .4byte gMPlay_BGM
- thumb_func_end FadeOutBGM
-
- thumb_func_start IsBGMStopped
-IsBGMStopped: @ 8071DD4
- push {lr}
- ldr r0, _08071DE4 @ =gMPlay_BGM
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- beq _08071DE8
- movs r0, 0
- b _08071DEA
- .align 2, 0
-_08071DE4: .4byte gMPlay_BGM
-_08071DE8:
- movs r0, 0x1
-_08071DEA:
- pop {r1}
- bx r1
- thumb_func_end IsBGMStopped
-
- thumb_func_start PlayCry1
-PlayCry1: @ 8071DF0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08071E30 @ =gMPlay_BGM
- ldr r1, _08071E34 @ =0x0000ffff
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- lsls r4, 24
- asrs r4, 24
- movs r0, 0
- str r0, [sp]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
- ldr r1, _08071E38 @ =gUnknown_2037ED0
- movs r0, 0x2
- strb r0, [r1]
- bl RestoreBGMVolumeAfterPokemonCry
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071E30: .4byte gMPlay_BGM
-_08071E34: .4byte 0x0000ffff
-_08071E38: .4byte gUnknown_2037ED0
- thumb_func_end PlayCry1
-
- thumb_func_start PlayCry2
-PlayCry2: @ 8071E3C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r1, 24
- asrs r1, 24
- lsls r2, 24
- asrs r2, 24
- movs r4, 0
- str r4, [sp]
- bl sub_8071F78
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayCry2
-
- thumb_func_start PlayCry3
-PlayCry3: @ 8071E60
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0x1
- bne _08071E86
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
- b _08071EAA
-_08071E86:
- ldr r0, _08071EB4 @ =gMPlay_BGM
- ldr r1, _08071EB8 @ =0x0000ffff
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
- ldr r1, _08071EBC @ =gUnknown_2037ED0
- movs r0, 0x2
- strb r0, [r1]
- bl RestoreBGMVolumeAfterPokemonCry
-_08071EAA:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071EB4: .4byte gMPlay_BGM
-_08071EB8: .4byte 0x0000ffff
-_08071EBC: .4byte gUnknown_2037ED0
- thumb_func_end PlayCry3
-
- thumb_func_start PlayCry4
-PlayCry4: @ 8071EC0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- adds r4, r2, 0
- cmp r2, 0x1
- bne _08071EEA
- lsls r1, 24
- asrs r1, 24
- str r2, [sp]
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
- b _08071F10
-_08071EEA:
- ldr r0, _08071F18 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08071F00
- ldr r0, _08071F1C @ =gMPlay_BGM
- ldr r1, _08071F20 @ =0x0000ffff
- movs r2, 0x55
- bl m4aMPlayVolumeControl
-_08071F00:
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
-_08071F10:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08071F18: .4byte gBattleTypeFlags
-_08071F1C: .4byte gMPlay_BGM
-_08071F20: .4byte 0x0000ffff
- thumb_func_end PlayCry4
-
- thumb_func_start sub_8071F24
-sub_8071F24: @ 8071F24
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _08071F68 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08071F56
- ldr r0, _08071F6C @ =gMPlay_BGM
- ldr r1, _08071F70 @ =0x0000ffff
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x78
- movs r3, 0xA
- bl sub_8071F78
-_08071F56:
- ldr r1, _08071F74 @ =gUnknown_2037ED0
- movs r0, 0x2
- strb r0, [r1]
- bl RestoreBGMVolumeAfterPokemonCry
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08071F68: .4byte gUnknown_203ADFA
-_08071F6C: .4byte gMPlay_BGM
-_08071F70: .4byte 0x0000ffff
-_08071F74: .4byte gUnknown_2037ED0
- thumb_func_end sub_8071F24
-
- thumb_func_start sub_8071F78
-sub_8071F78: @ 8071F78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- lsls r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r4, 24
- lsrs r1, r4, 24
- ldr r3, _08071FC0 @ =0xffff0000
- adds r0, r3
- lsrs r7, r0, 16
- movs r6, 0x8C
- movs r0, 0
- mov r9, r0
- movs r5, 0
- movs r4, 0xF0
- lsls r4, 6
- mov r8, r5
- cmp r1, 0xC
- bhi _0807208A
- lsls r0, r1, 2
- ldr r1, _08071FC4 @ =_08071FC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08071FC0: .4byte 0xffff0000
-_08071FC4: .4byte _08071FC8
- .align 2, 0
-_08071FC8:
- .4byte _0807208A
- .4byte _08071FFC
- .4byte _08072002
- .4byte _08072010
- .4byte _08072020
- .4byte _08072038
- .4byte _08072044
- .4byte _08072054
- .4byte _0807205E
- .4byte _08072068
- .4byte _08072078
- .4byte _08072088
- .4byte _08072084
-_08071FFC:
- movs r6, 0x14
- movs r5, 0xE1
- b _0807208A
-_08072002:
- movs r5, 0xE1
- ldr r4, _0807200C @ =0x00003cf0
- movs r1, 0x14
- b _0807202C
- .align 2, 0
-_0807200C: .4byte 0x00003cf0
-_08072010:
- movs r6, 0x32
- movs r5, 0xC8
- ldr r4, _0807201C @ =0x00003db8
- movs r3, 0x14
- b _0807204A
- .align 2, 0
-_0807201C: .4byte 0x00003db8
-_08072020:
- movs r6, 0x19
- movs r0, 0x1
- mov r9, r0
- movs r5, 0x64
- ldr r4, _08072034 @ =0x00003cf0
- movs r1, 0xC0
-_0807202C:
- mov r8, r1
- movs r2, 0x5A
- b _0807208A
- .align 2, 0
-_08072034: .4byte 0x00003cf0
-_08072038:
- movs r5, 0xC8
- ldr r4, _08072040 @ =0x00003868
- b _0807208A
- .align 2, 0
-_08072040: .4byte 0x00003868
-_08072044:
- movs r5, 0xDC
- ldr r4, _08072050 @ =0x00003cc3
- movs r3, 0xC0
-_0807204A:
- mov r8, r3
- movs r2, 0x5A
- b _0807208A
- .align 2, 0
-_08072050: .4byte 0x00003cc3
-_08072054:
- movs r6, 0xA
- movs r5, 0x64
- movs r4, 0xE8
- lsls r4, 6
- b _0807208A
-_0807205E:
- movs r6, 0x3C
- movs r5, 0xE1
- movs r4, 0xF4
- lsls r4, 6
- b _0807208A
-_08072068:
- movs r6, 0xF
- movs r0, 0x1
- mov r9, r0
- movs r5, 0x7D
- ldr r4, _08072074 @ =0x00003b60
- b _0807208A
- .align 2, 0
-_08072074: .4byte 0x00003b60
-_08072078:
- movs r6, 0x64
- movs r5, 0xE1
- ldr r4, _08072080 @ =0x00003b60
- b _0807208A
- .align 2, 0
-_08072080: .4byte 0x00003b60
-_08072084:
- movs r6, 0x14
- movs r5, 0xE1
-_08072088:
- ldr r4, _080720E4 @ =0x00003a98
-_0807208A:
- adds r0, r2, 0
- bl SetPokemonCryVolume
- mov r1, r10
- lsls r0, r1, 24
- asrs r0, 24
- bl SetPokemonCryPanpot
- adds r0, r4, 0
- bl SetPokemonCryPitch
- adds r0, r6, 0
- bl SetPokemonCryLength
- movs r0, 0
- bl SetPokemonCryProgress
- adds r0, r5, 0
- bl SetPokemonCryRelease
- mov r3, r8
- lsls r0, r3, 24
- asrs r0, 24
- bl SetPokemonCryChorus
- ldr r0, [sp]
- bl SetPokemonCryPriority
- adds r0, r7, 0
- bl SpeciesToCryId
- adds r7, r0, 0
- movs r1, 0x7F
- ands r1, r7
- lsrs r0, r7, 7
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- cmp r0, 0x1
- beq _08072118
- cmp r0, 0x1
- bgt _080720E8
- cmp r0, 0
- beq _080720F2
- b _08072186
- .align 2, 0
-_080720E4: .4byte 0x00003a98
-_080720E8:
- cmp r2, 0x2
- beq _0807213C
- cmp r2, 0x3
- beq _08072160
- b _08072186
-_080720F2:
- mov r0, r9
- cmp r0, 0
- beq _08072108
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072104 @ =gUnknown_848DB44
- b _0807217C
- .align 2, 0
-_08072104: .4byte gUnknown_848DB44
-_08072108:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072114 @ =gUnknown_848C914
- b _0807217C
- .align 2, 0
-_08072114: .4byte gUnknown_848C914
-_08072118:
- mov r3, r9
- cmp r3, 0
- beq _0807212C
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072128 @ =gUnknown_848E144
- b _0807217C
- .align 2, 0
-_08072128: .4byte gUnknown_848E144
-_0807212C:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072138 @ =gUnknown_848CF14
- b _0807217C
- .align 2, 0
-_08072138: .4byte gUnknown_848CF14
-_0807213C:
- mov r0, r9
- cmp r0, 0
- beq _08072150
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0807214C @ =gUnknown_848E744
- b _0807217C
- .align 2, 0
-_0807214C: .4byte gUnknown_848E744
-_08072150:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0807215C @ =gUnknown_848D514
- b _0807217C
- .align 2, 0
-_0807215C: .4byte gUnknown_848D514
-_08072160:
- mov r3, r9
- cmp r3, 0
- beq _08072174
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072170 @ =gUnknown_848ED44
- b _0807217C
- .align 2, 0
-_08072170: .4byte gUnknown_848ED44
-_08072174:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08072198 @ =gUnknown_848DB14
-_0807217C:
- adds r0, r1
- bl SetPokemonCryTone
- ldr r1, _0807219C @ =gUnknown_2037ECC
- str r0, [r1]
-_08072186:
- 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
-_08072198: .4byte gUnknown_848DB14
-_0807219C: .4byte gUnknown_2037ECC
- thumb_func_end sub_8071F78
-
- thumb_func_start IsCryFinished
-IsCryFinished: @ 80721A0
- push {lr}
- ldr r0, _080721B8 @ =Task_DuckBGMForPokemonCry
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080721BC
- bl ClearPokemonCrySongs
- movs r0, 0x1
- b _080721BE
- .align 2, 0
-_080721B8: .4byte Task_DuckBGMForPokemonCry
-_080721BC:
- movs r0, 0
-_080721BE:
- pop {r1}
- bx r1
- thumb_func_end IsCryFinished
-
- thumb_func_start StopCryAndClearCrySongs
-StopCryAndClearCrySongs: @ 80721C4
- push {lr}
- ldr r0, _080721D8 @ =gUnknown_2037ECC
- ldr r0, [r0]
- bl m4aMPlayStop
- bl ClearPokemonCrySongs
- pop {r0}
- bx r0
- .align 2, 0
-_080721D8: .4byte gUnknown_2037ECC
- thumb_func_end StopCryAndClearCrySongs
-
- thumb_func_start StopCry
-StopCry: @ 80721DC
- push {lr}
- ldr r0, _080721EC @ =gUnknown_2037ECC
- ldr r0, [r0]
- bl m4aMPlayStop
- pop {r0}
- bx r0
- .align 2, 0
-_080721EC: .4byte gUnknown_2037ECC
- thumb_func_end StopCry
-
- thumb_func_start IsCryPlayingOrClearCrySongs
-IsCryPlayingOrClearCrySongs: @ 80721F0
- push {lr}
- ldr r0, _08072208 @ =gUnknown_2037ECC
- ldr r0, [r0]
- bl IsPokemonCryPlaying
- cmp r0, 0
- bne _0807220C
- bl ClearPokemonCrySongs
- movs r0, 0
- b _0807220E
- .align 2, 0
-_08072208: .4byte gUnknown_2037ECC
-_0807220C:
- movs r0, 0x1
-_0807220E:
- pop {r1}
- bx r1
- thumb_func_end IsCryPlayingOrClearCrySongs
-
- thumb_func_start IsCryPlaying
-IsCryPlaying: @ 8072214
- push {lr}
- ldr r0, _08072228 @ =gUnknown_2037ECC
- ldr r0, [r0]
- bl IsPokemonCryPlaying
- cmp r0, 0
- bne _0807222C
- movs r0, 0
- b _0807222E
- .align 2, 0
-_08072228: .4byte gUnknown_2037ECC
-_0807222C:
- movs r0, 0x1
-_0807222E:
- pop {r1}
- bx r1
- thumb_func_end IsCryPlaying
-
- thumb_func_start Task_DuckBGMForPokemonCry
-Task_DuckBGMForPokemonCry: @ 8072234
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08072248 @ =gUnknown_2037ED0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0807224C
- subs r0, 0x1
- strb r0, [r1]
- b _0807226A
- .align 2, 0
-_08072248: .4byte gUnknown_2037ED0
-_0807224C:
- ldr r0, _08072270 @ =gUnknown_2037ECC
- ldr r0, [r0]
- bl IsPokemonCryPlaying
- cmp r0, 0
- bne _0807226A
- ldr r0, _08072274 @ =gMPlay_BGM
- ldr r1, _08072278 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- adds r0, r4, 0
- bl DestroyTask
-_0807226A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08072270: .4byte gUnknown_2037ECC
-_08072274: .4byte gMPlay_BGM
-_08072278: .4byte 0x0000ffff
- thumb_func_end Task_DuckBGMForPokemonCry
-
- thumb_func_start RestoreBGMVolumeAfterPokemonCry
-RestoreBGMVolumeAfterPokemonCry: @ 807227C
- push {r4,lr}
- ldr r4, _0807229C @ =Task_DuckBGMForPokemonCry
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08072296
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_08072296:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807229C: .4byte Task_DuckBGMForPokemonCry
- thumb_func_end RestoreBGMVolumeAfterPokemonCry
-
- thumb_func_start PlayBGM
-PlayBGM: @ 80722A0
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080722C4 @ =gUnknown_3005080
- ldrb r0, [r0]
- cmp r0, 0
- beq _080722B0
- movs r1, 0
-_080722B0:
- ldr r0, _080722C8 @ =0x0000ffff
- cmp r1, r0
- bne _080722B8
- movs r1, 0
-_080722B8:
- adds r0, r1, 0
- bl m4aSongNumStart
- pop {r0}
- bx r0
- .align 2, 0
-_080722C4: .4byte gUnknown_3005080
-_080722C8: .4byte 0x0000ffff
- thumb_func_end PlayBGM
-
- thumb_func_start PlaySE
-PlaySE: @ 80722CC
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080722EC @ =gUnknown_2031DD8
- ldrb r0, [r0]
- cmp r0, 0
- bne _080722E8
- ldr r0, _080722F0 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080722E8
- adds r0, r1, 0
- bl m4aSongNumStart
-_080722E8:
- pop {r0}
- bx r0
- .align 2, 0
-_080722EC: .4byte gUnknown_2031DD8
-_080722F0: .4byte gUnknown_203ADFA
- thumb_func_end PlaySE
-
- thumb_func_start PlaySE12WithPanning
-PlaySE12WithPanning: @ 80722F4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl m4aSongNumStart
- ldr r6, _0807233C @ =gMPlay_SE1
- adds r0, r6, 0
- bl m4aMPlayImmInit
- ldr r0, _08072340 @ =gMPlay_SE2
- mov r8, r0
- bl m4aMPlayImmInit
- ldr r5, _08072344 @ =0x0000ffff
- lsls r4, 24
- asrs r4, 24
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- mov r0, r8
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807233C: .4byte gMPlay_SE1
-_08072340: .4byte gMPlay_SE2
-_08072344: .4byte 0x0000ffff
- thumb_func_end PlaySE12WithPanning
-
- thumb_func_start PlaySE1WithPanning
-PlaySE1WithPanning: @ 8072348
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl m4aSongNumStart
- ldr r5, _08072374 @ =gMPlay_SE1
- adds r0, r5, 0
- bl m4aMPlayImmInit
- ldr r1, _08072378 @ =0x0000ffff
- lsls r4, 24
- asrs r4, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08072374: .4byte gMPlay_SE1
-_08072378: .4byte 0x0000ffff
- thumb_func_end PlaySE1WithPanning
-
- thumb_func_start PlaySE2WithPanning
-PlaySE2WithPanning: @ 807237C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl m4aSongNumStart
- ldr r5, _080723A8 @ =gMPlay_SE2
- adds r0, r5, 0
- bl m4aMPlayImmInit
- ldr r1, _080723AC @ =0x0000ffff
- lsls r4, 24
- asrs r4, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080723A8: .4byte gMPlay_SE2
-_080723AC: .4byte 0x0000ffff
- thumb_func_end PlaySE2WithPanning
-
- thumb_func_start SE12PanpotControl
-SE12PanpotControl: @ 80723B0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _080723D4 @ =gMPlay_SE1
- ldr r5, _080723D8 @ =0x0000ffff
- lsls r4, 24
- asrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- ldr r0, _080723DC @ =gMPlay_SE2
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080723D4: .4byte gMPlay_SE1
-_080723D8: .4byte 0x0000ffff
-_080723DC: .4byte gMPlay_SE2
- thumb_func_end SE12PanpotControl
-
- thumb_func_start IsSEPlaying
-IsSEPlaying: @ 80723E0
- push {lr}
- ldr r0, _08072410 @ =gMPlay_SE1
- ldr r1, [r0, 0x4]
- movs r2, 0x80
- lsls r2, 24
- adds r3, r0, 0
- cmp r1, 0
- bge _080723FA
- ldr r0, _08072414 @ =gMPlay_SE2
- ldr r0, [r0, 0x4]
- ands r0, r2
- cmp r0, 0
- bne _0807240C
-_080723FA:
- ldr r1, _08072418 @ =0x0000ffff
- ldrh r0, [r3, 0x4]
- cmp r0, 0
- bne _0807241C
- ldr r0, _08072414 @ =gMPlay_SE2
- ldr r0, [r0, 0x4]
- ands r0, r1
- cmp r0, 0
- bne _0807241C
-_0807240C:
- movs r0, 0
- b _0807241E
- .align 2, 0
-_08072410: .4byte gMPlay_SE1
-_08072414: .4byte gMPlay_SE2
-_08072418: .4byte 0x0000ffff
-_0807241C:
- movs r0, 0x1
-_0807241E:
- pop {r1}
- bx r1
- thumb_func_end IsSEPlaying
-
- thumb_func_start IsBGMPlaying
-IsBGMPlaying: @ 8072424
- push {lr}
- ldr r0, _0807243C @ =gMPlay_BGM
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _08072444
- ldr r0, _08072440 @ =0x0000ffff
- ands r1, r0
- cmp r1, 0
- beq _08072444
- movs r0, 0x1
- b _08072446
- .align 2, 0
-_0807243C: .4byte gMPlay_BGM
-_08072440: .4byte 0x0000ffff
-_08072444:
- movs r0, 0
-_08072446:
- pop {r1}
- bx r1
- thumb_func_end IsBGMPlaying
-
- thumb_func_start IsSpecialSEPlaying
-IsSpecialSEPlaying: @ 807244C
- push {lr}
- ldr r0, _08072464 @ =gMPlay_SE3
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _0807246C
- ldr r0, _08072468 @ =0x0000ffff
- ands r1, r0
- cmp r1, 0
- beq _0807246C
- movs r0, 0x1
- b _0807246E
- .align 2, 0
-_08072464: .4byte gMPlay_SE3
-_08072468: .4byte 0x0000ffff
-_0807246C:
- movs r0, 0
-_0807246E:
- pop {r1}
- bx r1
- thumb_func_end IsSpecialSEPlaying
-
- thumb_func_start sub_8072474
-sub_8072474: @ 8072474
- push {lr}
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r1, _08072490 @ =gUnknown_203F174
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _08072494 @ =gMPlay_BGM
- ldr r1, _08072498 @ =0x0000ffff
- bl m4aMPlayVolumeControl
- pop {r0}
- bx r0
- .align 2, 0
-_08072490: .4byte gUnknown_203F174
-_08072494: .4byte gMPlay_BGM
-_08072498: .4byte 0x0000ffff
- thumb_func_end sub_8072474
-
- thumb_func_start sub_807249C
-sub_807249C: @ 807249C
- push {lr}
- ldr r1, _080724B4 @ =gUnknown_203F174
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080724B8 @ =gMPlay_BGM
- ldr r1, _080724BC @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- pop {r0}
- bx r0
- .align 2, 0
-_080724B4: .4byte gUnknown_203F174
-_080724B8: .4byte gMPlay_BGM
-_080724BC: .4byte 0x0000ffff
- thumb_func_end sub_807249C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s
index 7f189f1d3..cb042d971 100644
--- a/asm/unk_81507FC.s
+++ b/asm/unk_81507FC.s
@@ -2859,7 +2859,7 @@ _08151E6C:
cmp r0, 0x1
bne _08151E8C
movs r0, 0xA
- bl sub_8071BC4
+ bl PlayFanfareByFanfareNum
ldr r0, [r4]
movs r2, 0xAA
lsls r2, 1
@@ -3054,7 +3054,7 @@ _08151FF0:
cmp r0, 0x1
bne _08152010
movs r0, 0xA
- bl sub_8071BC4
+ bl PlayFanfareByFanfareNum
ldr r0, [r4]
movs r3, 0xAA
lsls r3, 1
diff --git a/common_syms/m4a_2.txt b/common_syms/m4a_2.txt
index a80d8a79d..6e7b3c93e 100644
--- a/common_syms/m4a_2.txt
+++ b/common_syms/m4a_2.txt
@@ -5,8 +5,8 @@ gMPlayJumpTable
gCgbChans
gPokemonCryTracks
gPokemonCrySong
-gMPlay_BGM
-gMPlay_SE1
-gMPlay_SE2
+gMPlayInfo_BGM
+gMPlayInfo_SE1
+gMPlayInfo_SE2
gMPlayMemAccArea
-gMPlay_SE3
+gMPlayInfo_SE3
diff --git a/common_syms/sound.txt b/common_syms/sound.txt
new file mode 100644
index 000000000..0f6f2fc75
--- /dev/null
+++ b/common_syms/sound.txt
@@ -0,0 +1 @@
+gDisableMusic
diff --git a/data/data.s b/data/data.s
index 6f5459f4f..d1598bfbc 100644
--- a/data/data.s
+++ b/data/data.s
@@ -1553,7 +1553,7 @@ gUnknown_83AC960:: @ 83AC960
gUnknown_83AC970:: @ 83AC970
.incbin "baserom.gba", 0x3AC970, 0x20
-gUnknown_83AC990:: @ 83AC990
+sFanfares:: @ 83AC990
.incbin "baserom.gba", 0x3AC990, 0x278
gUnknown_83ACC08:: @ 83ACC08
diff --git a/data/sound_data.s b/data/sound_data.s
index 8991dd7bf..4bbe6ce75 100644
--- a/data/sound_data.s
+++ b/data/sound_data.s
@@ -3,7 +3,7 @@
voicegroup_pokemon_cry:: @ 8489C8C
.incbin "baserom.gba", 0x489C8C, 0x2C88
-gUnknown_848C914:: @ 848C914
+gCryTable:: @ 848C914
.incbin "baserom.gba", 0x48C914, 0x600
gUnknown_848CF14:: @ 848CF14
@@ -15,7 +15,7 @@ gUnknown_848D514:: @ 848D514
gUnknown_848DB14:: @ 848DB14
.incbin "baserom.gba", 0x48DB14, 0x30
-gUnknown_848DB44:: @ 848DB44
+gCryTable2:: @ 848DB44
.incbin "baserom.gba", 0x48DB44, 0x600
gUnknown_848E144:: @ 848E144
diff --git a/include/constants/songs.h b/include/constants/songs.h
index 2e3adcbbf..e31a38fdc 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -1,6 +1,7 @@
#ifndef GUARD_CONSTANTS_SONGS_H
#define GUARD_CONSTANTS_SONGS_H
+#define MUS_DUMMY 0
#define SE_STOP 0
#define SE_KAIFUKU 1
#define SE_PC_LOGON 2
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index ff92fcc40..89d5c1f5a 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -404,6 +404,10 @@ void SampleFreqSet(u32 freq);
void m4aSoundVSyncOn(void);
void m4aSoundVSyncOff(void);
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
void ClearModM(struct MusicPlayerTrack *track);
void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);
void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed);
diff --git a/ld_script.txt b/ld_script.txt
index f7071f2be..1e1d66fbb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -115,7 +115,7 @@ SECTIONS {
asm/start_menu.o(.text);
asm/tileset_anims.o(.text);
asm/palette.o(.text);
- asm/sound.o(.text);
+ src/sound.o(.text);
asm/battle_anim.o(.text);
asm/battle_anim_8074480.o(.text);
src/task.o(.text);
diff --git a/src/m4a_2.c b/src/m4a_2.c
index 2d3c65848..0625f05d1 100644
--- a/src/m4a_2.c
+++ b/src/m4a_2.c
@@ -11,10 +11,10 @@ void *gMPlayJumpTable[36];
struct CgbChannel gCgbChans[4];
struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2];
struct PokemonCrySong gPokemonCrySong;
-struct MusicPlayerInfo gMPlay_BGM;
-struct MusicPlayerInfo gMPlay_SE1;
-struct MusicPlayerInfo gMPlay_SE2;
-struct MusicPlayerInfo gMPlay_SE3;
+struct MusicPlayerInfo gMPlayInfo_BGM;
+struct MusicPlayerInfo gMPlayInfo_SE1;
+struct MusicPlayerInfo gMPlayInfo_SE2;
+struct MusicPlayerInfo gMPlayInfo_SE3;
u8 gMPlayMemAccArea[0x10];
u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
diff --git a/src/sound.c b/src/sound.c
new file mode 100644
index 000000000..b8814de81
--- /dev/null
+++ b/src/sound.c
@@ -0,0 +1,628 @@
+#include "global.h"
+#include "gba/m4a_internal.h"
+#include "sound.h"
+#include "battle.h"
+#include "m4a.h"
+#include "main.h"
+#include "pokemon.h"
+#include "constants/songs.h"
+#include "task.h"
+
+struct Fanfare
+{
+ u16 songNum;
+ u16 duration;
+};
+
+// TODO: what are these
+extern u8 gUnknown_2031DD8;
+extern u8 gUnknown_203ADFA;
+extern u8 gUnknown_203F174;
+
+// ewram
+EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
+EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
+
+// iwram bss
+IWRAM_DATA static u16 sCurrentMapMusic;
+IWRAM_DATA static u16 sNextMapMusic;
+IWRAM_DATA static u8 sMapMusicState;
+IWRAM_DATA static u8 sMapMusicFadeInSpeed;
+IWRAM_DATA static u16 sFanfareCounter;
+
+// iwram common
+bool8 gDisableMusic;
+
+extern u32 gBattleTypeFlags;
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern struct MusicPlayerInfo gMPlayInfo_SE2;
+extern struct MusicPlayerInfo gMPlayInfo_SE3;
+extern struct ToneData gCryTable[];
+extern struct ToneData gCryTable2[];
+extern const struct Fanfare sFanfares[];
+
+extern u16 SpeciesToCryId(u16);
+
+static void Task_Fanfare(u8 taskId);
+static void CreateFanfareTask(void);
+static void Task_DuckBGMForPokemonCry(u8 taskId);
+static void RestoreBGMVolumeAfterPokemonCry(void);
+
+#define CRY_VOLUME 120 // was 125 in R/S
+
+void InitMapMusic(void)
+{
+ gDisableMusic = FALSE;
+ ResetMapMusic();
+}
+
+void MapMusicMain(void)
+{
+ switch (sMapMusicState)
+ {
+ case 0:
+ break;
+ case 1:
+ sMapMusicState = 2;
+ PlayBGM(sCurrentMapMusic);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ break;
+ case 5:
+ if (IsBGMStopped())
+ {
+ sNextMapMusic = 0;
+ sMapMusicState = 0;
+ }
+ break;
+ case 6:
+ if (IsBGMStopped() && IsFanfareTaskInactive())
+ {
+ sCurrentMapMusic = sNextMapMusic;
+ sNextMapMusic = 0;
+ sMapMusicState = 2;
+ PlayBGM(sCurrentMapMusic);
+ }
+ break;
+ case 7:
+ if (IsBGMStopped() && IsFanfareTaskInactive())
+ {
+ FadeInNewBGM(sNextMapMusic, sMapMusicFadeInSpeed);
+ sCurrentMapMusic = sNextMapMusic;
+ sNextMapMusic = 0;
+ sMapMusicState = 2;
+ sMapMusicFadeInSpeed = 0;
+ }
+ break;
+ }
+}
+
+void ResetMapMusic(void)
+{
+ sCurrentMapMusic = 0;
+ sNextMapMusic = 0;
+ sMapMusicState = 0;
+ sMapMusicFadeInSpeed = 0;
+}
+
+u16 GetCurrentMapMusic(void)
+{
+ return sCurrentMapMusic;
+}
+
+void PlayNewMapMusic(u16 songNum)
+{
+ sCurrentMapMusic = songNum;
+ sNextMapMusic = 0;
+ sMapMusicState = 1;
+}
+
+void StopMapMusic(void)
+{
+ sCurrentMapMusic = 0;
+ sNextMapMusic = 0;
+ sMapMusicState = 1;
+}
+
+void FadeOutMapMusic(u8 speed)
+{
+ if (IsNotWaitingForBGMStop())
+ FadeOutBGM(speed);
+ sCurrentMapMusic = 0;
+ sNextMapMusic = 0;
+ sMapMusicState = 5;
+}
+
+void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed)
+{
+ FadeOutMapMusic(speed);
+ sCurrentMapMusic = 0;
+ sNextMapMusic = songNum;
+ sMapMusicState = 6;
+}
+
+void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed)
+{
+ FadeOutMapMusic(fadeOutSpeed);
+ sCurrentMapMusic = 0;
+ sNextMapMusic = songNum;
+ sMapMusicState = 7;
+ sMapMusicFadeInSpeed = fadeInSpeed;
+}
+
+void FadeInNewMapMusic(u16 songNum, u8 speed)
+{
+ FadeInNewBGM(songNum, speed);
+ sCurrentMapMusic = songNum;
+ sNextMapMusic = 0;
+ sMapMusicState = 2;
+ sMapMusicFadeInSpeed = 0;
+}
+
+bool8 IsNotWaitingForBGMStop(void)
+{
+ if (sMapMusicState == 6)
+ return FALSE;
+ if (sMapMusicState == 5)
+ return FALSE;
+ if (sMapMusicState == 7)
+ return FALSE;
+ return TRUE;
+}
+
+void PlayFanfareByFanfareNum(u8 fanfareNum)
+{
+ u16 songNum;
+
+ if(gUnknown_203ADFA == 2)
+ {
+ sFanfareCounter = 0xFF;
+ }
+ else
+ {
+ m4aMPlayStop(&gMPlayInfo_BGM);
+ songNum = sFanfares[fanfareNum].songNum;
+ sFanfareCounter = sFanfares[fanfareNum].duration;
+ m4aSongNumStart(songNum);
+ }
+}
+
+bool8 WaitFanfare(bool8 stop)
+{
+ if (sFanfareCounter)
+ {
+ sFanfareCounter--;
+ return FALSE;
+ }
+ else
+ {
+ if (!stop)
+ m4aMPlayContinue(&gMPlayInfo_BGM);
+ else
+ m4aSongNumStart(MUS_DUMMY);
+
+ return TRUE;
+ }
+}
+
+void StopFanfareByFanfareNum(u8 fanfareNum)
+{
+ m4aSongNumStop(sFanfares[fanfareNum].songNum);
+}
+
+void PlayFanfare(u16 songNum)
+{
+ s32 i;
+ for (i = 0; (u32)i < 14; i++)
+ {
+ if (sFanfares[i].songNum == songNum)
+ {
+ PlayFanfareByFanfareNum(i);
+ CreateFanfareTask();
+ return;
+ }
+ }
+
+ PlayFanfareByFanfareNum(0);
+ CreateFanfareTask();
+}
+
+bool8 IsFanfareTaskInactive(void)
+{
+ if (FuncIsActiveTask(Task_Fanfare) == TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+static void Task_Fanfare(u8 taskId)
+{
+ if (sFanfareCounter)
+ {
+ sFanfareCounter--;
+ }
+ else
+ {
+ m4aMPlayContinue(&gMPlayInfo_BGM);
+ DestroyTask(taskId);
+ }
+}
+
+static void CreateFanfareTask(void)
+{
+ if (FuncIsActiveTask(Task_Fanfare) != TRUE)
+ CreateTask(Task_Fanfare, 80);
+}
+
+void FadeInNewBGM(u16 songNum, u8 speed)
+{
+ if (gDisableMusic)
+ songNum = 0;
+ if (songNum == 0xFFFF)
+ songNum = 0;
+ m4aSongNumStart(songNum);
+ m4aMPlayImmInit(&gMPlayInfo_BGM);
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0);
+ m4aSongNumStop(songNum);
+ m4aMPlayFadeIn(&gMPlayInfo_BGM, speed);
+}
+
+void FadeOutBGMTemporarily(u8 speed)
+{
+ m4aMPlayFadeOutTemporarily(&gMPlayInfo_BGM, speed);
+}
+
+bool8 IsBGMPausedOrStopped(void)
+{
+ if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE)
+ return TRUE;
+ if (!(gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_TRACK))
+ return TRUE;
+ return FALSE;
+}
+
+void FadeInBGM(u8 speed)
+{
+ m4aMPlayFadeIn(&gMPlayInfo_BGM, speed);
+}
+
+void FadeOutBGM(u8 speed)
+{
+ m4aMPlayFadeOut(&gMPlayInfo_BGM, speed);
+}
+
+bool8 IsBGMStopped(void)
+{
+ if (!(gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_TRACK))
+ return TRUE;
+ return FALSE;
+}
+
+void PlayCry1(u16 species, s8 pan)
+{
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 85);
+ PlayCryInternal(species, pan, CRY_VOLUME, 10, 0);
+ gPokemonCryBGMDuckingCounter = 2;
+ RestoreBGMVolumeAfterPokemonCry();
+}
+
+void PlayCry2(u16 species, s8 pan, s8 volume, u8 priority)
+{
+ PlayCryInternal(species, pan, volume, priority, 0);
+}
+
+void PlayCry3(u16 species, s8 pan, u8 mode)
+{
+ if (mode == 1)
+ {
+ PlayCryInternal(species, pan, CRY_VOLUME, 10, 1);
+ }
+ else
+ {
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 85);
+ PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ gPokemonCryBGMDuckingCounter = 2;
+ RestoreBGMVolumeAfterPokemonCry();
+ }
+}
+
+void PlayCry4(u16 species, s8 pan, u8 mode)
+{
+ if (mode == 1)
+ {
+ PlayCryInternal(species, pan, CRY_VOLUME, 10, 1);
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 85);
+ PlayCryInternal(species, pan, CRY_VOLUME, 10, mode);
+ }
+}
+
+// PlayCry5 and 6 are not in FR/LG.
+
+void PlayCry7(u16 species, u8 mode) // exclusive to FR/LG
+{
+ if((u8)(gUnknown_203ADFA - 2) >= 2)
+ {
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 85);
+ PlayCryInternal(species, 0, CRY_VOLUME, 10, mode);
+ }
+ gPokemonCryBGMDuckingCounter = 2;
+ RestoreBGMVolumeAfterPokemonCry();
+}
+
+void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode)
+{
+ bool32 v0;
+ u32 release;
+ u32 length;
+ u32 pitch;
+ u32 chorus;
+ u32 index;
+ u8 table;
+
+ species--;
+ length = 140;
+ v0 = FALSE;
+ release = 0;
+ pitch = 15360;
+ chorus = 0;
+
+ switch (mode)
+ {
+ case 0:
+ break;
+ case 1:
+ length = 20;
+ release = 225;
+ break;
+ case 2:
+ release = 225;
+ pitch = 15600;
+ chorus = 20;
+ volume = 90;
+ break;
+ case 3:
+ length = 50;
+ release = 200;
+ pitch = 15800;
+ chorus = 20;
+ volume = 90;
+ break;
+ case 4:
+ length = 25;
+ v0 = TRUE;
+ release = 100;
+ pitch = 15600;
+ chorus = 192;
+ volume = 90;
+ break;
+ case 5:
+ release = 200;
+ pitch = 14440;
+ break;
+ case 6: // _08072044
+ release = 220;
+ pitch = 15555;
+ chorus = 192;
+ volume = 90; // FR/LG changed this from 70 to 90
+ break;
+ case 7:
+ length = 10;
+ release = 100;
+ pitch = 14848;
+ break;
+ case 8:
+ length = 60;
+ release = 225;
+ pitch = 15616;
+ break;
+ case 9:
+ length = 15;
+ v0 = TRUE;
+ release = 125;
+ pitch = 15200;
+ break;
+ case 10:
+ length = 100;
+ release = 225;
+ pitch = 15200;
+ break;
+ case 12:
+ length = 20;
+ release = 225;
+ case 11:
+ pitch = 15000;
+ break;
+ }
+
+ SetPokemonCryVolume(volume);
+ SetPokemonCryPanpot(pan);
+ SetPokemonCryPitch(pitch);
+ SetPokemonCryLength(length);
+ SetPokemonCryProgress(0);
+ SetPokemonCryRelease(release);
+ SetPokemonCryChorus(chorus);
+ SetPokemonCryPriority(priority);
+
+ // This is a fancy way to get a cry of a pokemon.
+ // It creates 4 sets of 128 mini cry tables.
+ // If you wish to expand pokemon, you need to
+ // append new cases to the switch.
+ species = SpeciesToCryId(species);
+ index = species & 0x7F;
+ table = species / 128;
+
+ switch (table)
+ {
+ case 0:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &gCryTable2[(128 * 0) + index] : &gCryTable[(128 * 0) + index]);
+ break;
+ case 1:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &gCryTable2[(128 * 1) + index] : &gCryTable[(128 * 1) + index]);
+ break;
+ case 2:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &gCryTable2[(128 * 2) + index] : &gCryTable[(128 * 2) + index]);
+ break;
+ case 3:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &gCryTable2[(128 * 3) + index] : &gCryTable[(128 * 3) + index]);
+ break;
+ }
+}
+
+bool8 IsCryFinished(void)
+{
+ if (FuncIsActiveTask(Task_DuckBGMForPokemonCry) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ClearPokemonCrySongs();
+ return TRUE;
+ }
+}
+
+void StopCryAndClearCrySongs(void)
+{
+ m4aMPlayStop(gMPlay_PokemonCry);
+ ClearPokemonCrySongs();
+}
+
+void StopCry(void)
+{
+ m4aMPlayStop(gMPlay_PokemonCry);
+}
+
+bool8 IsCryPlayingOrClearCrySongs(void)
+{
+ if (IsPokemonCryPlaying(gMPlay_PokemonCry))
+ {
+ return TRUE;
+ }
+ else
+ {
+ ClearPokemonCrySongs();
+ return FALSE;
+ }
+}
+
+bool8 IsCryPlaying(void)
+{
+ if (IsPokemonCryPlaying(gMPlay_PokemonCry))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void Task_DuckBGMForPokemonCry(u8 taskId)
+{
+ if (gPokemonCryBGMDuckingCounter)
+ {
+ gPokemonCryBGMDuckingCounter--;
+ return;
+ }
+
+ if (!IsPokemonCryPlaying(gMPlay_PokemonCry))
+ {
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
+ DestroyTask(taskId);
+ }
+}
+
+static void RestoreBGMVolumeAfterPokemonCry(void)
+{
+ if (FuncIsActiveTask(Task_DuckBGMForPokemonCry) != TRUE)
+ CreateTask(Task_DuckBGMForPokemonCry, 80);
+}
+
+void PlayBGM(u16 songNum)
+{
+ if (gDisableMusic)
+ songNum = 0;
+ if (songNum == 0xFFFF)
+ songNum = 0;
+ m4aSongNumStart(songNum);
+}
+
+void PlaySE(u16 songNum)
+{
+ if(gUnknown_2031DD8 == 0 && gUnknown_203ADFA != 2)
+ m4aSongNumStart(songNum);
+}
+
+void PlaySE12WithPanning(u16 songNum, s8 pan)
+{
+ m4aSongNumStart(songNum);
+ m4aMPlayImmInit(&gMPlayInfo_SE1);
+ m4aMPlayImmInit(&gMPlayInfo_SE2);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, pan);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, pan);
+}
+
+void PlaySE1WithPanning(u16 songNum, s8 pan)
+{
+ m4aSongNumStart(songNum);
+ m4aMPlayImmInit(&gMPlayInfo_SE1);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, pan);
+}
+
+void PlaySE2WithPanning(u16 songNum, s8 pan)
+{
+ m4aSongNumStart(songNum);
+ m4aMPlayImmInit(&gMPlayInfo_SE2);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, pan);
+}
+
+void SE12PanpotControl(s8 pan)
+{
+ m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, pan);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, pan);
+}
+
+bool8 IsSEPlaying(void)
+{
+ if ((gMPlayInfo_SE1.status & MUSICPLAYER_STATUS_PAUSE) && (gMPlayInfo_SE2.status & MUSICPLAYER_STATUS_PAUSE))
+ return FALSE;
+ if (!(gMPlayInfo_SE1.status & MUSICPLAYER_STATUS_TRACK) && !(gMPlayInfo_SE2.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}
+
+bool8 IsBGMPlaying(void)
+{
+ if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE)
+ return FALSE;
+ if (!(gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}
+
+bool8 IsSpecialSEPlaying(void)
+{
+ if (gMPlayInfo_SE3.status & MUSICPLAYER_STATUS_PAUSE)
+ return FALSE;
+ if (!(gMPlayInfo_SE3.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}
+
+void sub_8072474(u16 volume)
+{
+ gUnknown_203F174 = 1;
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, volume);
+}
+
+void sub_807249C(void)
+{
+ gUnknown_203F174 = 0;
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
+}
diff --git a/src/text.c b/src/text.c
index 76c6dba63..7832d86f3 100644
--- a/src/text.c
+++ b/src/text.c
@@ -680,17 +680,17 @@ _08005A84:\n\
bl FillWindowPixelBuffer\n\
b _0800589E\n\
_08005A96:\n\
- ldr r0, _08005AA0 @ =gMPlay_BGM\n\
+ ldr r0, _08005AA0 @ =gMPlayInfo_BGM\n\
bl m4aMPlayStop\n\
b _0800589E\n\
.align 2, 0\n\
-_08005AA0: .4byte gMPlay_BGM\n\
+_08005AA0: .4byte gMPlayInfo_BGM\n\
_08005AA4:\n\
- ldr r0, _08005AAC @ =gMPlay_BGM\n\
+ ldr r0, _08005AAC @ =gMPlayInfo_BGM\n\
bl m4aMPlayContinue\n\
b _0800589E\n\
.align 2, 0\n\
-_08005AAC: .4byte gMPlay_BGM\n\
+_08005AAC: .4byte gMPlayInfo_BGM\n\
_08005AB0:\n\
ldr r0, [r6]\n\
ldrb r4, [r0]\n\
diff --git a/sym_bss.txt b/sym_bss.txt
index ae92068d5..5abd54a10 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -129,21 +129,9 @@ gUnknown_3000FB8: @ 3000FB8
gUnknown_3000FBC: @ 3000FBC
.space 0x4
-gUnknown_3000FC0: @ 3000FC0
- .space 0x2
-
-gUnknown_3000FC2: @ 3000FC2
- .space 0x2
-
-gUnknown_3000FC4: @ 3000FC4
- .space 0x1
-
-gUnknown_3000FC5: @ 3000FC5
- .space 0x1
-
-gUnknown_3000FC6: @ 3000FC6
- .space 0x2
+ .include "src/sound.o"
+ .align 2
gUnknown_3000FC8: @ 3000FC8
.space 0x20
diff --git a/sym_common.txt b/sym_common.txt
index 37c344e35..db9a63d4f 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -195,9 +195,7 @@ gUnknown_3005078: @ 3005078
gUnknown_300507C: @ 300507C
.space 0x4
-gUnknown_3005080: @ 3005080
- .space 0x10
-
+ .include "sound.o"
.include "task.o"
@ what is this?
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 57d3f4876..3864a27a7 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -815,12 +815,9 @@ gUnknown_2037AC8: @ 2037AC8
gUnknown_2037ACC: @ 2037ACC
.space 0x400
-gUnknown_2037ECC: @ 2037ECC
- .space 0x4
-
-gUnknown_2037ED0: @ 2037ED0
- .space 0x4
+ .include "src/sound.o"
+ .align 2
gUnknown_2037ED4: @ 2037ED4
.space 0x4