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