diff --git a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture.h b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture.h index 0e4f7abbbb83..3ddebe153a48 100644 --- a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture.h +++ b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture.h @@ -1,7 +1,6 @@ #pragma once #include "Emu/RSX/Overlays/overlays.h" -#include "Emu/Cell/ErrorCodes.h" #include "overlay_big_picture_main_menu.h" namespace rsx diff --git a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_details.cpp b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_details.cpp index 32f2e813198c..545c933b639d 100644 --- a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_details.cpp +++ b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_details.cpp @@ -1,6 +1,6 @@ #include "stdafx.h" #include "overlay_big_picture_game_details.h" -#include "Emu/RSX/Overlays/HomeMenu/overlay_home_menu_components.h" +#include "Emu/system_utils.hpp" namespace rsx { @@ -51,9 +51,7 @@ namespace rsx m_info_text.set_text(fmt::format("%s\n%s\n%s", info.serial, info.category, info.app_ver)); - const std::string game_dir = fs::get_parent_dir(info.icon_path); - - if (const std::string pic1_path = game_dir + "/PIC1.PNG"; fs::is_file(pic1_path)) + if (const std::string pic1_path = rpcs3::utils::get_game_content_path(game_content_type::background_picture, info); !pic1_path.empty()) { m_pic_data = std::make_unique(pic1_path); // The renderer's texture cache is keyed by this object's address, which can be reused by an @@ -71,9 +69,9 @@ namespace rsx m_pic_background.refresh(); - if (const std::string icon1_path = game_dir + "/ICON1.PAM"; fs::is_file(icon1_path)) + if (!info.movie_path.empty()) { - m_video = std::make_unique(icon1_path, "", info.icon_path); + m_video = std::make_unique(info.movie_path, "", info.icon_path); m_video->set_pos(m_icon.x, m_icon.y); m_video->set_size(m_icon.w, m_icon.h); m_video->set_active(true); diff --git a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_grid.cpp b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_grid.cpp index 3b417d068438..492b6d9e7849 100644 --- a/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_grid.cpp +++ b/rpcs3/Emu/RSX/Overlays/BigPicture/overlay_big_picture_game_grid.cpp @@ -109,11 +109,13 @@ namespace rsx GameInfo info{}; info.path = path; - info.icon_path = sfo_dir + "/ICON0.PNG"; info.serial = title_id; info.name = std::string(psf::get_string(psf, "TITLE", title_id)); info.category = std::string(psf::get_string(psf, "CATEGORY")); info.app_ver = std::string(psf::get_string(psf, "APP_VER")); + info.icon_path = rpcs3::utils::get_game_content_path(game_content_type::content_icon, info, sfo_dir); + info.movie_path = rpcs3::utils::get_game_content_path(game_content_type::content_video, info, sfo_dir); + info.audio_path = rpcs3::utils::get_game_content_path(game_content_type::content_sound, info, sfo_dir); m_games.push_back({ std::move(info) }); } diff --git a/rpcs3/Emu/system_utils.cpp b/rpcs3/Emu/system_utils.cpp index 9e39827b302d..e389ed81a5da 100644 --- a/rpcs3/Emu/system_utils.cpp +++ b/rpcs3/Emu/system_utils.cpp @@ -3,6 +3,7 @@ #include "system_config.h" #include "vfs_config.h" #include "Emu/Io/pad_config.h" +#include "Emu/GameInfo.h" #include "Emu/System.h" #include "Emu/VFS.h" #include "util/sysinfo.hpp" @@ -594,19 +595,17 @@ namespace rpcs3::utils return get_input_config_dir(title_id) + g_cfg_input_configs.default_config + ".yml"; } - std::string get_game_content_path(game_content_type type) + std::string get_game_content_path(game_content_type type, const std::string& serial, std::string sfo_dir, const std::string& disc_dir) { const std::string locale_suffix = fmt::format("_%02d", static_cast(g_cfg.sys.language.get())); - const std::string disc_dir = vfs::get("/dev_bdvd/PS3_GAME"); - std::string hdd0_dir = Emu.GetSfoDir(false); - if (hdd0_dir == disc_dir) + if (sfo_dir == disc_dir) { - hdd0_dir.clear(); // No hdd0 dir + sfo_dir.clear(); // No hdd0 dir } const bool check_disc = !disc_dir.empty(); - const bool check_hdd0 = !hdd0_dir.empty() && !check_disc; + const bool check_hdd0 = !sfo_dir.empty() && !check_disc; const auto find_content = [&](std::string_view name, std::string_view extension) -> std::string { @@ -618,7 +617,7 @@ namespace rpcs3::utils // Check content on hdd0 first if (check_hdd0) { - if (std::string path = hdd0_dir + filename; fs::is_file(path)) + if (std::string path = sfo_dir + filename; fs::is_file(path)) { return path; } @@ -660,7 +659,7 @@ namespace rpcs3::utils case game_content_type::background_picture_2: { // Try to find a custom background first - if (std::string path = fs::get_config_dir() + "/Icons/game_icons/" + Emu.GetTitleID() + "/PIC1.PNG"; fs::is_file(path)) + if (std::string path = fs::get_config_dir() + "/Icons/game_icons/" + serial + "/PIC1.PNG"; fs::is_file(path)) { return path; } @@ -673,6 +672,16 @@ namespace rpcs3::utils return {}; } + std::string get_game_content_path(game_content_type type, const GameInfo& info, const std::string& sfo_dir) + { + return get_game_content_path(type, info.serial, sfo_dir.empty() ? rpcs3::utils::get_sfo_dir_from_game_path(info.path, info.serial) : sfo_dir, {}); + } + + std::string get_game_content_path(game_content_type type) + { + return get_game_content_path(type, Emu.GetTitleID(), Emu.GetSfoDir(false), vfs::get("/dev_bdvd/PS3_GAME")); + } + bool version_is_bigger(std::string_view v0, std::string_view v1, std::string_view serial, bool is_fw) { std::add_pointer_t ev0, ev1; diff --git a/rpcs3/Emu/system_utils.hpp b/rpcs3/Emu/system_utils.hpp index ae6e8bf3d381..b25f63b0cb2e 100644 --- a/rpcs3/Emu/system_utils.hpp +++ b/rpcs3/Emu/system_utils.hpp @@ -5,6 +5,8 @@ #include #include +struct GameInfo; + enum class game_content_type { content_icon, // ICON0.PNG @@ -85,6 +87,7 @@ namespace rpcs3::utils std::string get_input_config_dir(const std::string& title_id = ""); std::string get_custom_input_config_path(const std::string& title_id); + std::string get_game_content_path(game_content_type type, const GameInfo& info, const std::string& sfo_dir = {}); std::string get_game_content_path(game_content_type type); bool version_is_bigger(std::string_view v0, std::string_view v1, std::string_view serial, bool is_fw); diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 62d081be3400..e313d8c99e99 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -142,6 +142,9 @@ {7fb59544-9761-4b4a-bb04-07deb43cf3c2} + + {37ae1158-fac7-4a4c-929a-115d8deb7505} + @@ -1219,18 +1222,6 @@ Emu\GPU\RSX\Overlays\HomeMenu\Pages - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - Emu\GPU\RSX\Overlays @@ -1483,6 +1474,18 @@ Emu\Io + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + @@ -2611,18 +2614,6 @@ Emu\GPU\RSX\Overlays\HomeMenu\Pages - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - - - Emu\GPU\RSX\Overlays\HomeMenu\Pages - Emu\GPU\RSX\Overlays @@ -2983,6 +2974,18 @@ Emu\GPU\RSX\Common + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + + + Emu\GPU\RSX\Overlays\BigPicture + diff --git a/rpcs3/rpcs3qt/game_compatibility.cpp b/rpcs3/rpcs3qt/game_compatibility.cpp index d9fb66aa13d9..5b609390bdac 100644 --- a/rpcs3/rpcs3qt/game_compatibility.cpp +++ b/rpcs3/rpcs3qt/game_compatibility.cpp @@ -7,10 +7,9 @@ #include "Crypto/unpkg.h" #include "Loader/PSF.h" -#include -#include #include #include +#include LOG_CHANNEL(compat_log, "Compat"); diff --git a/rpcs3/rpcs3qt/game_compatibility.h b/rpcs3/rpcs3qt/game_compatibility.h index b939dd475fe5..4a03975703ab 100644 --- a/rpcs3/rpcs3qt/game_compatibility.h +++ b/rpcs3/rpcs3qt/game_compatibility.h @@ -4,7 +4,7 @@ #include -#include +#include class downloader; diff --git a/rpcs3/rpcs3qt/gui_game_info.h b/rpcs3/rpcs3qt/gui_game_info.h index b06e97e8c2e0..d5788080426e 100644 --- a/rpcs3/rpcs3qt/gui_game_info.h +++ b/rpcs3/rpcs3qt/gui_game_info.h @@ -5,7 +5,6 @@ #include "Emu/GameInfo.h" -#include #include /* Having the icons associated with the game info simplifies logic internally */