From 1394f9d16eac7d589541662f2863c27582b39226 Mon Sep 17 00:00:00 2001 From: cbartondock Date: Tue, 3 Mar 2026 10:06:14 -0800 Subject: [PATCH 1/5] elf dol id --- Source/Core/Core/ConfigManager.cpp | 17 ++++++++++++++++- Source/Core/Core/ConfigManager.h | 4 ++++ Source/Core/VideoCommon/HiresTextures.cpp | 3 +++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 8404cfff07..14934a42ac 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -130,6 +130,12 @@ const std::string SConfig::GetGameTDBID() const return m_gametdb_id; } +const std::string SConfig::GetGameIDElfDol() const +{ + std::lock_guard lock(m_metadata_lock); + return m_game_id_elf_dol; +} + const std::string SConfig::GetTitleName() const { std::lock_guard lock(m_metadata_lock); @@ -258,6 +264,13 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::stri DolphinAnalytics::Instance().ReportGameStart(); } + +void SConfig::SetElfDolID(const std::string& game_id) +{ + std::lock_guard lock(m_metadata_lock); + m_game_id_elf_dol = game_id; +} + void SConfig::OnESTitleChanged() { auto& system = Core::System::GetInstance(); @@ -357,7 +370,9 @@ struct SetGameMetadata constexpr char BACKSLASH = '\\'; constexpr char FORWARDSLASH = '/'; std::ranges::replace(executable_path, BACKSLASH, FORWARDSLASH); - config->SetRunningGameMetadata(SConfig::MakeGameID(PathToFileName(executable_path))); + std::string made_game_id = SConfig::MakeGameID(PathToFileName(executable_path)); + config->SetRunningGameMetadata(made_game_id); + config->SetElfDolID(made_game_id); Host_TitleChanged(); diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index 39dbc6d39a..0e1f87e96a 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -61,6 +61,7 @@ struct SConfig const std::string GetGameID() const; const std::string GetGameTDBID() const; + const std::string GetGameIDElfDol() const; const std::string GetTitleName() const; const std::string GetTitleDescription() const; u64 GetTitleID() const; @@ -70,6 +71,8 @@ struct SConfig void SetRunningGameMetadata(const IOS::ES::TMDReader& tmd, DiscIO::Platform platform); void SetRunningGameMetadata(const std::string& game_id); + void SetElfDolID(const std::string& game_id); + // Triggered when Dolphin loads a title directly // Reloads title-specific map files, patches, etc. static void OnTitleDirectlyBooted(const Core::CPUThreadGuard& guard); @@ -125,6 +128,7 @@ private: mutable std::recursive_mutex m_metadata_lock; std::string m_game_id; + std::string m_game_id_elf_dol; std::string m_gametdb_id; std::string m_title_name; std::string m_title_description; diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 1e423a8aa6..ce6ea0675b 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -85,6 +85,9 @@ void HiresTexture::Update() } const std::string& game_id = SConfig::GetInstance().GetGameID(); + const std::string& game_id_elf_dol = SConfig::GetInstance().GetGameIDElfDol(); + OSD::AddMessage(fmt::format("Game ID '{}' used to load textures", game_id), 10000); + OSD::AddMessage(fmt::format("ELF/DOL Game ID '{}'", game_id_elf_dol), 10000); const std::set texture_directories = GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); constexpr auto extensions = std::to_array({".png", ".dds"}); From 8904117bebc7eefb9b6cb60db4d6d410db0755c1 Mon Sep 17 00:00:00 2001 From: cbartondock Date: Tue, 3 Mar 2026 11:40:26 -0800 Subject: [PATCH 2/5] use elf id if set otherwise use dol id --- Source/Core/Core/ConfigManager.cpp | 1 + Source/Core/VideoCommon/HiresTextures.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 14934a42ac..d48880fe3f 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -164,6 +164,7 @@ void SConfig::ResetRunningGameMetadata() { std::lock_guard lock(m_metadata_lock); SetRunningGameMetadata("00000000", "", 0, 0, DiscIO::Region::Unknown); + SetElfDolID(""); } void SConfig::SetRunningGameMetadata(const DiscIO::Volume& volume, diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index ce6ea0675b..8be71fa749 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -88,8 +88,12 @@ void HiresTexture::Update() const std::string& game_id_elf_dol = SConfig::GetInstance().GetGameIDElfDol(); OSD::AddMessage(fmt::format("Game ID '{}' used to load textures", game_id), 10000); OSD::AddMessage(fmt::format("ELF/DOL Game ID '{}'", game_id_elf_dol), 10000); + + + // If there is an elf/dol id, use that. Otherwise, fallback to the game id. const std::set texture_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); + GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id_elf_dol.length() > 0 ? game_id_elf_dol : game_id); + constexpr auto extensions = std::to_array({".png", ".dds"}); for (const auto& texture_directory : texture_directories) From 543c1afa64e7da24e7df02dadd1c5870773cf2c5 Mon Sep 17 00:00:00 2001 From: cbartondock Date: Tue, 3 Mar 2026 14:04:04 -0800 Subject: [PATCH 3/5] linting --- Source/Core/Core/ConfigManager.cpp | 1 - Source/Core/VideoCommon/HiresTextures.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index d48880fe3f..ce95664776 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -265,7 +265,6 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::stri DolphinAnalytics::Instance().ReportGameStart(); } - void SConfig::SetElfDolID(const std::string& game_id) { std::lock_guard lock(m_metadata_lock); diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 8be71fa749..9b4c662f3a 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -89,10 +89,10 @@ void HiresTexture::Update() OSD::AddMessage(fmt::format("Game ID '{}' used to load textures", game_id), 10000); OSD::AddMessage(fmt::format("ELF/DOL Game ID '{}'", game_id_elf_dol), 10000); - // If there is an elf/dol id, use that. Otherwise, fallback to the game id. const std::set texture_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id_elf_dol.length() > 0 ? game_id_elf_dol : game_id); + GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), + game_id_elf_dol.length() > 0 ? game_id_elf_dol : game_id); constexpr auto extensions = std::to_array({".png", ".dds"}); From 65c11db1f117f03640a9ae5b354b7532b8934622 Mon Sep 17 00:00:00 2001 From: cbartondock Date: Tue, 3 Mar 2026 17:34:18 -0800 Subject: [PATCH 4/5] combine log messages --- Source/Core/VideoCommon/HiresTextures.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 9b4c662f3a..fc845837e5 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -86,13 +86,10 @@ void HiresTexture::Update() const std::string& game_id = SConfig::GetInstance().GetGameID(); const std::string& game_id_elf_dol = SConfig::GetInstance().GetGameIDElfDol(); - OSD::AddMessage(fmt::format("Game ID '{}' used to load textures", game_id), 10000); - OSD::AddMessage(fmt::format("ELF/DOL Game ID '{}'", game_id_elf_dol), 10000); // If there is an elf/dol id, use that. Otherwise, fallback to the game id. - const std::set texture_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), - game_id_elf_dol.length() > 0 ? game_id_elf_dol : game_id); + const std::set texture_directories = GetTextureDirectoriesWithGameId( + File::GetUserPath(D_HIRESTEXTURES_IDX), game_id_elf_dol.empty() ? game_id : game_id_elf_dol); constexpr auto extensions = std::to_array({".png", ".dds"}); @@ -148,16 +145,12 @@ void HiresTexture::Update() } } - if (g_ActiveConfig.bCacheHiresTextures) - { - OSD::AddMessage(fmt::format("Loading '{}' custom textures", s_hires_texture_cache.size()), - 10000); - } - else - { - OSD::AddMessage( - fmt::format("Found '{}' custom textures", s_hires_texture_id_to_arbmipmap.size()), 10000); - } + const auto message = + fmt::format("{} '{}' custom textures for {} '{}'", + g_ActiveConfig.bCacheHiresTextures ? "Preloading" : "Found", + s_hires_texture_cache.size(), game_id_elf_dol.empty() ? "Game" : "ELF/DOL", + game_id_elf_dol.empty() ? game_id : game_id_elf_dol); + OSD::AddMessage(message, 10000); } void HiresTexture::Clear() From c3892ff5f2dc6e25c7303a0999defcbb3eb6354d Mon Sep 17 00:00:00 2001 From: cbartondock Date: Tue, 3 Mar 2026 19:19:09 -0800 Subject: [PATCH 5/5] add handling for dynamic input textures to use elf/dol id also --- Source/Core/InputCommon/DynamicInputTextureManager.cpp | 5 +++-- Source/Core/VideoCommon/HiresTextures.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp index be5c963409..af4d10d9c6 100644 --- a/Source/Core/InputCommon/DynamicInputTextureManager.cpp +++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp @@ -25,8 +25,9 @@ void DynamicInputTextureManager::Load() m_configuration.clear(); const std::string& game_id = SConfig::GetInstance().GetGameID(); - const std::set dynamic_input_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_DYNAMICINPUT_IDX), game_id); + const std::string& game_id_elf_dol = SConfig::GetInstance().GetGameIDElfDol(); + const std::set dynamic_input_directories = GetTextureDirectoriesWithGameId( + File::GetUserPath(D_DYNAMICINPUT_IDX), game_id_elf_dol.empty() ? game_id : game_id_elf_dol); for (const auto& dynamic_input_directory : dynamic_input_directories) { diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index fc845837e5..93bc088e70 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -148,7 +148,7 @@ void HiresTexture::Update() const auto message = fmt::format("{} '{}' custom textures for {} '{}'", g_ActiveConfig.bCacheHiresTextures ? "Preloading" : "Found", - s_hires_texture_cache.size(), game_id_elf_dol.empty() ? "Game" : "ELF/DOL", + s_hires_texture_cache.size(), game_id_elf_dol.empty() ? "game" : "elf/dol", game_id_elf_dol.empty() ? game_id : game_id_elf_dol); OSD::AddMessage(message, 10000); }