diff --git a/rpcs3/Emu/Cell/Modules/cellAudio.cpp b/rpcs3/Emu/Cell/Modules/cellAudio.cpp index e38362a565..7d76c42bb4 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudio.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAudio.cpp @@ -478,11 +478,11 @@ error_code cellAudioPortOpen(vm::ptr audioParam, vm::ptrlevel = audioParam->level; + port->level = audioParam->level * g_cfg.audio.volume / 100.0f; } else { - port->level = 1.0f; + port->level = g_cfg.audio.volume / 100.0f; } port->level_set.store({ port->level, 0.0f }); @@ -697,6 +697,8 @@ error_code cellAudioSetPortLevel(u32 portNum, float level) return CELL_AUDIO_ERROR_PORT_NOT_OPEN; } + level *= g_cfg.audio.volume / 100.0f; + if (level >= 0.0f) { port.level_set.exchange({ level, (port.level - level) / 624.0f }); diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h index b97e89f6be..b7c90eeb05 100644 --- a/rpcs3/Emu/System.h +++ b/rpcs3/Emu/System.h @@ -508,6 +508,7 @@ struct cfg_root : cfg::node cfg::_bool downmix_to_2ch{this, "Downmix to Stereo", true}; cfg::_int<2, 128> frames{this, "Buffer Count", 32}; cfg::_int<1, 128> startt{this, "Start Threshold", 1}; + cfg::_int<0, 200> volume{this, "Master Volume", 100}; } audio{this};