From 1bbb26334ac64e650710840f3fd9a60cba7f970a Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 4 Jun 2022 11:41:35 +0200 Subject: [PATCH] cellAudioOut: Use bev_bdvd for disc game PARAM.SFO Game Data PARAM.SFO does not contain SOUND_FORMAT --- rpcs3/Emu/Cell/Modules/cellAudioOut.cpp | 2 +- rpcs3/Emu/System.cpp | 15 +++++++++++++++ rpcs3/Emu/System.h | 5 +---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp b/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp index 29624b77ba..fd56a2fb56 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAudioOut.cpp @@ -39,7 +39,7 @@ audio_out_configuration::audio_out_configuration() std::vector& primary_modes = primary_output.sound_modes; std::vector& secondary_modes = secondary_output.sound_modes; - const psf::registry sfo = psf::load_object(fs::file(Emu.GetSfoDir() + "/PARAM.SFO")); + const psf::registry sfo = psf::load_object(fs::file(Emu.GetSfoDir(true) + "/PARAM.SFO")); const s32 sound_format = psf::get_integer(sfo, "SOUND_FORMAT", psf::sound_format_flag::lpcm_2); // Default to Linear PCM 2 Ch. const bool supports_lpcm_2 = (sound_format & psf::sound_format_flag::lpcm_2); // Linear PCM 2 Ch. diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 1786b0308d..260f808426 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -2222,4 +2222,19 @@ const std::string& Emulator::GetFakeCat() const return m_cat; }; +const std::string Emulator::GetSfoDir(bool prefer_disc_sfo) const +{ + if (prefer_disc_sfo) + { + const std::string sfo_dir = vfs::get("/dev_bdvd/PS3_GAME"); + + if (!sfo_dir.empty()) + { + return sfo_dir; + } + } + + return m_sfo_dir; +} + Emulator Emu; diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h index c9eb111f09..9a64134100 100644 --- a/rpcs3/Emu/System.h +++ b/rpcs3/Emu/System.h @@ -225,10 +225,7 @@ public: return m_dir; } - const std::string& GetSfoDir() const - { - return m_sfo_dir; - } + const std::string GetSfoDir(bool prefer_disc_sfo) const; // String for GUI dialogs. const std::string& GetUsr() const