diff options
-rw-r--r-- | asm/rom_8074BAC.s | 1395 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/sound.c | 578 |
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; +} |