From b4499a8e67a248ba687aad1c9e025668853c8984 Mon Sep 17 00:00:00 2001 From: eadmaster <51NMBsFda0ab1> Date: Sat, 19 Sep 2020 14:39:17 +0200 Subject: [PATCH] added individual audio channels volume core options (0ldsk00l/nestopia#335) --- libretro/libretro.cpp | 76 ++++++++++ libretro/libretro_core_options.h | 242 +++++++++++++++++++++++++++++++ 2 files changed, 318 insertions(+) diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index e355c66c..3e6fa6cf 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -953,6 +953,82 @@ static void check_variables(void) retro_get_system_av_info(&av_info); environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &av_info); + var.key = "nestopia_audio_vol_sq1"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_SQUARE1, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_sq2"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_SQUARE2, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_tri"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_TRIANGLE, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_noise"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_NOISE, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_dpcm"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_DPCM, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_fds"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_FDS, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_mmc5"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_MMC5, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_vrc6"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_VRC6, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_vrc7"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_VRC7, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_n163"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_N163, atoi(var.value)); + } + + var.key = "nestopia_audio_vol_s5B"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + sound.SetVolume(Api::Sound::CHANNEL_S5B, atoi(var.value)); + } } void retro_run(void) diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h index b9fce68d..e22a65ae 100644 --- a/libretro/libretro_core_options.h +++ b/libretro/libretro_core_options.h @@ -229,6 +229,248 @@ struct retro_core_option_definition option_defs_us[] = { }, "2" }, + { + "nestopia_audio_vol_sq1", + "Square 1 Channel Volume %", + "Modify Square 1 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_sq2", + "Square 2 Channel Volume %", + "Modify Square 2 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_tri", + "Triangle Channel Volume %", + "Modify Triangle Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_noise", + "Noise Channel Volume %", + "Modify Noise Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_dpcm", + "DPCM Channel Volume %", + "Modify DPCM Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_fds", + "FDS Channel Volume %", + "Modify FDS Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_mmc5", + "MMC5 Channel Volume %", + "Modify MMC5 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc6", + "VRC6 Channel Volume %", + "Modify VRC6 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_vrc7", + "VRC7 Channel Volume %", + "Modify VRC7 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_n163", + "N163 Channel Volume %", + "Modify N163 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, + { + "nestopia_audio_vol_s5B", + "S5B Channel Volume %", + "Modify N163 Channel Volume %.", + { + { "0", NULL }, + { "10", NULL }, + { "20", NULL }, + { "30", NULL }, + { "40", NULL }, + { "50", NULL }, + { "60", NULL }, + { "70", NULL }, + { "80", NULL }, + { "85", NULL }, + { "90", NULL }, + { "95", NULL }, + { "100", NULL }, + { NULL, NULL }, + }, + "100" + }, { NULL, NULL, NULL, {{0}}, NULL }, };