mirror of
https://github.com/BanjoRecomp/BanjoRecomp
synced 2026-05-23 14:41:41 -04:00
Fix bgm slider (#54)
* Fix BGM slider muting some SFXs * formatting * actually fix BGM slider
This commit is contained in:
+121
-6
@@ -5,6 +5,108 @@
|
||||
#include "../lib/bk-decomp/src/core1/musicplayer.h"
|
||||
#include "sound.h"
|
||||
|
||||
// @recomp The music player is often used to play sound effects. Therefore, check if track_id is actually music.
|
||||
bool isMusic(s16 trackId) {
|
||||
switch (trackId) {
|
||||
case COMUSIC_2_MM:
|
||||
case COMUSIC_3_FP_TWINKLIES_TALKING:
|
||||
case COMUSIC_4_MMM_CLOCK_VERSION:
|
||||
case COMUSIC_5_TTC_VACATION_VERSION:
|
||||
case COMUSIC_6_BGS:
|
||||
case COMUSIC_7_CC_MUTANT_CRABS:
|
||||
case COMUSIC_8_STARTUP_MUSICAL:
|
||||
case COMUSIC_F_MMM_ALTERNATIVE:
|
||||
case COMUSIC_10_SM:
|
||||
case COMUSIC_12_TTC_NIPPER:
|
||||
case COMUSIC_13_INSIDE_SANDCASTLE:
|
||||
case COMUSIC_1B_MYSTERIOUS_INDOORS:
|
||||
case COMUSIC_1C_CC_ALTERNATIVE:
|
||||
case COMUSIC_1E_GL_MM_VERSION:
|
||||
case COMUSIC_1F_CC_INSIDE_CLANKER:
|
||||
case COMUSIC_20_GV_ALTERNATIVE:
|
||||
case COMUSIC_21_MMM_INSIDE_MMM_MANSION:
|
||||
case COMUSIC_22_MMM:
|
||||
case COMUSIC_23_MMM_INSIDE_CHURCH:
|
||||
case COMUSIC_24_GV_INSIDE_PYRAMID:
|
||||
case COMUSIC_25_USING_GOLD_FEATHERS:
|
||||
case COMUSIC_26_GV_SANDYBUTT_DANGER:
|
||||
case COMUSIC_27_GV_RUBEES_SONG:
|
||||
case COMUSIC_28_SOMETHING_AQUATIC:
|
||||
case COMUSIC_29_CCW_SUMMER:
|
||||
case COMUSIC_2A_CCW_WINTER:
|
||||
case COMUSIC_2E_CCW_FALL_AQUATIC:
|
||||
case COMUSIC_2F_CCW_HUBROOM:
|
||||
case COMUSIC_32_STARTUP_LOGO_SCENE:
|
||||
case COMUSIC_33_RBB_ALTERNATIVE:
|
||||
case COMUSIC_34_SNACKER_DANGER:
|
||||
case COMUSIC_35_RBB_MASCHINE_ROOM_AQUATIC:
|
||||
case COMUSIC_39_DK64_FUNGI_FOREST:
|
||||
case COMUSIC_3A_FP_BOGGY_RACE:
|
||||
case COMUSIC_41_MUMBOS_HUT:
|
||||
case COMUSIC_44_CCW_NABNUT:
|
||||
case COMUSIC_45_CCW_NABNUT_ATTIC_A:
|
||||
case COMUSIC_46_CCW_SPRING:
|
||||
case COMUSIC_47_BGS_INSIDE_TANKTUP:
|
||||
case COMUSIC_48_CCW_ALTERNATIVE_A:
|
||||
case COMUSIC_49_CCW_ALTERNATIVE_QUICK:
|
||||
case COMUSIC_4A_RBB_INSIDE_CONTAINER:
|
||||
case COMUSIC_4B_CCW_ZUBBA_FIGHT:
|
||||
case COMUSIC_4C_RBB_CREWMATE_CABIN:
|
||||
case COMUSIC_50_GL_TTC_VERSION:
|
||||
case COMUSIC_51_GL_CCW_VERSION:
|
||||
case COMUSIC_52_GL_BGS_RBB_VERSION:
|
||||
case COMUSIC_53_GL_FP_VERSION_A:
|
||||
case COMUSIC_54_GL_GV_VERSION:
|
||||
case COMUSIC_55_BGS_MR_VILE:
|
||||
case COMUSIC_56_SM_HANGBRIDGE:
|
||||
case COMUSIC_57_TURBO_TRAINERS:
|
||||
case COMUSIC_58_WADING_BOOTS:
|
||||
case COMUSIC_59_GL_FP_VERSION_B:
|
||||
case COMUSIC_5A_FP_IGLOO_SAD:
|
||||
case COMUSIC_5B_FP_IGLOO_HAPPY:
|
||||
case COMUSIC_5D_GL_MMM_VERSION:
|
||||
case COMUSIC_5E_GL_MMM_RBB_VERSION:
|
||||
case COMUSIC_5F_CCW_ALTERNATIVE_B:
|
||||
case COMUSIC_60_NABNUT_ATTIC_B:
|
||||
case COMUSIC_62_RBB_BOOMBOX:
|
||||
case COMUSIC_63_GL_FF_VERSION:
|
||||
case COMUSIC_64_WORLD_OPENING_A:
|
||||
case COMUSIC_65_WORLD_OPENING_B:
|
||||
case COMUSIC_66_FP_INSIDE_WOZZAS_CAVE:
|
||||
case COMUSIC_68_TWINKLY_MINIGAME:
|
||||
case COMUSIC_6A_MMM_TUMBLARS_SHED:
|
||||
case COMUSIC_6B_FP_ALTERNATIVE:
|
||||
case COMUSIC_6C_INTRO_TOWER_SCENE:
|
||||
case COMUSIC_6D_CCW_GNAWTYS_HOUSE:
|
||||
case COMUSIC_6E_GAME_SELECT:
|
||||
case COMUSIC_6F_PAUSE_SCREEN:
|
||||
case COMUSIC_70_MMM_INSIDE_LOGGO:
|
||||
case COMUSIC_71_FF:
|
||||
case MUSIC_BGS_FLIBBIT_FIGHT:
|
||||
case COMUSIC_74_GL_FINAL_SECTION:
|
||||
case COMUSIC_7A_BRENTILDA:
|
||||
case COMUSIC_83_GV_SNS:
|
||||
case COMUSIC_84_TTC_SNS:
|
||||
case COMUSIC_85_FP_SNS:
|
||||
case COMUSIC_86_MMM_SNS:
|
||||
case COMUSIC_87_MMM_SNS_HAPPIER:
|
||||
case COMUSIC_88_BIG_SNS_FANFARE:
|
||||
case COMUSIC_8E_CREDITS:
|
||||
case COMUSIC_94_BBONUS:
|
||||
case COMUSIC_95_BBONUS_A:
|
||||
case COMUSIC_AC_GOOD_ENDING:
|
||||
case MUSIC_MUMBO_BBQ:
|
||||
case COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY:
|
||||
case COMUSIC_AA_BEACH:
|
||||
case COMUSIC_91_GRUNTY_FALLING:
|
||||
case COMUSIC_80_GAME_OVER_CUTSCENE:
|
||||
case COMUSIC_1_FINAL_BATTLE:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
extern MusicTrack D_80281720[6];
|
||||
extern CoMusic *musicTracks;
|
||||
extern int D_80276E34;
|
||||
@@ -19,8 +121,12 @@ void func_802599B4(CoMusic *this);
|
||||
// @recomp Patched to incorporate the bgm player volume in the setvol command for music tracks.
|
||||
RECOMP_PATCH void musicTrack_setVolume(u8 arg0, s16 arg1) {
|
||||
D_80281720[arg0].unk0 = arg1;
|
||||
alCSPSetVol(&D_80281720[arg0].cseqp, (s16)(arg1 * recomp_get_bgm_volume()));
|
||||
|
||||
if (isMusic(musicTracks[arg0].track_id)) {
|
||||
alCSPSetVol(&D_80281720[arg0].cseqp, (s16)(arg1 * recomp_get_bgm_volume()));
|
||||
} else {
|
||||
alCSPSetVol(&D_80281720[arg0].cseqp, arg1);
|
||||
}
|
||||
if (D_80281720[arg0].unk3 && arg1) {
|
||||
func_8024FCE0(arg0, arg1);
|
||||
} else if (!D_80281720[arg0].unk3 && arg1 == 0) {
|
||||
@@ -54,8 +160,10 @@ RECOMP_PATCH void coMusicPlayer_update(void) {
|
||||
if (!D_80276E34) {
|
||||
// @recomp If there are no pending track updates, send a volume command for each track to incorporate the BGM volume.
|
||||
for (var_s0 = musicTracks; var_s0 < &musicTracks[6]; var_s0++) {
|
||||
temp_lo = var_s0 - musicTracks;
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
if (isMusic(var_s0->track_id)) {
|
||||
temp_lo = var_s0 - musicTracks;
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -75,7 +183,9 @@ RECOMP_PATCH void coMusicPlayer_update(void) {
|
||||
D_80276E34 = TRUE;
|
||||
|
||||
// @recomp Send a volume command to incorporate the current BGM volume if the track's volume wasn't changed.
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
if (isMusic(var_s0->track_id)) {
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
@@ -116,7 +226,10 @@ RECOMP_PATCH void coMusicPlayer_update(void) {
|
||||
}
|
||||
|
||||
// @recomp Send a volume command to incorporate the current BGM volume if the track's volume wasn't changed.
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
if (isMusic(var_s0->track_id)) {
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
}
|
||||
|
||||
|
||||
var_s0->unk12 = 0;
|
||||
}
|
||||
@@ -124,7 +237,9 @@ RECOMP_PATCH void coMusicPlayer_update(void) {
|
||||
else {
|
||||
temp_lo = var_s0 - musicTracks;
|
||||
// @recomp Send a volume command to incorporate the current BGM volume if the track's volume wasn't changed.
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
if (isMusic(var_s0->track_id)) {
|
||||
alCSPSetVol(&D_80281720[temp_lo].cseqp, (s16)(var_s0->volume * recomp_get_bgm_volume()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user