summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/rom_8074BAC.s1395
-rw-r--r--ld_script.txt1
-rw-r--r--src/sound.c578
3 files changed, 579 insertions, 1395 deletions
diff --git a/asm/rom_8074BAC.s b/asm/rom_8074BAC.s
index 0ddb5b7e1..bfad6a2fc 100644
--- a/asm/rom_8074BAC.s
+++ b/asm/rom_8074BAC.s
@@ -6,1401 +6,6 @@
.text
- thumb_func_start sound_sources_off
-sound_sources_off: @ 8074BAC
- push {lr}
- ldr r1, _08074BBC
- movs r0, 0
- strb r0, [r1]
- bl map_music_set_to_zero
- pop {r0}
- bx r0
- .align 2, 0
-_08074BBC: .4byte gUnknown_03004AEC
- thumb_func_end sound_sources_off
-
- thumb_func_start sound_something
-sound_something: @ 8074BC0
- push {r4,r5,lr}
- ldr r0, _08074BD8
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0x7
- bhi _08074CA2
- lsls r0, r1, 2
- ldr r1, _08074BDC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08074BD8: .4byte gUnknown_030006D8
-_08074BDC: .4byte _08074BE0
- .align 2, 0
-_08074BE0:
- .4byte _08074CA2
- .4byte _08074C00
- .4byte _08074CA2
- .4byte _08074CA2
- .4byte _08074CA2
- .4byte _08074C14
- .4byte _08074C34
- .4byte _08074C70
-_08074C00:
- movs r0, 0x2
- strb r0, [r2]
- ldr r0, _08074C10
- ldrh r0, [r0]
- bl sub_8075474
- b _08074CA2
- .align 2, 0
-_08074C10: .4byte gUnknown_030006D4
-_08074C14:
- bl sub_8075028
- lsls r0, 24
- cmp r0, 0
- beq _08074CA2
- ldr r0, _08074C2C
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08074C30
- strb r1, [r0]
- b _08074CA2
- .align 2, 0
-_08074C2C: .4byte gUnknown_030006D6
-_08074C30: .4byte gUnknown_030006D8
-_08074C34:
- bl sub_8075028
- lsls r0, 24
- cmp r0, 0
- beq _08074CA2
- bl task_is_not_running_overworld_fanfare
- lsls r0, 24
- cmp r0, 0
- beq _08074CA2
- ldr r2, _08074C64
- ldr r1, _08074C68
- ldrh r0, [r1]
- strh r0, [r2]
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08074C6C
- movs r0, 0x2
- strb r0, [r1]
- ldrh r0, [r2]
- bl sub_8075474
- b _08074CA2
- .align 2, 0
-_08074C64: .4byte gUnknown_030006D4
-_08074C68: .4byte gUnknown_030006D6
-_08074C6C: .4byte gUnknown_030006D8
-_08074C70:
- bl sub_8075028
- lsls r0, 24
- cmp r0, 0
- beq _08074CA2
- bl task_is_not_running_overworld_fanfare
- lsls r0, 24
- cmp r0, 0
- beq _08074CA2
- ldr r4, _08074CA8
- ldrh r0, [r4]
- ldr r5, _08074CAC
- ldrb r1, [r5]
- bl sub_8074F6C
- ldr r1, _08074CB0
- ldrh r0, [r4]
- strh r0, [r1]
- movs r2, 0
- strh r2, [r4]
- ldr r1, _08074CB4
- movs r0, 0x2
- strb r0, [r1]
- strb r2, [r5]
-_08074CA2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074CA8: .4byte gUnknown_030006D6
-_08074CAC: .4byte gUnknown_030006D9
-_08074CB0: .4byte gUnknown_030006D4
-_08074CB4: .4byte gUnknown_030006D8
- thumb_func_end sound_something
-
- thumb_func_start map_music_set_to_zero
-map_music_set_to_zero: @ 8074CB8
- ldr r0, _08074CCC
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08074CD0
- strh r1, [r0]
- ldr r0, _08074CD4
- strb r1, [r0]
- ldr r0, _08074CD8
- strb r1, [r0]
- bx lr
- .align 2, 0
-_08074CCC: .4byte gUnknown_030006D4
-_08074CD0: .4byte gUnknown_030006D6
-_08074CD4: .4byte gUnknown_030006D8
-_08074CD8: .4byte gUnknown_030006D9
- thumb_func_end map_music_set_to_zero
-
- thumb_func_start current_map_music_get
-current_map_music_get: @ 8074CDC
- ldr r0, _08074CE4
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_08074CE4: .4byte gUnknown_030006D4
- thumb_func_end current_map_music_get
-
- thumb_func_start current_map_music_set
-current_map_music_set: @ 8074CE8
- ldr r1, _08074CFC
- strh r0, [r1]
- ldr r1, _08074D00
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08074D04
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08074CFC: .4byte gUnknown_030006D4
-_08074D00: .4byte gUnknown_030006D6
-_08074D04: .4byte gUnknown_030006D8
- thumb_func_end current_map_music_set
-
- thumb_func_start sub_8074D08
-sub_8074D08: @ 8074D08
- ldr r0, _08074D1C
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08074D20
- strh r1, [r0]
- ldr r1, _08074D24
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08074D1C: .4byte gUnknown_030006D4
-_08074D20: .4byte gUnknown_030006D6
-_08074D24: .4byte gUnknown_030006D8
- thumb_func_end sub_8074D08
-
- thumb_func_start sub_8074D28
-sub_8074D28: @ 8074D28
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8074E14
- lsls r0, 24
- cmp r0, 0
- beq _08074D3E
- adds r0, r4, 0
- bl play_sound_effect
-_08074D3E:
- ldr r0, _08074D54
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08074D58
- strh r1, [r0]
- ldr r1, _08074D5C
- movs r0, 0x5
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074D54: .4byte gUnknown_030006D4
-_08074D58: .4byte gUnknown_030006D6
-_08074D5C: .4byte gUnknown_030006D8
- thumb_func_end sub_8074D28
-
- thumb_func_start sub_8074D60
-sub_8074D60: @ 8074D60
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- bl sub_8074D28
- ldr r1, _08074D88
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08074D8C
- strh r4, [r0]
- ldr r1, _08074D90
- movs r0, 0x6
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074D88: .4byte gUnknown_030006D4
-_08074D8C: .4byte gUnknown_030006D6
-_08074D90: .4byte gUnknown_030006D8
- thumb_func_end sub_8074D60
-
- thumb_func_start sub_8074D94
-sub_8074D94: @ 8074D94
- 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 sub_8074D28
- ldr r1, _08074DC8
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08074DCC
- strh r4, [r0]
- ldr r1, _08074DD0
- movs r0, 0x7
- strb r0, [r1]
- ldr r0, _08074DD4
- strb r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074DC8: .4byte gUnknown_030006D4
-_08074DCC: .4byte gUnknown_030006D6
-_08074DD0: .4byte gUnknown_030006D8
-_08074DD4: .4byte gUnknown_030006D9
- thumb_func_end sub_8074D94
-
- thumb_func_start unref_sub_8074DD8
-unref_sub_8074DD8: @ 8074DD8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8074F6C
- ldr r0, _08074E04
- strh r4, [r0]
- ldr r0, _08074E08
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08074E0C
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, _08074E10
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074E04: .4byte gUnknown_030006D4
-_08074E08: .4byte gUnknown_030006D6
-_08074E0C: .4byte gUnknown_030006D8
-_08074E10: .4byte gUnknown_030006D9
- thumb_func_end unref_sub_8074DD8
-
- thumb_func_start sub_8074E14
-sub_8074E14: @ 8074E14
- push {lr}
- ldr r0, _08074E2C
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _08074E30
- cmp r0, 0x5
- beq _08074E30
- cmp r0, 0x7
- beq _08074E30
- movs r0, 0x1
- b _08074E32
- .align 2, 0
-_08074E2C: .4byte gUnknown_030006D8
-_08074E30:
- movs r0, 0
-_08074E32:
- pop {r1}
- bx r1
- thumb_func_end sub_8074E14
-
- thumb_func_start pause_music_for_sound_maybe
-pause_music_for_sound_maybe: @ 8074E38
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08074E60
- bl m4aMPlayStop
- ldr r0, _08074E64
- lsls r4, 2
- adds r4, r0
- ldrh r0, [r4]
- ldr r2, _08074E68
- ldrh r1, [r4, 0x2]
- strh r1, [r2]
- bl m4aSongNumStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074E60: .4byte gUnknown_03007380
-_08074E64: .4byte gUnknown_0837DEF4
-_08074E68: .4byte gUnknown_030006DA
- thumb_func_end pause_music_for_sound_maybe
-
- thumb_func_start ducking_tick
-ducking_tick: @ 8074E6C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _08074E84
- ldrh r0, [r2]
- cmp r0, 0
- beq _08074E88
- subs r0, 0x1
- strh r0, [r2]
- movs r0, 0
- b _08074EA0
- .align 2, 0
-_08074E84: .4byte gUnknown_030006DA
-_08074E88:
- cmp r1, 0
- bne _08074E98
- ldr r0, _08074E94
- bl m4aMPlayContinue
- b _08074E9E
- .align 2, 0
-_08074E94: .4byte gUnknown_03007380
-_08074E98:
- movs r0, 0
- bl m4aSongNumStart
-_08074E9E:
- movs r0, 0x1
-_08074EA0:
- pop {r1}
- bx r1
- thumb_func_end ducking_tick
-
- thumb_func_start unref_sub_8074EA4
-unref_sub_8074EA4: @ 8074EA4
- push {lr}
- lsls r0, 24
- ldr r1, _08074EB8
- lsrs r0, 22
- adds r0, r1
- ldrh r0, [r0]
- bl m4aSongNumStop
- pop {r0}
- bx r0
- .align 2, 0
-_08074EB8: .4byte gUnknown_0837DEF4
- thumb_func_end unref_sub_8074EA4
-
- thumb_func_start fanfare_play
-fanfare_play: @ 8074EBC
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0
- ldr r2, _08074EDC
-_08074EC6:
- ldrh r0, [r2]
- cmp r0, r3
- bne _08074EE0
- lsls r0, r1, 24
- lsrs r0, 24
- bl pause_music_for_sound_maybe
- bl task_add_50_overworld_fanfare_if_not_running
- b _08074EF2
- .align 2, 0
-_08074EDC: .4byte gUnknown_0837DEF4
-_08074EE0:
- adds r2, 0x4
- adds r1, 0x1
- cmp r1, 0xB
- bls _08074EC6
- movs r0, 0
- bl pause_music_for_sound_maybe
- bl task_add_50_overworld_fanfare_if_not_running
-_08074EF2:
- pop {r0}
- bx r0
- thumb_func_end fanfare_play
-
- thumb_func_start task_is_not_running_overworld_fanfare
-task_is_not_running_overworld_fanfare: @ 8074EF8
- push {lr}
- ldr r0, _08074F0C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08074F10
- movs r0, 0x1
- b _08074F12
- .align 2, 0
-_08074F0C: .4byte task50_overworld_fanfare
-_08074F10:
- movs r0, 0
-_08074F12:
- pop {r1}
- bx r1
- thumb_func_end task_is_not_running_overworld_fanfare
-
- thumb_func_start task50_overworld_fanfare
-task50_overworld_fanfare: @ 8074F18
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08074F2C
- ldrh r0, [r1]
- cmp r0, 0
- beq _08074F30
- subs r0, 0x1
- strh r0, [r1]
- b _08074F3C
- .align 2, 0
-_08074F2C: .4byte gUnknown_030006DA
-_08074F30:
- ldr r0, _08074F44
- bl m4aMPlayContinue
- adds r0, r4, 0
- bl DestroyTask
-_08074F3C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074F44: .4byte gUnknown_03007380
- thumb_func_end task50_overworld_fanfare
-
- thumb_func_start task_add_50_overworld_fanfare_if_not_running
-task_add_50_overworld_fanfare_if_not_running: @ 8074F48
- push {r4,lr}
- ldr r4, _08074F68
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08074F62
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_08074F62:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074F68: .4byte task50_overworld_fanfare
- thumb_func_end task_add_50_overworld_fanfare_if_not_running
-
- thumb_func_start sub_8074F6C
-sub_8074F6C: @ 8074F6C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, _08074FAC
- ldrb r0, [r0]
- cmp r0, 0
- beq _08074F80
- movs r5, 0
-_08074F80:
- adds r0, r5, 0
- bl m4aSongNumStart
- ldr r4, _08074FB0
- adds r0, r4, 0
- bl m4aMPlayImmInit
- ldr r1, _08074FB4
- adds r0, r4, 0
- movs r2, 0
- bl m4aMPlayVolumeControl
- adds r0, r5, 0
- bl m4aSongNumStop
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_81DE0F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08074FAC: .4byte gUnknown_03004AEC
-_08074FB0: .4byte gUnknown_03007380
-_08074FB4: .4byte 0x0000ffff
- thumb_func_end sub_8074F6C
-
- thumb_func_start sub_8074FB8
-sub_8074FB8: @ 8074FB8
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08074FCC
- bl sub_81DE0D0
- pop {r0}
- bx r0
- .align 2, 0
-_08074FCC: .4byte gUnknown_03007380
- thumb_func_end sub_8074FB8
-
- thumb_func_start sub_8074FD0
-sub_8074FD0: @ 8074FD0
- push {lr}
- ldr r0, _08074FE8
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _08074FF0
- ldr r0, _08074FEC
- ands r1, r0
- cmp r1, 0
- beq _08074FF0
- movs r0, 0
- b _08074FF2
- .align 2, 0
-_08074FE8: .4byte gUnknown_03007380
-_08074FEC: .4byte 0x0000ffff
-_08074FF0:
- movs r0, 0x1
-_08074FF2:
- pop {r1}
- bx r1
- thumb_func_end sub_8074FD0
-
- thumb_func_start sub_8074FF8
-sub_8074FF8: @ 8074FF8
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0807500C
- bl sub_81DE0F0
- pop {r0}
- bx r0
- .align 2, 0
-_0807500C: .4byte gUnknown_03007380
- thumb_func_end sub_8074FF8
-
- thumb_func_start play_sound_effect
-play_sound_effect: @ 8075010
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08075024
- bl m4aMPlayFadeOut
- pop {r0}
- bx r0
- .align 2, 0
-_08075024: .4byte gUnknown_03007380
- thumb_func_end play_sound_effect
-
- thumb_func_start sub_8075028
-sub_8075028: @ 8075028
- push {lr}
- ldr r0, _08075038
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- beq _0807503C
- movs r0, 0
- b _0807503E
- .align 2, 0
-_08075038: .4byte gUnknown_03007380
-_0807503C:
- movs r0, 0x1
-_0807503E:
- pop {r1}
- bx r1
- thumb_func_end sub_8075028
-
- thumb_func_start cry_related
-cry_related: @ 8075044
- 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, _08075084
- ldr r1, _08075088
- 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, 0x7D
- movs r3, 0xA
- bl sub_80751C0
- ldr r1, _0807508C
- movs r0, 0x2
- strb r0, [r1]
- bl sub_8075450
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08075084: .4byte gUnknown_03007380
-_08075088: .4byte 0x0000ffff
-_0807508C: .4byte gUnknown_0202F7A0
- thumb_func_end cry_related
-
- thumb_func_start sub_8075090
-sub_8075090: @ 8075090
- 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_80751C0
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075090
-
- thumb_func_start sub_80750B4
-sub_80750B4: @ 80750B4
- 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 _080750DA
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl sub_80751C0
- b _080750FE
-_080750DA:
- ldr r0, _08075108
- ldr r1, _0807510C
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl sub_80751C0
- ldr r1, _08075110
- movs r0, 0x2
- strb r0, [r1]
- bl sub_8075450
-_080750FE:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08075108: .4byte gUnknown_03007380
-_0807510C: .4byte 0x0000ffff
-_08075110: .4byte gUnknown_0202F7A0
- thumb_func_end sub_80750B4
-
- thumb_func_start sub_8075114
-sub_8075114: @ 8075114
- 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 _0807513E
- lsls r1, 24
- asrs r1, 24
- str r2, [sp]
- movs r2, 0x7D
- movs r3, 0xA
- bl sub_80751C0
- b _08075164
-_0807513E:
- ldr r0, _0807516C
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08075154
- ldr r0, _08075170
- ldr r1, _08075174
- movs r2, 0x55
- bl m4aMPlayVolumeControl
-_08075154:
- lsls r1, r5, 24
- asrs r1, 24
- str r4, [sp]
- adds r0, r6, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl sub_80751C0
-_08075164:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807516C: .4byte gUnknown_020239F8
-_08075170: .4byte gUnknown_03007380
-_08075174: .4byte 0x0000ffff
- thumb_func_end sub_8075114
-
- thumb_func_start sub_8075178
-sub_8075178: @ 8075178
- 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, _080751B4
- ldr r1, _080751B8
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl sub_80751C0
- ldr r1, _080751BC
- movs r0, 0x2
- strb r0, [r1]
- bl sub_8075450
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080751B4: .4byte gUnknown_03007380
-_080751B8: .4byte 0x0000ffff
-_080751BC: .4byte gUnknown_0202F7A0
- thumb_func_end sub_8075178
-
- thumb_func_start sub_80751C0
-sub_80751C0: @ 80751C0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- 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 r4, 24
- ldr r1, _0807520C
- adds r0, r1
- lsrs r0, 16
- mov r8, r0
- movs r0, 0
- mov r9, r0
- movs r6, 0
- movs r7, 0x8C
- movs r5, 0xF0
- lsls r5, 6
- movs r1, 0
- str r1, [sp, 0x4]
- cmp r4, 0x5
- bhi _08075260
- lsls r0, r4, 2
- ldr r1, _08075210
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807520C: .4byte 0xffff0000
-_08075210: .4byte _08075214
- .align 2, 0
-_08075214:
- .4byte _08075260
- .4byte _0807522C
- .4byte _08075232
- .4byte _08075244
- .4byte _08075250
- .4byte _0807525C
-_0807522C:
- movs r7, 0x14
- movs r6, 0xE1
- b _08075260
-_08075232:
- movs r7, 0x1E
- movs r6, 0xE1
- ldr r5, _08075240
- movs r2, 0x14
- str r2, [sp, 0x4]
- movs r2, 0x50
- b _08075260
- .align 2, 0
-_08075240: .4byte 0x00003cf0
-_08075244:
- movs r7, 0x32
- movs r6, 0xC8
- ldr r5, _0807524C
- b _08075260
- .align 2, 0
-_0807524C: .4byte 0x000039d0
-_08075250:
- movs r7, 0x14
- movs r6, 0xDC
- ldr r5, _08075258
- b _08075260
- .align 2, 0
-_08075258: .4byte 0x00003db8
-_0807525C:
- movs r6, 0xC8
- ldr r5, _080752B8
-_08075260:
- adds r0, r2, 0
- bl sub_81DF50C
- mov r1, r10
- lsls r0, r1, 24
- asrs r0, 24
- bl sub_81DF520
- adds r0, r5, 0
- bl sub_81DF538
- adds r0, r7, 0
- bl sub_81DF570
- movs r0, 0
- bl sub_81DF588
- adds r0, r6, 0
- bl sub_81DF57C
- ldr r0, [sp, 0x4]
- bl sub_81DF5AC
- ldr r0, [sp]
- bl sub_81DF618
- mov r0, r8
- bl speciesid_conv
- mov r8, r0
- movs r1, 0x7F
- mov r2, r8
- ands r1, r2
- lsrs r0, r2, 7
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- cmp r0, 0x1
- beq _080752EC
- cmp r0, 0x1
- bgt _080752BC
- cmp r0, 0
- beq _080752C6
- b _0807535A
- .align 2, 0
-_080752B8: .4byte 0x000038a4
-_080752BC:
- cmp r2, 0x2
- beq _08075310
- cmp r2, 0x3
- beq _08075334
- b _0807535A
-_080752C6:
- mov r0, r9
- cmp r0, 0
- beq _080752DC
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080752D8
- b _08075350
- .align 2, 0
-_080752D8: .4byte voicegroup_84537C0
-_080752DC:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080752E8
- b _08075350
- .align 2, 0
-_080752E8: .4byte voicegroup_8452590
-_080752EC:
- mov r2, r9
- cmp r2, 0
- beq _08075300
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _080752FC
- b _08075350
- .align 2, 0
-_080752FC: .4byte voicegroup_8453DC0
-_08075300:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0807530C
- b _08075350
- .align 2, 0
-_0807530C: .4byte voicegroup_8452B90
-_08075310:
- mov r0, r9
- cmp r0, 0
- beq _08075324
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08075320
- b _08075350
- .align 2, 0
-_08075320: .4byte voicegroup_84543C0
-_08075324:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08075330
- b _08075350
- .align 2, 0
-_08075330: .4byte voicegroup_8453190
-_08075334:
- mov r2, r9
- cmp r2, 0
- beq _08075348
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08075344
- b _08075350
- .align 2, 0
-_08075344: .4byte voicegroup_84549C0
-_08075348:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0807536C
-_08075350:
- adds r0, r1
- bl sub_81DF43C
- ldr r1, _08075370
- str r0, [r1]
-_0807535A:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807536C: .4byte voicegroup_8453790
-_08075370: .4byte gUnknown_0202F79C
- thumb_func_end sub_80751C0
-
- thumb_func_start sub_8075374
-sub_8075374: @ 8075374
- push {lr}
- ldr r0, _0807538C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08075390
- bl ClearPokemonCrySongs
- movs r0, 0x1
- b _08075392
- .align 2, 0
-_0807538C: .4byte sub_8075408
-_08075390:
- movs r0, 0
-_08075392:
- pop {r1}
- bx r1
- thumb_func_end sub_8075374
-
- thumb_func_start sub_8075398
-sub_8075398: @ 8075398
- push {lr}
- ldr r0, _080753AC
- ldr r0, [r0]
- bl m4aMPlayStop
- bl ClearPokemonCrySongs
- pop {r0}
- bx r0
- .align 2, 0
-_080753AC: .4byte gUnknown_0202F79C
- thumb_func_end sub_8075398
-
- thumb_func_start sub_80753B0
-sub_80753B0: @ 80753B0
- push {lr}
- ldr r0, _080753C0
- ldr r0, [r0]
- bl m4aMPlayStop
- pop {r0}
- bx r0
- .align 2, 0
-_080753C0: .4byte gUnknown_0202F79C
- thumb_func_end sub_80753B0
-
- thumb_func_start sub_80753C4
-sub_80753C4: @ 80753C4
- push {lr}
- ldr r0, _080753DC
- ldr r0, [r0]
- bl sub_81DF594
- cmp r0, 0
- bne _080753E0
- bl ClearPokemonCrySongs
- movs r0, 0
- b _080753E2
- .align 2, 0
-_080753DC: .4byte gUnknown_0202F79C
-_080753E0:
- movs r0, 0x1
-_080753E2:
- pop {r1}
- bx r1
- thumb_func_end sub_80753C4
-
- thumb_func_start sub_80753E8
-sub_80753E8: @ 80753E8
- push {lr}
- ldr r0, _080753FC
- ldr r0, [r0]
- bl sub_81DF594
- cmp r0, 0
- bne _08075400
- movs r0, 0
- b _08075402
- .align 2, 0
-_080753FC: .4byte gUnknown_0202F79C
-_08075400:
- movs r0, 0x1
-_08075402:
- pop {r1}
- bx r1
- thumb_func_end sub_80753E8
-
- thumb_func_start sub_8075408
-sub_8075408: @ 8075408
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0807541C
- ldrb r0, [r1]
- cmp r0, 0
- beq _08075420
- subs r0, 0x1
- strb r0, [r1]
- b _0807543E
- .align 2, 0
-_0807541C: .4byte gUnknown_0202F7A0
-_08075420:
- ldr r0, _08075444
- ldr r0, [r0]
- bl sub_81DF594
- cmp r0, 0
- bne _0807543E
- ldr r0, _08075448
- ldr r1, _0807544C
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- adds r0, r4, 0
- bl DestroyTask
-_0807543E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075444: .4byte gUnknown_0202F79C
-_08075448: .4byte gUnknown_03007380
-_0807544C: .4byte 0x0000ffff
- thumb_func_end sub_8075408
-
- thumb_func_start sub_8075450
-sub_8075450: @ 8075450
- push {r4,lr}
- ldr r4, _08075470
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0807546A
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_0807546A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075470: .4byte sub_8075408
- thumb_func_end sub_8075450
-
- thumb_func_start sub_8075474
-sub_8075474: @ 8075474
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _08075490
- ldrb r0, [r0]
- cmp r0, 0
- beq _08075484
- movs r1, 0
-_08075484:
- adds r0, r1, 0
- bl m4aSongNumStart
- pop {r0}
- bx r0
- .align 2, 0
-_08075490: .4byte gUnknown_03004AEC
- thumb_func_end sub_8075474
-
- thumb_func_start audio_play
-audio_play: @ 8075494
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl m4aSongNumStart
- pop {r0}
- bx r0
- thumb_func_end audio_play
-
- thumb_func_start audio_play_and_stuff
-audio_play_and_stuff: @ 80754A4
- 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, _080754EC
- adds r0, r6, 0
- bl m4aMPlayImmInit
- ldr r0, _080754F0
- mov r8, r0
- bl m4aMPlayImmInit
- ldr r5, _080754F4
- 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
-_080754EC: .4byte gUnknown_030073C0
-_080754F0: .4byte gUnknown_03007400
-_080754F4: .4byte 0x0000ffff
- thumb_func_end audio_play_and_stuff
-
- thumb_func_start sub_80754F8
-sub_80754F8: @ 80754F8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl m4aSongNumStart
- ldr r5, _08075524
- adds r0, r5, 0
- bl m4aMPlayImmInit
- ldr r1, _08075528
- 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
-_08075524: .4byte gUnknown_030073C0
-_08075528: .4byte 0x0000ffff
- thumb_func_end sub_80754F8
-
- thumb_func_start sub_807552C
-sub_807552C: @ 807552C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- bl m4aSongNumStart
- ldr r5, _08075558
- adds r0, r5, 0
- bl m4aMPlayImmInit
- ldr r1, _0807555C
- 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
-_08075558: .4byte gUnknown_03007400
-_0807555C: .4byte 0x0000ffff
- thumb_func_end sub_807552C
-
- thumb_func_start sub_8075560
-sub_8075560: @ 8075560
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _08075584
- ldr r5, _08075588
- lsls r4, 24
- asrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- ldr r0, _0807558C
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08075584: .4byte gUnknown_030073C0
-_08075588: .4byte 0x0000ffff
-_0807558C: .4byte gUnknown_03007400
- thumb_func_end sub_8075560
-
- thumb_func_start mplay_has_finished_maybe
-mplay_has_finished_maybe: @ 8075590
- push {lr}
- ldr r0, _080755C0
- ldr r1, [r0, 0x4]
- movs r2, 0x80
- lsls r2, 24
- adds r3, r0, 0
- cmp r1, 0
- bge _080755AA
- ldr r0, _080755C4
- ldr r0, [r0, 0x4]
- ands r0, r2
- cmp r0, 0
- bne _080755BC
-_080755AA:
- ldr r1, _080755C8
- ldrh r0, [r3, 0x4]
- cmp r0, 0
- bne _080755CC
- ldr r0, _080755C4
- ldr r0, [r0, 0x4]
- ands r0, r1
- cmp r0, 0
- bne _080755CC
-_080755BC:
- movs r0, 0
- b _080755CE
- .align 2, 0
-_080755C0: .4byte gUnknown_030073C0
-_080755C4: .4byte gUnknown_03007400
-_080755C8: .4byte 0x0000ffff
-_080755CC:
- movs r0, 0x1
-_080755CE:
- pop {r1}
- bx r1
- thumb_func_end mplay_has_finished_maybe
-
- thumb_func_start sub_80755D4
-sub_80755D4: @ 80755D4
- push {lr}
- ldr r0, _080755EC
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _080755F4
- ldr r0, _080755F0
- ands r1, r0
- cmp r1, 0
- beq _080755F4
- movs r0, 0x1
- b _080755F6
- .align 2, 0
-_080755EC: .4byte gUnknown_03007380
-_080755F0: .4byte 0x0000ffff
-_080755F4:
- movs r0, 0
-_080755F6:
- pop {r1}
- bx r1
- thumb_func_end sub_80755D4
-
- thumb_func_start sub_80755FC
-sub_80755FC: @ 80755FC
- push {lr}
- ldr r0, _08075614
- ldr r1, [r0, 0x4]
- cmp r1, 0
- blt _0807561C
- ldr r0, _08075618
- ands r1, r0
- cmp r1, 0
- beq _0807561C
- movs r0, 0x1
- b _0807561E
- .align 2, 0
-_08075614: .4byte gUnknown_03007450
-_08075618: .4byte 0x0000ffff
-_0807561C:
- movs r0, 0
-_0807561E:
- pop {r1}
- bx r1
- thumb_func_end sub_80755FC
-
thumb_func_start sub_8075624
sub_8075624: @ 8075624
push {r4-r7,lr}
diff --git a/ld_script.txt b/ld_script.txt
index a3b5b7f0b..20353ea96 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -67,6 +67,7 @@ SECTIONS {
src/menu.o(.text);
asm/rom_8072DF8.o(.text);
src/palette.o(.text);
+ src/sound.o(.text);
asm/rom_8074BAC.o(.text);
src/task.o(.text);
asm/rom5.o(.text);
diff --git a/src/sound.c b/src/sound.c
new file mode 100644
index 000000000..141902b1f
--- /dev/null
+++ b/src/sound.c
@@ -0,0 +1,578 @@
+#include "global.h"
+#include "gba/m4a_internal.h"
+#include "task.h"
+
+struct Fanfare
+{
+ u16 songNum;
+ u16 duration;
+};
+
+extern u32 speciesid_conv(u32);
+
+void sound_sources_off(void);
+
+void map_music_set_to_zero(void);
+
+extern u16 gUnknown_020239F8;
+extern struct MusicPlayerInfo *gUnknown_0202F79C;
+extern u8 gUnknown_0202F7A0;
+
+extern u16 gUnknown_030006D4;
+extern u16 gUnknown_030006D6;
+extern u8 gUnknown_030006D8;
+extern u8 gUnknown_030006D9;
+extern u16 gUnknown_030006DA;
+
+extern u8 gUnknown_03004AEC;
+extern struct MusicPlayerInfo gUnknown_03007380;
+extern struct MusicPlayerInfo gUnknown_030073C0;
+extern struct MusicPlayerInfo gUnknown_03007400;
+extern struct MusicPlayerInfo gUnknown_03007450;
+
+extern struct Fanfare gUnknown_0837DEF4[];
+
+extern struct ToneData voicegroup_8452590[];
+extern struct ToneData voicegroup_8452B90[];
+extern struct ToneData voicegroup_8453190[];
+extern struct ToneData voicegroup_8453790[];
+
+extern struct ToneData voicegroup_84537C0[];
+extern struct ToneData voicegroup_8453DC0[];
+extern struct ToneData voicegroup_84543C0[];
+extern struct ToneData voicegroup_84549C0[];
+
+u8 sub_8075028(void);
+u8 task_is_not_running_overworld_fanfare(void);
+u8 sub_8074E14(void);
+void sub_8074F6C(u16, u8);
+void task50_overworld_fanfare(u8);
+void task_add_50_overworld_fanfare_if_not_running(void);
+void play_sound_effect(u8);
+void sub_80751C0(u16 species, s8 a2, s8 a3, u8 a4, u8 a5);
+void sub_8075408(u8);
+void sub_8075450(void);
+void sub_8075474(u16);
+
+void sound_sources_off(void)
+{
+ gUnknown_03004AEC = 0;
+ map_music_set_to_zero();
+}
+
+void sound_something(void)
+{
+ switch (gUnknown_030006D8)
+ {
+ case 0:
+ break;
+ case 1:
+ gUnknown_030006D8 = 2;
+ sub_8075474(gUnknown_030006D4);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ break;
+ case 5:
+ if (sub_8075028())
+ {
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 0;
+ }
+ break;
+ case 6:
+ if (sub_8075028() && task_is_not_running_overworld_fanfare())
+ {
+ gUnknown_030006D4 = gUnknown_030006D6;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 2;
+ sub_8075474(gUnknown_030006D4);
+ }
+ break;
+ case 7:
+ if (sub_8075028() && task_is_not_running_overworld_fanfare())
+ {
+ sub_8074F6C(gUnknown_030006D6, gUnknown_030006D9);
+ gUnknown_030006D4 = gUnknown_030006D6;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 2;
+ gUnknown_030006D9 = 0;
+ }
+ break;
+ }
+}
+
+void map_music_set_to_zero(void)
+{
+ gUnknown_030006D4 = 0;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 0;
+ gUnknown_030006D9 = 0;
+}
+
+u16 current_map_music_get(void)
+{
+ return gUnknown_030006D4;
+}
+
+void current_map_music_set(u16 a1)
+{
+ gUnknown_030006D4 = a1;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 1;
+}
+
+void sub_8074D08(void)
+{
+ gUnknown_030006D4 = 0;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 1;
+}
+
+void sub_8074D28(u8 a1)
+{
+ if (sub_8074E14())
+ play_sound_effect(a1);
+ gUnknown_030006D4 = 0;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 5;
+}
+
+void sub_8074D60(u16 a1, u8 a2)
+{
+ sub_8074D28(a2);
+ gUnknown_030006D4 = 0;
+ gUnknown_030006D6 = a1;
+ gUnknown_030006D8 = 6;
+}
+
+void sub_8074D94(u16 a1, u8 a2, u8 a3)
+{
+ sub_8074D28(a2);
+ gUnknown_030006D4 = 0;
+ gUnknown_030006D6 = a1;
+ gUnknown_030006D8 = 7;
+ gUnknown_030006D9 = a3;
+}
+
+void unref_sub_8074DD8(u16 a1, u8 a2)
+{
+ sub_8074F6C(a1, a2);
+ gUnknown_030006D4 = a1;
+ gUnknown_030006D6 = 0;
+ gUnknown_030006D8 = 2;
+ gUnknown_030006D9 = 0;
+}
+
+bool8 sub_8074E14(void)
+{
+ if (gUnknown_030006D8 == 6)
+ return FALSE;
+ if (gUnknown_030006D8 == 5)
+ return FALSE;
+ if (gUnknown_030006D8 == 7)
+ return FALSE;
+ return TRUE;
+}
+
+void pause_music_for_sound_maybe(u8 a1)
+{
+ struct Fanfare *fanfares;
+ struct Fanfare *fanfare;
+ u16 songNum;
+ m4aMPlayStop(&gUnknown_03007380);
+ fanfares = gUnknown_0837DEF4;
+ fanfare = &fanfares[a1];
+ songNum = fanfare->songNum;
+ gUnknown_030006DA = fanfare->duration;
+ m4aSongNumStart(songNum);
+}
+
+bool8 ducking_tick(u8 a1)
+{
+ if (gUnknown_030006DA)
+ {
+ gUnknown_030006DA--;
+ return FALSE;
+ }
+ else
+ {
+ if (!a1)
+ m4aMPlayContinue(&gUnknown_03007380);
+ else
+ m4aSongNumStart(0);
+
+ return TRUE;
+ }
+}
+
+void unref_sub_8074EA4(u8 a1)
+{
+ m4aSongNumStop(gUnknown_0837DEF4[a1].songNum);
+}
+
+void fanfare_play(u16 a1)
+{
+ s32 i;
+ for (i = 0; (u32)i < 12; i++)
+ {
+ struct Fanfare *fanfare = &gUnknown_0837DEF4[i];
+ if (fanfare->songNum == a1)
+ {
+ pause_music_for_sound_maybe(i);
+ task_add_50_overworld_fanfare_if_not_running();
+ return;
+ }
+ }
+
+ pause_music_for_sound_maybe(0);
+ task_add_50_overworld_fanfare_if_not_running();
+}
+
+bool8 task_is_not_running_overworld_fanfare(void)
+{
+ if (FuncIsActiveTask(task50_overworld_fanfare) == TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+void task50_overworld_fanfare(u8 taskId)
+{
+ if (gUnknown_030006DA)
+ {
+ gUnknown_030006DA--;
+ }
+ else
+ {
+ m4aMPlayContinue(&gUnknown_03007380);
+ DestroyTask(taskId);
+ }
+}
+
+void task_add_50_overworld_fanfare_if_not_running(void)
+{
+ if (FuncIsActiveTask(task50_overworld_fanfare) != TRUE)
+ CreateTask(task50_overworld_fanfare, 80);
+}
+
+void sub_8074F6C(u16 a1, u8 a2)
+{
+ if (gUnknown_03004AEC)
+ a1 = 0;
+ m4aSongNumStart(a1);
+ m4aMPlayImmInit(&gUnknown_03007380);
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 0);
+ m4aSongNumStop(a1);
+ sub_81DE0F0(&gUnknown_03007380, a2);
+}
+
+void sub_8074FB8(u8 a1)
+{
+ sub_81DE0D0(&gUnknown_03007380, a1);
+}
+
+bool8 sub_8074FD0(void)
+{
+ if (gUnknown_03007380.status & MUSICPLAYER_STATUS_PAUSE)
+ return TRUE;
+ if (!(gUnknown_03007380.status & MUSICPLAYER_STATUS_TRACK))
+ return TRUE;
+ return FALSE;
+}
+
+void sub_8074FF8(u8 a1)
+{
+ sub_81DE0F0(&gUnknown_03007380, a1);
+}
+
+void play_sound_effect(u8 a1)
+{
+ m4aMPlayFadeOut(&gUnknown_03007380, a1);
+}
+
+bool8 sub_8075028(void)
+{
+ if (!(gUnknown_03007380.status & MUSICPLAYER_STATUS_TRACK))
+ return TRUE;
+ return FALSE;
+}
+
+void cry_related(u16 a1, u8 a2)
+{
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 85);
+ sub_80751C0(a1, a2, 0x7D, 0xA, 0);
+ gUnknown_0202F7A0 = 2;
+ sub_8075450();
+}
+
+void sub_8075090(u16 a1, s8 a2, s8 a3, u8 a4)
+{
+ sub_80751C0(a1, a2, a3, a4, 0);
+}
+
+void sub_80750B4(u16 a1, s8 a2, u8 a3)
+{
+ if (a3 == 1)
+ {
+ sub_80751C0(a1, a2, 0x7D, 0xA, 1);
+ }
+ else
+ {
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 85);
+ sub_80751C0(a1, a2, 0x7D, 0xA, a3);
+ gUnknown_0202F7A0 = 2;
+ sub_8075450();
+ }
+}
+
+void sub_8075114(u16 a1, s8 a2, u8 a3)
+{
+ if (a3 == 1)
+ {
+ sub_80751C0(a1, a2, 0x7D, 0xA, 1);
+ }
+ else
+ {
+ if (!(gUnknown_020239F8 & 0x40))
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 85);
+ sub_80751C0(a1, a2, 0x7D, 0xA, a3);
+ }
+}
+
+void sub_8075178(u16 a1, u8 a2)
+{
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 85);
+ sub_80751C0(a1, 0, 0x7D, 0xA, a2);
+ gUnknown_0202F7A0 = 2;
+ sub_8075450();
+}
+
+#define GET_CRY_PTR(a, b)\
+{\
+ u32 ptr1;\
+ struct MusicPlayerInfo *ptr2;\
+ if (v0)\
+ ptr1 = (u32)&a[index];\
+ else\
+ ptr1 = (u32)&b[index];\
+ ptr2 = sub_81DF43C(ptr1);\
+ gUnknown_0202F79C = ptr2;\
+ break;\
+}
+
+void sub_80751C0(u16 species, s8 a2, s8 a3, u8 a4, u8 a5)
+{
+ u32 cryId;
+ u32 v0;
+ u32 v1;
+ u32 v2;
+ u32 v3;
+ u32 v4;
+ u32 index;
+ u8 table;
+
+ species--;
+
+ cryId = species;
+
+ v0 = 0;
+ v1 = 0;
+ v2 = 140;
+ v3 = 15360;
+ v4 = 0;
+
+ switch (a5)
+ {
+ case 0:
+ break;
+ case 1:
+ v2 = 20;
+ v1 = 225;
+ break;
+ case 2:
+ v2 = 30;
+ v1 = 225;
+ v3 = 15600;
+ v4 = 20;
+ a3 = 80;
+ break;
+ case 3:
+ v2 = 50;
+ v1 = 200;
+ v3 = 14800;
+ break;
+ case 4:
+ v2 = 20;
+ v1 = 220;
+ v3 = 15800;
+ break;
+ case 5:
+ v1 = 200;
+ v3 = 14500;
+ break;
+ }
+
+ sub_81DF50C(a3);
+ sub_81DF520(a2);
+ sub_81DF538(v3);
+ sub_81DF570(v2);
+ sub_81DF588(0);
+ sub_81DF57C(v1);
+ sub_81DF5AC(v4);
+ sub_81DF618(a4);
+
+ asm("");
+ asm("");
+ asm("");
+ asm("");
+ asm("");
+ asm("");
+ asm("");
+
+ cryId = speciesid_conv(cryId);
+ index = 0x7F;
+ asm("" ::: "r0");
+ index &= cryId;
+ table = cryId >> 7;
+
+ switch (table)
+ {
+ case 0: GET_CRY_PTR(voicegroup_84537C0, voicegroup_8452590);
+ case 1: GET_CRY_PTR(voicegroup_8453DC0, voicegroup_8452B90);
+ case 2: GET_CRY_PTR(voicegroup_84543C0, voicegroup_8453190);
+ case 3: GET_CRY_PTR(voicegroup_84549C0, voicegroup_8453790);
+ }
+}
+
+bool8 sub_8075374(void)
+{
+ if (FuncIsActiveTask(sub_8075408) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ClearPokemonCrySongs();
+ return TRUE;
+ }
+}
+
+void sub_8075398(void)
+{
+ m4aMPlayStop(gUnknown_0202F79C);
+ ClearPokemonCrySongs();
+}
+
+void sub_80753B0(void)
+{
+ m4aMPlayStop(gUnknown_0202F79C);
+}
+
+bool8 sub_80753C4(void)
+{
+ if (sub_81DF594(gUnknown_0202F79C))
+ {
+ return TRUE;
+ }
+ else
+ {
+ ClearPokemonCrySongs();
+ return FALSE;
+ }
+}
+
+bool8 sub_80753E8(void)
+{
+ if (sub_81DF594(gUnknown_0202F79C))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8075408(u8 taskId)
+{
+ if (gUnknown_0202F7A0)
+ {
+ gUnknown_0202F7A0--;
+ }
+ else if (!sub_81DF594(gUnknown_0202F79C))
+ {
+ m4aMPlayVolumeControl(&gUnknown_03007380, 0xFFFF, 256);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8075450(void)
+{
+ if (FuncIsActiveTask(sub_8075408) != TRUE)
+ CreateTask(sub_8075408, 80);
+}
+
+void sub_8075474(u16 a1)
+{
+ if (gUnknown_03004AEC)
+ a1 = 0;
+ m4aSongNumStart(a1);
+}
+
+void audio_play(u16 songNum)
+{
+ m4aSongNumStart(songNum);
+}
+
+void audio_play_and_stuff(u16 a1, u8 a2)
+{
+ m4aSongNumStart(a1);
+ m4aMPlayImmInit(&gUnknown_030073C0);
+ m4aMPlayImmInit(&gUnknown_03007400);
+ m4aMPlayPanpotControl(&gUnknown_030073C0, 0xFFFF, a2);
+ m4aMPlayPanpotControl(&gUnknown_03007400, 0xFFFF, a2);
+}
+
+void sub_80754F8(u16 a1, u8 a2)
+{
+ m4aSongNumStart(a1);
+ m4aMPlayImmInit(&gUnknown_030073C0);
+ m4aMPlayPanpotControl(&gUnknown_030073C0, 0xFFFF, a2);
+}
+
+void sub_807552C(u16 a1, u8 a2)
+{
+ m4aSongNumStart(a1);
+ m4aMPlayImmInit(&gUnknown_03007400);
+ m4aMPlayPanpotControl(&gUnknown_03007400, 0xFFFF, a2);
+}
+
+void sub_8075560(u8 a1)
+{
+ m4aMPlayPanpotControl(&gUnknown_030073C0, 0xFFFF, a1);
+ m4aMPlayPanpotControl(&gUnknown_03007400, 0xFFFF, a1);
+}
+
+bool8 mplay_has_finished_maybe(void)
+{
+ if ((gUnknown_030073C0.status & MUSICPLAYER_STATUS_PAUSE) && (gUnknown_03007400.status & MUSICPLAYER_STATUS_PAUSE))
+ return FALSE;
+ if (!(gUnknown_030073C0.status & MUSICPLAYER_STATUS_TRACK) && !(gUnknown_03007400.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}
+
+bool8 sub_80755D4(void)
+{
+ if (gUnknown_03007380.status & MUSICPLAYER_STATUS_PAUSE)
+ return FALSE;
+ if (!(gUnknown_03007380.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}
+
+bool8 sub_80755FC(void)
+{
+ if (gUnknown_03007450.status & MUSICPLAYER_STATUS_PAUSE)
+ return FALSE;
+ if (!(gUnknown_03007450.status & MUSICPLAYER_STATUS_TRACK))
+ return FALSE;
+ return TRUE;
+}