From cdee8272e209ae3847bf8f25622367ed78256602 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 10 Sep 2021 12:13:18 -0400 Subject: [PATCH] Seperated audio function definitons to a header file, and got some cleaner matches on a few other functions in the process due to this --- asm/non_matchings/audio/func_80002224.s | 40 ------- include/PR/libaudio.h | 6 +- lib/src/al/alSeqpGetChlFXMix.c | 2 +- lib/src/mips1/al/seqplayer.c | 11 +- lib/src/mips1/al/unknown_0647A0.c | 28 ++--- lib/src/mips1/al/unknown_064800.c | 22 +--- src/audio.c | 143 +++++------------------- src/audio.h | 111 +++++++++++++++++- 8 files changed, 155 insertions(+), 208 deletions(-) delete mode 100644 asm/non_matchings/audio/func_80002224.s diff --git a/asm/non_matchings/audio/func_80002224.s b/asm/non_matchings/audio/func_80002224.s deleted file mode 100644 index 07cc430d..00000000 --- a/asm/non_matchings/audio/func_80002224.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_80002224 -/* 002E24 80002224 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 002E28 80002228 3C068011 */ lui $a2, %hi(gALHeap) # $a2, 0x8011 -/* 002E2C 8000222C 24C65CE8 */ addiu $a2, %lo(gALHeap) # addiu $a2, $a2, 0x5ce8 -/* 002E30 80002230 AFBF001C */ sw $ra, 0x1c($sp) -/* 002E34 80002234 AFA40048 */ sw $a0, 0x48($sp) -/* 002E38 80002238 AFA5004C */ sw $a1, 0x4c($sp) -/* 002E3C 8000223C AFA40024 */ sw $a0, 0x24($sp) -/* 002E40 80002240 AFA50028 */ sw $a1, 0x28($sp) -/* 002E44 80002244 A3A40034 */ sb $a0, 0x34($sp) -/* 002E48 80002248 24180010 */ li $t8, 16 -/* 002E4C 8000224C 24190080 */ li $t9, 128 -/* 002E50 80002250 A3B8002C */ sb $t8, 0x2c($sp) -/* 002E54 80002254 AFA60030 */ sw $a2, 0x30($sp) -/* 002E58 80002258 AFA00038 */ sw $zero, 0x38($sp) -/* 002E5C 8000225C AFA0003C */ sw $zero, 0x3c($sp) -/* 002E60 80002260 AFA00040 */ sw $zero, 0x40($sp) -/* 002E64 80002264 AFB90010 */ sw $t9, 0x10($sp) -/* 002E68 80002268 00002025 */ move $a0, $zero -/* 002E6C 8000226C 00002825 */ move $a1, $zero -/* 002E70 80002270 0C031DFC */ jal alHeapDBAlloc -/* 002E74 80002274 24070001 */ li $a3, 1 -/* 002E78 80002278 AFA20044 */ sw $v0, 0x44($sp) -/* 002E7C 8000227C 00402025 */ move $a0, $v0 -/* 002E80 80002280 0C0188A4 */ jal alCSPNew -/* 002E84 80002284 27A50024 */ addiu $a1, $sp, 0x24 -/* 002E88 80002288 3C088011 */ lui $t0, %hi(ALBankFile_80115D10) # $t0, 0x8011 -/* 002E8C 8000228C 8D085D10 */ lw $t0, %lo(ALBankFile_80115D10)($t0) -/* 002E90 80002290 8FA40044 */ lw $a0, 0x44($sp) -/* 002E94 80002294 8D050004 */ lw $a1, 4($t0) -/* 002E98 80002298 0C031E98 */ jal alCSPSetBank -/* 002E9C 8000229C 00000000 */ nop -/* 002EA0 800022A0 8FA20044 */ lw $v0, 0x44($sp) -/* 002EA4 800022A4 2409007F */ li $t1, 127 -/* 002EA8 800022A8 A0490036 */ sb $t1, 0x36($v0) -/* 002EAC 800022AC 8FBF001C */ lw $ra, 0x1c($sp) -/* 002EB0 800022B0 27BD0048 */ addiu $sp, $sp, 0x48 -/* 002EB4 800022B4 03E00008 */ jr $ra -/* 002EB8 800022B8 00000000 */ nop - diff --git a/include/PR/libaudio.h b/include/PR/libaudio.h index 82e7080b..1179c933 100644 --- a/include/PR/libaudio.h +++ b/include/PR/libaudio.h @@ -532,9 +532,9 @@ typedef struct { ALVolumeEvent vol; ALSeqpLoopEvent loop; ALSeqpVolEvent spvol; - ALSeqpPriorityEvent sppriority; - ALSeqpSeqEvent spseq; - ALSeqpBankEvent spbank; + ALSeqpPriorityEvent sppriority; + ALSeqpSeqEvent spseq; + ALSeqpBankEvent spbank; ALOscEvent osc; } msg; } ALEvent; diff --git a/lib/src/al/alSeqpGetChlFXMix.c b/lib/src/al/alSeqpGetChlFXMix.c index e5017f3c..6243101b 100644 --- a/lib/src/al/alSeqpGetChlFXMix.c +++ b/lib/src/al/alSeqpGetChlFXMix.c @@ -3,6 +3,6 @@ #include "audio_internal.h" -u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan){ +u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan) { return seqp->chanState[chan].fxmix; } \ No newline at end of file diff --git a/lib/src/mips1/al/seqplayer.c b/lib/src/mips1/al/seqplayer.c index 75905244..189b257b 100644 --- a/lib/src/mips1/al/seqplayer.c +++ b/lib/src/mips1/al/seqplayer.c @@ -305,12 +305,7 @@ void __seqpStopOsc(ALSeqPlayer *seqp, ALVoiceState *vs) } } -/* Unknown Size */ -typedef struct unk8000B010 { - u8 unk00[0x70]; - s8 unk70; -} unk8000B010; - -void func_8000B010(unk8000B010 *arg0, s8 arg1) { - arg0->unk70 = arg1; +void func_8000B010(ALCSPlayer *arg0, s8 arg1) { + //TODO: This doesn't seem to be the write way to do this, but it works for now. + (s8) arg0->initOsc = arg1; } diff --git a/lib/src/mips1/al/unknown_0647A0.c b/lib/src/mips1/al/unknown_0647A0.c index aba14871..0facca36 100644 --- a/lib/src/mips1/al/unknown_0647A0.c +++ b/lib/src/mips1/al/unknown_0647A0.c @@ -5,24 +5,14 @@ #include "macros.h" #include "audio_internal.h" -/* Size: 0x0C bytes */ -typedef struct unk80063BA0 { - s16 unk0; - s16 unk2; - s32 unk4; - u8 unk8; - u8 unk9; - u8 unkA; -} unk80063BA0; +void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta); //unknown_0C9C90 -void func_80063BA0(u32 arg0, u8 arg1, u8 arg2) { - s32 unusedVariable; - unk80063BA0 unknownStruct; - unknownStruct.unk0 = 2; - unknownStruct.unk4 = 0; - unknownStruct.unk8 = arg1 | 0xB0; - unknownStruct.unk9 = 8; - unknownStruct.unkA = arg2; - alEvtqPostEvent(arg0 + 0x48, &unknownStruct, 0); +void func_80063BA0(ALCSPlayer *seqp, u8 arg1, u8 arg2) { + ALEvent evt; + evt.type = 2; + evt.msg.midi.ticks = 0; + evt.msg.midi.status = arg1 | 0xB0; + evt.msg.midi.byte1 = 8; + evt.msg.midi.byte2 = arg2; + alEvtqPostEvent(&seqp->evtq, &evt, 0); } - diff --git a/lib/src/mips1/al/unknown_064800.c b/lib/src/mips1/al/unknown_064800.c index 5c918b41..35223aa9 100644 --- a/lib/src/mips1/al/unknown_064800.c +++ b/lib/src/mips1/al/unknown_064800.c @@ -4,25 +4,7 @@ #include "types.h" #include "macros.h" #include "audio_internal.h" -/* Size: 0x14 bytes */ -typedef struct unk80063C00 { - u32 unk00; - u32 unk04; - u32 unk08; - u32 unk0C; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; -} unk80063C00; -/* Unknown size */ -typedef struct unk80063C00_2 { - u8 unk00[0x60]; - unk80063C00 *unk60; // Array of unk80063C00, unknown number of elements (At most 256). -} unk80063C00_2; - -u8 func_80063C00(unk80063C00_2 *arg0, u8 arg1) { - return arg0->unk60[arg1].unk10; - //return seqp->chanState[chan].unk10??? +u8 func_80063C00(ALCSPlayer *seqp, u8 arg1) { + return ((ALChanState_Custom*)seqp->chanState)[arg1].unk10; } diff --git a/src/audio.c b/src/audio.c index 0c63e8f9..4eba2df4 100644 --- a/src/audio.c +++ b/src/audio.c @@ -7,6 +7,7 @@ #include "types.h" #include "macros.h" #include "asset_sections.h" +#include "asset_loading.h" #include "audio_internal.h" @@ -74,21 +75,7 @@ u32 *D_80115D0C; ALBankFile *ALBankFile_80115D10; ALBankFile *ALBankFile_80115D14; -/* Size: 0x0A bytes */ -typedef struct unk80115D18 { - u8 pad0[6]; - u16 unk6; - u8 pad8[2]; -} unk80115D18; - unk80115D18 *D_80115D18; - -/* Size: 3 bytes */ -typedef struct unk80115D1C { - u8 unk0; - u8 unk1; - u8 unk2; -} unk80115D1C; unk80115D1C *D_80115D1C; s32 D_80115D20; @@ -121,16 +108,10 @@ typedef struct audioMgrConfig_s{ u16 unk10; } audioMgrConfig; -void func_80000968(s32 arg0); -ALCSPlayer *func_80002224(s32, s32); -void func_8000B010(ALCSPlayer*, u8); -void *load_asset_section_from_rom(u32); -void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); - -void audio_init(u32 arg0){ +void audio_init(u32 arg0) { s32 iCnt; ALSynConfig synth_config; - u32 *reg_s2; + s32 *reg_s2; u32 seqfSize; u32 seq_max_len; u32 tmp2; @@ -212,11 +193,7 @@ void audio_init(u32 arg0){ return; } -void set_relative_volume_for_music(u8); -void func_80004A60(u8, u16); - - -void func_80000890(u8 arg0){ +void func_80000890(u8 arg0) { if(!D_80115F79){ D_80115F78 = arg0; if(D_80115F78 == 0){ @@ -230,8 +207,6 @@ void func_80000890(u8 arg0){ } } - - void func_80000968(s32 arg0) { switch(arg0) { case 1: @@ -274,8 +249,6 @@ void func_80000B28(void) { D_800DC648 = 0; } -void func_800022BC(u8, ALCSPlayer*); - void play_music(u8 arg0) { if (D_800DC648 == 0 && musicVolumeSliderPercentage != 0) { D_80115D04 = arg0; @@ -290,8 +263,6 @@ void play_music(u8 arg0) { } } -void func_8000B010(ALCSPlayer *arg0, u8 arg1); - void func_80000BE0(u8 arg0) { if (D_800DC670 == 0) { func_8000B010(gMusicPlayer, arg0); @@ -327,10 +298,7 @@ void func_80000CBC(void) { set_relative_volume_for_music(musicRelativeVolume); } -void func_80001D04(u16,void*); -void func_8000232C(ALCSPlayer*, void*, u8*, ALCSeq*); - -void func_80000D00(u8 arg0){ +void func_80000D00(u8 arg0) { s32 reg_s2; s32 j; if(D_80115D3C > 0){ @@ -403,11 +371,8 @@ void func_80001050(void) { u16 musicGetChanMask(void) { return gMusicPlayer->chanMask; } -void func_80001114(u8 arg0); -void func_80001170(u8 arg0); - -void func_80001074(u16 arg0){ +void func_80001074(u16 arg0) { u32 chan; if(D_800DC65C){ D_80115F7C = arg0; @@ -444,24 +409,18 @@ void func_80001170(u8 arg0) { } } -s32 alCSPSetChlPan(ALCSPlayer*, u8 chan, ALPan pan); - void musicSetChlPan(u8 chan, ALPan pan) { if (chan < 0x10) { alCSPSetChlPan(gMusicPlayer, chan, pan); } } -void alCSPSetChlVol(ALCSPlayer*, u8 chan, u8 vol); - void musicSetChlVol(u8 chan, u8 vol) { if (chan < 0x10) { alCSPSetChlVol(gMusicPlayer, chan, vol); } } -s32 alCSPGetChlVol(ALCSPlayer*, u8 arg1); - /* Unused?*/ s32 musicGetChlVol(u8 arg0) { if (arg0 >= 0x10) { @@ -471,24 +430,20 @@ s32 musicGetChlVol(u8 arg0) { } } -s32 func_80063BA0(ALCSPlayer*, u8 arg1, u8 arg2); - void func_80001268(u8 arg0, u8 arg1) { if (arg0 < 0x10) { func_80063BA0(gMusicPlayer, arg0, arg1); } } -s32 func_80063C00(ALCSPlayer*, u8 arg1); - -s32 func_800012A8(u8 arg0) { +u8 func_800012A8(u8 arg0) { if (arg0 >= 0x10) { return 0; } return func_80063C00(gMusicPlayer, arg0); } -void func_800012E8(void){ +void func_800012E8(void) { u32 chan; if(!D_800DC648){ for(chan = 0; chan<16; chan++){ @@ -500,8 +455,7 @@ void func_800012E8(void){ return; } - -u8 func_80001358(u8 arg0, u8 arg1, s32 arg2){ +u8 func_80001358(u8 arg0, u8 arg1, s32 arg2) { u8 val_1f; u8 val_1e; s32 updatedVol; @@ -527,9 +481,7 @@ u8 func_80001358(u8 arg0, u8 arg1, s32 arg2){ } } -u8 alSeqpGetChlFXMix(ALCSPlayer*, u8); - -void func_80001440(u8 *arg0){ +void func_80001440(u8 *arg0) { s32 s0 = 0; if(gMusicPlayer->maxChannels > 0){ do{ @@ -540,15 +492,11 @@ void func_80001440(u8 *arg0){ return; } -s16 musicGetTempo(void); - -void musicSetTempo(s32); - void func_800014BC(f32 arg0) { musicSetTempo((s32)((f32)(u32)(musicGetTempo() & 0xFF) * arg0)); } -void musicSetTempo(s32 tempo){ +void musicSetTempo(s32 tempo) { if(tempo != 0){ f32 inv_tempo = (1.0f/tempo); alCSPSetTempo(gMusicPlayer,(s32)(inv_tempo * 60000000.0f)); @@ -602,14 +550,12 @@ f32 func_800015F8(void){ } #endif -void func_80001728(u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3){ +void func_80001728(u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3) { *arg1 = D_80115D1C[arg0].unk1; *arg2 = D_80115D1C[arg0].unk0; *arg3 = D_80115D1C[arg0].unk2; } -u32 func_80001C08(void); - void func_80001784(u8 a0){ if(!func_80001C08()){ func_800022BC(D_80115D05 = a0, gSndFxPlayer); @@ -617,23 +563,18 @@ void func_80001784(u8 a0){ } } - -void sfxSetTempo(s32 tempo){ +void sfxSetTempo(s32 tempo) { f32 inv_tempo = (1.0f/tempo); alCSPSetTempo(gSndFxPlayer,(s32)(inv_tempo * 60000000.0f)); } - -void func_80002570(ALCSPlayer *arg0); - -void func_80001844(void){ +void func_80001844(void) { if(!D_800DC648){ func_80002570(gMusicPlayer); } return; } - void func_80001878(u8 arg0) { if (arg0 != D_800DC640) { D_800DC640 = arg0; @@ -645,7 +586,7 @@ void func_80001878(u8 arg0) { } } -u8 func_800018D0(void){ +u8 func_800018D0(void) { return D_800DC640; } @@ -663,8 +604,6 @@ u8 func_80001918(void) { return 0; } -extern u8 D_800DC65C; - // Unused? u8 func_80001954(void) { if (D_800DC65C != 0) { @@ -677,8 +616,7 @@ u8 func_80001980(void) { return D_80115D05; } - -void set_relative_volume_for_music(u8 vol){ +void set_relative_volume_for_music(u8 vol) { f32 normalized_vol; musicRelativeVolume = vol; @@ -686,7 +624,7 @@ void set_relative_volume_for_music(u8 vol){ alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); } -void set_music_volume_slider(u32 slider_val){ +void set_music_volume_slider(u32 slider_val) { f32 normalized_vol; slider_val = (slider_val < 0x101)?slider_val:256; @@ -708,7 +646,7 @@ void sfxSetRelativeVolume(u8 arg0) { alCSPSetVol(gSndFxPlayer, (s16) (sfxGetVolumeSlider() * sfxRelativeVolume)); } -void sfxSetPan(ALPan pan){ +void sfxSetPan(ALPan pan) { u32 iChan; for(iChan = 0; iChan < 16; iChan++){ alCSPSetChlPan(gSndFxPlayer, iChan, pan); @@ -716,12 +654,12 @@ void sfxSetPan(ALPan pan){ return; } -void play_sound(u8 arg0){ +void play_sound(u8 arg0) { D_800DC644 = 1; func_800022BC( D_80115D05 = arg0, gSndFxPlayer); } -u32 func_80001C08(void){ +u32 func_80001C08(void) { if(D_80115D05 && D_800DC644 && (gSndFxPlayer->state == AL_PLAYING) ){ return D_80115D05; } @@ -729,14 +667,13 @@ u32 func_80001C08(void){ return 0; } -void func_80001C5C(u16 arg0){ +void func_80001C5C(u16 arg0) { u32 s0; for(s0 = 0; s0<64; s0++){ func_80004A60(s0, arg0 << 8); } } - u16 func_80001CB8(u16 arg0) { if (D_80115D20 < arg0) { return 0; @@ -744,20 +681,9 @@ u16 func_80001CB8(u16 arg0) { return D_80115D18[arg0].unk6; } - -#if 1 GLOBAL_ASM("asm/non_matchings/audio/func_80001D04.s") -#else -#endif - -typedef struct unknown_struct_80001EA8_s{ - u32 unk00; - u32 unk04; - u32 unk08; -}unknown_struct_80001EA8; - -void func_80001EA8(u16 arg0, unknown_struct_80001EA8 arg1, u32 *arg2){ +void func_80001EA8(u16 arg0, unknown_struct_80001EA8 arg1, u32 *arg2) { if(arg2 == NULL){ arg2 = &D_80115F84; } @@ -767,9 +693,7 @@ void func_80001EA8(u16 arg0, unknown_struct_80001EA8 arg1, u32 *arg2){ } } -u16 ALBankFile_80115D14_GetSoundCount(void); - -void func_80001F14(u16 sndIndx, u32 *arg1){ +void func_80001F14(u16 sndIndx, u32 *arg1) { if(sndIndx <= 0 || ALBankFile_80115D14_GetSoundCount() < sndIndx){ if(arg1){ *arg1 = 0; @@ -787,7 +711,7 @@ void func_80001F14(u16 sndIndx, u32 *arg1){ #if 1 GLOBAL_ASM("asm/non_matchings/audio/func_80001FB8.s") #else -void func_80001FB8(u16 arg0){ +void func_80001FB8(u16 arg0) { arg0*10 + D_80115D18[0].unk00; } #endif @@ -825,21 +749,14 @@ void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2) { } } -u8 ALBankFile_80115D14_GetSoundDecayTime(u16 sndIndx){ +u8 ALBankFile_80115D14_GetSoundDecayTime(u16 sndIndx) { if(sndIndx <= 0 || ALBankFile_80115D14->bankArray[0]->instArray[0]->soundCount < sndIndx){ return 0; } return ((u32)(1+ ALBankFile_80115D14->bankArray[0]->instArray[0]->soundArray[sndIndx-1]->envelope->decayTime) == 0); } - -#if 0 -GLOBAL_ASM("asm/non_matchings/audio/func_80002224.s") -#else -extern void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); -extern void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); - -ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events){ +ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events) { ALCSPlayer *cseqp; ALSeqpConfig config; @@ -859,9 +776,6 @@ ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events){ ((u8*) cseqp)[0x36]= 0x7F; //this member doesn't exist in ALCSPlayer return cseqp; } -#endif - - void func_800022BC(u8 arg0, ALCSPlayer *arg1) { func_80002570(arg1); @@ -874,7 +788,6 @@ void func_800022BC(u8 arg0, ALCSPlayer *arg1) { } } - #if 1 GLOBAL_ASM("asm/non_matchings/audio/func_8000232C.s") #else @@ -895,7 +808,7 @@ void func_8000232C(ALCSPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq){ } #endif -void func_80002570(ALCSPlayer *seqp){ +void func_80002570(ALCSPlayer *seqp) { if(gMusicPlayer == seqp && D_80115D40 != 0){ alCSPStop(seqp); D_80115D40 = 0; @@ -910,8 +823,6 @@ void func_80002570(ALCSPlayer *seqp){ return; } -void func_8006492C(u8 arg0); - void func_80002608(u8 arg0) { func_8006492C(arg0); } diff --git a/src/audio.h b/src/audio.h index 87af4f37..dcf4e8b6 100644 --- a/src/audio.h +++ b/src/audio.h @@ -21,5 +21,114 @@ extern s32 D_800DC664; extern s32 D_800DC668; extern s32 D_800DC66C; extern u8 D_800DC670; +extern u8 D_800DC65C; -#endif \ No newline at end of file +typedef struct unknown_struct_80001EA8_s{ + u32 unk00; + u32 unk04; + u32 unk08; +}unknown_struct_80001EA8; + +/* Size: 0x0A bytes */ +typedef struct unk80115D18 { + u8 pad0[6]; + u16 unk6; + u8 pad8[2]; +} unk80115D18; + +/* Size: 3 bytes */ +typedef struct unk80115D1C { + u8 unk0; + u8 unk1; + u8 unk2; +} unk80115D1C; + +extern void alCSPNew(ALCSPlayer *seqp, ALSeqpConfig *config); +extern void alCSPSetBank(ALCSPlayer *seqp, ALBank *b); +void func_8000B010(ALCSPlayer *, u8); //lib/src/mips1/alseqplayer.c +void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); //lib/src/al +void func_80004A60(u8, u16); //unknown_003260.c //Could be s32, s32 +s32 alCSPSetChlPan(ALCSPlayer *seqp, u8 chan, ALPan pan); //unknown_0C84E0.c +void alCSPSetChlVol(ALCSPlayer *, u8 chan, u8 vol); //unknown_0C84E0.c +s32 alCSPGetChlVol(ALCSPlayer *seqp, u8 chan); //lib/src/al +void func_80063BA0(ALCSPlayer *seqp, u8 arg1, u8 arg2); //unknown_0646A0.c +u8 func_80063C00(ALCSPlayer *seqp, u8 arg1); //lib/src/mips1/al/unknown_064800.c +u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan); //lib/src/al/alSeqpGetChlFXMix.c +void func_8006492C(u8 arg0); //lib/src/mips1/al/reverb.c + +ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events); +void audio_init(u32 arg0); +void set_relative_volume_for_music(u8 vol); +void func_80000890(u8 arg0); +void func_80000968(s32 arg0); +void func_80000B18(void); +void func_80000B28(void); +void func_800022BC(u8 arg0, ALCSPlayer *arg1); +void play_music(u8 arg0); +void func_80000BE0(u8 arg0); +void func_80000C1C(void); +void func_80000C2C(void); +void func_80000C38(u8 arg0); +void func_80000C68(u8 arg0); +void func_80000C98(s32 arg0); +void func_80000CBC(void); +void func_80000D00(u8 arg0); +void func_80000FDC(u16 arg0, s32 arg1, f32 arg2); +void func_80001050(void); +u16 musicGetChanMask(void); +void func_80001074(u16 arg0); +void func_80001114(u8 arg0); +s32 musicGetChnlActive(s32 arg0); +void func_80001170(u8 arg0); +void musicSetChlPan(u8 chan, ALPan pan); +void musicSetChlVol(u8 chan, u8 vol); +s32 musicGetChlVol(u8 arg0); +void func_80001268(u8 arg0, u8 arg1); +u8 func_800012A8(u8 arg0); +void func_800012E8(void); +u8 func_80001358(u8 arg0, u8 arg1, s32 arg2); +void func_80001440(u8 *arg0); +void func_800014BC(f32 arg0); +void musicSetTempo(s32 tempo); +s16 musicGetTempo(void); +u8 music_is_playing(void); +void func_80001728(u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3); +void func_80001784(u8 a0); +void sfxSetTempo(s32 tempo); +void func_80001844(void); +void func_80001878(u8 arg0); +u8 func_800018D0(void); +void func_800018E0(void); +u8 func_80001918(void); +u8 func_80001954(void); +u8 func_80001980(void); +void set_relative_volume_for_music(u8 vol); +void set_music_volume_slider(u32 slider_val); +u8 musicGetRelativeVolume(void); +s32 musicGetVolSliderPercentage(void); +void sfxSetRelativeVolume(u8 arg0); +void sfxSetPan(ALPan pan); +void play_sound(u8 arg0); +u32 func_80001C08(void); +void func_80001C5C(u16 arg0); +u16 func_80001CB8(u16 arg0); +void func_80001EA8(u16 arg0, unknown_struct_80001EA8 arg1, u32 *arg2); +void func_80001F14(u16 sndIndx, u32 *arg1); +u16 ALBankFile_80115D14_GetSoundCount(void); +u8 ALSeqFile_80115CF8_GetSeqCount(void); +void func_80002128(unk80115D18 **arg0, s32 *arg1, s32 *arg2); +void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2); +u8 ALBankFile_80115D14_GetSoundDecayTime(u16 sndIndx); +ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events); +void func_800022BC(u8 arg0, ALCSPlayer *arg1); +void func_80002570(ALCSPlayer *seqp); +void func_80002608(u8 arg0); +u8 func_80002630(void); + +void func_80001D04(u16, s32*); //Non matching. +void func_8000232C(ALCSPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq); //Non Matching +f32 func_800015F8(void); //Non Matching +void func_80001FB8(u16 arg0); //Non Matching +void func_8000232C(ALCSPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq); // Non Matching + +#endif