From 737152f9efb24917ee1f42aad04171ec6473f54f Mon Sep 17 00:00:00 2001 From: LunaMoo Date: Sat, 27 May 2017 20:49:40 +0200 Subject: [PATCH] Try using first screenshot as an icon if no icon is present. --- UI/GameInfoCache.cpp | 45 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/UI/GameInfoCache.cpp b/UI/GameInfoCache.cpp index ec8f803060..f619305473 100644 --- a/UI/GameInfoCache.cpp +++ b/UI/GameInfoCache.cpp @@ -421,8 +421,16 @@ public: std::lock_guard lock(info_->lock); pbp.GetSubFileAsString(PBP_ICON0_PNG, &info_->icon.data); } else { - // Read standard icon - ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); + std::string screenshot_jpg = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.jpg"; + std::string screenshot_png = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.png"; + // Try using png/jpg screenshots first + if (File::Exists(screenshot_png)) + readFileToString(false, screenshot_png.c_str(), info_->icon.data); + else if (File::Exists(screenshot_jpg)) + readFileToString(false, screenshot_jpg.c_str(), info_->icon.data); + else + // Read standard icon + ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); } info_->icon.dataLoaded = true; @@ -459,11 +467,21 @@ handleELF: info_->paramSFOLoaded = true; } - - // Read standard icon - DEBUG_LOG(LOADER, "Loading unknown.png because there was an ELF"); - ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); - info_->icon.dataLoaded = true; + { + std::string screenshot_jpg = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.jpg"; + std::string screenshot_png = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.png"; + // Try using png/jpg screenshots first + if (File::Exists(screenshot_png)) + readFileToString(false, screenshot_png.c_str(), info_->icon.data); + else if (File::Exists(screenshot_jpg)) + readFileToString(false, screenshot_jpg.c_str(), info_->icon.data); + else { + // Read standard icon + DEBUG_LOG(LOADER, "Loading unknown.png because there was an ELF"); + ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); + } + info_->icon.dataLoaded = true; + } break; case IdentifiedFileType::PSP_SAVEDATA_DIRECTORY: @@ -570,8 +588,17 @@ handleELF: // Fall back to unknown icon if ISO is broken/is a homebrew ISO, override is allowed though if (!ReadFileToString(&umd, "/PSP_GAME/ICON0.PNG", &info_->icon.data, &info_->lock)) { - DEBUG_LOG(LOADER, "Loading unknown.png because no icon was found"); - ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); + std::string screenshot_jpg = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.jpg"; + std::string screenshot_png = GetSysDirectory(DIRECTORY_SCREENSHOT) + info_->id + "_00000.png"; + // Try using png/jpg screenshots first + if (File::Exists(screenshot_png)) + readFileToString(false, screenshot_png.c_str(), info_->icon.data); + else if (File::Exists(screenshot_jpg)) + readFileToString(false, screenshot_jpg.c_str(), info_->icon.data); + else { + DEBUG_LOG(LOADER, "Loading unknown.png because no icon was found"); + ReadVFSToString("unknown.png", &info_->icon.data, &info_->lock); + } } info_->icon.dataLoaded = true; break;