diff --git a/asm/non_matchings/unknown_001050/musicSetTempo.s b/asm/non_matchings/unknown_001050/musicSetTempo.s deleted file mode 100644 index f1c15839..00000000 --- a/asm/non_matchings/unknown_001050/musicSetTempo.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel musicSetTempo -/* 002134 80001534 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 002138 80001538 AFBF0014 */ sw $ra, 0x14($sp) -/* 00213C 8000153C 1080001A */ beqz $a0, .L800015A8 -/* 002140 80001540 00803025 */ move $a2, $a0 -/* 002144 80001544 44863000 */ mtc1 $a2, $f6 -/* 002148 80001548 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00214C 8000154C 46803220 */ cvt.s.w $f8, $f6 -/* 002150 80001550 44812000 */ mtc1 $at, $f4 -/* 002154 80001554 3C01800E */ lui $at, %hi(D_800E49DC) # $at, 0x800e -/* 002158 80001558 46082283 */ div.s $f10, $f4, $f8 -/* 00215C 8000155C C43049DC */ lwc1 $f16, %lo(D_800E49DC)($at) -/* 002160 80001560 3C04800E */ lui $a0, %hi(gMusicPlayer) # $a0, 0x800e -/* 002164 80001564 8C84C630 */ lw $a0, %lo(gMusicPlayer)($a0) -/* 002168 80001568 AFA60018 */ sw $a2, 0x18($sp) -/* 00216C 8000156C 46105482 */ mul.s $f18, $f10, $f16 -/* 002170 80001570 444EF800 */ cfc1 $t6, $31 -/* 002174 80001574 00000000 */ nop -/* 002178 80001578 35C10003 */ ori $at, $t6, 3 -/* 00217C 8000157C 38210002 */ xori $at, $at, 2 -/* 002180 80001580 44C1F800 */ ctc1 $at, $31 -/* 002184 80001584 00000000 */ nop -/* 002188 80001588 460091A4 */ cvt.w.s $f6, $f18 -/* 00218C 8000158C 44053000 */ mfc1 $a1, $f6 -/* 002190 80001590 44CEF800 */ ctc1 $t6, $31 -/* 002194 80001594 0C031E78 */ jal alCSPSetTempo -/* 002198 80001598 00000000 */ nop -/* 00219C 8000159C 8FA60018 */ lw $a2, 0x18($sp) -/* 0021A0 800015A0 3C018011 */ lui $at, %hi(D_80115D30) # $at, 0x8011 -/* 0021A4 800015A4 A4265D30 */ sh $a2, %lo(D_80115D30)($at) -.L800015A8: -/* 0021A8 800015A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0021AC 800015AC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0021B0 800015B0 03E00008 */ jr $ra -/* 0021B4 800015B4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_001050/sfxSetTempo.s b/asm/non_matchings/unknown_001050/sfxSetTempo.s deleted file mode 100644 index 1dc142b4..00000000 --- a/asm/non_matchings/unknown_001050/sfxSetTempo.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel sfxSetTempo -/* 0023D4 800017D4 00803025 */ move $a2, $a0 -/* 0023D8 800017D8 44863000 */ mtc1 $a2, $f6 -/* 0023DC 800017DC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0023E0 800017E0 46803220 */ cvt.s.w $f8, $f6 -/* 0023E4 800017E4 44812000 */ mtc1 $at, $f4 -/* 0023E8 800017E8 3C01800E */ lui $at, %hi(D_800E49EC) # $at, 0x800e -/* 0023EC 800017EC 46082283 */ div.s $f10, $f4, $f8 -/* 0023F0 800017F0 C43049EC */ lwc1 $f16, %lo(D_800E49EC)($at) -/* 0023F4 800017F4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0023F8 800017F8 3C04800E */ lui $a0, %hi(gSndFxPlayer) # $a0, 0x800e -/* 0023FC 800017FC AFBF0014 */ sw $ra, 0x14($sp) -/* 002400 80001800 8C84C634 */ lw $a0, %lo(gSndFxPlayer)($a0) -/* 002404 80001804 46105482 */ mul.s $f18, $f10, $f16 -/* 002408 80001808 444EF800 */ cfc1 $t6, $31 -/* 00240C 8000180C 00000000 */ nop -/* 002410 80001810 35C10003 */ ori $at, $t6, 3 -/* 002414 80001814 38210002 */ xori $at, $at, 2 -/* 002418 80001818 44C1F800 */ ctc1 $at, $31 -/* 00241C 8000181C 00000000 */ nop -/* 002420 80001820 460091A4 */ cvt.w.s $f6, $f18 -/* 002424 80001824 44053000 */ mfc1 $a1, $f6 -/* 002428 80001828 44CEF800 */ ctc1 $t6, $31 -/* 00242C 8000182C 0C031E78 */ jal alCSPSetTempo -/* 002430 80001830 00000000 */ nop -/* 002434 80001834 8FBF0014 */ lw $ra, 0x14($sp) -/* 002438 80001838 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00243C 8000183C 03E00008 */ jr $ra -/* 002440 80001840 00000000 */ nop - diff --git a/src/unknown_001050.c b/src/unknown_001050.c index 7f3cde6f..6bd69466 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -38,6 +38,9 @@ extern u8 D_800DC660; extern s32 D_800DC66C; extern u8 D_800DC670; +extern f32 D_800E49DC; +extern f32 D_800E49EC; + extern u8 D_800EBF60; extern ALHeap gALHeap; @@ -537,15 +540,24 @@ void func_80001440(u8 *arg0){ return; } -s16 func_800015B8(void); +s16 musicGetTempo(void); + +void musicSetTempo(s32); void func_800014BC(f32 arg0) { - musicSetTempo((s32)((f32)(u32)(func_800015B8() & 0xFF) * arg0)); + musicSetTempo((s32)((f32)(u32)(musicGetTempo() & 0xFF) * arg0)); } -GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetTempo.s") -s16 func_800015B8(void) { +void musicSetTempo(s32 tempo){ + if(tempo != 0){ + f32 inv_tempo = (1.0f/tempo); + alCSPSetTempo(gMusicPlayer,(s32)(inv_tempo*D_800E49DC)); + D_80115D30 = tempo; + } +} + +s16 musicGetTempo(void) { return D_80115D30; } @@ -564,7 +576,12 @@ void func_80001784(u8 a0){ } } -GLOBAL_ASM("asm/non_matchings/unknown_001050/sfxSetTempo.s") + +void sfxSetTempo(s32 tempo){ + f32 inv_tempo = (1.0f/tempo); + alCSPSetTempo(gSndFxPlayer,(s32)(inv_tempo*D_800E49EC)); +} + void func_80002570(ALCSPlayer* arg0); @@ -619,9 +636,7 @@ u8 func_80001980(void) { return D_80115D05; } -#if 0 -GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetRelativeVolume.s") -#else + void musicSetRelativeVolume(u8 vol){ f32 normalized_vol; @@ -629,8 +644,6 @@ void musicSetRelativeVolume(u8 vol){ normalized_vol = musicVolumeSliderPercentage*musicRelativeVolume*D_800DC650; alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); } -#endif - void musicSetVolSlider(u32 slider_val){ f32 normalized_vol;