From 0b35fe863bdba861a0bdb40255c77ff66dfcdcab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Mon, 2 Nov 2026 19:54:57 +0100 Subject: [PATCH] More UI cleanup --- Common/UI/PopupScreens.cpp | 2 +- Core/ELF/PrxDecrypter.cpp | 23 +++++------ Core/HLE/sceKernelModule.cpp | 4 +- UI/GameButton.cpp | 79 ++++++++++++++++++++---------------- 4 files changed, 56 insertions(+), 52 deletions(-) diff --git a/Common/UI/PopupScreens.cpp b/Common/UI/PopupScreens.cpp index 6450eff1bc..9c49c9f7a0 100644 --- a/Common/UI/PopupScreens.cpp +++ b/Common/UI/PopupScreens.cpp @@ -23,7 +23,7 @@ static void TextToImage(std::string_view buttonText, ImageID *image) { if (buttonText == di->T("Delete") || buttonText == di->T("Move to trash")) { *image = ImageID("I_TRASHCAN"); } else if (buttonText == di->T("Back")) { - *image = ImageID("I_NAVIGATE_BACK"); + *image = ImageID("I_CHEVRON_LEFT"); } else if (buttonText == di->T("Add")) { *image = ImageID("I_PLUS"); } else if (buttonText == di->T("OK")) { diff --git a/Core/ELF/PrxDecrypter.cpp b/Core/ELF/PrxDecrypter.cpp index ebe91b6cb1..6fb0c69668 100644 --- a/Core/ELF/PrxDecrypter.cpp +++ b/Core/ELF/PrxDecrypter.cpp @@ -923,7 +923,7 @@ static bool KirkOutputFits(const KIRK_CMD1_ECDSA_HEADER *header, u32 size) { } static int pspDecryptType0(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) { - DEBUG_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 0)", (u32)*(u32_le *)&inbuf[0xD0]); const auto decryptSize = *(s32_le*)&inbuf[0xB0]; const auto pti = GetTagInfo((u32)*(u32_le *)&inbuf[0xD0]); @@ -985,9 +985,8 @@ static int pspDecryptType0(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 siz return decryptSize; } -static int pspDecryptType1(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) -{ - INFO_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); +static int pspDecryptType1(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) { + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 1)", (u32)*(u32_le *)&inbuf[0xD0]); const auto decryptSize = *(s32_le*)&inbuf[0xB0]; const auto pti = GetTagInfo((u32)*(u32_le *)&inbuf[0xD0]); @@ -1045,9 +1044,8 @@ static int pspDecryptType1(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 siz return decryptSize; } -static int pspDecryptType2(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) -{ - INFO_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); +static int pspDecryptType2(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) { + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 2)", (u32)*(u32_le *)&inbuf[0xD0]); const auto decryptSize = *(s32_le*)&inbuf[0xB0]; const auto pti = GetTagInfo2((u32)*(u32_le *)&inbuf[0xD0]); @@ -1165,9 +1163,8 @@ static int pspFinishType5(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size return decryptSize; } -static int pspDecryptType5(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size, const u8 *seed) - { - INFO_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); +static int pspDecryptType5(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size, const u8 *seed) { + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 5)", (u32)*(u32_le *)&inbuf[0xD0]); const auto pti = GetTagInfo2((u32)*(u32_le *)&inbuf[0xD0]); if (!pti) @@ -1206,7 +1203,7 @@ static int pspDecryptType3(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 siz { return -1; } - INFO_LOG(Log::Loader, "Decrypting tag %08X", (u32)*(u32_le *)&inbuf[0xD0]); + DEBUG_LOG(Log::Loader, "Decrypting tag %08X (type 3)", (u32)*(u32_le *)&inbuf[0xD0]); auto xorbuf = expandSeed(pti->key, pti->code, secureId); PRXType5 type5(inbuf); @@ -1221,7 +1218,7 @@ static int pspDecryptType3(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 siz static int pspDecryptType6(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) { - INFO_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 6)", (u32)*(u32_le *)&inbuf[0xD0]); const auto decryptSize = *(s32_le*)&inbuf[0xB0]; const auto pti = GetTagInfo2((u32)*(u32_le *)&inbuf[0xD0]); @@ -1297,7 +1294,7 @@ static int pspDecryptType6(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 siz // type 6 writes its tail there. static int pspDecryptType9(KirkState *kirk, const u8 *inbuf, u8 *outbuf, u32 size) { - INFO_LOG(Log::Loader, "Decrypting tag %02X", (u32)*(u32_le *)&inbuf[0xD0]); + DEBUG_LOG(Log::Loader, "Decrypting tag %02X (type 9)", (u32)*(u32_le *)&inbuf[0xD0]); const auto decryptSize = *(s32_le*)&inbuf[0xB0]; const auto pti = GetTagInfo2((u32)*(u32_le *)&inbuf[0xD0]); diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index 6b21faed0d..4c1c8bc701 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -850,7 +850,7 @@ void ImportVarSymbol(WriteVarSymbolState &state, const VarSymbolImport &var) { } // It hasn't been exported yet, but hopefully it will later. - INFO_LOG(Log::Loader, "Variable (%s,%08x) unresolved, storing for later resolving", var.moduleName, var.nid); + DEBUG_LOG(Log::Loader, "Variable (%s,%08x) unresolved, storing for later resolving", var.moduleName, var.nid); } void ExportVarSymbol(const VarSymbolExport &var) { @@ -945,7 +945,7 @@ void ImportFuncSymbol(const FuncSymbolImport &func, bool reimporting, const char // We used to report this, but I don't think it's very interesting anymore. WARN_LOG(Log::Loader, "Unknown syscall from known HLE module '%s': 0x%08x (import for '%s')", func.moduleName, func.nid, importingModule); } else { - INFO_LOG(Log::Loader, "Function (%s,%08x) unresolved in '%s', storing for later resolving", func.moduleName, func.nid, importingModule); + DEBUG_LOG(Log::Loader, "Function (%s,%08x) unresolved in '%s', storing for later resolving", func.moduleName, func.nid, importingModule); } if (shouldHLE || !reimporting) { diff --git a/UI/GameButton.cpp b/UI/GameButton.cpp index 452bcd2e5f..567ad237af 100644 --- a/UI/GameButton.cpp +++ b/UI/GameButton.cpp @@ -204,7 +204,6 @@ void GameButton::Draw(UIContext &dc) { } } - u32 color = 0, shadowColor = 0; using namespace UI; UI::Style style = dc.GetTheme().itemStyle; @@ -232,71 +231,79 @@ void GameButton::Draw(UIContext &dc) { } const float textX = ListTextX(viewMode_); - if (texture && ginfo) { - color = whiteAlpha(ease((time_now_d() - ginfo->icon.timeLoaded) * 2)); - shadowColor = blackAlpha(ease((time_now_d() - ginfo->icon.timeLoaded) * 2)); - float tw = texture->Width(); - float th = texture->Height(); - - // Adjust position so we don't stretch the image vertically or horizontally. - // Make sure it's not wider than 144 (like Doom Legacy homebrew), ugly in the grid mode. - float nw = std::min(iconBounds.h * tw / th, (float)iconBounds.w); - iconBounds.x += (iconBounds.w - nw) / 2.0f; - iconBounds.w = nw; - } - - int txOffset = down_ ? 4 : 0; - if (viewMode_ != GameBrowserViewMode::GRID) { - txOffset = 0; + int iconYOffset = 0; + if (viewMode_ == GameBrowserViewMode::GRID && down_) { + iconYOffset = 4; } Bounds overlayBounds = bounds_; // Render the icon, all modes have this. - int dropsize = 10; if (texture) { + float alpha = 1.0f; + float dropsize = 10; + + if (ginfo) { + float loadPhase = ease((time_now_d() - ginfo->icon.timeLoaded) * 2); + + loadPhase = 0.0f; + + alpha = loadPhase; + + float tw = texture->Width(); + float th = texture->Height(); + // Adjust position so we don't stretch the image vertically or horizontally. + // Make sure it's not wider than 144 (like Doom Legacy homebrew), ugly in the grid mode. + float nw = std::min(iconBounds.h * tw / th, (float)iconBounds.w); + iconBounds.x += (iconBounds.w - nw) / 2.0f; + iconBounds.w = nw; + } + if (viewMode_ == GameBrowserViewMode::LIST) { iconBounds.x += 4; } - if (txOffset) { + + if (iconYOffset) { + // Button pressed, move the icon down a bit and reduce the shadow. dropsize = 3; - iconBounds.y += txOffset * 2; - overlayBounds.y += txOffset * 2; + iconBounds.y += iconYOffset * 2; + overlayBounds.y += iconYOffset * 2; } + if (HasFocus()) { dc.Draw()->Flush(); dc.RebindTexture(); float pulse = sin(time_now_d() * 7.0) * 0.25 + 0.8; - dc.DrawRectDropShadow(iconBounds, 10.0f, pulse, alphaMul(color, pulse)); + dc.DrawRectDropShadow(iconBounds, 10.0f, pulse, style.fgColor); dc.Draw()->Flush(); } else { dc.Draw()->Flush(); dc.RebindTexture(); - dc.DrawRectDropShadow(iconBounds, 8.0f, 0.7f, shadowColor); - // dc.Draw()->DrawImage4Grid(dc.GetTheme().dropShadow4Grid, x - dropsize, y - dropsize * 0.5f, x + w + dropsize, y + h + dropsize * 1.5, alphaMul(shadowColor, 0.5f), 1.0f); + dc.DrawRectDropShadow(iconBounds, 8.0f, 0.7f, 0); dc.Draw()->Flush(); } dc.Draw()->Flush(); dc.GetDrawContext()->BindTexture(0, texture); - dc.Draw()->DrawTexRect(iconBounds, 0, 0, 1, 1, color); + dc.Draw()->DrawTexRect(iconBounds, 0, 0, 1, 1, 0xFFFFFFFF); dc.Draw()->Flush(); } - if (viewMode_ == GameBrowserViewMode::GRID && g_Config.bShowIDOnGameIcon && fileType != IdentifiedFileType::PSP_ELF && !id_version.empty()) { - std::string_view idStr = id_version; - if (fileType == IdentifiedFileType::PSP_SAVEDATA_DIRECTORY) { - auto ga = GetI18NCategory(I18NCat::GAME); - idStr = ga->T("SaveData"); - } - dc.SetFontScale(0.5f * g_Config.fGameGridScale, 0.5f * g_Config.fGameGridScale); - dc.DrawText(idStr, bounds_.x + 5, iconBounds.y + 1, 0xFF000000, ALIGN_TOPLEFT); - dc.DrawText(idStr, bounds_.x + 4, iconBounds.y, dc.GetTheme().infoStyle.fgColor, ALIGN_TOPLEFT); - dc.SetFontScale(1.0f, 1.0f); - } if (viewMode_ == GameBrowserViewMode::GRID) { + if (g_Config.bShowIDOnGameIcon && fileType != IdentifiedFileType::PSP_ELF && !id_version.empty()) { + std::string_view idStr = id_version; + if (fileType == IdentifiedFileType::PSP_SAVEDATA_DIRECTORY) { + auto ga = GetI18NCategory(I18NCat::GAME); + idStr = ga->T("SaveData"); + } + dc.SetFontScale(0.5f * g_Config.fGameGridScale, 0.5f * g_Config.fGameGridScale); + dc.DrawText(idStr, bounds_.x + 5, iconBounds.y + 1, 0xFF000000, ALIGN_TOPLEFT); + dc.DrawText(idStr, bounds_.x + 4, iconBounds.y, dc.GetTheme().infoStyle.fgColor, ALIGN_TOPLEFT); + dc.SetFontScale(1.0f, 1.0f); + } + if (imageIcon.isValid()) { Bounds bounds = bounds_;