From b5022ea839fef90bb856580829580614450073ff Mon Sep 17 00:00:00 2001 From: souldbminersmwc Date: Tue, 23 Dec 2025 19:10:41 -0500 Subject: [PATCH] v0.18 --- Source/sys-clk/common/include/sysclk/board.h | 5 +- Source/sys-clk/common/include/sysclk/config.h | 12 - .../overlay/lib/libultrahand/README.md | 4 +- .../libtesla/include/stb_truetype.h | 119 +- .../libultrahand/libtesla/include/tesla.hpp | 4874 ++++++++++------- .../include/{audio_player.hpp => audio.hpp} | 9 +- .../libultra/include/debug_funcs.hpp | 2 +- .../libultra/include/download_funcs.hpp | 2 +- .../libultra/include/get_funcs.hpp | 2 +- .../libultra/include/global_vars.hpp | 21 +- .../libultrahand/libultra/include/haptics.hpp | 8 +- .../libultra/include/hex_funcs.hpp | 5 +- .../libultra/include/ini_funcs.hpp | 34 +- .../libultra/include/json_funcs.hpp | 3 +- .../libultra/include/list_funcs.hpp | 6 +- .../libultra/include/mod_funcs.hpp | 2 +- .../libultra/include/path_funcs.hpp | 17 +- .../libultra/include/string_funcs.hpp | 6 +- .../libultra/include/tsl_utils.hpp | 177 +- .../libultrahand/libultra/include/ultra.hpp | 4 +- .../source/{audio_player.cpp => audio.cpp} | 104 +- .../libultra/source/debug_funcs.cpp | 9 + .../libultra/source/download_funcs.cpp | 46 +- .../libultra/source/get_funcs.cpp | 2 +- .../libultra/source/global_vars.cpp | 20 +- .../libultrahand/libultra/source/haptics.cpp | 225 +- .../libultra/source/hex_funcs.cpp | 255 +- .../libultra/source/ini_funcs.cpp | 1130 ++-- .../libultra/source/json_funcs.cpp | 2 +- .../libultra/source/list_funcs.cpp | 57 +- .../libultra/source/mod_funcs.cpp | 2 +- .../libultra/source/path_funcs.cpp | 1089 ++-- .../libultra/source/string_funcs.cpp | 61 +- .../libultra/source/tsl_utils.cpp | 621 ++- .../overlay/src/ui/gui/app_profile_gui.cpp | 21 + .../overlay/src/ui/gui/app_profile_gui.h | 1 + .../sys-clk/overlay/src/ui/gui/base_gui.cpp | 1 - .../src/ui/gui/global_override_gui.cpp | 26 + .../overlay/src/ui/gui/global_override_gui.h | 2 +- .../sys-clk/overlay/src/ui/gui/misc_gui.cpp | 2 - Source/sys-clk/sys-clk.zip | Bin 0 -> 1201928 bytes .../sys-clk/sysmodule/src/clock_manager.cpp | 94 +- .../contents/00FF0000636C6BFF/exefs.nsp | Bin 199531 -> 199973 bytes 43 files changed, 5143 insertions(+), 3939 deletions(-) rename Source/sys-clk/overlay/lib/libultrahand/libultra/include/{audio_player.hpp => audio.hpp} (95%) rename Source/sys-clk/overlay/lib/libultrahand/libultra/source/{audio_player.cpp => audio.cpp} (87%) create mode 100644 Source/sys-clk/sys-clk.zip diff --git a/Source/sys-clk/common/include/sysclk/board.h b/Source/sys-clk/common/include/sysclk/board.h index 8462993f..b1ba08c6 100644 --- a/Source/sys-clk/common/include/sysclk/board.h +++ b/Source/sys-clk/common/include/sysclk/board.h @@ -76,6 +76,7 @@ typedef enum SysClkModule_CPU = 0, SysClkModule_GPU, SysClkModule_MEM, + HorizonOCModule_Governor, SysClkModule_EnumMax, } SysClkModule; @@ -129,8 +130,10 @@ static inline const char* sysclkFormatModule(SysClkModule module, bool pretty) return pretty ? "GPU" : "gpu"; case SysClkModule_MEM: return pretty ? "Memory" : "mem"; + case HorizonOCModule_Governor: + return pretty ? "Governor" : "gov"; default: - return NULL; + return "null"; } } diff --git a/Source/sys-clk/common/include/sysclk/config.h b/Source/sys-clk/common/include/sysclk/config.h index 51491ae8..4bbc6ac2 100644 --- a/Source/sys-clk/common/include/sysclk/config.h +++ b/Source/sys-clk/common/include/sysclk/config.h @@ -50,9 +50,6 @@ typedef enum { HocClkConfigValue_ThermalThrottle, HocClkConfigValue_ThermalThrottleThreshold, - HocClkConfigValue_HandheldGovernor, - HocClkConfigValue_DockedGovernor, - HocClkConfigValue_HandheldTDP, HocClkConfigValue_HandheldTDPLimit, @@ -212,11 +209,6 @@ static inline const char* sysclkFormatConfigValue(SysClkConfigValue val, bool pr case HocClkConfigValue_ThermalThrottleThreshold: return pretty ? "Thermal Throttle Threshold" : "thermal_throttle_threshold"; - case HocClkConfigValue_HandheldGovernor: - return pretty ? "Handheld Governor" : "governor"; - case HocClkConfigValue_DockedGovernor: - return pretty ? "Docked Governor" : "governor_docked"; - case HocClkConfigValue_HandheldTDP: return pretty ? "Handheld TDP" : "handheld_tdp"; @@ -422,8 +414,6 @@ static inline uint64_t sysclkDefaultConfigValue(SysClkConfigValue val) return 1862ULL; case HocClkConfigValue_ThermalThrottle: - case HocClkConfigValue_DockedGovernor: - case HocClkConfigValue_HandheldGovernor: case HocClkConfigValue_HandheldTDP: case HocClkConfigValue_EnforceBoardLimit: case HocClkConfigValue_KipEditing: @@ -464,8 +454,6 @@ static inline uint64_t sysclkValidConfigValue(SysClkConfigValue val, uint64_t in case HocClkConfigValue_UncappedClocks: case HocClkConfigValue_OverwriteBoostMode: case HocClkConfigValue_ThermalThrottle: - case HocClkConfigValue_DockedGovernor: - case HocClkConfigValue_HandheldGovernor: case HocClkConfigValue_HandheldTDP: case HocClkConfigValue_EnforceBoardLimit: case HocClkConfigValue_KipEditing: diff --git a/Source/sys-clk/overlay/lib/libultrahand/README.md b/Source/sys-clk/overlay/lib/libultrahand/README.md index 26492baa..6863e166 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/README.md +++ b/Source/sys-clk/overlay/lib/libultrahand/README.md @@ -78,7 +78,7 @@ Together, these flags (-ffunction-sections, -fdata-sections, -Wl,--gc-sections, - [Status Monitor Overlay](https://github.com/ppkantorski/Status-Monitor-Overlay) -- [Edizon Overlay](https://github.com/ppkantorski/EdiZon-Overlay) +- [Edizon Overlay](https://github.com/proferabg/EdiZon-Overlay) - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) @@ -208,4 +208,4 @@ Contributions are welcome! If you have any ideas, suggestions, or bug reports, p This project is licensed and distributed under [GPLv2](LICENSE) with a [custom library](libultra) utilizing [CC-BY-4.0](SUB_LICENSE). -Copyright (c) 2024 ppkantorski +Copyright (c) 2023-2025 ppkantorski diff --git a/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/stb_truetype.h b/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/stb_truetype.h index 392ca11d..04c154f5 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/stb_truetype.h +++ b/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/stb_truetype.h @@ -1520,140 +1520,85 @@ static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, in // Force inline for maximum performance static inline int stbtt_FindGlyphIndex_impl(stbtt_uint8 *data, stbtt_uint32 index_map, int unicode_codepoint) { - // Read format once - single memory access stbtt_uint16 format = FAST_USHORT(data + index_map); + stbtt_uint32 uc = (stbtt_uint32)unicode_codepoint; - // Variables used across multiple cases or frequently in loops - stbtt_uint32 low, high, mid; - stbtt_uint8 *group; - stbtt_uint32 start_char, end_char; - stbtt_uint32 uc; - - // Switch for jump table optimization switch (format) { - case 4: { // Windows fonts - most common - // Early exit for out-of-range Unicode - if ((unsigned)unicode_codepoint > 0xffff) return 0; + case 4: { + if (uc > 0xffff) return 0; - // Cache all header values in one go - burst read stbtt_uint8 *header = data + index_map; stbtt_uint16 segcount = FAST_USHORT(header + 6) >> 1; - stbtt_uint16 searchRange = FAST_USHORT(header + 8) >> 1; - stbtt_uint16 entrySelector = FAST_USHORT(header + 10); stbtt_uint16 rangeShift = FAST_USHORT(header + 12) >> 1; - - // Optimized binary search with fewer memory accesses stbtt_uint32 endCount = index_map + 14; stbtt_uint32 search = endCount; - // Use the precomputed rangeShift for initial jump - if (unicode_codepoint >= FAST_USHORT(data + search + (rangeShift << 1))) + if (uc >= (stbtt_uint16)FAST_USHORT(data + search + (rangeShift << 1))) search += rangeShift << 1; search -= 2; + stbtt_uint16 entrySelector = FAST_USHORT(header + 10); + stbtt_uint16 searchRange = FAST_USHORT(header + 8) >> 1; - // Unrolled binary search - most critical path while (entrySelector) { searchRange >>= 1; stbtt_uint32 test_pos = search + (searchRange << 1); - if (unicode_codepoint > FAST_USHORT(data + test_pos)) + if (uc > (stbtt_uint16)FAST_USHORT(data + test_pos)) search = test_pos; --entrySelector; } search += 2; stbtt_uint16 item = (stbtt_uint16)((search - endCount) >> 1); + stbtt_uint32 base = index_map + 14; - // Calculate all offsets upfront - better instruction scheduling - stbtt_uint32 base1 = index_map + 14; - stbtt_uint32 startCode_offset = base1 + (segcount << 1) + 2 + (item << 1); - stbtt_uint32 endCode_offset = endCount + (item << 1); - stbtt_uint32 idRangeOffset_offset = base1 + (segcount * 6) + 2 + (item << 1); + stbtt_uint16 start = FAST_USHORT(data + base + (segcount << 1) + 2 + (item << 1)); + stbtt_uint16 end = FAST_USHORT(data + endCount + (item << 1)); - stbtt_uint16 start = FAST_USHORT(data + startCode_offset); - stbtt_uint16 end = FAST_USHORT(data + endCode_offset); - - // Single comparison using unsigned arithmetic trick - if ((unsigned)(unicode_codepoint - start) > (unsigned)(end - start)) + if ((stbtt_uint32)(uc - start) > (stbtt_uint32)(end - start)) return 0; - stbtt_uint16 offset = FAST_USHORT(data + idRangeOffset_offset); - if (offset == 0) { - stbtt_uint32 idDelta_offset = base1 + (segcount << 2) + 2 + (item << 1); - return (stbtt_uint16)(unicode_codepoint + FAST_SHORT(data + idDelta_offset)); - } + stbtt_uint16 offset = FAST_USHORT(data + base + (segcount * 6) + 2 + (item << 1)); + if (offset == 0) + return (stbtt_uint16)(uc + FAST_SHORT(data + base + (segcount << 2) + 2 + (item << 1))); - return FAST_USHORT(data + offset + ((unicode_codepoint - start) << 1) + idRangeOffset_offset); + return FAST_USHORT(data + offset + ((uc - start) << 1) + base + (segcount * 6) + 2 + (item << 1)); } - case 12: { // 32-bit format - stbtt_uint32 ngroups = FAST_ULONG(data + index_map + 12); - uc = (stbtt_uint32)unicode_codepoint; - - // Optimized binary search with minimal memory access - low = 0; high = ngroups; + case 12: + case 13: { + stbtt_uint32 low = 0, high = FAST_ULONG(data + index_map + 12); stbtt_uint8 *groups_base = data + index_map + 16; while (low < high) { - mid = (low + high) >> 1; - group = groups_base + (mid * 12); + stbtt_uint32 mid = (low + high) >> 1; + stbtt_uint8 *group = groups_base + (mid * 12); + stbtt_uint32 start_char = FAST_ULONG(group); - start_char = FAST_ULONG(group); if (uc < start_char) { high = mid; + } else if (uc <= FAST_ULONG(group + 4)) { + stbtt_uint32 start_glyph = FAST_ULONG(group + 8); + return (format == 12) ? (start_glyph + uc - start_char) : start_glyph; } else { - end_char = FAST_ULONG(group + 4); - if (uc <= end_char) { - stbtt_uint32 start_glyph = FAST_ULONG(group + 8); - return start_glyph + uc - start_char; - } low = mid + 1; } } return 0; } - case 13: { // 32-bit format, many-to-one mapping - stbtt_uint32 ngroups = FAST_ULONG(data + index_map + 12); - uc = (stbtt_uint32)unicode_codepoint; - - low = 0; high = ngroups; - stbtt_uint8 *groups_base = data + index_map + 16; - - while (low < high) { - mid = (low + high) >> 1; - group = groups_base + (mid * 12); - - start_char = FAST_ULONG(group); - if (uc < start_char) { - high = mid; - } else { - end_char = FAST_ULONG(group + 4); - if (uc <= end_char) { - return FAST_ULONG(group + 8); // Same glyph for all chars in range - } - low = mid + 1; - } - } - return 0; - } + case 0: + return (uc < (stbtt_uint32)(FAST_USHORT(data + index_map + 2) - 6)) ? + data[index_map + 6 + uc] : 0; - case 0: { // Apple byte encoding - simple and fast - stbtt_int32 bytes = FAST_USHORT(data + index_map + 2); - return ((unsigned)unicode_codepoint < (unsigned)(bytes - 6)) ? - data[index_map + 6 + unicode_codepoint] : 0; - } - - case 6: { // Trimmed table mapping - stbtt_uint32 first = FAST_USHORT(data + index_map + 6); - stbtt_uint32 count = FAST_USHORT(data + index_map + 8); - uc = (stbtt_uint32)unicode_codepoint; - stbtt_uint32 offset = uc - first; - return (offset < count) ? FAST_USHORT(data + index_map + 10 + (offset << 1)) : 0; + case 6: { + stbtt_uint32 offset = uc - FAST_USHORT(data + index_map + 6); + return (offset < (stbtt_uint32)FAST_USHORT(data + index_map + 8)) ? + FAST_USHORT(data + index_map + 10 + (offset << 1)) : 0; } default: - return 0; // Unsupported format + return 0; } } diff --git a/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/tesla.hpp b/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/tesla.hpp index 2bcc7b72..546ea636 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/tesla.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libtesla/include/tesla.hpp @@ -15,7 +15,7 @@ * Note: Please be aware that this notice cannot be altered or removed. It is a part * of the project's documentation and must remain intact. * - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ /** @@ -135,11 +135,11 @@ struct KeyPairEqual { u8 TeslaFPS = 60; //u8 alphabackground = 0xD; -volatile bool triggerExitNow = false; -volatile bool isRendering = false; -volatile bool delayUpdate = false; -volatile bool pendingExit = false; -volatile bool wasRendering = false; +std::atomic triggerExitNow{false}; +std::atomic isRendering{false}; +std::atomic delayUpdate{false}; +std::atomic pendingExit{false}; +std::atomic wasRendering{false}; LEvent renderingStopEvent; bool FullMode = true; @@ -172,7 +172,7 @@ inline std::atomic jumpToBottom{false}; inline std::atomic skipUp{false}; inline std::atomic skipDown{false}; inline u32 offsetWidthVar = 112; -inline std::string g_overlayFilename;; +//inline std::string g_overlayFilename;; inline std::string lastOverlayFilename; inline std::string lastOverlayMode; @@ -207,9 +207,11 @@ inline std::atomic triggerSettingsSound{false}; inline std::atomic triggerMoveSound{false}; inline std::atomic disableSound{false}; //inline std::atomic clearSoundCacheNow{false}; +inline std::atomic reloadIfDockedChangedNow{false}; inline std::atomic reloadSoundCacheNow{false}; // Haptic triggering variables +inline std::atomic triggerInitHaptics{false}; inline std::atomic triggerRumbleClick{false}; inline std::atomic triggerRumbleDoubleClick{false}; @@ -230,6 +232,107 @@ static inline void triggerExitFeedback() { } +/** + * @brief Checks if an NRO file uses new libnx (has LNY2 tag). + * + * @param filePath The path to the NRO file. + * @return true if the file uses new libnx (LNY2 present), false otherwise. + */ +static inline bool usingLNY2(const std::string& filePath) { + FILE* file = fopen(filePath.c_str(), "rb"); + if (!file) + return false; + + // --- Get file size --- + fseek(file, 0, SEEK_END); + const long fileSize = ftell(file); + if (fileSize < (long)(sizeof(NroStart) + sizeof(NroHeader))) { + fclose(file); + return false; + } + const size_t fileSz = (size_t)fileSize; + fseek(file, 0, SEEK_SET); + + // --- Read front chunk (header + MOD0 area) --- + constexpr size_t FRONT_READ_SIZE = 8192; + const size_t frontReadSize = (fileSz < FRONT_READ_SIZE) ? fileSz : FRONT_READ_SIZE; + uint8_t* frontBuf = (uint8_t*)malloc(frontReadSize); + if (!frontBuf) { + fclose(file); + return false; + } + + if (fread(frontBuf, 1, frontReadSize, file) != frontReadSize) { + free(frontBuf); + fclose(file); + return false; + } + + // --- Extract offsets directly (no NroHeader copy needed) --- + const uint32_t mod0_rel = *reinterpret_cast(frontBuf + 0x4); + const uint32_t text_offset = *reinterpret_cast(frontBuf + 0x20); + + bool isNew = false; + + // --- MOD0 detection --- + if (text_offset < fileSz && mod0_rel != 0 && text_offset <= fileSz - mod0_rel) { + const uint32_t mod0_offset = text_offset + mod0_rel; + + // --- MOD0 is inside front buffer --- + if (mod0_offset <= frontReadSize - 60) { + const uint8_t* mod0_ptr = frontBuf + mod0_offset; + if (memcmp(mod0_ptr, "MOD0", 4) == 0 && + memcmp(mod0_ptr + 52, "LNY2", 4) == 0) + { + const uint32_t libnx = *reinterpret_cast(mod0_ptr + 56); + isNew = (libnx >= 1); + } + } + // --- MOD0 must be read separately --- + else if (mod0_offset <= fileSz - 60) { + uint8_t mod0Buf[60]; + fseek(file, mod0_offset, SEEK_SET); + if (fread(mod0Buf, 1, 60, file) == 60) { + if (memcmp(mod0Buf, "MOD0", 4) == 0 && + memcmp(mod0Buf + 52, "LNY2", 4) == 0) + { + const uint32_t libnx = *reinterpret_cast(mod0Buf + 56); + isNew = (libnx >= 1); + } + } + } + } + + free(frontBuf); + fclose(file); + return isNew; +} + +/** + * @brief Checks if the current AMS version is at least the specified version. + * + * @param major Minimum major version required + * @param minor Minimum minor version required + * @param patch Minimum patch version required + * @return true if current AMS version >= specified version, false otherwise + */ +static inline bool amsVersionAtLeast(uint8_t major, uint8_t minor, uint8_t patch) { + u64 packed_version; + if (R_FAILED(splGetConfig((SplConfigItem)65000, &packed_version))) { + return false; + } + + return ((packed_version >> 40) & 0xFFFFFF) >= static_cast((major << 16) | (minor << 8) | patch); +} + +static bool requiresLNY2 = false; + + + + + + + namespace tsl { // Booleans @@ -328,7 +431,8 @@ namespace tsl { } } - static bool overrideBackButton = false; // for properly overriding the automatic "go back" functionality of KEY_B button presses + inline bool overrideBackButton = false; // for properly overriding the automatic "go back" functionality of KEY_B button presses + inline bool disableHiding = false; // for manually disabling the hide overlay functionality // Theme color variable definitions //static bool disableColorfulLogo = false; @@ -401,7 +505,8 @@ namespace tsl { static size_t progressAlpha = 7; static Color progressColor = RGB888("253EF7", progressAlpha); - static Color trackBarColor = RGB888("555555"); + static Color scrollBarColor = RGB888("555555"); + static Color scrollBarWallColor = RGB888("AAAAAA"); static size_t separatorAlpha = 15; static Color separatorColor = RGB888("404040", separatorAlpha); @@ -503,7 +608,8 @@ namespace tsl { clickColor = getColor("click_color", clickAlpha); progressAlpha = getAlpha("progress_alpha"); progressColor = getColor("progress_color", progressAlpha); - trackBarColor = getColor("trackbar_color"); + scrollBarColor = getColor("scrollbar_color"); + scrollBarWallColor = getColor("scrollbar_wall_color"); separatorAlpha = getAlpha("separator_alpha"); separatorColor = getColor("separator_color", separatorAlpha); textSeparatorColor = getColor("text_separator_color"); @@ -558,6 +664,8 @@ namespace tsl { std::string UI_PATH = UI_OVERRIDE_PATH; ult::preprocessPath(UI_PATH); + ult::createDirectory(UI_PATH); // create UI override path automatically (when provided) + const std::string NEW_THEME_CONFIG_INI_PATH = UI_PATH+"theme.ini"; const std::string NEW_WALLPAPER_PATH = UI_PATH+"wallpaper.rgba"; @@ -573,10 +681,12 @@ namespace tsl { // Set Ultrahand Globals using loaded section (defaults match initialization function) ult::useLaunchCombos = getBoolValue("launch_combos", true); // TRUE_STR default ult::useNotifications = getBoolValue("notifications", true); // TRUE_STR default - if (ult::useNotifications && !ult::isFile(ult::NOTIFICATIONS_FLAG_FILEPATH)) { - FILE* file = std::fopen((ult::NOTIFICATIONS_FLAG_FILEPATH).c_str(), "w"); - if (file) { - std::fclose(file); + if (ult::useNotifications) { + if (!ult::isFile(ult::NOTIFICATIONS_FLAG_FILEPATH)) { + FILE* file = std::fopen((ult::NOTIFICATIONS_FLAG_FILEPATH).c_str(), "w"); + if (file) { + std::fclose(file); + } } } else { ult::deleteFileOrDirectory(ult::NOTIFICATIONS_FLAG_FILEPATH); @@ -1342,13 +1452,14 @@ namespace tsl { static stbtt_fontinfo* selectFontForCharacter(u32 character) { std::shared_lock lock(s_cacheMutex); - + if (!s_initialized) return nullptr; - + if (stbtt_FindGlyphIndex(s_extFont, character)) { return s_extFont; } else if (s_hasLocalFont && stbtt_FindGlyphIndex(s_localFont, character) != 0) { - return s_localFont; + // Fix: Always fetch degree symbol "°" from the standard Latin font + return (character != 0x00B0) ? s_localFont : s_stdFont; } return s_stdFont; } @@ -1512,7 +1623,8 @@ namespace tsl { if (stbtt_FindGlyphIndex(s_extFont, character)) { return s_extFont; } else if (s_hasLocalFont && stbtt_FindGlyphIndex(s_localFont, character) != 0) { - return s_localFont; + // Fix: Always fetch degree symbol "°" from the standard Latin font + return (character != 0x00B0) ? s_localFont : s_stdFont; } return s_stdFont; } @@ -1776,36 +1888,29 @@ namespace tsl { const u8 red[16], const u8 green[16], const u8 blue[16], const u8 alpha[16], const s32 count) { - // All variables moved outside the loop - const u16* framebuffer = static_cast(this->getCurrentFramebuffer()); - u32 offset; - u8 currentAlpha; - u8 invAlpha; - Color src = {0}, end = {0}; - u32 currentX; + Color* framebuffer = static_cast(this->getCurrentFramebuffer()); for (s32 i = 0; i < count; ++i) { // Early exit for transparent pixels - currentAlpha = alpha[i]; - if (currentAlpha == 0) + const u8 currentAlpha = alpha[i]; + if (currentAlpha == 0) [[unlikely]] continue; - currentX = baseX + i; - offset = this->getPixelOffset(currentX, baseY); + const u32 offset = this->getPixelOffset(baseX + i, baseY); if (offset == UINT32_MAX) [[unlikely]] continue; - // Direct framebuffer access and color construction - src = framebuffer[offset]; - invAlpha = 0xF - currentAlpha; + // Direct framebuffer read + const Color src = framebuffer[offset]; + const u8 invAlpha = 0xF - currentAlpha; - // Direct member assignment instead of constructor - end.r = blendColor(src.r, red[i], currentAlpha); - end.g = blendColor(src.g, green[i], currentAlpha); - end.b = blendColor(src.b, blue[i], currentAlpha); - end.a = (currentAlpha + (src.a * invAlpha >> 4)); - - this->setPixelAtOffset(offset, end); + // Direct framebuffer write - skip setPixelAtOffset call + framebuffer[offset] = Color( + blendColor(src.r, red[i], currentAlpha), + blendColor(src.g, green[i], currentAlpha), + blendColor(src.b, blue[i], currentAlpha), + currentAlpha + ((src.a * invAlpha) >> 4) + ); } } @@ -2092,44 +2197,146 @@ namespace tsl { } } - - inline void drawCircle(const s32 centerX, const s32 centerY, const u16 radius, const bool filled, const Color& color) { - s32 x = radius; - s32 y = 0; - s32 radiusError = 0; - s32 xChange = 1 - (radius << 1); - s32 yChange = 0; - - while (x >= y) { - if (filled) { - for (s32 i = centerX - x; i <= centerX + x; i++) { - this->setPixelBlendDst(i, centerY + y, color); - this->setPixelBlendDst(i, centerY - y, color); - } - for (s32 i = centerX - y; i <= centerX + y; i++) { - this->setPixelBlendDst(i, centerY + x, color); - this->setPixelBlendDst(i, centerY - x, color); + inline void drawCircle(const s32 centerX, const s32 centerY, const u16 radius, const bool filled, const Color& color) { + // Use Bresenham-style algorithm for small radii + if (radius <= 3) { + s32 x = radius; + s32 y = 0; + s32 radiusError = 0; + s32 xChange = 1 - (radius << 1); + s32 yChange = 0; + + while (x >= y) { + if (filled) { + for (s32 i = centerX - x; i <= centerX + x; i++) { + this->setPixelBlendDst(i, centerY + y, color); + this->setPixelBlendDst(i, centerY - y, color); + } + for (s32 i = centerX - y; i <= centerX + y; i++) { + this->setPixelBlendDst(i, centerY + x, color); + this->setPixelBlendDst(i, centerY - x, color); + } + y++; + radiusError += yChange; + yChange += 2; + if (((radiusError << 1) + xChange) > 0) { + x--; + radiusError += xChange; + xChange += 2; + } + } else { + this->setPixelBlendDst(centerX + x, centerY + y, color); + this->setPixelBlendDst(centerX + y, centerY + x, color); + this->setPixelBlendDst(centerX - y, centerY + x, color); + this->setPixelBlendDst(centerX - x, centerY + y, color); + this->setPixelBlendDst(centerX - x, centerY - y, color); + this->setPixelBlendDst(centerX - y, centerY - x, color); + this->setPixelBlendDst(centerX + y, centerY - x, color); + this->setPixelBlendDst(centerX + x, centerY - y, color); + if (radiusError <= 0) { + y++; + radiusError += 2 * y + 1; + } else { + x--; + radiusError -= 2 * x + 1; + } } - } else { - this->setPixelBlendDst(centerX + x, centerY + y, color); - this->setPixelBlendDst(centerX + y, centerY + x, color); - this->setPixelBlendDst(centerX - y, centerY + x, color); - this->setPixelBlendDst(centerX - x, centerY + y, color); - this->setPixelBlendDst(centerX - x, centerY - y, color); - this->setPixelBlendDst(centerX - y, centerY - x, color); - this->setPixelBlendDst(centerX + y, centerY - x, color); - this->setPixelBlendDst(centerX + x, centerY - y, color); } + return; + } + + // Original supersampling algorithm for larger radii + const float r_f = static_cast(radius); + const float r2 = r_f * r_f; + const u8 base_a = color.a; + const bool full_opacity = (base_a == 0xFF); + + const s32 bound = radius + 2; + const s32 clip_left = std::max(0, centerX - bound); + const s32 clip_right = std::min(static_cast(cfg::FramebufferWidth), centerX + bound); + const s32 clip_top = std::max(0, centerY - bound); + const s32 clip_bottom = std::min(static_cast(cfg::FramebufferHeight), centerY + bound); + + const float offset = 0.353553f; // sqrt(2)/4 + const float samples[8][2] = { + {-offset, -offset}, {offset, -offset}, + {-offset, offset}, {offset, offset}, + {-0.5f, 0.0f}, {0.5f, 0.0f}, + {0.0f, -0.5f}, {0.0f, 0.5f} + }; + + for (s32 yc = clip_top; yc < clip_bottom; ++yc) { + const float py = static_cast(yc - centerY) + 0.5f; + const float py_sq = py * py; - y++; - radiusError += yChange; - yChange += 2; - - if (((radiusError << 1) + xChange) > 0) { - x--; - radiusError += xChange; - xChange += 2; + for (s32 xc = clip_left; xc < clip_right; ++xc) { + const float px = static_cast(xc - centerX) + 0.5f; + const float px_sq = px * px; + const float center_d2 = px_sq + py_sq; + + if (filled) { + if (center_d2 <= r2 - r_f) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) this->setPixelAtOffset(off, color); + else this->setPixelBlendDst(xc, yc, color); + } + continue; + } else if (center_d2 > r2 + r_f) { + continue; + } + + u32 inside_count = 0; + for (u32 s = 0; s < 8; ++s) { + const float sx = px + samples[s][0]; + const float sy = py + samples[s][1]; + if (sx*sx + sy*sy <= r2) { + inside_count++; + } + } + + if (inside_count > 0) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + Color c = color; + c.a = static_cast((base_a * inside_count + 4) / 8); + this->setPixelBlendDst(xc, yc, c); + } + } + } else { + const float inner_r2 = (r_f - 1.0f) * (r_f - 1.0f); + + if (center_d2 >= inner_r2 + r_f && center_d2 <= r2 - r_f) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) this->setPixelAtOffset(off, color); + else this->setPixelBlendDst(xc, yc, color); + } + continue; + } else if (center_d2 < inner_r2 - r_f || center_d2 > r2 + r_f) { + continue; + } + + u32 inside_count = 0; + for (u32 s = 0; s < 8; ++s) { + const float sx = px + samples[s][0]; + const float sy = py + samples[s][1]; + const float sd2 = sx*sx + sy*sy; + if (sd2 >= inner_r2 && sd2 <= r2) { + inside_count++; + } + } + + if (inside_count > 0) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + Color c = color; + c.a = static_cast((base_a * inside_count + 4) / 8); + this->setPixelBlendDst(xc, yc, c); + } + } + } } } } @@ -2146,146 +2353,244 @@ namespace tsl { const s32 topCornerY = startY; const s32 bottomCornerY = startY + height; - // Draw borders (unchanged for exact visual match) - this->drawRect(startX, startY - thickness, adjustedWidth, thickness, highlightColor); // Top border - this->drawRect(startX, startY + adjustedHeight, adjustedWidth, thickness, highlightColor); // Bottom border - this->drawRect(startX - thickness, startY, thickness, adjustedHeight, highlightColor); // Left border - this->drawRect(startX + adjustedWidth, startY, thickness, adjustedHeight, highlightColor); // Right border + // Draw borders + this->drawRect(startX, startY - thickness, adjustedWidth, thickness, highlightColor); + this->drawRect(startX, startY + adjustedHeight, adjustedWidth, thickness, highlightColor); + this->drawRect(startX - thickness, startY, thickness, adjustedHeight, highlightColor); + this->drawRect(startX + adjustedWidth, startY, thickness, adjustedHeight, highlightColor); - // Optimized filled quarter circle drawing - all 4 corners in one pass + // Pre-calculate AA colors once + const Color aaColor1 = {highlightColor.r, highlightColor.g, highlightColor.b, static_cast(highlightColor.a >> 1)}; // 50% + const Color aaColor2 = {highlightColor.r, highlightColor.g, highlightColor.b, static_cast(highlightColor.a >> 2)}; // 25% + + // Circle drawing with AA - optimized Bresenham s32 cx = radius; s32 cy = 0; s32 radiusError = 0; - s32 xChange = 1 - (radius << 1); + const s32 diameter = radius << 1; + s32 xChange = 1 - diameter; s32 yChange = 0; + s32 lastCx = cx; while (cx >= cy) { - // Draw horizontal spans for all 4 corners simultaneously - // Upper-left corner (quadrant 2) - two horizontal lines - for (s32 i = leftCornerX - cx; i <= leftCornerX; i++) { - this->setPixelBlendDst(i, topCornerY - cy, highlightColor); + // Pre-calculate Y coordinates (hoist invariants) + const s32 topY1 = topCornerY - cy; + const s32 topY2 = topCornerY - cx; + const s32 bottomY1 = bottomCornerY + cy; + const s32 bottomY2 = bottomCornerY + cx; + + // Pre-calculate X bounds + const s32 leftX1Start = leftCornerX - cx; + const s32 leftX2Start = leftCornerX - cy; + const s32 rightX1Start = rightCornerX + 1; + const s32 rightX1End = rightCornerX + cx; + const s32 rightX2End = rightCornerX + cy; + + // Draw filled spans - NOW PERFECTLY MIRRORED + // Upper-left corner (exclusive) + for (s32 i = leftX1Start; i < leftCornerX; i++) { + this->setPixelBlendDst(i, topY1, highlightColor); } - for (s32 i = leftCornerX - cy; i <= leftCornerX; i++) { - this->setPixelBlendDst(i, topCornerY - cx, highlightColor); + for (s32 i = leftX2Start; i < leftCornerX; i++) { + this->setPixelBlendDst(i, topY2, highlightColor); } - // Lower-left corner (quadrant 3) - two horizontal lines - for (s32 i = leftCornerX - cx; i <= leftCornerX; i++) { - this->setPixelBlendDst(i, bottomCornerY + cy, highlightColor); + // Lower-left corner (NOW exclusive like top) + for (s32 i = leftX1Start; i < leftCornerX; i++) { + this->setPixelBlendDst(i, bottomY1, highlightColor); } - for (s32 i = leftCornerX - cy; i <= leftCornerX; i++) { - this->setPixelBlendDst(i, bottomCornerY + cx, highlightColor); + for (s32 i = leftX2Start; i < leftCornerX; i++) { + this->setPixelBlendDst(i, bottomY2, highlightColor); } - // Upper-right corner (quadrant 1) - two horizontal lines - for (s32 i = rightCornerX; i <= rightCornerX + cx; i++) { - this->setPixelBlendDst(i, topCornerY - cy, highlightColor); + // Upper-right corner (starts at +1) + for (s32 i = rightX1Start; i <= rightX1End; i++) { + this->setPixelBlendDst(i, topY1, highlightColor); } - for (s32 i = rightCornerX; i <= rightCornerX + cy; i++) { - this->setPixelBlendDst(i, topCornerY - cx, highlightColor); + for (s32 i = rightX1Start; i <= rightX2End; i++) { + this->setPixelBlendDst(i, topY2, highlightColor); } - // Lower-right corner (quadrant 4) - two horizontal lines - for (s32 i = rightCornerX; i <= rightCornerX + cx; i++) { - this->setPixelBlendDst(i, bottomCornerY + cy, highlightColor); + // Lower-right corner (NOW starts at +1 like top) + for (s32 i = rightX1Start; i <= rightX1End; i++) { + this->setPixelBlendDst(i, bottomY1, highlightColor); } - for (s32 i = rightCornerX; i <= rightCornerX + cy; i++) { - this->setPixelBlendDst(i, bottomCornerY + cx, highlightColor); + for (s32 i = rightX1Start; i <= rightX2End; i++) { + this->setPixelBlendDst(i, bottomY2, highlightColor); } - // Bresenham circle algorithm step + // Add AA at step transitions + if (__builtin_expect(cx != lastCx && cy > 0, 0)) { + // Pre-calculate AA pixel positions + const s32 cxAA = cx + 1; + + // Upper-left AA + this->setPixelBlendDst(leftCornerX - cxAA, topY1, aaColor1); + this->setPixelBlendDst(leftCornerX - cxAA, topY1 + 1, aaColor2); + this->setPixelBlendDst(leftX2Start, topY2 - 1, aaColor1); + this->setPixelBlendDst(leftX2Start + 1, topY2 - 1, aaColor2); + + // Upper-right AA + this->setPixelBlendDst(rightCornerX + cxAA, topY1, aaColor1); + this->setPixelBlendDst(rightCornerX + cxAA, topY1 + 1, aaColor2); + this->setPixelBlendDst(rightX2End, topY2 - 1, aaColor1); + this->setPixelBlendDst(rightX2End - 1, topY2 - 1, aaColor2); + + // Lower-left AA + this->setPixelBlendDst(leftCornerX - cxAA, bottomY1, aaColor1); + this->setPixelBlendDst(leftCornerX - cxAA, bottomY1 - 1, aaColor2); + this->setPixelBlendDst(leftX2Start, bottomY2 + 1, aaColor1); + this->setPixelBlendDst(leftX2Start + 1, bottomY2 + 1, aaColor2); + + // Lower-right AA + this->setPixelBlendDst(rightCornerX + cxAA, bottomY1, aaColor1); + this->setPixelBlendDst(rightCornerX + cxAA, bottomY1 - 1, aaColor2); + this->setPixelBlendDst(rightX2End, bottomY2 + 1, aaColor1); + this->setPixelBlendDst(rightX2End - 1, bottomY2 + 1, aaColor2); + } + + lastCx = cx; + + // Bresenham iteration - optimized cy++; radiusError += yChange; yChange += 2; - if (((radiusError << 1) + xChange) > 0) { + if (__builtin_expect(((radiusError << 1) + xChange) > 0, 0)) { cx--; radiusError += xChange; xChange += 2; } } } - - + // Pre-compute all horizontal spans for the entire shape struct HorizontalSpan { s32 start_x, end_x; }; - - // Define processChunk as a static member function - // Optimized processRoundedRectChunk - assumes bounds checking done by caller - static void processRoundedRectChunk(Renderer* self, const s32 x, const s32 y, const s32 w, const s32 h, - const s32 radius, const Color& color, const s32 startRow, const s32 endRow) { - // Original rectangle bounds - const s32 orig_x = x, orig_y = y; - const s32 orig_x_end = x + w, orig_y_end = y + h; + + // Helper function - defined outside, compiler will inline + static inline void sampleAndBlendArcPixel(Renderer* self, s32 xp, s32 yc, + int px2, int cx2, int sx, int py2, int cy2, int sy, + long long r2_scaled, const Color& color, u8 base_a) + { + int hits = 0; + long long dx1 = px2 + sx - cx2; + long long dx2 = px2 - sx - cx2; + long long dy1 = py2 + sy - cy2; + long long dy2 = py2 - sy - cy2; - // Calculate clipping bounds - const s32 clip_x = std::max(0, x); - const s32 clip_x_end = std::min(static_cast(cfg::FramebufferWidth), x + w); + if (dx1*dx1 + dy1*dy1 <= r2_scaled) ++hits; + if (dx1*dx1 + dy2*dy2 <= r2_scaled) ++hits; + if (dx2*dx2 + dy1*dy1 <= r2_scaled) ++hits; + if (dx2*dx2 + dy2*dy2 <= r2_scaled) ++hits; - // Use ORIGINAL coordinates to determine corner regions - const s32 orig_x_left = orig_x + radius, orig_x_right = orig_x_end - radius; - const s32 orig_y_top = orig_y + radius, orig_y_bottom = orig_y_end - radius; - const s32 r2 = radius * radius; - const u8 red = color.r, green = color.g, blue = color.b, alpha = color.a; - - alignas(64) u8 redArray[512], greenArray[512], blueArray[512], alphaArray[512]; - for (s32 i = 0; i < 512; i += 8) { - redArray[i] = redArray[i+1] = redArray[i+2] = redArray[i+3] = - redArray[i+4] = redArray[i+5] = redArray[i+6] = redArray[i+7] = red; - greenArray[i] = greenArray[i+1] = greenArray[i+2] = greenArray[i+3] = - greenArray[i+4] = greenArray[i+5] = greenArray[i+6] = greenArray[i+7] = green; - blueArray[i] = blueArray[i+1] = blueArray[i+2] = blueArray[i+3] = - blueArray[i+4] = blueArray[i+5] = blueArray[i+6] = blueArray[i+7] = blue; - alphaArray[i] = alphaArray[i+1] = alphaArray[i+2] = alphaArray[i+3] = - alphaArray[i+4] = alphaArray[i+5] = alphaArray[i+6] = alphaArray[i+7] = alpha; - } - - s32 orig_span_start, orig_span_end; - s32 dx; - for (s32 y_current = startRow; y_current < endRow; ++y_current) { - // Skip if outside original rectangle bounds - if (y_current < orig_y || y_current >= orig_y_end) continue; - - - - if (y_current >= orig_y_top && y_current < orig_y_bottom) { - // Middle section - full width - orig_span_start = orig_x; - orig_span_end = orig_x_end; - } else { - // Corner section - const s32 dy_abs = (y_current < orig_y_top) ? (orig_y_top - y_current) : (y_current - orig_y_bottom); - const s32 dy2 = dy_abs * dy_abs; - if (dy2 > r2) continue; - - // Compute dx using integer square root approximation - dx = 0; - const s32 t = r2 - dy2; - while (dx * dx <= t) { - dx++; - } - dx--; // Get the largest dx where dx^2 + dy2 <= r2 - - // Calculate the span for this row in the original rectangle - orig_span_start = std::max(orig_x_left - dx, orig_x); - orig_span_end = std::min(orig_x_right + dx, orig_x_end); - } - - // Clip the original span to visible bounds - const s32 span_start = std::max(orig_span_start, clip_x); - const s32 span_end = std::min(orig_span_end, clip_x_end); - - if (span_start >= span_end) continue; - - // Batch rendering - for (s32 x_pos = span_start; x_pos < span_end; x_pos += 512) { - self->setPixelBlendDstBatch(x_pos, y_current, redArray, greenArray, blueArray, alphaArray, std::min(512, span_end - x_pos)); + if (hits == 4) { + self->setPixelBlendDst(xp, yc, color); + } else if (hits > 0) { + u8 a = (base_a * hits + 2) >> 2; + if (a) { + Color c = color; + c.a = a; + self->setPixelBlendDst(xp, yc, c); + } + } + } + + static void processRoundedRectChunk(Renderer* self, const s32 x, const s32 y, const s32 w, const s32 h, + const s32 radius, const Color& color, + const s32 startRow, const s32 endRow) + { + if (radius <= 0) return; + + const s32 x_end = x + w; + const s32 y_end = y + h; + + const s32 clip_x = std::max(0, x); + const s32 clip_x_end = std::min(cfg::FramebufferWidth, x_end); + + const s32 left_arc_end = x + radius - 1; + const s32 right_arc_start = x_end - radius; + const s32 top_arc_end = y + radius - 1; + const s32 bottom_arc_start = y_end - radius; + + const int cx2_left = 2 * (x + radius); + const int cx2_right = 2 * (x_end - radius); + const int cy2_top = 2 * (y + radius); + const int cy2_bottom = 2 * (y_end - radius); + + const long long r2_scaled = 4LL * radius * radius; + const long long reject_threshold = (2LL*radius + 2)*(2LL*radius + 2); + + const u8 base_a = color.a; + + // Pre-compute sample offsets (constant per corner) + const int sx_left = ((x + radius) & 1) ? -1 : 1; + const int sx_right = ((x_end - radius) & 1) ? -1 : 1; + const int sy_top = ((y + radius) & 1) ? -1 : 1; + const int sy_bottom = ((y_end - radius) & 1) ? -1 : 1; + + alignas(64) u8 redArray[512], greenArray[512], blueArray[512], alphaArray[512]; + const uint8x16_t rv = vdupq_n_u8(color.r); + const uint8x16_t gv = vdupq_n_u8(color.g); + const uint8x16_t bv = vdupq_n_u8(color.b); + const uint8x16_t av = vdupq_n_u8(color.a); + for (int i = 0; i < 512; i += 16) { + vst1q_u8(redArray + i, rv); + vst1q_u8(greenArray + i, gv); + vst1q_u8(blueArray + i, bv); + vst1q_u8(alphaArray + i, av); + } + + for (s32 yc = startRow; yc < endRow; ++yc) { + if (yc < y || yc >= y_end) continue; + + const bool is_top = (yc <= top_arc_end); + const bool in_arc_rows = is_top || (yc >= bottom_arc_start); + + if (!in_arc_rows) { + s32 xs = std::max(clip_x, x); + s32 xe = std::min(clip_x_end, x_end); + for (s32 xp = xs; xp < xe; xp += 512) + self->setPixelBlendDstBatch(xp, yc, redArray, greenArray, blueArray, alphaArray, + std::min(512, xe - xp)); + continue; + } + + const int cy2 = is_top ? cy2_top : cy2_bottom; + const int py2 = 2 * yc + 1; + const int sy = is_top ? sy_top : sy_bottom; + + // Quick row reject + const long long dy = py2 - cy2; + if (dy * dy > reject_threshold) continue; + + const s32 xe = std::min(clip_x_end, x_end); + s32 xp = std::max(clip_x, x); + + // Left arc + for (; xp <= left_arc_end && xp < xe; ++xp) { + sampleAndBlendArcPixel(self, xp, yc, 2*xp + 1, cx2_left, sx_left, + py2, cy2, sy, r2_scaled, color, base_a); + } + + // Middle flat + s32 mid_start = std::max(xp, left_arc_end + 1); + s32 mid_end = std::min(xe, right_arc_start); + if (mid_start < mid_end) { + for (s32 bx = mid_start; bx < mid_end; bx += 512) + self->setPixelBlendDstBatch(bx, yc, redArray, greenArray, blueArray, alphaArray, + std::min(512, mid_end - bx)); + } + + // Right arc + xp = std::max(xp, right_arc_start); + for (; xp < xe; ++xp) { + sampleAndBlendArcPixel(self, xp, yc, 2*xp + 1, cx2_right, sx_right, + py2, cy2, sy, r2_scaled, color, base_a); } } } - /** @@ -2302,14 +2607,14 @@ namespace tsl { if (w <= 0 || h <= 0) return; // Get framebuffer bounds for early exit check - const s32 fb_width = static_cast(cfg::FramebufferWidth); - const s32 fb_height = static_cast(cfg::FramebufferHeight); + //const s32 fb_width = static_cast(cfg::FramebufferWidth); + //const s32 fb_height = static_cast(cfg::FramebufferHeight); // Calculate clipped bounds for early exit check const s32 clampedX = std::max(0, x); const s32 clampedY = std::max(0, y); - const s32 clampedXEnd = std::min(fb_width, x + w); - const s32 clampedYEnd = std::min(fb_height, y + h); + const s32 clampedXEnd = std::min(static_cast(cfg::FramebufferWidth), x + w); + const s32 clampedYEnd = std::min(static_cast(cfg::FramebufferHeight), y + h); // Early exit if nothing to draw after clamping if (clampedX >= clampedXEnd || clampedY >= clampedYEnd) return; @@ -2350,22 +2655,17 @@ namespace tsl { * @param radius Corner radius * @param color Color */ - inline void drawRoundedRectSingleThreaded(const s32 x, const s32 y, const s32 w, const s32 h, const s32 radius, const Color& color) { + inline void drawRoundedRectSingleThreaded(s32 x, s32 y, s32 w, s32 h, s32 radius, const Color& color) { if (w <= 0 || h <= 0) return; - - // Get framebuffer bounds for early exit check - const s32 fb_width = static_cast(cfg::FramebufferWidth); - const s32 fb_height = static_cast(cfg::FramebufferHeight); - - // Calculate clipped bounds for early exit check - const s32 clampedX = std::max(0, x); + const s32 clampedY = std::max(0, y); - const s32 clampedXEnd = std::min(fb_width, x + w); - const s32 clampedYEnd = std::min(fb_height, y + h); - + const s32 clampedYEnd = std::min(static_cast(cfg::FramebufferHeight), y + h); + //const s32 clampedXEnd = std::min(static_cast(cfg::FramebufferWidth), x + w); + // Early exit if nothing to draw after clamping - if (clampedX >= clampedXEnd || clampedY >= clampedYEnd) return; - + if (x + w <= 0 || x >= static_cast(cfg::FramebufferWidth) || clampedY >= clampedYEnd) + return; + processRoundedRectChunk(this, x, y, w, h, radius, color, clampedY, clampedYEnd); } @@ -2382,242 +2682,230 @@ namespace tsl { } } - + inline void drawUniformRoundedRect(const s32 x, const s32 y, const s32 w, const s32 h, const Color& color) { - // Early exit for degenerate cases - //if (w <= 0 || h <= 0) return; - - // Calculate radius and bounds - const s32 radius = h >> 1; // h / 2 - //if (radius <= 0) return; - - // Get framebuffer bounds - const s32 fb_width = cfg::FramebufferWidth; - const s32 fb_height = cfg::FramebufferHeight; - - // Calculate clipped drawing bounds + const s32 radius = h >> 1; const s32 clip_left = std::max(0, x); const s32 clip_top = std::max(0, y); - const s32 clip_right = std::min(fb_width, x + w); - const s32 clip_bottom = std::min(fb_height, y + h); + const s32 clip_right = std::min(static_cast(cfg::FramebufferWidth), x + w); + const s32 clip_bottom = std::min(static_cast(cfg::FramebufferHeight), y + h); - // Early exit if completely clipped if (clip_left >= clip_right || clip_top >= clip_bottom) return; - // Shape parameters - const s32 center_y = y + radius; - const s32 rect_left = x + radius; - const s32 rect_right = x + w - radius; - const s32 radius_sq = radius * radius; + const s32 x_end = x + w; + const s32 y_end = y + h; + const s32 corner_x_left = x + radius; + const s32 corner_x_right = x_end - radius - 1; + const s32 corner_y_top = y + radius; + const s32 corner_y_bottom = y_end - radius - 1; + const float r_f = static_cast(radius); + const float r2 = r_f * r_f; + const float aa_thresh = r2 + 2.0f * r_f + 1.0f; + const u8 base_a = color.a; + const bool full_opacity = (base_a == 0xF); - // Choose drawing method based on alpha - const bool fullOpacity = (color.a == 0xF); - - // Pre-compute variables - s32 y_curr, x_curr; - s32 dy, dy_sq, x_offset_sq; - s32 x_offset, row_start, row_end; - //u32 pixel_offset; - - // Main drawing loop - for (y_curr = clip_top; y_curr < clip_bottom; ++y_curr) { - dy = y_curr - center_y; - dy_sq = dy * dy; + for (s32 yc = clip_top; yc < clip_bottom; ++yc) { + if (yc < y || yc >= y_end) continue; - // Skip rows outside the shape - if (dy_sq > radius_sq) continue; + const bool in_corners = yc < corner_y_top || yc > corner_y_bottom; - // Calculate horizontal extent for this row - x_offset_sq = radius_sq - dy_sq; - - // Fast integer square root with better rounding - if (radius <= 32) { - // Direct calculation for small values - x_offset = 0; - while (x_offset * x_offset <= x_offset_sq) { - x_offset++; - } - // More intelligent step-back: only if we're significantly over - // This reduces the "flat edge" appearance - if (x_offset > 0) { - s32 current_sq = x_offset * x_offset; - s32 prev_sq = (x_offset - 1) * (x_offset - 1); - // Only step back if we're closer to the previous value - if (current_sq - x_offset_sq > x_offset_sq - prev_sq) { - x_offset--; + if (!in_corners) { + const s32 span_start = std::max(x, clip_left); + const s32 span_end = std::min(x_end, clip_right); + + for (s32 xc = span_start; xc < span_end; ++xc) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) { + this->setPixelAtOffset(off, color); + } else { + this->setPixelBlendDst(xc, yc, color); + } } } } else { - // Newton's method for larger values (converges in ~4 iterations) - x_offset = radius; // Initial guess - for (int i = 0; i < 4; ++i) { - x_offset = (x_offset + x_offset_sq / x_offset) >> 1; + const float dy = (yc < corner_y_top) ? static_cast(corner_y_top - yc) : + static_cast(yc - corner_y_bottom); + const float dy_sq = dy * dy; + + if (dy_sq > aa_thresh) continue; + + const float dy_half = dy - 0.5f; + const float dy_half_sq = dy_half * dy_half; + + const s32 span_start = std::max(x, clip_left); + const s32 span_end = std::min(x_end, clip_right); + s32 xc = span_start; + + // Left corner/edge + const s32 left_end = std::min(corner_x_left + 1, span_end); + for (; xc < left_end; ++xc) { + const float dx = static_cast(corner_x_left - xc); + const float dx_sq = dx * dx; + const float d2 = dx_sq + dy_sq; + + if (d2 <= r2) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) this->setPixelAtOffset(off, color); + else this->setPixelBlendDst(xc, yc, color); + } + } else if (d2 <= aa_thresh) { + const float dx_half = dx - 0.5f; + float cov = 0.0f; + if (dx_sq + dy_sq <= r2) cov += 0.25f; + if (dx_half*dx_half + dy_sq <= r2) cov += 0.25f; + if (dx_sq + dy_half_sq <= r2) cov += 0.25f; + if (dx_half*dx_half + dy_half_sq <= r2) cov += 0.25f; + + if (cov > 0.0f) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + Color c = color; + c.a = static_cast((base_a * static_cast(cov * 15.0f + 0.5f)) / 15); + this->setPixelBlendDst(xc, yc, c); + } + } + } } - // Ensure we're close to the actual value - while ((x_offset + 1) * (x_offset + 1) <= x_offset_sq) x_offset++; - while (x_offset * x_offset > x_offset_sq) x_offset--; - } - - // Calculate row bounds - row_start = rect_left - x_offset; - row_end = rect_right + x_offset; - - // Clip to visible area - row_start = std::max(row_start, clip_left); - row_end = std::min(row_end, clip_right); - - if (row_start >= row_end) continue; - - // Draw the row - if (fullOpacity) { - for (x_curr = row_start; x_curr < row_end; ++x_curr) { - - const u32 offset = this->getPixelOffset((u32)x_curr, (u32)y_curr); - if (offset == UINT32_MAX) continue; - - this->setPixelAtOffset(offset, color); + + // Middle section + const s32 mid_end = std::min(corner_x_right, span_end); + for (; xc < mid_end; ++xc) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) this->setPixelAtOffset(off, color); + else this->setPixelBlendDst(xc, yc, color); + } } - } else { - for (x_curr = row_start; x_curr < row_end; ++x_curr) { - - const u32 offset = this->getPixelOffset((u32)x_curr, (u32)y_curr); - if (offset == UINT32_MAX) continue; - - // you can keep using the existing blended helper which already checks UINT32_MAX - this->setPixelBlendDst((u32)x_curr, (u32)y_curr, color); + + // Right corner/edge + for (; xc < span_end; ++xc) { + const float dx = static_cast(xc - corner_x_right); + const float dx_sq = dx * dx; + const float d2 = dx_sq + dy_sq; + + if (d2 <= r2) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + if (full_opacity) this->setPixelAtOffset(off, color); + else this->setPixelBlendDst(xc, yc, color); + } + } else if (d2 <= aa_thresh) { + const float dx_half = dx - 0.5f; + float cov = 0.0f; + if (dx_sq + dy_sq <= r2) cov += 0.25f; + if (dx_half*dx_half + dy_sq <= r2) cov += 0.25f; + if (dx_sq + dy_half_sq <= r2) cov += 0.25f; + if (dx_half*dx_half + dy_half_sq <= r2) cov += 0.25f; + + if (cov > 0.0f) { + const u32 off = this->getPixelOffset(xc, yc); + if (off != UINT32_MAX) { + Color c = color; + c.a = static_cast((base_a * static_cast(cov * 15.0f + 0.5f)) / 15); + this->setPixelBlendDst(xc, yc, c); + } + } + } } } } } // Struct for batch pixel processing with better alignment - struct alignas(64) PixelBatch { - s32 baseX, baseY; - u8 red[32], green[32], blue[32], alpha[32]; // Doubled for 32-pixel batches - s32 count; - }; - - // Batch pixel setter - process multiple pixels at once if available - inline void setPixelBatchBlendSrc(const s32 baseX, const s32 baseY, const PixelBatch& batch) { - // If your graphics system supports batch operations, use them here - // Otherwise fall back to individual calls - for (s32 i = 0; i < batch.count; ++i) { - setPixelBlendSrc(baseX + i, baseY, { - batch.red[i], batch.green[i], batch.blue[i], batch.alpha[i] - }); - } - } + //struct alignas(64) PixelBatch { + // s32 baseX, baseY; + // u8 red[32], green[32], blue[32], alpha[32]; // Doubled for 32-pixel batches + // s32 count; + //}; + // + //// Batch pixel setter - process multiple pixels at once if available + //inline void setPixelBatchBlendSrc(const s32 baseX, const s32 baseY, const PixelBatch& batch) { + // // If your graphics system supports batch operations, use them here + // // Otherwise fall back to individual calls + // for (s32 i = 0; i < batch.count; ++i) { + // setPixelBlendSrc(baseX + i, baseY, { + // batch.red[i], batch.green[i], batch.blue[i], batch.alpha[i] + // }); + // } + //} - // Fixed compilation errors - simplified SIMD version - static constexpr uint8x16_t lut = {0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255}; + // RGBA4444 processing - no expansion needed const uint8x16_t mask_low = vdupq_n_u8(0x0F); - // Pre-computed lookup table for 4-bit to 8-bit conversion - static constexpr u8 expand4to8[16] = { - 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255 - }; - inline void processBMPChunk(const s32 x, const s32 y, const s32 screenW, const u8 *preprocessedData, - const s32 startRow, const s32 endRow, const u8 globalAlphaLimit) { - const s32 bytesPerRow = screenW * 2; - const s32 endX16 = screenW & ~15; - - // Create SIMD vector for alpha limit + const s32 startRow, const s32 endRow, const u8 globalAlphaLimit) { + static constexpr s32 bytesPerRow = 448 * 2; + static constexpr s32 endX16 = 448 & ~15; const uint8x16_t alpha_limit_vec = vdupq_n_u8(globalAlphaLimit); - // Pre-declare all variables outside loops - const u8 *rowPtr; - s32 baseY; - s32 x1; - const u8* ptr; - uint8x16x2_t packed; - uint8x16_t high1, low1, high2, low2; - uint8x16_t red, green, blue, alpha; - alignas(16) u8 red_vals[16], green_vals[16], blue_vals[16], alpha_vals[16]; - s32 baseX; - s32 pixelX; - u32 offset; - Color color = {0}, src = {0}, end = {0}; - const u16* framebuffer; - u8 p1, p2; + // Get framebuffer once for entire chunk + Color* const framebuffer = static_cast(this->getCurrentFramebuffer()); for (s32 y1 = startRow; y1 < endRow; ++y1) { - rowPtr = preprocessedData + (y1 * bytesPerRow); - baseY = y + y1; + const u8 *rowPtr = preprocessedData + (y1 * bytesPerRow); + const s32 baseY = y + y1; - x1 = 0; + s32 x1 = 0; // SIMD processing for 16 pixels at once for (; x1 < endX16; x1 += 16) { - ptr = rowPtr + (x1 << 1); - packed = vld2q_u8(ptr); + const u8* ptr = rowPtr + (x1 << 1); - // Expand 4-bit to 8-bit values - high1 = vshrq_n_u8(packed.val[0], 4); - low1 = vandq_u8(packed.val[0], mask_low); - high2 = vshrq_n_u8(packed.val[1], 4); - low2 = vandq_u8(packed.val[1], mask_low); + // Load and unpack RGBA4444 data - keep as 4-bit + uint8x16x2_t packed = vld2q_u8(ptr); + uint8x16_t high1 = vshrq_n_u8(packed.val[0], 4); + uint8x16_t low1 = vandq_u8(packed.val[0], mask_low); + uint8x16_t high2 = vshrq_n_u8(packed.val[1], 4); + uint8x16_t low2 = vminq_u8(vandq_u8(packed.val[1], mask_low), alpha_limit_vec); - red = vqtbl1q_u8(lut, high1); - green = vqtbl1q_u8(lut, low1); - blue = vqtbl1q_u8(lut, high2); - alpha = vqtbl1q_u8(lut, low2); + // Store results directly + alignas(16) u8 red_vals[16], green_vals[16], blue_vals[16], alpha_vals[16]; + vst1q_u8(red_vals, high1); + vst1q_u8(green_vals, low1); + vst1q_u8(blue_vals, high2); + vst1q_u8(alpha_vals, low2); - // Apply alpha limit using SIMD min operation - alpha = vminq_u8(alpha, alpha_limit_vec); + const s32 baseX = x + x1; - // Store to arrays and process individually - vst1q_u8(red_vals, red); - vst1q_u8(green_vals, green); - vst1q_u8(blue_vals, blue); - vst1q_u8(alpha_vals, alpha); - - baseX = x + x1; - - // Process 16 pixels with minimal function call overhead + // Optimized pixel loop with direct framebuffer access for (int i = 0; i < 16; ++i) { - // Skip transparent pixels - if (alpha_vals[i] == 0) continue; + const u8 a = alpha_vals[i]; + if (a == 0) continue; - pixelX = baseX + i; - offset = this->getPixelOffset(pixelX, baseY); + const u32 offset = this->getPixelOffset(baseX + i, baseY); + if (offset == UINT32_MAX) continue; - if (offset != UINT32_MAX) { - color = {red_vals[i], green_vals[i], blue_vals[i], alpha_vals[i]}; - - framebuffer = static_cast(this->getCurrentFramebuffer()); - src = Color(framebuffer[offset]); - - end = { - blendColor(src.r, color.r, color.a), - blendColor(src.g, color.g, color.a), - blendColor(src.b, color.b, color.a), - src.a - }; + const Color src = framebuffer[offset]; - this->setPixelAtOffset(offset, end); - } + framebuffer[offset] = { + blendColor(src.r, red_vals[i], a), + blendColor(src.g, green_vals[i], a), + blendColor(src.b, blue_vals[i], a), + src.a + }; } } - // Handle remaining pixels (less than 16) with pre-computed alpha limit + // Handle remaining pixels for (; x1 < screenW; ++x1) { - p1 = rowPtr[x1 << 1]; - p2 = rowPtr[(x1 << 1) + 1]; - - u8 alpha = expand4to8[p2 & 0x0F]; - alpha = (alpha < globalAlphaLimit) ? alpha : globalAlphaLimit; + const u8 p1 = rowPtr[x1 << 1]; + const u8 p2 = rowPtr[(x1 << 1) + 1]; + const u8 alpha = std::min(static_cast(p2 & 0x0F), globalAlphaLimit); setPixelBlendSrc(x + x1, baseY, { - expand4to8[p1 >> 4], expand4to8[p1 & 0x0F], - expand4to8[p2 >> 4], alpha + static_cast(p1 >> 4), + static_cast(p1 & 0x0F), + static_cast(p2 >> 4), + alpha }); } } ult::inPlotBarrier.arrive_and_wait(); } - + /** * @brief Draws a scaled RGBA8888 bitmap from memory @@ -2631,25 +2919,6 @@ namespace tsl { * @param screenH Target screen height */ - //inline void drawBitmapRGBA4444(const s32 x, const s32 y, const s32 screenW, const s32 screenH, const u8 *preprocessedData) { - // s32 startRow; - // - // // Divide rows among ult::renderThreads - // //s32 chunkSize = (screenH + ult::numThreads - 1) / ult::numThreads; - // for (unsigned i = 0; i < ult::numThreads; ++i) { - // startRow = i * ult::bmpChunkSize; - // //s32 endRow = std::min(startRow + ult::bmpChunkSize, screenH); - // - // // Bind the member function and create the thread - // ult::renderThreads[i] = std::thread(std::bind(&tsl::gfx::Renderer::processBMPChunk, this, x, y, screenW, preprocessedData, startRow, std::min(startRow + ult::bmpChunkSize, screenH))); - // } - // - // // Join all ult::renderThreads - // for (auto& t : ult::renderThreads) { - // t.join(); - // } - //} - inline void drawBitmapRGBA4444(const s32 x, const s32 y, const s32 screenW, const s32 screenH, const u8 *preprocessedData, float opacity = 1.0f) { // Pre-compute alpha limit once @@ -2672,24 +2941,6 @@ namespace tsl { } } - - - //inline void drawWallpaper() { - // if (!ult::expandedMemory || ult::refreshWallpaper.load(std::memory_order_acquire)) { - // return; - // } - // - // ult::inPlot.store(true, std::memory_order_release); - // - // if (!ult::wallpaperData.empty() && - // !ult::refreshWallpaper.load(std::memory_order_acquire) && - // ult::correctFrameSize) { - // drawBitmapRGBA4444(0, 0, cfg::FramebufferWidth, cfg::FramebufferHeight, ult::wallpaperData.data()); - // } - // - // ult::inPlot.store(false, std::memory_order_release); - //} - inline void drawWallpaper() { if (!ult::expandedMemory || ult::refreshWallpaper.load(std::memory_order_acquire)) { return; @@ -2723,10 +2974,12 @@ namespace tsl { const u8* __restrict__ src = bmp; - s32 px; - + // Pre-compute alpha limit once using global opacity + const u8 alphaLimit = static_cast(0xF * Renderer::s_opacity); + // Completely unroll small bitmaps for maximum speed if (w <= 8 && h <= 8) [[likely]] { + s32 px; // Specialized path for small bitmaps (icons, etc.) for (s32 py = 0; py < h; ++py) { const s32 rowY = y + py; @@ -2746,76 +2999,113 @@ namespace tsl { } pixel8: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel7: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel6: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel5: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel4: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel3: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel2: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + px++; src += 4; } pixel1: { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px, rowY, a(c)); src += 4; + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, a(c)); + } + src += 4; } } return; } - // Fallback to vectorized version for larger bitmaps - const s32 vectorWidth = w & ~7; // Process 8 pixels at a time - const s32 remainder = w & 7; - + // Optimized scalar path for larger bitmaps for (s32 py = 0; py < h; ++py) { const s32 rowY = y + py; - px = x; + s32 px = x; + const u8* rowEnd = src + (w * 4); - // Process 8 pixels at once (cache-friendly) - for (s32 i = 0; i < vectorWidth; i += 8) { - // Prefetch next cache line - __builtin_prefetch(src + 64, 0, 3); - - // Process 8 pixels with minimal overhead - for (int j = 0; j < 8; ++j) { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, (c)); - src += 4; + // Prefetch first cache line + __builtin_prefetch(src, 0, 3); + + // Process all pixels in the row + while (src < rowEnd) { + // Prefetch ahead every 16 pixels (64 bytes) + if (((uintptr_t)src & 63) == 0) [[unlikely]] { + __builtin_prefetch(src + 64, 0, 3); } - } - - // Handle remainder - for (s32 i = 0; i < remainder; ++i) { - const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), - static_cast(src[2] >> 4), static_cast(src[3] >> 4)}; - setPixelBlendSrc(px++, rowY, (c)); + + u8 alpha = src[3] >> 4; + if (alpha > 0) { + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const Color c = {static_cast(src[0] >> 4), static_cast(src[1] >> 4), + static_cast(src[2] >> 4), alpha}; + setPixelBlendSrc(px, rowY, c); + } + px++; src += 4; } } @@ -2852,41 +3142,39 @@ namespace tsl { const std::vector* specialSymbols = nullptr, const u32 highlightStartChar = 0, const u32 highlightEndChar = 0, - const bool useNotificationCache = false) { // NEW parameter + const bool useNotificationCache = false) { // Thread-safe translation cache access - std::string text; - #if defined(UI_OVERRIDE_PATH)// && (!defined(IS_STATUS_MONITOR) || (IS_STATUS_MONITOR == 0)) + const std::string* text = &originalString; + std::string translatedText; + + #if defined(UI_OVERRIDE_PATH) { std::shared_lock readLock(s_translationCacheMutex); auto translatedIt = ult::translationCache.find(originalString); if (translatedIt != ult::translationCache.end()) { - text = translatedIt->second; - } else { - // Don't insert anything, just fallback to original string - text = originalString; + translatedText = translatedIt->second; + text = &translatedText; } } - #else - text = originalString; #endif - if (text.empty() || fontSize == 0) return {0, 0}; + if (text->empty() || fontSize == 0) return {0, 0}; const float maxWidthLimit = maxWidth > 0 ? x + maxWidth : std::numeric_limits::max(); - // Check if highlighting is enabled (both highlight color and delimiters must be provided) + // Check if highlighting is enabled const bool highlightingEnabled = highlightColor && highlightStartChar != 0 && highlightEndChar != 0; - // Get font metrics for consistent line height using a standard character - // This ensures consistent line spacing regardless of which specific characters are used + // Get font metrics once const auto fontMetrics = FontManager::getFontMetricsForCharacter('A', fontSize); const s32 lineHeight = static_cast(fontMetrics.lineHeight); // Fast ASCII check with early exit bool isAsciiOnly = true; - const char* textPtr = text.data(); - const char* textEnd = textPtr + text.size(); + const char* textPtr = text->data(); + const char* textEnd = textPtr + text->size(); + for (const char* p = textPtr; p < textEnd; ++p) { if (static_cast(*p) > 127) { isAsciiOnly = false; @@ -2894,99 +3182,90 @@ namespace tsl { } } - s32 maxX = x, currX = x, currY = y; // Changed to s32 for consistency - s32 maxY = y + lineHeight; // Initialize with at least one line height + s32 maxX = x, currX = x, currY = y; + s32 maxY = y + lineHeight; bool inHighlight = false; const Color* currentColor = &defaultColor; - // Pre-declare variables used in loops to avoid repeated allocations - u32 currCharacter; - ssize_t codepointWidth; - std::shared_ptr glyph; - bool symbolProcessed; - size_t remainingLength; - u32 symChar; - ssize_t symWidth; - size_t i; - - // Main processing loop with pointer arithmetic for ASCII optimization + // Main processing loop if (isAsciiOnly && !specialSymbols) { // Fast ASCII-only path for (const char* p = textPtr; p < textEnd && currX < maxWidthLimit; ++p) { - currCharacter = static_cast(*p); + u32 currCharacter = static_cast(*p); - // Handle highlighting with configurable delimiters + // Handle highlighting if (highlightingEnabled) { if (currCharacter == highlightStartChar) { inHighlight = true; + currentColor = &defaultColor; } else if (currCharacter == highlightEndChar) { inHighlight = false; + currentColor = &defaultColor; + } else { + currentColor = inHighlight ? highlightColor : &defaultColor; } - currentColor = (currCharacter == highlightStartChar || currCharacter == highlightEndChar) ? - &defaultColor : (inHighlight ? highlightColor : &defaultColor); } // Handle newline if (currCharacter == '\n') { maxX = std::max(currX, maxX); currX = x; - currY += lineHeight; // Use consistent line height - maxY = std::max(maxY, currY + lineHeight); // Update maxY for new line + currY += lineHeight; + maxY = std::max(maxY, currY + lineHeight); continue; } - // Get glyph (now thread-safe) - // Get glyph - UPDATED to use notification cache when requested - if (useNotificationCache) { - glyph = FontManager::getOrCreateNotificationGlyph(currCharacter, monospace, fontSize); - } else { - glyph = FontManager::getOrCreateGlyph(currCharacter, monospace, fontSize); - } + // Get glyph + std::shared_ptr glyph = useNotificationCache ? + FontManager::getOrCreateNotificationGlyph(currCharacter, monospace, fontSize) : + FontManager::getOrCreateGlyph(currCharacter, monospace, fontSize); + if (!glyph) continue; - // Track maximum Y position reached using consistent line height maxY = std::max(maxY, currY + lineHeight); // Render if needed - if (draw && glyph->glyphBmp && currCharacter > 32) { // Space is 32 - renderGlyph(glyph, currX, currY, *currentColor); + if (draw && glyph->glyphBmp && currCharacter > 32) { + renderGlyph(glyph, currX, currY, *currentColor, useNotificationCache); } currX += static_cast(glyph->xAdvance * glyph->currFontSize); } } else { // UTF-8 path with special symbols support - auto itStr = text.cbegin(); - const auto itStrEnd = text.cend(); + auto itStr = text->cbegin(); + const auto itStrEnd = text->cend(); while (itStr != itStrEnd && currX < maxWidthLimit) { // Check for special symbols first - symbolProcessed = false; + bool symbolProcessed = false; + if (specialSymbols) { - remainingLength = itStrEnd - itStr; + const size_t remainingLength = itStrEnd - itStr; + for (const auto& symbol : *specialSymbols) { if (remainingLength >= symbol.length() && std::equal(symbol.begin(), symbol.end(), itStr)) { // Process special symbol - for (i = 0; i < symbol.length(); ) { - symWidth = decode_utf8(&symChar, + for (size_t i = 0; i < symbol.length(); ) { + u32 symChar; + const ssize_t symWidth = decode_utf8(&symChar, reinterpret_cast(&symbol[i])); if (symWidth <= 0) break; if (symChar == '\n') { maxX = std::max(currX, maxX); currX = x; - currY += lineHeight; // Use consistent line height - maxY = std::max(maxY, currY + lineHeight); // Update maxY for new line + currY += lineHeight; + maxY = std::max(maxY, currY + lineHeight); } else { - glyph = FontManager::getOrCreateGlyph(symChar, monospace, fontSize); + auto glyph = FontManager::getOrCreateGlyph(symChar, monospace, fontSize); if (glyph) { - // Track maximum Y position reached using consistent line height maxY = std::max(maxY, currY + lineHeight); if (draw && glyph->glyphBmp && symChar > 32) { - renderGlyph(glyph, currX, currY, *highlightColor); + renderGlyph(glyph, currX, currY, *highlightColor, useNotificationCache); } currX += static_cast(glyph->xAdvance * glyph->currFontSize); } @@ -3003,6 +3282,9 @@ namespace tsl { if (symbolProcessed) continue; // Decode character + u32 currCharacter; + ssize_t codepointWidth; + if (isAsciiOnly) { currCharacter = static_cast(*itStr); codepointWidth = 1; @@ -3013,36 +3295,37 @@ namespace tsl { itStr += codepointWidth; - // Handle highlighting with configurable delimiters + // Handle highlighting if (highlightingEnabled) { if (currCharacter == highlightStartChar) { inHighlight = true; + currentColor = &defaultColor; } else if (currCharacter == highlightEndChar) { inHighlight = false; + currentColor = &defaultColor; + } else { + currentColor = inHighlight ? highlightColor : &defaultColor; } - currentColor = (currCharacter == highlightStartChar || currCharacter == highlightEndChar) ? - &defaultColor : (inHighlight ? highlightColor : &defaultColor); } // Handle newline if (currCharacter == '\n') { maxX = std::max(currX, maxX); currX = x; - currY += lineHeight; // Use consistent line height - maxY = std::max(maxY, currY + lineHeight); // Update maxY for new line + currY += lineHeight; + maxY = std::max(maxY, currY + lineHeight); continue; } - // Get glyph (now thread-safe) - glyph = FontManager::getOrCreateGlyph(currCharacter, monospace, fontSize); + // Get glyph + auto glyph = FontManager::getOrCreateGlyph(currCharacter, monospace, fontSize); if (!glyph) continue; - // Track maximum Y position reached using consistent line height maxY = std::max(maxY, currY + lineHeight); // Render if needed if (draw && glyph->glyphBmp && currCharacter > 32) { - renderGlyph(glyph, currX, currY, *currentColor); + renderGlyph(glyph, currX, currY, *currentColor, useNotificationCache); } currX += static_cast(glyph->xAdvance * glyph->currFontSize); @@ -3050,7 +3333,6 @@ namespace tsl { } maxX = std::max(currX, maxX); - // Return consistent height based on proper font metrics return {maxX - x, maxY - y}; } @@ -3254,7 +3536,7 @@ namespace tsl { #if USING_WIDGET_DIRECTIVE // Method to draw clock, temperatures, and battery percentage - inline void drawWidget() { + inline bool drawWidget() { static time_t lastTimeUpdate = 0; static char timeStr[20]; static char PCB_temperatureStr[10]; @@ -3266,14 +3548,14 @@ namespace tsl { // Draw separator and backdrop if showing any widget if (showAnyWidget) { - drawRect(239, 15 + 2 - 2, 1, 64 + 2, topSeparatorColor); + drawRect(239, 15 + 2 - 2, 1, 64 + 2, aWithOpacity(topSeparatorColor)); if (!ult::hideWidgetBackdrop) { drawUniformRoundedRect( 247, 15 + 2 - 2, (ult::extendedWidgetBackdrop ? tsl::cfg::FramebufferWidth - 255 : tsl::cfg::FramebufferWidth - 215), - 64 + 2, widgetBackdropColor + 64 + 2, a(widgetBackdropColor) ); } } @@ -3446,6 +3728,7 @@ namespace tsl { ); } } + return showAnyWidget; } #endif @@ -3462,64 +3745,41 @@ namespace tsl { } // Optimized glyph rendering - inline void renderGlyph(std::shared_ptr glyph, float x, float y, const Color& color) { - if (!glyph->glyphBmp || color.a == 0) return; + inline void renderGlyph(std::shared_ptr glyph, float x, float y, const Color& color, bool skipAlphaLimit = false) { + if (!glyph->glyphBmp || color.a == 0) [[unlikely]] return; const s32 xPos = static_cast(x + glyph->bounds[0]); const s32 yPos = static_cast(y + glyph->bounds[1]); - // Quick bounds check if (xPos >= cfg::FramebufferWidth || yPos >= cfg::FramebufferHeight || - xPos + glyph->width <= 0 || yPos + glyph->height <= 0) return; + xPos + glyph->width <= 0 || yPos + glyph->height <= 0) [[unlikely]] return; - // Calculate clipping const s32 startX = std::max(0, -xPos); const s32 startY = std::max(0, -yPos); const s32 endX = std::min(glyph->width, static_cast(cfg::FramebufferWidth) - xPos); const s32 endY = std::min(glyph->height, static_cast(cfg::FramebufferHeight) - yPos); - - // Move variable declarations outside loops - const s32 simdEnd = std::min(endX, (startX + 7) & ~7); - s32 bmpX; - uint8_t alpha; - s32 pixelX; - //Color tmpColor = {0}; - - // Render with optimized inner loop + const u8 alphaLimit = skipAlphaLimit ? 0xF : static_cast(0xF * Renderer::s_opacity); const uint8_t* bmpPtr = glyph->glyphBmp + startY * glyph->width; - for (s32 bmpY = startY; bmpY < endY; ++bmpY) { + + for (s32 bmpY = startY; bmpY < endY; ++bmpY, bmpPtr += glyph->width) { const s32 pixelY = yPos + bmpY; - bmpX = startX; - // Process 8 pixels at once - for (; bmpX < simdEnd; ++bmpX) { - alpha = bmpPtr[bmpX] >> 4; - if (alpha) { - pixelX = xPos + bmpX; - if (alpha == 0xF) { - this->setPixel(pixelX, pixelY, color); - } else { - this->setPixelBlendDst(pixelX, pixelY, Color(color.r, color.g, color.b, alpha)); - } + for (s32 bmpX = startX; bmpX < endX; ++bmpX) { + u8 alpha = bmpPtr[bmpX] >> 4; + if (alpha == 0) [[unlikely]] continue; + + alpha = (alpha < alphaLimit) ? alpha : alphaLimit; + const s32 pixelX = xPos + bmpX; + + if (alpha == 0xF) [[likely]] { + this->setPixel(pixelX, pixelY, color); + } else { + this->setPixelBlendDst(pixelX, pixelY, Color(color.r, color.g, color.b, alpha)); } } - - // Process remaining pixels - for (; bmpX < endX; ++bmpX) { - alpha = bmpPtr[bmpX] >> 4; - if (alpha) { - pixelX = xPos + bmpX; - if (alpha == 0xF) { - this->setPixel(pixelX, pixelY, color); - } else { - this->setPixelBlendDst(pixelX, pixelY, Color(color.r, color.g, color.b, alpha)); - } - } - } - bmpPtr += glyph->width; } } - + /** * @brief Adds the layer from screenshot and recording stacks @@ -3793,15 +4053,13 @@ namespace tsl { switch (setLanguage) { case SetLanguage_ZHCN: case SetLanguage_ZHHANS: + case SetLanguage_ZHTW: + case SetLanguage_ZHHANT: TSL_R_TRY(plGetSharedFontByType(&localFontData, PlSharedFontType_ChineseSimplified)); break; case SetLanguage_KO: TSL_R_TRY(plGetSharedFontByType(&localFontData, PlSharedFontType_KO)); break; - case SetLanguage_ZHTW: - case SetLanguage_ZHHANT: - TSL_R_TRY(plGetSharedFontByType(&localFontData, PlSharedFontType_ChineseTraditional)); - break; default: this->m_hasLocalFont = false; break; @@ -3839,33 +4097,59 @@ namespace tsl { * @brief End the current frame * @warning Don't call this before calling \ref startFrame once */ + //inline void endFrame() { + //#if IS_STATUS_MONITOR_DIRECTIVE + // if (isRendering) { + // static u32 lastFPS = 0; + // static u64 cachedIntervalNs = 1000000000ULL / 60; // Default to 60 FPS + // + // u32 fps = TeslaFPS; + // if (__builtin_expect(fps != lastFPS, 0)) { + // cachedIntervalNs = (fps > 0) ? (1000000000ULL / fps) : cachedIntervalNs; + // lastFPS = fps; + // } + // + // // Frame pacing before VSync + // leventWait(&renderingStopEvent, cachedIntervalNs); + // } + //#endif + // + // // Then hardware sync + // this->waitForVSync(); + // framebufferEnd(&this->m_framebuffer); + // this->m_currentFramebuffer = nullptr; + // + // if (tsl::clearGlyphCacheNow.exchange(false)) { + // tsl::gfx::FontManager::clearCache(); + // } + //} + inline void endFrame() { #if IS_STATUS_MONITOR_DIRECTIVE if (isRendering) { static u32 lastFPS = 0; - static u64 cachedIntervalNs = 1000000000ULL / 60; // Default to 60 FPS - + static u64 cachedIntervalNs = 1000000000ULL / 60; + u32 fps = TeslaFPS; if (__builtin_expect(fps != lastFPS, 0)) { cachedIntervalNs = (fps > 0) ? (1000000000ULL / fps) : cachedIntervalNs; lastFPS = fps; } - - // Frame pacing before VSync + + // Just wait - touch thread will signal if needed leventWait(&renderingStopEvent, cachedIntervalNs); } #endif - // Then hardware sync this->waitForVSync(); framebufferEnd(&this->m_framebuffer); this->m_currentFramebuffer = nullptr; - if (tsl::clearGlyphCacheNow.exchange(false)) { + if (tsl::clearGlyphCacheNow.exchange(false, std::memory_order_acq_rel)) { tsl::gfx::FontManager::clearCache(); } } - + }; @@ -4125,7 +4409,7 @@ namespace tsl { // Only recalculate progress if enough time has passed (reduce computation frequency) if (currentTime_ns - lastTimeUpdate > 16666666) { // ~60 FPS update rate //double time_seconds = currentTime_ns / 1000000000.0; - cachedProgress = (std::cos(2.0 * ult::_M_PI * std::fmod(currentTime_ns / 1000000000.0 - 0.25, 1.0)) + 1.0) / 2.0; + cachedProgress = (ult::cos(2.0 * ult::_M_PI * std::fmod(currentTime_ns / 1000000000.0 - 0.25, 1.0)) + 1.0) / 2.0; lastTimeUpdate = currentTime_ns; } progress = cachedProgress; @@ -4150,26 +4434,32 @@ namespace tsl { y = 0; if (this->m_highlightShaking) { t_ns = currentTime_ns - this->m_highlightShakingStartTime; - if (t_ns >= 100000000) // 100ms in nanoseconds + const double t_ms = t_ns / 1000000.0; + + static constexpr double SHAKE_DURATION_MS = 200.0; + + if (t_ms >= SHAKE_DURATION_MS) this->m_highlightShaking = false; else { - // Use faster random generation if available, or cache amplitude - static int cachedAmplitude = std::rand() % 5 + 5; - if (t_ns % 10000000 == 0) // Update amplitude less frequently - cachedAmplitude = std::rand() % 5 + 5; - amplitude = cachedAmplitude; + // Generate random amplitude only once per shake using the start time as seed + const double amplitude = 6.0 + ((this->m_highlightShakingStartTime / 1000000) % 5); + const double progress = t_ms / SHAKE_DURATION_MS; // 0 to 1 + + // Lighter damping so both bounces are visible + const double damping = 1.0 / (1.0 + 2.5 * progress * (1.0 + 1.3 * progress)); + + // 2 full oscillations = 2 clear bounces + const double oscillation = ult::cos(ult::_M_PI * 4.0 * progress); + const double displacement = amplitude * oscillation * damping; + const int offset = static_cast(displacement); - const int shakeOffset = shakeAnimation(t_ns, amplitude); switch (this->m_highlightShakingDirection) { - case FocusDirection::Up: y = -shakeOffset; break; - case FocusDirection::Down: y = shakeOffset; break; - case FocusDirection::Left: x = -shakeOffset; break; - case FocusDirection::Right: x = shakeOffset; break; + case FocusDirection::Up: y = -offset; break; + case FocusDirection::Down: y = offset; break; + case FocusDirection::Left: x = -offset; break; + case FocusDirection::Right: x = offset; break; default: break; } - - x = std::clamp(x, -amplitude, amplitude); - y = std::clamp(y, -amplitude, amplitude); } } @@ -4220,7 +4510,7 @@ namespace tsl { //double time_seconds = currentTime_ns * 0.000000001; // Direct conversion like original // Match original calculation exactly but with higher precision - cachedHighlightProgress = (std::cos(2.0 * ult::_M_PI * std::fmod(currentTime_ns * 0.000000001 - 0.25, 1.0)) + 1.0) * 0.5; + cachedHighlightProgress = (ult::cos(2.0 * ult::_M_PI * std::fmod(currentTime_ns * 0.000000001 - 0.25, 1.0)) + 1.0) * 0.5; lastHighlightUpdate = currentTime_ns; } @@ -4257,26 +4547,32 @@ namespace tsl { if (this->m_highlightShaking) { t_ns = currentTime_ns - this->m_highlightShakingStartTime; - if (t_ns >= 100000000) // 100ms in nanoseconds + const double t_ms = t_ns / 1000000.0; + + static constexpr double SHAKE_DURATION_MS = 200.0; + + if (t_ms >= SHAKE_DURATION_MS) this->m_highlightShaking = false; else { - // Use cached amplitude like in drawClickAnimation - static int cachedAmplitude = std::rand() % 5 + 5; - if (t_ns % 10000000 == 0) - cachedAmplitude = std::rand() % 5 + 5; - amplitude = cachedAmplitude; + // Generate random amplitude only once per shake using the start time as seed + const double amplitude = 6.0 + ((this->m_highlightShakingStartTime / 1000000) % 5); + const double progress = t_ms / SHAKE_DURATION_MS; // 0 to 1 + + // Lighter damping so both bounces are visible + const double damping = 1.0 / (1.0 + 2.5 * progress * (1.0 + 1.3 * progress)); + + // 2 full oscillations = 2 clear bounces + const double oscillation = ult::cos(ult::_M_PI * 4.0 * progress); + const double displacement = amplitude * oscillation * damping; + const int offset = static_cast(displacement); - const int shakeOffset = shakeAnimation(t_ns, amplitude); switch (this->m_highlightShakingDirection) { - case FocusDirection::Up: y = -shakeOffset; break; - case FocusDirection::Down: y = shakeOffset; break; - case FocusDirection::Left: x = -shakeOffset; break; - case FocusDirection::Right: x = shakeOffset; break; + case FocusDirection::Up: y = -offset; break; + case FocusDirection::Down: y = offset; break; + case FocusDirection::Left: x = -offset; break; + case FocusDirection::Right: x = offset; break; default: break; } - - x = std::clamp(x, -amplitude, amplitude); - y = std::clamp(y, -amplitude, amplitude); } } @@ -4401,6 +4697,10 @@ namespace tsl { this->m_clickAnimationProgress = 0; } + inline bool hasFocus() { + return this->m_focused; + } + virtual bool matchesJumpCriteria(const std::string& jumpText, const std::string& jumpValue, bool contains) const { return false; // Default implementation for non-ListItem elements } @@ -4430,15 +4730,15 @@ namespace tsl { * @param a Amplitude * @return Damped sine wave output */ - inline int shakeAnimation(u64 t_ns, float a) { - //float w = 0.2F; - //float tau = 0.05F; - - // Convert nanoseconds to microseconds for the calculation - const int t_us = t_ns / 1000; - - return roundf(a * exp(-(0.05F * t_us) * sin(0.2F * t_us))); - } + //inline int shakeAnimation(u64 t_ns, float a) { + // //float w = 0.2F; + // //float tau = 0.05F; + // + // // Convert nanoseconds to microseconds for the calculation + // const int t_us = t_ns / 1000; + // + // return roundf(a * exp(-(0.05F * t_us) * sin(0.2F * t_us))); + //} private: friend class Gui; @@ -4500,7 +4800,7 @@ namespace tsl { renderer->enableScissoring(0, 88, tsl::cfg::FramebufferWidth, tsl::cfg::FramebufferHeight - 73 - 97 +2+5); if (!hideTableBackground) - renderer->drawRoundedRect(this->getX() + 4+2, this->getY()-4-1, this->getWidth() +2 + 1, this->getHeight() + 20 - endGap+2, 10.0, aWithOpacity(tableBGColor)); + renderer->drawRoundedRect(this->getX() + 4+2, this->getY()-4-1, this->getWidth() +2 + 1, this->getHeight() + 20 - endGap+2, 12.0, aWithOpacity(tableBGColor)); m_renderFunc(renderer, this->getX() + 4, this->getY(), this->getWidth() + 4, this->getHeight()); @@ -4543,7 +4843,7 @@ namespace tsl { float countOffset = 0; for (const char letter : ult::SPLIT_PROJECT_NAME_1) { const double wavePhase = waveScale * (timeBase + static_cast(countOffset)); - const double rawProgress = std::cos(wavePhase - phaseShift); + const double rawProgress = ult::cos(wavePhase - phaseShift); const double normalizedProgress = (rawProgress + 1.0) * 0.5; const double smoothedProgress = normalizedProgress * normalizedProgress * (3.0 - 2.0 * normalizedProgress); @@ -4615,29 +4915,29 @@ namespace tsl { #endif - struct TopCache { - std::string title; - std::string subtitle; - tsl::Color titleColor{0xF, 0xF, 0xF, 0xF}; // white by default - bool widgetDrawn = false; - bool useDynamicLogo = false; - bool disabled = false; - }; - - struct BottomCache { - std::string bottomText; - float backWidth = 0.0f; - float selectWidth = 0.0f; - float nextPageWidth = 0.0f; - bool disabled = false; - }; - - // Global or namespace-level variable - inline TopCache g_cachedTop; - inline BottomCache g_cachedBottom; - - inline std::atomic g_disableMenuCacheOnReturn = false; - + //struct TopCache { + // std::string title; + // std::string subtitle; + // tsl::Color titleColor{0xF, 0xF, 0xF, 0xF}; // white by default + // bool widgetDrawn = false; + // bool useDynamicLogo = false; + // bool disabled = false; + //}; + // + //struct BottomCache { + // std::string bottomText; + // float backWidth = 0.0f; + // float selectWidth = 0.0f; + // float nextPageWidth = 0.0f; + // bool disabled = false; + //}; + // + //// Global or namespace-level variable + //inline TopCache g_cachedTop; + //inline BottomCache g_cachedBottom; + // + //inline std::atomic g_disableMenuCacheOnReturn = false; + /** * @brief The base frame which can contain another view * @@ -4665,7 +4965,7 @@ namespace tsl { tsl::Color titleColor = {0xF,0xF,0xF,0xF}; float letterWidth; #endif - + #if USING_WIDGET_DIRECTIVE bool m_showWidget = false; #endif @@ -4673,7 +4973,7 @@ namespace tsl { float x, y; int offset, y_offset; int fontSize; - + #if IS_LAUNCHER_DIRECTIVE OverlayFrame(const std::string& title, const std::string& subtitle, const bool& _noClickableItems=false, const std::string& menuMode = "", const std::string& colorSelection = "", const std::string& pageLeftName = "", const std::string& pageRightName = "") : Element(), m_title(title), m_subtitle(subtitle), m_noClickableItems(_noClickableItems), m_menuMode(menuMode), m_colorSelection(colorSelection), m_pageLeftName(pageLeftName), m_pageRightName(pageRightName) { @@ -4689,12 +4989,6 @@ namespace tsl { ~OverlayFrame() { delete m_contentElement; - - // Check if returning from a list that disabled caching - if (g_disableMenuCacheOnReturn.exchange(false, std::memory_order_acq_rel)) { - g_cachedTop.disabled = true; - g_cachedBottom.disabled = true; - } } #if USING_FPS_INDICATOR_DIRECTIVE @@ -4737,45 +5031,27 @@ namespace tsl { ult::noClickableItems.store(m_noClickableItems, std::memory_order_release); } - const bool isUltrahandMenu = (m_title == ult::CAPITAL_ULTRAHAND_PROJECT_NAME && - m_subtitle.find("Ultrahand Package") == std::string::npos && - m_subtitle.find("Ultrahand Script") == std::string::npos); - - // Determine if we should use cached data (first frame of new overlay) - const bool useCachedTop = !g_cachedTop.disabled && - !g_cachedTop.title.empty() && - (g_cachedTop.title != m_title || g_cachedTop.subtitle != m_subtitle); - // Use cached or current data for rendering - const std::string& renderTitle = useCachedTop ? g_cachedTop.title : m_title; - const std::string& renderSubtitle = useCachedTop ? g_cachedTop.subtitle : m_subtitle; - const tsl::Color& renderTitleColor = useCachedTop ? g_cachedTop.titleColor : titleColor; - const bool renderUseDynamicLogo = useCachedTop ? g_cachedTop.useDynamicLogo : ult::useDynamicLogo; - - const bool renderIsUltrahandMenu = (renderTitle == ult::CAPITAL_ULTRAHAND_PROJECT_NAME && - renderSubtitle.find("Ultrahand Package") == std::string::npos && - renderSubtitle.find("Ultrahand Script") == std::string::npos); + const bool renderIsUltrahandMenu = (m_title == ult::CAPITAL_ULTRAHAND_PROJECT_NAME && + m_subtitle.find("Ultrahand Package") == std::string::npos && + m_subtitle.find("Ultrahand Script") == std::string::npos); + bool widgetDrawn = false; if (renderIsUltrahandMenu) { - #if USING_WIDGET_DIRECTIVE - if (useCachedTop) { - if (g_cachedTop.widgetDrawn) { - renderer->drawWidget(); - } - } else { - renderer->drawWidget(); - } - #endif + #if USING_WIDGET_DIRECTIVE + widgetDrawn = renderer->drawWidget(); + #endif - if (ult::touchingMenu.load(std::memory_order_acquire) && ult::inMainMenu.load(std::memory_order_acquire)) { - renderer->drawRoundedRect(0.0f + 7, 12.0f, 245.0f - 13, 73.0f, 10.0f, a(clickColor)); + if (ult::touchingMenu.load(std::memory_order_acquire) && (ult::inMainMenu.load(std::memory_order_acquire) || + (ult::inHiddenMode.load(std::memory_order_acquire) && !ult::inSettingsMenu.load(std::memory_order_acquire) && !ult::inSubSettingsMenu.load(std::memory_order_acquire)))) { + renderer->drawRoundedRect(7.0f, 12.0f, 232.0f, 73.0f, 12.0f, a(clickColor)); } x = 20; fontSize = 42; offset = 6; - if (renderUseDynamicLogo) { + if (ult::useDynamicLogo) { x = drawDynamicUltraText(renderer, x, y + offset, fontSize, logoColor1, false); } else { for (const char letter : ult::SPLIT_PROJECT_NAME_1) { @@ -4784,156 +5060,109 @@ namespace tsl { } } - renderer->drawString(ult::SPLIT_PROJECT_NAME_2, false, x, y + offset, fontSize, (logoColor2)); + renderer->drawString(ult::SPLIT_PROJECT_NAME_2, false, x, y + offset, fontSize, logoColor2); } else { - if (useCachedTop) { - if (g_cachedTop.widgetDrawn) { - renderer->drawWidget(); - } - } else { - if (m_showWidget) { - renderer->drawWidget(); - } - } - + #if USING_WIDGET_DIRECTIVE + widgetDrawn = m_showWidget && renderer->drawWidget(); + #endif + x = 20; - y = 52 - 2; + y = 50; fontSize = 32; - if (renderSubtitle.find("Ultrahand Script") != std::string::npos) { - renderer->drawString(renderTitle, false, x, y, fontSize, (defaultScriptColor)); - } else { - tsl::Color drawColor = defaultPackageColor; // Default to green - - if (!useCachedTop) { - // Calculate color only if not using cache - if (!m_colorSelection.empty()) { - const char firstChar = m_colorSelection[0]; - const size_t len = m_colorSelection.length(); - - // Fast path: check first char + length for unique combinations - switch (firstChar) { - case 'g': // green - if (len == 5 && m_colorSelection.compare("green") == 0) { - drawColor = {0x0, 0xF, 0x0, 0xF}; - } - break; - case 'r': // red - if (len == 3 && m_colorSelection.compare("red") == 0) { - drawColor = RGB888("#F7253E"); - } - break; - case 'b': // blue - if (len == 4 && m_colorSelection.compare("blue") == 0) { - drawColor = {0x7, 0x7, 0xF, 0xF}; - } - break; - case 'y': // yellow - if (len == 6 && m_colorSelection.compare("yellow") == 0) { - drawColor = {0xF, 0xF, 0x0, 0xF}; - } - break; - case 'o': // orange - if (len == 6 && m_colorSelection.compare("orange") == 0) { - drawColor = {0xFF, 0xA5, 0x00, 0xFF}; - } - break; - case 'p': // pink or purple - if (len == 4 && m_colorSelection.compare("pink") == 0) { - drawColor = {0xFF, 0x69, 0xB4, 0xFF}; - } else if (len == 6 && m_colorSelection.compare("purple") == 0) { - drawColor = {0x80, 0x00, 0x80, 0xFF}; - } - break; - case 'w': // white - if (len == 5 && m_colorSelection.compare("white") == 0) { - drawColor = {0xF, 0xF, 0xF, 0xF}; - } - break; - case '#': // hex color - if (len == 7 && ult::isValidHexColor(m_colorSelection.substr(1))) { - drawColor = RGB888(m_colorSelection.substr(1)); - } - break; - } - } - titleColor = drawColor; - } else { - drawColor = renderTitleColor; + // Calculate title widths and handle scrolling + calcScrollWidth(renderer, titleScroll, m_title, 32, widgetDrawn); + + const bool isScript = m_subtitle.find("Ultrahand Script") != std::string::npos; + const tsl::Color titleClr = isScript ? defaultScriptColor : getPackageColor(); + + drawScrollableText(renderer, titleScroll, titleClr, x, y, 32, 27, 35); + } + + // Calculate subtitle widths and handle scrolling + std::string subtitle = m_subtitle; + const size_t pos = subtitle.find("?Ultrahand Script"); + if (pos != std::string::npos) { + subtitle.erase(pos, 17); + } + + calcScrollWidth(renderer, subScroll, subtitle, 15, widgetDrawn); + + static const std::vector specialChars = {""}; + const int subtitleX = 20; + const int subtitleY = y + 25; + + if (m_title == ult::CAPITAL_ULTRAHAND_PROJECT_NAME) { + // Version label - no scrolling needed + renderer->drawStringWithColoredSections(ult::versionLabel, false, specialChars, + subtitleX, subtitleY, 15, + bannerVersionTextColor, textSeparatorColor); + } else { + // Handle scrolling subtitle + if (subScroll.trunc) { + if (!subScroll.active) { + subScroll.active = true; + subScroll.timeIn = armTicksToNs(armGetSystemTick()); } - renderer->drawString(renderTitle, false, x, y, fontSize, (drawColor)); - y += 2; + renderer->enableScissoring(subtitleX, subtitleY - 16, subScroll.maxW, 24); + + renderer->drawStringWithColoredSections(subScroll.scrollText, false, specialChars, + subtitleX - static_cast(subScroll.offset), subtitleY, 15, + bannerVersionTextColor, textSeparatorColor); + + renderer->disableScissoring(); + + updateScroll(subScroll); + } else { + // Normal subtitle drawing + renderer->drawStringWithColoredSections(subtitle, false, specialChars, + subtitleX, subtitleY, 15, + bannerVersionTextColor, textSeparatorColor); } } - static const std::vector specialChars2 = {""}; - if (renderTitle == ult::CAPITAL_ULTRAHAND_PROJECT_NAME) { - renderer->drawStringWithColoredSections(ult::versionLabel, false, specialChars2, 20, y+25, 15, (bannerVersionTextColor), textSeparatorColor); - } else { - std::string subtitle = renderSubtitle; - const size_t pos = subtitle.find("?Ultrahand Script"); - if (pos != std::string::npos) { - subtitle.erase(pos, 17); // "?Ultrahand Script".length() = 17 - } - renderer->drawStringWithColoredSections(subtitle, false, specialChars2, 20, y+23, 15, (bannerVersionTextColor), textSeparatorColor); - } - - // Update top cache after rendering for next frame - g_cachedTop.title = m_title; - g_cachedTop.subtitle = m_subtitle; - g_cachedTop.titleColor = titleColor; - g_cachedTop.useDynamicLogo = ult::useDynamicLogo; - // Store whether widget was ACTUALLY drawn this frame - if (isUltrahandMenu) { - g_cachedTop.widgetDrawn = true; // Ultrahand menu always shows widget - } else { - g_cachedTop.widgetDrawn = m_showWidget; // Other menus use m_showWidget - } - g_cachedTop.disabled = false; - #else - // NON-LAUNCHER PATH WITH CACHE SUPPORT + // NON-LAUNCHER PATH if (m_noClickableItems != ult::noClickableItems.load(std::memory_order_acquire)) { ult::noClickableItems.store(m_noClickableItems, std::memory_order_release); } - // Determine if we should use cached data (first frame of new overlay) - const bool useCachedTop = !g_cachedTop.disabled && - !g_cachedTop.title.empty() && - (g_cachedTop.title != m_title || g_cachedTop.subtitle != m_subtitle); + bool widgetDrawn = false; + #if USING_WIDGET_DIRECTIVE + widgetDrawn = m_showWidget && renderer->drawWidget(); + #endif - // Use cached or current data for rendering - const std::string& renderTitle = useCachedTop ? g_cachedTop.title : m_title; - const std::string& renderSubtitle = useCachedTop ? g_cachedTop.subtitle : m_subtitle; + // Calculate title widths and handle scrolling + calcScrollWidth(renderer, titleScroll, m_title, 32, widgetDrawn); + drawScrollableText(renderer, titleScroll, defaultOverlayColor, 20, 50, 32, 27, 35); - #if USING_WIDGET_DIRECTIVE - if (useCachedTop) { - if (g_cachedTop.widgetDrawn) { - renderer->drawWidget(); + // Calculate subtitle widths and handle scrolling + calcScrollWidth(renderer, subScroll, m_subtitle, 15, widgetDrawn); + + const int subtitleX = 20; + const int subtitleY = y + 25; + + if (subScroll.trunc) { + if (!subScroll.active) { + subScroll.active = true; + subScroll.timeIn = armTicksToNs(armGetSystemTick()); } + + renderer->enableScissoring(subtitleX, subtitleY - 16, subScroll.maxW, 24); + + renderer->drawString(subScroll.scrollText, false, + subtitleX - static_cast(subScroll.offset), subtitleY, 15, + bannerVersionTextColor); + + renderer->disableScissoring(); + + updateScroll(subScroll); } else { - if (m_showWidget) - renderer->drawWidget(); + renderer->drawString(m_subtitle, false, subtitleX, subtitleY, 15, bannerVersionTextColor); } #endif - - renderer->drawString(renderTitle, false, 20, 52-2, 32, (defaultOverlayColor)); - renderer->drawString(renderSubtitle, false, 20, y+2+23+2, 15, (bannerVersionTextColor)); - - // Update top cache after rendering for next frame - g_cachedTop.title = m_title; - g_cachedTop.subtitle = m_subtitle; - g_cachedTop.titleColor = {0xF, 0xF, 0xF, 0xF}; - #if USING_WIDGET_DIRECTIVE - g_cachedTop.widgetDrawn = m_showWidget; - #else - g_cachedTop.widgetDrawn = false; - #endif - g_cachedTop.useDynamicLogo = false; - g_cachedTop.disabled = false; - #endif renderer->drawRect(15, tsl::cfg::FramebufferHeight - 73, tsl::cfg::FramebufferWidth - 30, 1, a(bottomSeparatorColor)); @@ -4953,7 +5182,7 @@ namespace tsl { "\uE0E0" + ult::GAP_2 + ult::OK, false, 23).first; #endif - const float _halfGap = gapWidth / 2.0f; + const float _halfGap = gapWidth * 0.5f; if (_halfGap != ult::halfGap.load(std::memory_order_acquire)) ult::halfGap.store(_halfGap, std::memory_order_release); @@ -4971,13 +5200,13 @@ namespace tsl { // Draw back button if touched if (ult::touchingBack) { - renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 10.0f, a(clickColor)); + renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 12.0f, a(clickColor)); } // Draw select button (to the right of back) if touched if (ult::touchingSelect.load(std::memory_order_acquire) && !m_noClickableItems) { renderer->drawRoundedRect(buttonStartX+2 - _halfGap + _backWidth+1, buttonY, - _selectWidth-2, 73.0f, 10.0f, a(clickColor)); + _selectWidth-2, 73.0f, 12.0f, a(clickColor)); } #if IS_LAUNCHER_DIRECTIVE @@ -4989,7 +5218,7 @@ namespace tsl { !m_pageLeftName.empty() ? ("\uE0ED" + ult::GAP_2 + m_pageLeftName) : !m_pageRightName.empty() ? ("\uE0EE" + ult::GAP_2 + m_pageRightName) : (ult::inMainMenu.load(std::memory_order_acquire) ? - (((m_menuMode.compare("packages") == 0) ? + (((m_menuMode == "packages") ? (ult::usePageSwap ? "\uE0EE" : "\uE0ED") : (ult::usePageSwap ? "\uE0ED" : "\uE0EE")) + ult::GAP_2 + (ult::inOverlaysPage.load(std::memory_order_acquire) ? @@ -5008,13 +5237,13 @@ namespace tsl { renderer->drawRoundedRect(nextX, buttonY, _nextPageWidth-2, - 73.0f, 10.0f, a(clickColor)); + 73.0f, 12.0f, a(clickColor)); } } #endif #if IS_LAUNCHER_DIRECTIVE - std::string currentBottomLine = + const std::string currentBottomLine = "\uE0E1" + ult::GAP_2 + (interpreterIsRunningNow ? ult::HIDE : ult::BACK) + ult::GAP_1 + (!m_noClickableItems && !interpreterIsRunningNow @@ -5025,14 +5254,14 @@ namespace tsl { : "") + (!interpreterIsRunningNow ? (!ult::usePageSwap - ? ((m_menuMode.compare("packages") == 0) + ? ((m_menuMode == "packages") ? "\uE0ED" + ult::GAP_2 + ult::OVERLAYS_ABBR - : (m_menuMode.compare("overlays") == 0) + : (m_menuMode == "overlays") ? "\uE0EE" + ult::GAP_2 + ult::PACKAGES : "") - : ((m_menuMode.compare("packages") == 0) + : ((m_menuMode == "packages") ? "\uE0EE" + ult::GAP_2 + ult::OVERLAYS_ABBR - : (m_menuMode.compare("overlays") == 0) + : (m_menuMode == "overlays") ? "\uE0ED" + ult::GAP_2 + ult::PACKAGES : "")) : "") + @@ -5042,41 +5271,23 @@ namespace tsl { ? "\uE0EE" + ult::GAP_2 + m_pageRightName : ""); #else - std::string currentBottomLine = + const std::string currentBottomLine = "\uE0E1" + ult::GAP_2 + ult::BACK + ult::GAP_1 + (!m_noClickableItems ? "\uE0E0" + ult::GAP_2 + ult::OK + ult::GAP_1 : ""); #endif - // Determine if we should use cached bottom text (first frame of new overlay) - const bool useCachedBottom = !g_cachedBottom.disabled && - !g_cachedBottom.bottomText.empty() && - g_cachedBottom.bottomText != currentBottomLine; - - const std::string& menuBottomLine = useCachedBottom ? g_cachedBottom.bottomText : currentBottomLine; - // Render the text - it starts halfGap inside the first button, so edgePadding + halfGap - static const std::vector specialChars = {"\uE0E1","\uE0E0","\uE0ED","\uE0EE","\uE0E5"}; - renderer->drawStringWithColoredSections(menuBottomLine, false, specialChars, + static const std::vector specialChars2 = {"\uE0E1","\uE0E0","\uE0ED","\uE0EE","\uE0E5"}; + renderer->drawStringWithColoredSections(currentBottomLine, false, specialChars2, buttonStartX, 693, 23, - (bottomTextColor), (buttonColor)); - - // Update bottom cache after rendering for next frame - g_cachedBottom.bottomText = currentBottomLine; - g_cachedBottom.backWidth = _backWidth; - g_cachedBottom.selectWidth = _selectWidth; - #if IS_LAUNCHER_DIRECTIVE - g_cachedBottom.nextPageWidth = ult::nextPageWidth.load(std::memory_order_acquire); - #else - g_cachedBottom.nextPageWidth = 0.0f; - #endif - g_cachedBottom.disabled = false; + bottomTextColor, buttonColor); #if USING_FPS_INDICATOR_DIRECTIVE // Update and display FPS const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); - const double currentTime_seconds = currentTime_ns / 1000000000.0; + const double currentTime_seconds = currentTime_ns / 1e9; const float currentFps = updateFPS(currentTime_seconds); static char fpsBuffer[32]; @@ -5087,7 +5298,7 @@ namespace tsl { snprintf(fpsBuffer, sizeof(fpsBuffer), "FPS: %.2f", currentFps); lastFps = currentFps; } - static constexpr auto whiteColor = tsl::Color(0xF,0xF,0xF,0xF); + static constexpr tsl::Color whiteColor = {0xF,0xF,0xF,0xF}; renderer->drawString(fpsBuffer, false, 20, tsl::cfg::FramebufferHeight - 60, 20, whiteColor); #endif @@ -5144,7 +5355,11 @@ namespace tsl { * @param title Title to change to */ inline void setTitle(const std::string &title) { - m_title = title; + if (m_title != title) { + m_title = title; + titleScroll.maxW = 0; // Reset to recalculate + titleScroll.active = titleScroll.trunc = false; + } } /** @@ -5153,11 +5368,158 @@ namespace tsl { * @param title Subtitle to change to */ inline void setSubtitle(const std::string &subtitle) { - m_subtitle = subtitle; + if (m_subtitle != subtitle) { + m_subtitle = subtitle; + subScroll.maxW = 0; // Reset to recalculate + subScroll.active = subScroll.trunc = false; + } } protected: Element *m_contentElement = nullptr; + + private: + // Unified scroll state structure + struct ScrollState { + u64 timeIn, lastUpd; + float offset; + u32 maxW, textW; + bool active, trunc; + std::string scrollText; + }; + + ScrollState subScroll = {0, 0, 0.0f, 0, 0, false, false, ""}; + ScrollState titleScroll = {0, 0, 0.0f, 0, 0, false, false, ""}; + + // Unified width calculation + void calcScrollWidth(gfx::Renderer* r, ScrollState& s, const std::string& text, u32 fontSize, bool widgetDrawn) { + if (s.maxW) return; + + s.maxW = widgetDrawn ? 217 : (tsl::cfg::FramebufferWidth - 40); + + const u32 w = r->getTextDimensions(text, false, fontSize).first; + s.trunc = w > s.maxW; + + if (s.trunc) { + s.scrollText = text + " "; + s.textW = r->getTextDimensions(s.scrollText, false, fontSize).first; + s.scrollText += text; + } else { + s.textW = w; + } + } + + #if IS_LAUNCHER_DIRECTIVE + // Get package color based on m_colorSelection + tsl::Color getPackageColor() const { + if (m_colorSelection.empty()) return defaultPackageColor; + + const char c = m_colorSelection[0]; + const size_t len = m_colorSelection.length(); + + switch (c) { + case 'g': return (len == 5) ? tsl::Color{0x0,0xF,0x0,0xF} : defaultPackageColor; + case 'r': return (len == 3) ? tsl::Color{0xF,0x2,0x4,0xF} : defaultPackageColor; + case 'b': return (len == 4) ? tsl::Color{0x7,0x7,0xF,0xF} : defaultPackageColor; + case 'y': return (len == 6) ? tsl::Color{0xF,0xF,0x0,0xF} : defaultPackageColor; + case 'o': return (len == 6) ? tsl::Color{0xF,0xA,0x0,0xF} : defaultPackageColor; + case 'p': + if (len == 4) return tsl::Color{0xF,0x6,0xB,0xF}; + if (len == 6) return tsl::Color{0x8,0x0,0x8,0xF}; + return defaultPackageColor; + case 'w': return (len == 5) ? tsl::Color{0xF,0xF,0xF,0xF} : defaultPackageColor; + case '#': + return (len == 7 && ult::isValidHexColor(m_colorSelection.substr(1))) + ? RGB888(m_colorSelection.substr(1)) : defaultPackageColor; + default: return defaultPackageColor; + } + } + + // Draw scrollable text with common parameters + void drawScrollableText(gfx::Renderer* r, ScrollState& s, const tsl::Color& clr, + int xPos, int yPos, u32 fontSize, int scissorYOffset, int scissorHeight) { + if (s.trunc) { + if (!s.active) { + s.active = true; + s.timeIn = armTicksToNs(armGetSystemTick()); + } + + r->enableScissoring(xPos, yPos - scissorYOffset, s.maxW, scissorHeight); + r->drawString(s.scrollText, false, xPos - static_cast(s.offset), yPos, fontSize, clr); + r->disableScissoring(); + + updateScroll(s); + } else { + r->drawString(m_title, false, xPos, yPos, fontSize, clr); + } + } + #else + // Non-launcher version + void drawScrollableText(gfx::Renderer* r, ScrollState& s, const tsl::Color& clr, + int xPos, int yPos, u32 fontSize, int scissorYOffset, int scissorHeight) { + if (s.trunc) { + if (!s.active) { + s.active = true; + s.timeIn = armTicksToNs(armGetSystemTick()); + } + + r->enableScissoring(xPos, yPos - scissorYOffset, s.maxW, scissorHeight); + r->drawString(s.scrollText, false, xPos - static_cast(s.offset), yPos, fontSize, clr); + r->disableScissoring(); + + updateScroll(s); + } else { + r->drawString(m_title, false, xPos, yPos, fontSize, clr); + } + } + #endif + + // Unified scroll update + void updateScroll(ScrollState& s) { + const u64 now = armTicksToNs(armGetSystemTick()); + + // Only update at ~120Hz + if (now - s.lastUpd < 8333333ULL) return; + + static constexpr double delay = 3.0, pause = 2.0, vel = 100.0, accel = 0.5, decel = 0.5; + static constexpr double invBil = 1e-9, invAccel = 2.0, invDecel = 2.0; + + const double minDist = s.textW; + const double accelDist = 0.5 * vel * accel; + const double decelDist = 0.5 * vel * decel; + const double constDist = std::max(0.0, minDist - accelDist - decelDist); + const double constTime = constDist / vel; + const double totalDur = delay + accel + constTime + decel + pause; + + const double t = (now - s.timeIn) * invBil; + const double cycle = std::fmod(t, totalDur); + + if (cycle < delay) { + s.offset = 0.0f; + } else if (cycle < delay + accel + constTime + decel) { + const double st = cycle - delay; + double d; + + if (st <= accel) { + const double r = st * invAccel; + d = r * r * accelDist; + } else if (st <= accel + constTime) { + d = accelDist + (st - accel) * vel; + } else { + const double r = (st - accel - constTime) * invDecel; + const double omr = 1.0 - r; + d = accelDist + constDist + (1.0 - omr * omr) * (minDist - accelDist - constDist); + } + + s.offset = static_cast(std::min(d, minDist)); + } else { + s.offset = static_cast(s.textW); + } + + s.lastUpd = now; + + if (t >= totalDur) s.timeIn = now; + } }; #if IS_STATUS_MONITOR_DIRECTIVE @@ -5199,10 +5561,10 @@ namespace tsl { delete this->m_contentElement; // Check if returning from a list that disabled caching - if (g_disableMenuCacheOnReturn.exchange(false, std::memory_order_acq_rel)) { - g_cachedTop.disabled = true; - g_cachedBottom.disabled = true; - } + //if (g_disableMenuCacheOnReturn.exchange(false, std::memory_order_acq_rel)) { + // g_cachedTop.disabled = true; + // g_cachedBottom.disabled = true; + //} } @@ -5229,16 +5591,16 @@ namespace tsl { offset = 0; // Determine if we should use cached data (first frame of new overlay) - const bool useCachedTop = !g_cachedTop.disabled && - !g_cachedTop.title.empty() && - (g_cachedTop.title != m_title || g_cachedTop.subtitle != m_subtitle); + //const bool useCachedTop = !g_cachedTop.disabled && + // !g_cachedTop.title.empty() && + // (g_cachedTop.title != m_title || g_cachedTop.subtitle != m_subtitle); // Use cached or current data for rendering - const std::string& renderTitle = useCachedTop ? g_cachedTop.title : m_title; - const std::string& renderSubtitle = useCachedTop ? g_cachedTop.subtitle : m_subtitle; + const std::string& renderTitle = m_title; + const std::string& renderSubtitle = m_subtitle; - renderer->drawString(renderTitle, false, 20, 50, 32, (defaultOverlayColor)); - renderer->drawString(renderSubtitle, false, 20, y+2+23+2, 15, (bannerVersionTextColor)); + renderer->drawString(renderTitle, false, 20, 50, 32, defaultOverlayColor); + renderer->drawString(renderSubtitle, false, 20, y+2+23, 15, bannerVersionTextColor); if (FullMode == true) renderer->drawRect(15, tsl::cfg::FramebufferHeight - 73, tsl::cfg::FramebufferWidth - 30, 1, a(bottomSeparatorColor)); @@ -5269,13 +5631,13 @@ namespace tsl { // Draw back button rectangle if (ult::touchingBack.load(std::memory_order_acquire)) { - renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 10.0f, a(clickColor)); + renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 12.0f, a(clickColor)); } // Draw select button rectangle (starts right after back button) if (ult::touchingSelect.load(std::memory_order_acquire) && !m_noClickableItems) { renderer->drawRoundedRect(buttonStartX+2 - _halfGap + _backWidth+1, buttonY, - _selectWidth-2, 73.0f, 10.0f, a(clickColor)); + _selectWidth-2, 73.0f, 12.0f, a(clickColor)); } } @@ -5287,16 +5649,16 @@ namespace tsl { : ""); // Determine if we should use cached bottom text (first frame of new overlay) - const bool useCachedBottom = !g_cachedBottom.disabled && - !g_cachedBottom.bottomText.empty() && - g_cachedBottom.bottomText != currentBottomLine; + //const bool useCachedBottom = !g_cachedBottom.disabled && + // !g_cachedBottom.bottomText.empty() && + // g_cachedBottom.bottomText != currentBottomLine; - const std::string& menuBottomLine = useCachedBottom ? g_cachedBottom.bottomText : currentBottomLine; + const std::string& menuBottomLine = currentBottomLine; // Render the text with special character handling if (!deactivateOriginalFooter) { static const std::vector specialChars = {"\uE0E1","\uE0E0","\uE0ED","\uE0EE","\uE0E5"}; - renderer->drawStringWithColoredSections(menuBottomLine, false, specialChars, buttonStartX, 693, 23, (bottomTextColor), (buttonColor)); + renderer->drawStringWithColoredSections(menuBottomLine, false, specialChars, buttonStartX, 693, 23, bottomTextColor, buttonColor); } if (this->m_contentElement != nullptr) @@ -5310,19 +5672,19 @@ namespace tsl { } // Update top cache after rendering for next frame - g_cachedTop.title = m_title; - g_cachedTop.subtitle = m_subtitle; - g_cachedTop.titleColor = {0xF, 0xF, 0xF, 0xF}; // HeaderOverlayFrame uses default white - g_cachedTop.widgetDrawn = false; // HeaderOverlayFrame doesn't use widgets - g_cachedTop.useDynamicLogo = false; // HeaderOverlayFrame doesn't use dynamic logo - g_cachedTop.disabled = false; + //g_cachedTop.title = m_title; + //g_cachedTop.subtitle = m_subtitle; + //g_cachedTop.titleColor = {0xF, 0xF, 0xF, 0xF}; // HeaderOverlayFrame uses default white + //g_cachedTop.widgetDrawn = false; // HeaderOverlayFrame doesn't use widgets + //g_cachedTop.useDynamicLogo = false; // HeaderOverlayFrame doesn't use dynamic logo + //g_cachedTop.disabled = false; // Update bottom cache after rendering for next frame - g_cachedBottom.bottomText = currentBottomLine; - g_cachedBottom.backWidth = ult::backWidth.load(std::memory_order_acquire); - g_cachedBottom.selectWidth = ult::selectWidth.load(std::memory_order_acquire); - g_cachedBottom.nextPageWidth = 0.0f; // HeaderOverlayFrame doesn't use next page - g_cachedBottom.disabled = false; + //g_cachedBottom.bottomText = currentBottomLine; + //g_cachedBottom.backWidth = ult::backWidth.load(std::memory_order_acquire); + //g_cachedBottom.selectWidth = ult::selectWidth.load(std::memory_order_acquire); + //g_cachedBottom.nextPageWidth = 0.0f; // HeaderOverlayFrame doesn't use next page + //g_cachedBottom.disabled = false; } @@ -5458,13 +5820,13 @@ namespace tsl { // Draw back button rectangle if (ult::touchingBack.load(std::memory_order_acquire)) { - renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 10.0f, a(clickColor)); + renderer->drawRoundedRect(buttonStartX+2 - _halfGap, buttonY, _backWidth-1, 73.0f, 12.0f, a(clickColor)); } // Draw select button rectangle if (ult::touchingSelect.load(std::memory_order_acquire)) { renderer->drawRoundedRect(buttonStartX+2 - _halfGap + _backWidth+1, buttonY, - _selectWidth-2, 73.0f, 10.0f, a(clickColor)); + _selectWidth-2, 73.0f, 12.0f, a(clickColor)); } // Draw bottom text @@ -5589,56 +5951,27 @@ namespace tsl { class ListItem; // forward declaration - static std::mutex s_lastFrameItemsMutex; - static std::vector s_lastFrameItems; - static std::atomic s_isForwardCache(false); // NEW VARIABLE FOR FORWARD CACHING - static std::atomic s_hasValidFrame(false); - static std::atomic s_cachedTopBound{0}; - static std::atomic s_cachedBottomBound{0}; - static std::atomic s_cachedHeight{0}; - static std::atomic s_cachedListHeight{0}; - static std::atomic s_cachedActualContentBottom{0}; - static std::atomic s_shouldDrawScrollbar(false); - static std::atomic s_cachedScrollbarHeight{0}; - static std::atomic s_cachedScrollbarOffset{0}; - static std::atomic s_cachedScrollbarX{0}; - static std::atomic s_cachedScrollbarY{0}; static std::atomic s_currentScrollVelocity{0}; - static std::atomic s_directionalKeyReleased{false}; - static std::atomic s_cacheForwardFrameOnce(true); static std::atomic lastInternalTouchRelease(true); - static std::atomic s_hasClearedCache(false); - - //static std::atomic s_skipCaching(false); static std::mutex s_safeToSwapMutex; - //static std::mutex s_safeTransitionMutex; static std::atomic s_safeToSwap{false}; - - static std::atomic fullDeconstruction{false}; - static std::atomic skipDeconstruction{false}; static std::atomic skipOnce{false}; static std::atomic isTableScrolling{false}; + static bool s_triggerShakeOnce; class List : public Element { public: List() : Element() { - if (fullDeconstruction.load(std::memory_order_acquire)) { - return; - } - + s_safeToSwap.store(false, std::memory_order_release); - //s_directionalKeyReleased.store(false, std::memory_order_release); - //std::lock_guard lock(s_safeTransitionMutex); - //s_safeToSwap.store(false, std::memory_order_release); // Initialize instance state - m_hasForwardCached = false; m_pendingJump = false; - m_cachingDisabled = false; + //m_cachingDisabled = false; m_clearList = false; m_focusedIndex = 0; m_offset = 0; @@ -5646,199 +5979,205 @@ namespace tsl { m_listHeight = 0; actualItemCount = 0; m_isItem = false; + m_hasSetInitialFocusHack = false; + m_hasRenderedInitialFocus = false; - { - std::lock_guard lock(s_lastFrameItemsMutex); - - s_hasClearedCache.store(false, std::memory_order_release); - - if (skipDeconstruction.load(std::memory_order_acquire)) { - purgePendingItems(); - } else { - s_cacheForwardFrameOnce.store(true, std::memory_order_release); - skipOnce.store(false, std::memory_order_release); - } - } + // Initialize new scrollbar color transition members + m_scrollbarAtWall = false; + m_scrollbarColorTransition = 0.0f; + m_lastWallReleaseTime = 0; } virtual ~List() { - if (fullDeconstruction.load(std::memory_order_acquire)) { - std::lock_guard lock(s_lastFrameItemsMutex); // Add this - - purgePendingItems(); - - if (s_isForwardCache.load(std::memory_order_acquire)) { - clearStaticCacheUnsafe(true); - s_isForwardCache.store(false, std::memory_order_release); - } else { - clearStaticCacheUnsafe(); - } - clearItems(); - - return; - } - s_safeToSwap.store(false, std::memory_order_release); - //s_directionalKeyReleased.store(false, std::memory_order_release); - //std::lock_guard lock(s_safeTransitionMutex); - //s_safeToSwap.store(false, std::memory_order_release); - - // NOW take mutex for shared static variable operations - { - std::lock_guard lock(s_lastFrameItemsMutex); - - if (!skipDeconstruction.load(std::memory_order_acquire)) { - purgePendingItems(); - - if (!s_isForwardCache.load(std::memory_order_acquire)) { - clearStaticCacheUnsafe(); - clearItems(); - } - - s_isForwardCache.store(false, std::memory_order_release); - s_cacheForwardFrameOnce.store(true, std::memory_order_release); - } - - if (m_cachingDisabled || (skipOnce.load(std::memory_order_acquire) && skipDeconstruction.load(std::memory_order_acquire))) { - purgePendingItems(); - clearItems(); - } else if (skipDeconstruction.load(std::memory_order_acquire)) { - skipOnce.store(true, std::memory_order_release); - } - } + purgePendingItems(); + clearItems(); } - + virtual void draw(gfx::Renderer* renderer) override { - if (fullDeconstruction.load(std::memory_order_acquire)) { - return; - } - + s_safeToSwap.store(false, std::memory_order_release); std::lock_guard lock(s_safeToSwapMutex); - //s_safeToSwap.store(false, std::memory_order_release); - // Early exit optimizations if (m_clearList) { - if (!s_isForwardCache.load(std::memory_order_acquire)) { - clearStaticCacheUnsafe(); - - } else { - clearStaticCacheUnsafe(true); - } clearItems(); - s_isForwardCache.store(false, std::memory_order_release); - s_cacheForwardFrameOnce.store(true, std::memory_order_release); return; } - { - std::lock_guard lock(s_lastFrameItemsMutex); - // Process pending operations in batch - if (!m_itemsToAdd.empty()) addPendingItems(); - if (!m_itemsToRemove.empty()) removePendingItems(); - } - // Only lock when checking s_lastFrameItems.empty() - bool shouldResetCache = false; - { - std::lock_guard lock(s_lastFrameItemsMutex); - if (!s_hasValidFrame.load(std::memory_order_acquire) && s_lastFrameItems.empty() && - !s_cacheForwardFrameOnce.load(std::memory_order_acquire)) { - shouldResetCache = true; - } - } + bool justResolved = false; - if (shouldResetCache) { - s_cacheForwardFrameOnce.store(true, std::memory_order_release); - } - - // This part is for fixing returning to Ultrahand without rendering that first frame skip - static bool checkOnce = true; - if (checkOnce && m_pendingJump && !s_hasValidFrame.load(std::memory_order_acquire) && - !s_isForwardCache.load(std::memory_order_acquire)) { - checkOnce = false; - return; - } else { - static bool checkOnce2 = true; - if (checkOnce2) { - checkOnce = true; - checkOnce2 = false; - } - } - - // Check if we should render cached frame - if ((m_pendingJump || !m_hasForwardCached) && - (s_hasValidFrame.load(std::memory_order_acquire) || s_isForwardCache.load(std::memory_order_acquire))) { - { - std::lock_guard lock(s_lastFrameItemsMutex); - // Render using cached frame state if available - renderCachedFrame(renderer); // This method handles its own locking - - // Clear cache after rendering - if (s_isForwardCache.load(std::memory_order_acquire)) - clearStaticCacheUnsafe(true); // This method handles its own locking - else - clearStaticCacheUnsafe(); // This method handles its own locking + // Process pending operations + if (!m_itemsToAdd.empty()) { + // Add items to m_items but DON'T invalidate yet + addPendingItems(true); // Skip invalidate + + // Calculate m_listHeight FIRST + m_listHeight = BOTTOM_PADDING; + for (Element* entry : m_items) { + m_listHeight += entry->getHeight(); } - return; + // NOW invalidate with m_offset still at 0 to get initial positions + invalidate(); + + // THEN resolve jump AFTER layout has positioned items + if (m_pendingJump && !m_items.empty()) { + resolveJumpImmediately(); + justResolved = true; + } else if (!m_hasSetInitialFocusHack && !m_items.empty()) { + // NO JUMP: Set up focus on first item + for (size_t i = 0; i < m_items.size(); ++i) { + if (m_items[i]->m_isItem) { + m_focusedIndex = i; + m_hasSetInitialFocusHack = true; + + // Calculate position using the same logic as updateScrollOffset + float itemPos = 0.0f; + for (size_t j = 0; j < i && j < m_items.size(); ++j) { + itemPos += m_items[j]->getHeight(); + } + + const float itemHeight = m_items[i]->getHeight(); + const float viewHeight = static_cast(getHeight()); + const float maxOffset = (m_listHeight > viewHeight) ? + static_cast(m_listHeight - viewHeight) : 0.0f; + + const float itemCenterPos = itemPos + (itemHeight / 2.0f); + const float viewportCenter = viewHeight / 2.0f + VIEW_CENTER_OFFSET + 0.5f; + const float idealOffset = std::max(0.0f, std::min(itemCenterPos - viewportCenter, maxOffset)); + + m_offset = m_nextOffset = idealOffset; + + // Now invalidate AGAIN with correct offset + invalidate(); + justResolved = true; + break; + } + } + } + } + if (!m_itemsToRemove.empty()) { + removePendingItems(); } - // Cache bounds for hot loop const s32 topBound = getTopBound(); const s32 bottomBound = getBottomBound(); const s32 height = getHeight(); renderer->enableScissoring(getLeftBound(), topBound-8, getWidth() + 8, height + 14); - - { - std::lock_guard lock(s_lastFrameItemsMutex); - // Optimized visibility culling - for (Element* entry : m_items) { - if (entry->getBottomBound() > topBound && entry->getTopBound() < bottomBound) { - entry->frame(renderer); + + // Manually set focus flag on the target item for the first frame + if (m_hasSetInitialFocusHack && !m_hasRenderedInitialFocus && !m_items.empty() && m_focusedIndex < m_items.size()) { + bool anyItemFocused = false; + for (Element* item : m_items) { + if (item && item->hasFocus()) { + anyItemFocused = true; + break; } } + + if (!anyItemFocused) { + m_items[m_focusedIndex]->setFocused(true); + } + m_hasRenderedInitialFocus = true; } - + + for (Element* entry : m_items) { + if (entry->getBottomBound() > topBound && entry->getTopBound() < bottomBound) { + entry->frame(renderer); + } + } + renderer->disableScissoring(); - // Draw scrollbar only when needed if (m_listHeight > height) { drawScrollbar(renderer, height); - updateScrollAnimation(); + if (!justResolved) { + updateScrollAnimation(); + } } - // Handle caching operations - lock only for the critical section - { - std::lock_guard lock(s_lastFrameItemsMutex); - - if (!s_isForwardCache.load(std::memory_order_acquire) && s_hasValidFrame.load(std::memory_order_acquire)) { - // Clear cache after rendering (this is called within the lock) - clearStaticCacheUnsafe(); // New unsafe version for use within lock - s_hasValidFrame.store(false, std::memory_order_release); - s_cacheForwardFrameOnce.store(true, std::memory_order_release); - } - - if (!m_cachingDisabled) { - if (s_cacheForwardFrameOnce.load(std::memory_order_acquire) && - !s_hasValidFrame.load(std::memory_order_acquire)) { - // Cache current frame (this is called within the lock) - cacheCurrentFrameUnsafe(true); // New unsafe version for use within lock - s_cacheForwardFrameOnce.store(false, std::memory_order_release); - s_isForwardCache.store(true, std::memory_order_release); - s_hasValidFrame.store(true, std::memory_order_release); - m_hasForwardCached = true; - } - cacheCurrentScrollbar(); - } - - //if (m_cachingDisabled ||(s_hasValidFrame.load(std::memory_order_acquire) && s_isForwardCache.load(std::memory_order_acquire))) - // s_safeToSwap.store(true, std::memory_order_release); - } s_safeToSwap.store(true, std::memory_order_release); } + + void resolveJumpImmediately() { + float h = 0.0f; + bool foundMatch = false; + + for (size_t i = 0; i < m_items.size(); ++i) { + if (m_items[i]->matchesJumpCriteria(m_jumpToText, m_jumpToValue, m_jumpToExactMatch)) { + m_focusedIndex = i; + foundMatch = true; + + // Calculate position using the same logic as updateScrollOffset + const float itemHeight = m_items[i]->getHeight(); + const float viewHeight = static_cast(getHeight()); + const float maxOffset = (m_listHeight > viewHeight) ? + static_cast(m_listHeight - viewHeight) : 0.0f; + + const float itemCenterPos = h + (itemHeight / 2.0f); + const float viewportCenter = viewHeight / 2.0f + VIEW_CENTER_OFFSET + 0.5f; + const float idealOffset = std::max(0.0f, std::min(itemCenterPos - viewportCenter, maxOffset)); + + m_offset = m_nextOffset = idealOffset; + + // Now invalidate AGAIN with correct offset so layout repositions items + invalidate(); + + // Manually set the focus flag for first frame drawing + m_items[m_focusedIndex]->setFocused(true); + + m_hasSetInitialFocusHack = true; + m_hasRenderedInitialFocus = true; + m_pendingJump = false; + + break; + } + + h += m_items[i]->getHeight(); + } + + // FALLBACK: If no match found, focus first item instead + if (!foundMatch) { + for (size_t i = 0; i < m_items.size(); ++i) { + if (m_items[i]->m_isItem) { + m_focusedIndex = i; + m_hasSetInitialFocusHack = true; + + // Calculate position using the same logic as updateScrollOffset + float itemPos = 0.0f; + for (size_t j = 0; j < i && j < m_items.size(); ++j) { + itemPos += m_items[j]->getHeight(); + } + + const float itemHeight = m_items[i]->getHeight(); + const float viewHeight = static_cast(getHeight()); + const float maxOffset = (m_listHeight > viewHeight) ? + static_cast(m_listHeight - viewHeight) : 0.0f; + + const float itemCenterPos = itemPos + (itemHeight / 2.0f); + const float viewportCenter = viewHeight / 2.0f + VIEW_CENTER_OFFSET + 0.5f; + const float idealOffset = std::max(0.0f, std::min(itemCenterPos - viewportCenter, maxOffset)); + + m_offset = m_nextOffset = idealOffset; + + // Now invalidate AGAIN with correct offset + invalidate(); + + // Manually set the focus flag for first frame drawing + m_items[i]->setFocused(true); + m_hasRenderedInitialFocus = true; + + break; + } + } + } + + m_pendingJump = false; + } + virtual void layout(u16 parentX, u16 parentY, u16 parentWidth, u16 parentHeight) override { s32 y = getY() - m_offset; @@ -5919,20 +6258,17 @@ namespace tsl { inline void clear() { m_clearList = true; } - + virtual Element* requestFocus(Element* oldFocus, FocusDirection direction) override { if (m_clearList || !m_itemsToAdd.empty()) return nullptr; - static bool delayedHandle = false; - - // NEW: Handle pending jump to specific item - if (m_pendingJump && !delayedHandle) { - delayedHandle = true; - return handleJumpToItem(oldFocus); - } else if (m_pendingJump) { - m_pendingJump = false; - delayedHandle = false; - return handleJumpToItem(oldFocus); // needs to be handled 2x for proper rendering + // If jump was just resolved, return the target item with proper focus + if (m_hasSetInitialFocusHack && direction == FocusDirection::None && m_focusedIndex < m_items.size()) { + // Request focus properly through the focus system + Element* newFocus = m_items[m_focusedIndex]->requestFocus(oldFocus, FocusDirection::None); + if (newFocus && newFocus != oldFocus) { + return newFocus; + } } if (jumpToBottom.exchange(false, std::memory_order_acq_rel)) @@ -5946,7 +6282,6 @@ namespace tsl { if (skipUp.exchange(false, std::memory_order_acq_rel)) return handleSkipUp(oldFocus); - if (direction == FocusDirection::None) { return handleInitialFocus(oldFocus); @@ -5997,14 +6332,19 @@ namespace tsl { m_lastNavigationResult = NavigationResult::None; m_isHolding = false; m_stoppedAtBoundary = false; + m_justArrivedAtBoundary = false; m_lastNavigationTime = 0; m_lastScrollTime = 0; } - inline void disableCaching() { - m_cachingDisabled = true; + inline void disableCaching(bool preserveTopAndBottom = false) { + //m_cachingDisabled = true; //clearFrameCache(); - g_disableMenuCacheOnReturn.store(true, std::memory_order_release); + //g_disableMenuCacheOnReturn.store(true, std::memory_order_release); + //if (!preserveTopAndBottom) { + // g_cachedTop.disabled = true; + // g_cachedBottom.disabled = true; + //} } protected: @@ -6037,9 +6377,13 @@ namespace tsl { std::string m_jumpToValue; bool m_jumpToExactMatch = false; bool m_pendingJump = false; - bool m_hasForwardCached = false; - bool m_cachingDisabled = false; // New flag to disable caching - + //bool m_hasForwardCached = false; + //bool m_cachingDisabled = false; // New flag to disable caching + + bool m_justArrivedAtBoundary = false; + bool m_hasSetInitialFocusHack = false; + bool m_hasRenderedInitialFocus = false; + //bool m_hasRenderedCache = false; // Stack variables for hot path - reused to avoid allocations @@ -6050,6 +6394,11 @@ namespace tsl { static constexpr float SCROLLBAR_Y_OFFSET = 3.0f; static constexpr float SCROLLBAR_HEIGHT_TRIM = 6.0f; + bool m_scrollbarAtWall = false; + float m_scrollbarColorTransition = 0.0f; // 0.0 = scrollBarColor, 1.0 = scrollBarWallColor + u64 m_lastWallReleaseTime = 0; + static constexpr u64 COLOR_TRANSITION_DURATION_NS = 300000000ULL; // 0.3 seconds + //static constexpr float smoothingFactor = 0.15f; //static constexpr float dampingFactor = 0.3f; static constexpr float TABLE_SCROLL_STEP_SIZE = 10; @@ -6058,9 +6407,7 @@ namespace tsl { static constexpr float VIEW_CENTER_OFFSET = 7.0f; u64 m_lastScrollTime = 0; - float m_scrollVelocity = 0.0f; - bool m_touchScrollActive = false; enum class NavigationResult { @@ -6075,126 +6422,6 @@ namespace tsl { private: - // Thread-safe versions (handle their own locking) - static void clearStaticCache(bool preservePointers = false) { - std::lock_guard lock(s_lastFrameItemsMutex); - clearStaticCacheUnsafe(preservePointers); - } - - void cacheCurrentFrame(bool preservePointers = false) { - std::lock_guard lock(s_lastFrameItemsMutex); - cacheCurrentFrameUnsafe(preservePointers); - } - - - static void clearStaticCacheUnsafe(bool preservePointers = false) { - //std::lock_guard lock(s_lastFrameItemsMutex); - if (!preservePointers) { - // Normal case: delete elements and clear - for (Element* el : s_lastFrameItems) { - delete el; - } - } - - s_lastFrameItems.clear(); - //s_lastFrameItems.shrink_to_fit(); - - // CRITICAL: Always reset these, even for forward cache! - s_hasValidFrame.store(false, std::memory_order_release); // This MUST be false after clearing - s_isForwardCache.store(false, std::memory_order_release); - - s_cachedTopBound.store(0, std::memory_order_release); - s_cachedBottomBound.store(0, std::memory_order_release); - s_cachedHeight.store(0, std::memory_order_release); - s_cachedListHeight.store(0, std::memory_order_release); - s_cachedActualContentBottom.store(0, std::memory_order_release); - - s_shouldDrawScrollbar.store(false, std::memory_order_release); - s_cachedScrollbarHeight.store(0, std::memory_order_release); - s_cachedScrollbarOffset.store(0, std::memory_order_release); - s_cachedScrollbarX.store(0, std::memory_order_release); - s_cachedScrollbarY.store(0, std::memory_order_release); - } - - void cacheCurrentFrameUnsafe(bool preservePointers = false) { - //std::lock_guard lock(s_lastFrameItemsMutex); - if (!preservePointers) { - for (Element* el : s_lastFrameItems) delete el; - } - - s_lastFrameItems = m_items; - - // Store new cache values using atomic stores - s_cachedTopBound.store(getTopBound(), std::memory_order_release); - s_cachedBottomBound.store(getBottomBound(), std::memory_order_release); - s_cachedHeight.store(getHeight(), std::memory_order_release); - s_cachedListHeight.store(m_listHeight, std::memory_order_release); - - if (preservePointers) - s_isForwardCache.store(true, std::memory_order_release); - - s_hasValidFrame.store(true, std::memory_order_release); - } - - void cacheCurrentScrollbar() { - const s32 cachedHeight = s_cachedHeight.load(std::memory_order_acquire); - const s32 cachedListHeight = s_cachedListHeight.load(std::memory_order_acquire); - - s_shouldDrawScrollbar.store((cachedListHeight > cachedHeight), std::memory_order_release); - - if (s_shouldDrawScrollbar.load(std::memory_order_acquire)) { - const float viewHeight = static_cast(cachedHeight); - const float totalHeight = static_cast(cachedListHeight); - const u32 maxScroll = std::max(static_cast(totalHeight - viewHeight), 1u); - - u32 scrollbarHeight = std::min( - static_cast((viewHeight * viewHeight) / totalHeight), - static_cast(viewHeight) - ); - - u32 scrollbarOffset = std::min( - static_cast((m_offset / maxScroll) * (viewHeight - scrollbarHeight)), - static_cast(viewHeight - scrollbarHeight) // corrected potential bug - ); - - scrollbarHeight -= SCROLLBAR_HEIGHT_TRIM; - - s_cachedScrollbarHeight.store(scrollbarHeight, std::memory_order_release); - s_cachedScrollbarOffset.store(scrollbarOffset, std::memory_order_release); - s_cachedScrollbarX.store(getRightBound() + SCROLLBAR_X_OFFSET, std::memory_order_release); - s_cachedScrollbarY.store(getY() + scrollbarOffset + SCROLLBAR_Y_OFFSET, std::memory_order_release); - } - } - - void renderCachedFrame(gfx::Renderer* renderer) { - const s32 cachedTopBound = s_cachedTopBound.load(std::memory_order_acquire); - const s32 cachedBottomBound = s_cachedBottomBound.load(std::memory_order_acquire); - const s32 cachedHeight = s_cachedHeight.load(std::memory_order_acquire); - - renderer->enableScissoring(getLeftBound(), cachedTopBound - 8, getWidth() + 8, cachedHeight + 14); - - for (Element* entry : s_lastFrameItems) { - if (entry && - entry->getBottomBound() > cachedTopBound && - entry->getTopBound() < cachedBottomBound) { - entry->frame(renderer); - } - } - - renderer->disableScissoring(); - - if (s_shouldDrawScrollbar.load(std::memory_order_acquire)) { - const u32 scrollbarX = s_cachedScrollbarX.load(std::memory_order_acquire); - const u32 scrollbarY = s_cachedScrollbarY.load(std::memory_order_acquire); - const u32 scrollbarHeight = s_cachedScrollbarHeight.load(std::memory_order_acquire); - - renderer->drawRect(scrollbarX, scrollbarY, 5, scrollbarHeight, a(trackBarColor)); - renderer->drawCircle(scrollbarX + 2, scrollbarY, 2, true, a(trackBarColor)); - renderer->drawCircle(scrollbarX + 2, scrollbarY + scrollbarHeight, 2, true, a(trackBarColor)); - } - } - - void clearItems() { for (Element* item : m_items) delete item; @@ -6206,9 +6433,10 @@ namespace tsl { invalidate(); m_clearList = false; actualItemCount = 0; + m_hasSetInitialFocusHack = false; } - void addPendingItems() { + void addPendingItems(bool skipInvalidate = false) { for (auto [index, element] : m_itemsToAdd) { element->invalidate(); if (index >= 0 && static_cast(index) < m_items.size()) { @@ -6217,11 +6445,12 @@ namespace tsl { m_items.push_back(element); } } - m_itemsToAdd = {}; - //m_itemsToAdd.clear(); - //m_itemsToAdd.shrink_to_fit(); - invalidate(); - updateScrollOffset(); + m_itemsToAdd.clear(); + + if (!skipInvalidate) { + invalidate(); + updateScrollOffset(); + } } void removePendingItems() { @@ -6288,15 +6517,70 @@ namespace tsl { scrollbarOffset = std::min(static_cast((m_offset / maxScrollableHeight) * (viewHeight - scrollbarHeight)), static_cast(viewHeight - scrollbarHeight)); - + const u32 scrollbarX = getRightBound() + SCROLLBAR_X_OFFSET; - const u32 scrollbarY = getY() + scrollbarOffset+SCROLLBAR_Y_OFFSET; + const u32 scrollbarY = getY() + scrollbarOffset + SCROLLBAR_Y_OFFSET; + + scrollbarHeight -= SCROLLBAR_HEIGHT_TRIM; + + // Check if we're at a wall (boundary) + const bool currentlyAtWall = (m_lastNavigationResult == NavigationResult::HitBoundary) && + (m_stoppedAtBoundary || m_justArrivedAtBoundary); + + // Detect transition from "not at wall" to "at wall" - trigger flash ONCE + if (currentlyAtWall && !m_scrollbarAtWall && !s_directionalKeyReleased.load(std::memory_order_acquire)) { + //m_scrollbarAtWall = true; + m_scrollbarColorTransition = 1.0f; // Instant jump to wall color + //m_lastWallReleaseTime = armTicksToNs(armGetSystemTick()); // Start transition immediately + } - scrollbarHeight -= SCROLLBAR_HEIGHT_TRIM; // shorten very slightly - - renderer->drawRect(scrollbarX, scrollbarY, 5, scrollbarHeight, a(trackBarColor)); - renderer->drawCircle(scrollbarX + 2, scrollbarY, 2, true, a(trackBarColor)); - renderer->drawCircle(scrollbarX + 2, scrollbarY + scrollbarHeight, 2, true, a(trackBarColor)); + // Detect transition from "not at wall" to "at wall" - trigger flash ONCE + if (currentlyAtWall && !m_scrollbarAtWall && s_directionalKeyReleased.load(std::memory_order_acquire)) { + m_scrollbarAtWall = true; + m_scrollbarColorTransition = 1.0f; // Instant jump to wall color + m_lastWallReleaseTime = armTicksToNs(armGetSystemTick()); // Start transition immediately + } + + // Reset flag when we leave the wall (so we can trigger again next time) + if (!currentlyAtWall && m_scrollbarAtWall) { + m_scrollbarAtWall = false; + m_scrollbarColorTransition = 0.0f; // Reset to normal immediately + } + + // Smooth transition back to scrollBarColor over 0.5s + if (m_scrollbarAtWall && m_scrollbarColorTransition > 0.0f) { + const u64 currentTime = armTicksToNs(armGetSystemTick()); + const u64 elapsed = currentTime - m_lastWallReleaseTime; + + if (elapsed >= COLOR_TRANSITION_DURATION_NS) { + m_scrollbarColorTransition = 0.0f; // Transition complete + } else { + // Linear interpolation from 1.0 to 0.0 + const float progress = static_cast(elapsed) / static_cast(COLOR_TRANSITION_DURATION_NS); + m_scrollbarColorTransition = 1.0f - progress; + } + } + + // Interpolate between scrollBarColor and scrollBarWallColor + tsl::Color currentColor = scrollBarColor; + if (m_scrollbarColorTransition >= 1.0f) { + currentColor = scrollBarWallColor; + } else if (m_scrollbarColorTransition > 0.0f) { + const float t = m_scrollbarColorTransition; + const float oneMinusT = 1.0f - t; + + const u8 r = static_cast(scrollBarColor.r * oneMinusT + scrollBarWallColor.r * t); + const u8 g = static_cast(scrollBarColor.g * oneMinusT + scrollBarWallColor.g * t); + const u8 b = static_cast(scrollBarColor.b * oneMinusT + scrollBarWallColor.b * t); + const u8 a = static_cast(scrollBarColor.a * oneMinusT + scrollBarWallColor.a * t); + + currentColor = tsl::Color(r, g, b, a); + } + + // Draw scrollbar with interpolated color + renderer->drawRect(scrollbarX, scrollbarY, 5, scrollbarHeight, a(currentColor)); + renderer->drawCircle(scrollbarX + 2, scrollbarY, 2, true, a(currentColor)); + renderer->drawCircle(scrollbarX + 2, scrollbarY + scrollbarHeight, 2, true, a(currentColor)); } @@ -6434,7 +6718,8 @@ namespace tsl { prevOffset = m_offset; } } - + + Element* handleInitialFocus(Element* oldFocus) { const size_t itemCount = m_items.size(); if (itemCount == 0) return nullptr; @@ -6475,18 +6760,36 @@ namespace tsl { return nullptr; } - + inline void triggerWallEffect(FocusDirection direction) { + triggerRumbleClick.store(true, std::memory_order_release); + triggerWallSound.store(true, std::memory_order_release); + + if (m_items.empty()) + return; + + // Directional search bounds + ssize_t i = static_cast(m_focusedIndex); + ssize_t end = (direction == FocusDirection::Down) ? -1 : static_cast(m_items.size()); + ssize_t step = (direction == FocusDirection::Down) ? -1 : 1; + + // Walk until we hit a real item + for (; i != end; i += step) { + auto *it = m_items[i]; + if (it->m_isItem) { + it->shakeHighlight(direction); + return; + } + } + } + inline Element* handleDownFocus(Element* oldFocus) { - static bool triggerShakeOnce = true; const bool atBottom = isAtBottom(); updateHoldState(); - // Check if the next item is non-focusable BEFORE we do anything else - if (m_focusedIndex + 1 < int(m_items.size())) { - Element* nextItem = m_items[m_focusedIndex + 1]; - if (!nextItem->m_isItem) { - isTableScrolling.store(true, std::memory_order_release); - } + // Check if the next item is non-focusable + if (m_focusedIndex + 1 < static_cast(m_items.size()) && + !m_items[m_focusedIndex + 1]->m_isItem) { + isTableScrolling.store(true, std::memory_order_release); } // If holding and at boundary, try to scroll first @@ -6501,9 +6804,8 @@ namespace tsl { if (result != oldFocus) { m_lastNavigationResult = NavigationResult::Success; m_stoppedAtBoundary = false; - triggerShakeOnce = true; // This resets it for THIS function - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); + s_triggerShakeOnce = true; + m_justArrivedAtBoundary = isAtBottom(); triggerNavigationFeedback(); return result; } @@ -6511,63 +6813,51 @@ namespace tsl { // Check if we can still scroll down if (!atBottom) { scrollDown(); - triggerShakeOnce = true; // ADDED: Reset when scrolling away from boundary + s_triggerShakeOnce = true; return oldFocus; } - // At absolute bottom - check for wrapping (single tap) - if (!m_isHolding && !m_hasWrappedInCurrentSequence && atBottom) { + // Force boundary hit before allowing wrap + if (m_justArrivedAtBoundary) { + m_justArrivedAtBoundary = false; + m_stoppedAtBoundary = true; + s_triggerShakeOnce = false; + m_lastNavigationResult = NavigationResult::HitBoundary; + triggerWallEffect(FocusDirection::Down); + return oldFocus; + } + + // Check for wrapping (single tap only) + if (!m_isHolding && !m_hasWrappedInCurrentSequence) { s_directionalKeyReleased.store(false, std::memory_order_release); m_hasWrappedInCurrentSequence = true; m_lastNavigationResult = NavigationResult::Wrapped; - - //if (result->m_isItem) { - triggerShakeOnce = true; // Reset when wrapping - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - //} + s_triggerShakeOnce = true; return handleJumpToTop(oldFocus); } // Set boundary flag (for holding) - if (m_isHolding && atBottom) { - m_stoppedAtBoundary = true; - if (triggerShakeOnce) { - if (result->m_isItem) { - triggerRumbleClick.store(true, std::memory_order_release); - triggerWallSound.store(true, std::memory_order_release); - - for (ssize_t i = static_cast(m_focusedIndex); i >= 0; --i) { - if (m_items[i]->m_isItem) { - m_items[i]->shakeHighlight(FocusDirection::Down); - break; - } - } - } else { - triggerRumbleClick.store(true, std::memory_order_release); - triggerWallSound.store(true, std::memory_order_release); - } - triggerShakeOnce = false; - } - } else if (!m_isHolding) { - triggerShakeOnce = true; - } - m_lastNavigationResult = NavigationResult::HitBoundary; + if (m_isHolding) { + m_stoppedAtBoundary = true; + if (s_triggerShakeOnce) { + s_triggerShakeOnce = false; + triggerWallEffect(FocusDirection::Down); + } + } else { + s_triggerShakeOnce = true; + } + return oldFocus; } inline Element* handleUpFocus(Element* oldFocus) { - static bool triggerShakeOnce = true; const bool atTop = isAtTop(); updateHoldState(); - // Check if the previous item is non-focusable BEFORE we do anything else - if (m_focusedIndex > 0) { - Element* prevItem = m_items[m_focusedIndex - 1]; - if (prevItem->isTable()) { - isTableScrolling.store(true, std::memory_order_release); - } + // Check if the previous item is non-focusable + if (m_focusedIndex > 0 && m_items[m_focusedIndex - 1]->isTable()) { + isTableScrolling.store(true, std::memory_order_release); } // If holding and at boundary, try to scroll first @@ -6582,9 +6872,8 @@ namespace tsl { if (result != oldFocus) { m_lastNavigationResult = NavigationResult::Success; m_stoppedAtBoundary = false; - triggerShakeOnce = true; // This resets it for THIS function - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); + s_triggerShakeOnce = true; + m_justArrivedAtBoundary = isAtTop(); triggerNavigationFeedback(); return result; } @@ -6592,49 +6881,41 @@ namespace tsl { // Check if we can still scroll up if (!atTop) { scrollUp(); - triggerShakeOnce = true; // ADDED: Reset when scrolling away from boundary + s_triggerShakeOnce = true; return oldFocus; } - // At absolute top - check for wrapping (single tap) - if (!m_isHolding && !m_hasWrappedInCurrentSequence && atTop) { + // Force boundary hit before allowing wrap + if (m_justArrivedAtBoundary) { + m_justArrivedAtBoundary = false; + m_stoppedAtBoundary = true; + s_triggerShakeOnce = false; + m_lastNavigationResult = NavigationResult::HitBoundary; + triggerWallEffect(FocusDirection::Up); + return oldFocus; + } + + // Check for wrapping (single tap only) + if (!m_isHolding && !m_hasWrappedInCurrentSequence) { s_directionalKeyReleased.store(false, std::memory_order_release); m_hasWrappedInCurrentSequence = true; m_lastNavigationResult = NavigationResult::Wrapped; - - //if (result->m_isItem) { - triggerShakeOnce = true; // Reset when wrapping - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - //} + s_triggerShakeOnce = true; return handleJumpToBottom(oldFocus); } // Set boundary flag (for holding) - if (m_isHolding && atTop) { + m_lastNavigationResult = NavigationResult::HitBoundary; + if (m_isHolding) { m_stoppedAtBoundary = true; - if (triggerShakeOnce) { - if (result->m_isItem) { - triggerRumbleClick.store(true, std::memory_order_release); - triggerWallSound.store(true, std::memory_order_release); - - for (size_t i = m_focusedIndex; i < m_items.size(); ++i) { - if (m_items[i]->m_isItem) { - m_items[i]->shakeHighlight(FocusDirection::Up); - break; - } - } - } else { - triggerRumbleClick.store(true, std::memory_order_release); - triggerWallSound.store(true, std::memory_order_release); - } - triggerShakeOnce = false; + if (s_triggerShakeOnce) { + s_triggerShakeOnce = false; + triggerWallEffect(FocusDirection::Up); } - } else if (!m_isHolding) { - triggerShakeOnce = true; + } else { + s_triggerShakeOnce = true; } - m_lastNavigationResult = NavigationResult::HitBoundary; return oldFocus; } @@ -6706,6 +6987,10 @@ namespace tsl { m_hasWrappedInCurrentSequence = false; } m_lastNavigationTime = currentTime; + + // bug fix, boundary reset upon key release + if (s_directionalKeyReleased.load(std::memory_order_acquire)) + m_justArrivedAtBoundary = false; } inline void resetNavigationState() { @@ -6713,6 +6998,7 @@ namespace tsl { m_lastNavigationResult = NavigationResult::None; m_isHolding = false; m_stoppedAtBoundary = false; + m_justArrivedAtBoundary = false; m_lastNavigationTime = 0; } @@ -6965,17 +7251,26 @@ namespace tsl { if (lastFocusableIndex == m_items.size()) return oldFocus; // no focusable items - bool alreadyAtBottom = (m_focusedIndex == lastFocusableIndex) && + const bool alreadyAtBottom = (m_focusedIndex == lastFocusableIndex) && (std::abs(m_nextOffset - targetOffset) <= tolerance); if (alreadyAtBottom) return oldFocus; const float oldOffset = m_nextOffset; m_focusedIndex = lastFocusableIndex; + + // NEW: Check if there's a table after the focused item + if (lastFocusableIndex + 1 < m_items.size()) { + Element* nextItem = m_items[lastFocusableIndex + 1]; + if (nextItem->isTable()) { + m_focusedIndex = lastFocusableIndex + 1; // Point at the table + } + } + m_nextOffset = targetOffset; - + Element* newFocus = m_items[lastFocusableIndex]->requestFocus(oldFocus, FocusDirection::None); - + // Trigger feedback if offset or focus changed if ((newFocus && newFocus != oldFocus) || (std::abs(m_nextOffset - oldOffset) > tolerance)) { @@ -7012,7 +7307,7 @@ namespace tsl { if (firstFocusableIndex == m_items.size()) return oldFocus; // no focusable items - bool alreadyAtTop = (m_focusedIndex == firstFocusableIndex) && + const bool alreadyAtTop = (m_focusedIndex == firstFocusableIndex) && (std::abs(m_nextOffset - targetOffset) <= tolerance); if (alreadyAtTop) return oldFocus; @@ -7347,7 +7642,11 @@ namespace tsl { u32 width, height; u64 m_touchStartTime_ns; bool isLocked = false; - + bool m_shortThresholdCrossed = false; + #if IS_LAUNCHER_DIRECTIVE + bool m_longThresholdCrossed = false; + #endif + #if IS_LAUNCHER_DIRECTIVE ListItem(const std::string& text, const std::string& value = "", bool isMini = false, bool useScriptKey = true) : Element(), m_text(text), m_value(value), m_listItemHeight(isMini ? tsl::style::MiniListItemDefaultHeight : tsl::style::ListItemDefaultHeight) { @@ -7418,7 +7717,7 @@ namespace tsl { : defaultTextColor)); #if IS_LAUNCHER_DIRECTIVE renderer->drawStringWithColoredSections(m_text_clean, false, specialChars, this->getX() + 19, this->getY() + 45 - yOffset, 23, - textColor, (m_focused ? starColor : selectionStarColor)); + textColor, m_focused ? starColor : selectionStarColor); #else renderer->drawStringWithColoredSections(m_text_clean, false, specialChars, this->getX() + 19, this->getY() + 45 - yOffset, 23, textColor, textSeparatorColor); @@ -7438,16 +7737,19 @@ namespace tsl { virtual bool onClick(u64 keys) override { if (keys & KEY_A) [[likely]] { - triggerRumbleClick.store(true, std::memory_order_release); - - if (isLocked) + + if (!isLocked) { + triggerRumbleClick.store(true, std::memory_order_release); + if (m_value.find(ult::CAPITAL_ON_STR) != std::string::npos) + triggerOffSound.store(true, std::memory_order_release); + else if (m_value.find(ult::CAPITAL_OFF_STR) != std::string::npos) + triggerOnSound.store(true, std::memory_order_release); + else + triggerEnterSound.store(true, std::memory_order_release); + } else { + triggerRumbleDoubleClick.store(true,std::memory_order_release); triggerWallSound.store(true, std::memory_order_release); - else if (m_value.find(ult::CAPITAL_ON_STR) != std::string::npos) - triggerOffSound.store(true, std::memory_order_release); - else if (m_value.find(ult::CAPITAL_OFF_STR) != std::string::npos) - triggerOnSound.store(true, std::memory_order_release); - else - triggerEnterSound.store(true, std::memory_order_release); + } if (m_flags.m_useClickAnimation) triggerClickAnimation(); @@ -7466,19 +7768,42 @@ namespace tsl { if (event == TouchEvent::Touch) [[likely]] { if ((m_flags.m_touched = inBounds(currX, currY))) [[likely]] { m_touchStartTime_ns = armTicksToNs(armGetSystemTick()); + m_shortThresholdCrossed = false; + #if IS_LAUNCHER_DIRECTIVE + m_longThresholdCrossed = false; + #endif } return false; } - + + if (event == TouchEvent::Hold && m_flags.m_touched) [[likely]] { + const u64 touchDuration_ns = armTicksToNs(armGetSystemTick()) - m_touchStartTime_ns; + const float touchDurationInSeconds = static_cast(touchDuration_ns) * 1e-9f; + + #if IS_LAUNCHER_DIRECTIVE + if (!m_longThresholdCrossed && touchDurationInSeconds >= 1.0f && + (ult::inMainMenu.load(std::memory_order_acquire) || (ult::inHiddenMode.load(std::memory_order_acquire) && !ult::inSettingsMenu.load(std::memory_order_acquire) && !ult::inSubSettingsMenu.load(std::memory_order_acquire)))) [[unlikely]] { + m_longThresholdCrossed = true; + triggerRumbleClick.store(true, std::memory_order_release); + } else + #endif + if (!m_shortThresholdCrossed && touchDurationInSeconds >= 0.5f) [[unlikely]] { + m_shortThresholdCrossed = true; + triggerRumbleClick.store(true, std::memory_order_release); + } + return false; + } + if (event == TouchEvent::Release && m_flags.m_touched) [[likely]] { m_flags.m_touched = false; if (Element::getInputMode() == InputMode::Touch) [[likely]] { - #if IS_LAUNCHER_DIRECTIVE - const s64 keyToUse = determineKeyOnTouchRelease(m_flags.m_useScriptKey); - #else - const s64 keyToUse = determineKeyOnTouchRelease(false); - #endif - const bool handled = onClick(keyToUse); + const bool handled = onClick(determineKeyOnTouchRelease( + #if IS_LAUNCHER_DIRECTIVE + m_flags.m_useScriptKey + #else + false + #endif + )); m_clickAnimationProgress = 0; return handled; } @@ -7678,20 +8003,20 @@ namespace tsl { renderer->enableScissoring(getX() + 6, 97, m_maxWidth + (m_value.empty() ? 49 : 27), tsl::cfg::FramebufferHeight - 170); #if IS_LAUNCHER_DIRECTIVE renderer->drawStringWithColoredSections(m_scrollText, false, specialSymbols, getX() + 19 - static_cast(m_scrollOffset), getY() + 45 - yOffset, 23, - !ult::useSelectionText ? defaultTextColor: (useClickTextColor ? clickTextColor : selectedTextColor), (starColor)); + !ult::useSelectionText ? defaultTextColor: (useClickTextColor ? clickTextColor : selectedTextColor), starColor); #else renderer->drawStringWithColoredSections(m_scrollText, false, specialSymbols, getX() + 19 - static_cast(m_scrollOffset), getY() + 45 - yOffset, 23, - !ult::useSelectionText ? defaultTextColor: (useClickTextColor ? clickTextColor : selectedTextColor), (textSeparatorColor)); + !ult::useSelectionText ? defaultTextColor: (useClickTextColor ? clickTextColor : selectedTextColor), textSeparatorColor); #endif renderer->disableScissoring(); handleScrolling(); } else { #if IS_LAUNCHER_DIRECTIVE renderer->drawStringWithColoredSections(m_ellipsisText, false, specialSymbols, getX() + 19, getY() + 45 - yOffset, 23, - m_flags.m_hasCustomTextColor ? m_customTextColor : (useClickTextColor ? clickTextColor : defaultTextColor), (starColor)); + m_flags.m_hasCustomTextColor ? m_customTextColor : (useClickTextColor ? clickTextColor : defaultTextColor), starColor); #else renderer->drawStringWithColoredSections(m_ellipsisText, false, specialSymbols, getX() + 19, getY() + 45 - yOffset, 23, - m_flags.m_hasCustomTextColor ? m_customTextColor : (useClickTextColor ? clickTextColor : defaultTextColor), (textSeparatorColor)); + m_flags.m_hasCustomTextColor ? m_customTextColor : (useClickTextColor ? clickTextColor : defaultTextColor), textSeparatorColor); #endif } } @@ -7848,12 +8173,12 @@ namespace tsl { const float touchDurationInSeconds = static_cast(touchDuration_ns) * 1e-9f; #if IS_LAUNCHER_DIRECTIVE - if (touchDurationInSeconds >= 0.7f) [[unlikely]] { + if (touchDurationInSeconds >= 1.0f) [[unlikely]] { ult::longTouchAndRelease.store(true, std::memory_order_release); return useScriptKey ? SCRIPT_KEY : STAR_KEY; } #endif - if (touchDurationInSeconds >= 0.3f) [[unlikely]] { + if (touchDurationInSeconds >= 0.5f) [[unlikely]] { ult::shortTouchAndRelease.store(true, std::memory_order_release); return useScriptKey ? SCRIPT_KEY : SETTINGS_KEY; } @@ -7886,367 +8211,143 @@ namespace tsl { }; /** - * @brief A item that goes into a list (this version uses value and faint color sourcing) - * + * @brief A wrapper item that extends ListItem with custom color support for inputs + * (this version uses value and faint color sourcing) */ - class ListItemV2 : public Element { + class ListItemV2 : public ListItem { public: - u32 width, height; - u64 m_touchStartTime_ns; // Track the time when touch starts - /** * @brief Constructor * * @param text Initial description text + * @param value Initial value text + * @param valueColor Color to use for the value when not faint + * @param faintColor Color to use for the value when faint + * @param isMini Whether to use mini list item height + * @param useScriptKey Whether to use script key (launcher only) */ - ListItemV2(const std::string& text, const std::string& value = "", Color valueColor = onTextColor, Color faintColor = offTextColor) - : Element(), m_text(text), m_value(value), m_valueColor{valueColor}, m_faintColor{faintColor} { - } - virtual ~ListItemV2() {} - - - virtual void draw(gfx::Renderer *renderer) override { - static float lastBottomBound; - bool useClickTextColor = false; - if (this->m_touched && Element::getInputMode() == InputMode::Touch) { - if (ult::touchInBounds) { - //renderer->drawRect(ELEMENT_BOUNDS(this), a(clickColor)); - renderer->drawRect( this->getX()+4, this->getY(), this->getWidth()-8, this->getHeight(), a(clickColor)); - useClickTextColor = true; - } - //renderer->drawRect(ELEMENT_BOUNDS(this), tsl::style::color::ColorClickAnimation); - } - - // Calculate vertical offset to center the text - const s32 yOffset = (tsl::style::ListItemDefaultHeight - this->m_listItemHeight) / 2; - - if (this->m_maxWidth == 0) { - if (this->m_value.length() > 0) { - //std::tie(width, height) = renderer->drawString(this->m_value, false, 0, 0, 20, a(tsl::style::color::ColorTransparent)); - //auto valueWidth = renderer->getTextDimensions(this->m_value, false, 20).first; - width = renderer->getTextDimensions(this->m_value, false, 20).first; - this->m_maxWidth = this->getWidth() - width - 70 +4; - } else { - this->m_maxWidth = this->getWidth() - 40 -10 -12; - } - - //std::tie(width, height) = renderer->drawString(this->m_text, false, 0, 0, 23, a(tsl::style::color::ColorTransparent)); - //auto textWidth = renderer->getTextDimensions(this->m_text, false, 23).first; - width = renderer->getTextDimensions(this->m_text, false, 23).first; - this->m_trunctuated = width > this->m_maxWidth+20; - - if (this->m_trunctuated) { - this->m_scrollText = this->m_text + " "; - //std::tie(width, height) = renderer->drawString(this->m_scrollText, false, 0, 0, 23, a(tsl::style::color::ColorTransparent)); - //auto scrollWidth = renderer->getTextDimensions(this->m_scrollText, false, 23).first; - width = renderer->getTextDimensions(this->m_scrollText, false, 23).first; - this->m_scrollText += this->m_text; - this->m_textWidth = width; - - this->m_ellipsisText = renderer->limitStringLength(this->m_text, false, 23, this->m_maxWidth); - } else { - this->m_textWidth = width; - } - } + #if IS_LAUNCHER_DIRECTIVE + ListItemV2(const std::string& text, + const std::string& value = "", + Color valueColor = onTextColor, + Color faintColor = offTextColor, + bool isMini = false, + bool useScriptKey = true) + : ListItem(text, value, isMini, useScriptKey), + m_valueColorOverride(valueColor), + m_faintColorOverride(faintColor), + m_hasColorOverrides(true) { - if (lastBottomBound != this->getTopBound()) - renderer->drawRect(this->getX()+4, this->getTopBound(), this->getWidth()+6 +4, 1, a(separatorColor)); - renderer->drawRect(this->getX()+4, this->getBottomBound(), this->getWidth()+6 +4, 1, a(separatorColor)); - - lastBottomBound = this->getBottomBound(); - - - if (this->m_trunctuated) { - if (this->m_focused) { - if (this->m_value.length() > 0) - renderer->enableScissoring(this->getX()+6, 97, this->m_maxWidth + 30 -3, tsl::cfg::FramebufferHeight-73-97); - else - renderer->enableScissoring(this->getX()+6, 97, this->m_maxWidth + 40 +9, tsl::cfg::FramebufferHeight-73-97); - renderer->drawString(this->m_scrollText, false, this->getX() + 20-1 - this->m_scrollOffset, this->getY() + 45 - yOffset, 23, a(selectedTextColor)); - renderer->disableScissoring(); - - // Handle scrolling with frame rate compensation - const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); - const u64 elapsed_ns = currentTime_ns - this->timeIn_ns; - - // Frame rate compensation - cache calculations to reduce stutter - static u64 lastUpdateTime = 0; - static float cachedScrollOffset = 0.0f; - - // Pre-compute constants as statics to avoid recalculation - static bool constantsInitialized = false; - static double totalCycleDuration; - static double delayDuration; - static double scrollDuration; - static double accelTime; - static double constantVelocityTime; - static double maxVelocity; - static double accelDistance; - static double constantVelocityDistance; - static double minScrollDistance; - static double invAccelTime; // 1/accelTime for multiplication instead of division - static double invDecelTime; // 1/decelTime for multiplication instead of division - static double invBillion; // 1/1000000000.0 for ns to seconds conversion - - if (!constantsInitialized || minScrollDistance != static_cast(this->m_textWidth)) { - // Constants for velocity-based scrolling - delayDuration = 2.0; - static constexpr double pauseDuration = 1.0; - maxVelocity = 166.0; - accelTime = 0.5; - static constexpr double decelTime = 0.5; - - // Pre-calculate derived constants - minScrollDistance = static_cast(this->m_textWidth); - accelDistance = 0.5 * maxVelocity * accelTime; - const double decelDistance = 0.5 * maxVelocity * decelTime; - constantVelocityDistance = std::max(0.0, minScrollDistance - accelDistance - decelDistance); - constantVelocityTime = constantVelocityDistance / maxVelocity; - scrollDuration = accelTime + constantVelocityTime + decelTime; - totalCycleDuration = delayDuration + scrollDuration + pauseDuration; - - // Pre-calculate reciprocals for faster division - invAccelTime = 1.0 / accelTime; - invDecelTime = 1.0 / decelTime; - invBillion = 1.0 / 1000000000.0; - - constantsInitialized = true; - } - - // Fast ns to seconds conversion - const double elapsed_seconds = static_cast(elapsed_ns) * invBillion; - - // Update at consistent intervals regardless of frame rate - if (currentTime_ns - lastUpdateTime >= 8333333ULL) { // ~120 FPS update rate - // Use std::fmod for modulo - it's optimized and faster than loops - const double cyclePosition = std::fmod(elapsed_seconds, totalCycleDuration); - - if (cyclePosition < delayDuration) { - // Delay phase - no scrolling - cachedScrollOffset = 0.0f; - } else if (cyclePosition < delayDuration + scrollDuration) { - // Scrolling phase - velocity-based movement - const double scrollTime = cyclePosition - delayDuration; - double distance; - - if (scrollTime <= accelTime) { - // Acceleration phase - quadratic ease-in - const double t = scrollTime * invAccelTime; // Multiply instead of divide - const double smoothT = t * t; - distance = smoothT * accelDistance; - } else if (scrollTime <= accelTime + constantVelocityTime) { - // Constant velocity phase - const double constantTime = scrollTime - accelTime; - distance = accelDistance + (constantTime * maxVelocity); - } else { - // Deceleration phase - quadratic ease-out - const double decelStartTime = accelTime + constantVelocityTime; - const double t = (scrollTime - decelStartTime) * invDecelTime; // Multiply instead of divide - const double oneMinusT = 1.0 - t; - const double smoothT = 1.0 - oneMinusT * oneMinusT; // Avoid repeated calculation - distance = accelDistance + constantVelocityDistance + (smoothT * (minScrollDistance - accelDistance - constantVelocityDistance)); - } - - // Use branchless min with conditional move behavior - cachedScrollOffset = static_cast(distance < minScrollDistance ? distance : minScrollDistance); - } else { - // Pause phase - stay at end - cachedScrollOffset = static_cast(this->m_textWidth); - } - - lastUpdateTime = currentTime_ns; - } - - // Use cached value for consistent display - this->m_scrollOffset = cachedScrollOffset; - - // Reset timer when cycle completes - if (elapsed_seconds >= totalCycleDuration) { - this->timeIn_ns = currentTime_ns; - } - } else { - renderer->drawString(this->m_ellipsisText, false, this->getX() + 20-1, this->getY() + 45 - yOffset, 23, a(!useClickTextColor ? defaultTextColor : clickTextColor)); - } - } else { - // Render the text with special character handling - #if IS_LAUNCHER_DIRECTIVE - static const std::vector specialChars = {ult::STAR_SYMBOL}; - #else - static const std::vector specialChars = {}; - #endif - renderer->drawStringWithColoredSections(this->m_text, false, specialChars, this->getX() + 20-1, this->getY() + 45 - yOffset, 23, - (this->m_focused ? (!useClickTextColor ? selectedTextColor : clickTextColor) : (!useClickTextColor ? defaultTextColor : clickTextColor)), - (this->m_focused ? starColor : selectionStarColor) - ); - } - - - // CUSTOM SECTION START (modification for submenu footer color) - const s32 xPosition = this->getX() + this->m_maxWidth + 44 + 3; - const s32 yPosition = this->getY() + 45 - yOffset; - static constexpr s32 fontSize = 20; - - - //static bool lastRunningInterpreter = ult::runningInterpreter.load(std::memory_order_acquire); - - // Determine text color - const auto textColor = this->m_faint ? a(m_faintColor) : a(m_valueColor); - - if (this->m_value != ult::INPROGRESS_SYMBOL) { - // Draw the string with the determined text color - renderer->drawString(this->m_value, false, xPosition, yPosition, fontSize, textColor); - } else { - static size_t throbberCounter = 0; - - - // Reset counter to prevent overflow (every full cycle) - if (throbberCounter >= 10 * ult::THROBBER_SYMBOLS.size()) { - throbberCounter = 0; - } - - // Get current throbber symbol (changes every 10 frames) - const size_t symbolIndex = (throbberCounter / 10) % ult::THROBBER_SYMBOLS.size(); - const std::string& currentSymbol = ult::THROBBER_SYMBOLS[symbolIndex]; - - // Instance-specific counter for independent throbber animation - ++throbberCounter; - - renderer->drawString(currentSymbol, false, xPosition, yPosition, fontSize, textColor); - } - //lastRunningInterpreter = ult::runningInterpreter.load(std::memory_order_acquire); + // Set the custom value color on the base ListItem + setValueColor(valueColor); } - - virtual void layout(u16 parentX, u16 parentY, u16 parentWidth, u16 parentHeight) override { - this->setBoundaries(this->getX()+2+1, this->getY(), this->getWidth()+8+1, m_listItemHeight); - } - - virtual bool onClick(u64 keys) override { - if (keys & KEY_A) { - this->triggerClickAnimation(); - } - else if (keys & (KEY_UP | KEY_DOWN | KEY_LEFT | KEY_RIGHT)) - this->m_clickAnimationProgress = 0; - - return Element::onClick(keys); - } - - virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, s32 initialX, s32 initialY) override { - if (event == TouchEvent::Touch) - this->m_touched = this->inBounds(currX, currY); - - if (event == TouchEvent::Release && this->m_touched) { - this->m_touched = false; - - if (Element::getInputMode() == InputMode::Touch) { - const bool handled = this->onClick(KEY_A); - - this->m_clickAnimationProgress = 0; - return handled; - } - } + #else + ListItemV2(const std::string& text, + const std::string& value = "", + Color valueColor = onTextColor, + Color faintColor = offTextColor, + bool isMini = false) + : ListItem(text, value, isMini), + m_valueColorOverride(valueColor), + m_faintColorOverride(faintColor), + m_hasColorOverrides(true) { - - return false; + // Set the custom value color on the base ListItem + setValueColor(valueColor); } + #endif - - virtual void setFocused(bool state) override { - this->m_scroll = false; - this->m_scrollOffset = 0; - this->timeIn_ns = armTicksToNs(armGetSystemTick()); - Element::setFocused(state); - } - - virtual Element* requestFocus(Element *oldFocus, FocusDirection direction) override { - return this; - } + virtual ~ListItemV2() = default; /** - * @brief Sets the left hand description text of the list item - * - * @param text Text - */ - inline void setText(const std::string& text) { - this->m_text = text; - this->m_scrollText = ""; - this->m_ellipsisText = ""; - this->m_maxWidth = 0; - } - - /** - * @brief Sets the right hand value text of the list item - * - * @param value Text - * @param faint Should the text be drawn in a glowing green or a faint gray + * @brief Override setValue to maintain custom color behavior */ inline void setValue(const std::string& value, bool faint = false) { - this->m_value = value; - this->m_faint = faint; - this->m_maxWidth = 0; + // Call parent implementation + ListItem::setValue(value, faint); + + // Re-apply color override based on faint state + if (m_hasColorOverrides) { + setValueColor(faint ? m_faintColorOverride : m_valueColorOverride); + } } /** - * @brief Sets the value color - * - * @param value_color color of the value + * @brief Set custom value color */ - inline void setValueColor(Color value_color) { - this->m_valueColor = value_color; + inline void setValueColorOverride(Color color) { + m_valueColorOverride = color; + m_hasColorOverrides = true; + // Update the base class if not currently faint + if (!m_flags.m_faint) { + setValueColor(color); + } } /** - * @brief Sets the faint color - * - * @param faint_color color of the faint + * @brief Set custom faint color */ - inline void setFaintColor(Color faint_color) { - this->m_faintColor = faint_color; + inline void setFaintColorOverride(Color color) { + m_faintColorOverride = color; + m_hasColorOverrides = true; + // Update the base class if currently faint + if (m_flags.m_faint) { + setValueColor(color); + } } /** - * @brief Gets the left hand description text of the list item - * - * @return Text + * @brief Get the current value color override */ - inline const std::string& getText() const { - return this->m_text; + inline Color getValueColorOverride() const { + return m_valueColorOverride; } /** - * @brief Gets the right hand value text of the list item - * - * @return Value + * @brief Get the current faint color override */ - inline const std::string& getValue() { - return this->m_value; + inline Color getFaintColorOverride() const { + return m_faintColorOverride; + } + + /** + * @brief Clear color overrides and revert to default behavior + */ + inline void clearColorOverrides() { + m_hasColorOverrides = false; + clearValueColor(); } protected: - u64 timeIn_ns; + Color m_valueColorOverride; + Color m_faintColorOverride; + bool m_hasColorOverrides; + }; - std::string m_text; - std::string m_value; - std::string m_scrollText; - std::string m_ellipsisText; - u32 m_listItemHeight = tsl::style::ListItemDefaultHeight; + /** + * @brief Mini version of ListItemV2 + */ + class MiniListItemV2 : public ListItemV2 { + public: #if IS_LAUNCHER_DIRECTIVE - bool m_useScriptKey = false; + MiniListItemV2(const std::string& text, + const std::string& value = "", + Color valueColor = onTextColor, + Color faintColor = offTextColor, + bool useScriptKey = false) + : ListItemV2(text, value, valueColor, faintColor, true, useScriptKey) { + } + #else + MiniListItemV2(const std::string& text, + const std::string& value = "", + Color valueColor = onTextColor, + Color faintColor = offTextColor) + : ListItemV2(text, value, valueColor, faintColor, true) { + } #endif - Color m_valueColor; - Color m_faintColor; - bool m_scroll = false; - bool m_trunctuated = false; - bool m_faint = false; - - bool m_touched = false; - - u16 m_maxScroll = 0; - u16 m_scrollOffset = 0; - u32 m_maxWidth = 0; - u32 m_textWidth = 0; - u16 m_scrollAnimationCounter = 0; + virtual ~MiniListItemV2() {} }; /** @@ -8292,9 +8393,9 @@ namespace tsl { this->setState(this->m_state); this->m_stateChangedListener(this->m_state); + this->triggerClickAnimation(); - - return true; + return Element::onClick(keys); } //if (keys & KEY_B) { // triggerRumbleDoubleClick.store(true, std::memory_order_release); @@ -8392,6 +8493,7 @@ namespace tsl { this->width = 0; this->height = 0; m_isItem = false; + isLocked = true; } virtual ~DummyListItem() {} @@ -8446,7 +8548,7 @@ namespace tsl { // Draw separator if needed if (this->m_hasSeparator) { - renderer->drawRect(this->getX()+1+1, this->getBottomBound() - 29-4, 4, 22, (headerSeparatorColor)); + renderer->drawRect(this->getX()+1+1, this->getBottomBound() - 29-4, 4, 22, aWithOpacity(headerSeparatorColor)); } // Determine text position @@ -8488,21 +8590,21 @@ namespace tsl { renderer->drawStringWithColoredSections(m_scrollText, false, specialChars, textX - static_cast(m_scrollOffset), textY, 16, - (headerTextColor), textSeparatorColor); + headerTextColor, textSeparatorColor); renderer->disableScissoring(); } else { // Draw normal or ellipsis text //const std::string& displayText = m_truncated ? m_ellipsisText : m_text; renderer->drawStringWithColoredSections(m_text, false, specialChars, - textX, textY, 16, (headerTextColor), textSeparatorColor); + textX, textY, 16, headerTextColor, textSeparatorColor); } // If completely clipped, don't draw anything } else { // Draw normal or ellipsis text //const std::string& displayText = m_truncated ? m_ellipsisText : m_text; renderer->drawStringWithColoredSections(m_text, false, specialChars, - textX, textY, 16, (headerTextColor), textSeparatorColor); + textX, textY, 16, headerTextColor, textSeparatorColor); } handleScrolling(); @@ -8510,7 +8612,7 @@ namespace tsl { // Draw normal or ellipsis text //const std::string& displayText = m_truncated ? m_ellipsisText : m_text; renderer->drawStringWithColoredSections(m_text, false, specialChars, - textX, textY, 16, (headerTextColor), textSeparatorColor); + textX, textY, 16, headerTextColor, textSeparatorColor); } } @@ -8721,80 +8823,221 @@ namespace tsl { virtual ~TrackBar() {} + virtual void triggerClickAnimation() { + Element::triggerClickAnimation(); + + // Activate the click animation + this->m_clickAnimationStartTime = armTicksToNs(armGetSystemTick()); + this->m_clickAnimationActive = true; + } virtual Element* requestFocus(Element *oldFocus, FocusDirection direction) { return this; } + virtual bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState &touchPos, HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override { + const u64 keysReleased = m_prevKeysHeld & ~keysHeld; + m_prevKeysHeld = keysHeld; + + const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); + static u64 lastUpdate_ns = currentTime_ns; + const u64 elapsed_ns = currentTime_ns - lastUpdate_ns; + + if (keysDown & KEY_A) { + this->triggerClickAnimation(); + triggerEnterFeedback(); + } + + static s16 lastHapticSegment = -1; + + // Handle key release + if ((keysReleased & KEY_LEFT) || (keysReleased & KEY_RIGHT)) { + lastHapticSegment = -1; + + if (m_wasLastHeld) { + m_wasLastHeld = false; + m_holding = false; + lastUpdate_ns = currentTime_ns; + return true; + } else if (m_holding) { + m_holding = false; + lastUpdate_ns = currentTime_ns; + return true; + } + } + + // Ignore simultaneous left+right if (keysHeld & KEY_LEFT && keysHeld & KEY_RIGHT) return true; - - if (keysHeld & KEY_LEFT) { - if (this->m_value > 0) { + + // Handle initial key press + if (keysDown & KEY_LEFT || keysDown & KEY_RIGHT) { + m_holding = true; + m_wasLastHeld = false; + m_holdStartTime_ns = currentTime_ns; + lastUpdate_ns = currentTime_ns; + + // Perform initial single tick + if (keysDown & KEY_LEFT && this->m_value > 0) { this->m_value--; this->m_valueChangedListener(this->m_value); - return true; - } - } - - if (keysHeld & KEY_RIGHT) { - if (this->m_value < 100) { + + const s16 currentSegment = (this->m_value * 10) / 100; + if (this->m_value == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + } else if (keysDown & KEY_RIGHT && this->m_value < 100) { this->m_value++; this->m_valueChangedListener(this->m_value); + + const s16 currentSegment = (this->m_value * 10) / 100; + if (this->m_value == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + } + return true; + } + + // Handle continued holding with acceleration + if (m_holding && ((keysHeld & KEY_LEFT) || (keysHeld & KEY_RIGHT))) { + const u64 holdDuration_ns = currentTime_ns - m_holdStartTime_ns; + + // Initial delay before repeating starts + static constexpr u64 initialDelay_ns = 300000000ULL; // 300ms + // Calculate interval with acceleration + static constexpr u64 initialInterval_ns = 67000000ULL; // ~67ms + static constexpr u64 shortInterval_ns = 10000000ULL; // ~10ms + static constexpr u64 transitionPoint_ns = 1000000000ULL; // 1 second + + if (holdDuration_ns < initialDelay_ns) { return true; } + + const u64 holdDurationAfterDelay_ns = holdDuration_ns - initialDelay_ns; + const float t = std::min(1.0f, static_cast(holdDurationAfterDelay_ns) / static_cast(transitionPoint_ns)); + const u64 currentInterval_ns = static_cast((initialInterval_ns - shortInterval_ns) * (1.0f - t) + shortInterval_ns); + + if (elapsed_ns >= currentInterval_ns) { + if (keysHeld & KEY_LEFT && this->m_value > 0) { + this->m_value--; + this->m_valueChangedListener(this->m_value); + + const s16 currentSegment = (this->m_value * 10) / 100; + if (this->m_value == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + + lastUpdate_ns = currentTime_ns; + m_wasLastHeld = true; + return true; + } + + if (keysHeld & KEY_RIGHT && this->m_value < 100) { + this->m_value++; + this->m_valueChangedListener(this->m_value); + + const s16 currentSegment = (this->m_value * 10) / 100; + if (this->m_value == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + + lastUpdate_ns = currentTime_ns; + m_wasLastHeld = true; + return true; + } + } + } else { + m_holding = false; } - + return false; } - + virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, s32 initialX, s32 initialY) override { const u16 trackBarWidth = this->getWidth() - 95; const u16 handlePos = (trackBarWidth * (this->m_value - 0)) / (100 - 0); const s32 circleCenterX = this->getX() + 59 + handlePos; - const s32 circleCenterY = this->getY() + 40 + 16 - 1; + const s32 circleCenterY = this->getY() + 40 + 16 - 1 - (m_usingNamedStepTrackbar ? 0 : 11); static constexpr s32 circleRadius = 16; static bool triggerOnce = true; - - const bool touchInCircle = (std::abs(initialX - circleCenterX) <= circleRadius) && (std::abs(initialY - circleCenterY) <= circleRadius); + static s16 lastHapticSegment = -1; + + const bool touchInCircle = (std::abs(currX - circleCenterX) <= circleRadius) && (std::abs(currY - circleCenterY) <= circleRadius); + + // Check horizontal bounds only (allow vertical drift) + const s32 trackBarLeft = this->getX() + 59; + const s32 trackBarRight = trackBarLeft + trackBarWidth; + const bool currentlyInHorizontalBounds = (currX >= trackBarLeft && currX <= trackBarRight); if (event == TouchEvent::Release) { triggerOnce = true; - triggerRumbleDoubleClick.store(true, std::memory_order_release); - triggerOffSound.store(true, std::memory_order_release); + lastHapticSegment = -1; + + if (touchInSliderBounds) { + triggerRumbleDoubleClick.store(true, std::memory_order_release); + triggerOffSound.store(true, std::memory_order_release); + } + touchInSliderBounds = false; return false; } if (touchInCircle || touchInSliderBounds) { - if (triggerOnce){ - triggerOnce = false; - triggerRumbleClick.store(true, std::memory_order_release); - triggerOnSound.store(true, std::memory_order_release); - } - - touchInSliderBounds = true; - //if (currX > this->getLeftBound() + 50 && currX < this->getRightBound() && currY > this->getTopBound() && currY < this->getBottomBound()) { - s16 newValue = (static_cast(currX - (this->getX() + 60)) / static_cast(this->getWidth() - 95)) * 100; - - if (newValue < 0) { - newValue = 0; - } else if (newValue > 100) { - newValue = 100; - } - - if (newValue != this->m_value) { - this->m_value = newValue; + // If we were touching but now went out of horizontal bounds, clamp to edge value then stop + if (touchInSliderBounds && !currentlyInHorizontalBounds) { + // Clamp to max if past right edge, min if past left edge + if (currX > trackBarRight) { + this->m_value = 100; + } else if (currX < trackBarLeft) { + this->m_value = 0; + } this->m_valueChangedListener(this->getProgress()); + + touchInSliderBounds = false; + return false; + } + + // Only update if we're still in horizontal bounds + if (currentlyInHorizontalBounds) { + if (triggerOnce){ + triggerOnce = false; + triggerRumbleClick.store(true, std::memory_order_release); + triggerOnSound.store(true, std::memory_order_release); + } + touchInSliderBounds = true; + + s16 newValue = (static_cast(currX - trackBarLeft) / static_cast(trackBarWidth)) * 100; + + if (newValue < 0) { + newValue = 0; + } else if (newValue > 100) { + newValue = 100; + } + + if (newValue != this->m_value) { + this->m_value = newValue; + this->m_valueChangedListener(this->getProgress()); + + const s16 currentSegment = (this->m_value * 10) / 100; + + if (this->m_value == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + } + + return true; } - - return true; - //} } return false; } + // Define drawBar function outside the draw method void drawBar(gfx::Renderer *renderer, s32 x, s32 y, u16 width, Color& color, bool isRounded = true) { @@ -8819,7 +9062,10 @@ namespace tsl { s32 xPos = this->getX() + 59; s32 yPos = this->getY() + 40 + 16 - 1; s32 width = this->getWidth() - 95; - u16 handlePos = width * (this->m_value) / (100); + const int maxValue = (m_usingStepTrackbar || m_usingNamedStepTrackbar) + ? ((100 / (this->m_numSteps - 1)) * (this->m_numSteps - 1)) + : 100; + u16 handlePos = width * (this->m_value) / maxValue; if (!m_usingNamedStepTrackbar) { yPos -= 11; @@ -8893,13 +9139,13 @@ namespace tsl { const auto valueWidth = renderer->getTextDimensions(valuePart, false, 16).first; renderer->drawString(labelPart, false, this->getX() + 59, this->getY() + 14 + 16, 16, - ((!this->m_focused || !ult::useSelectionText) ? (defaultTextColor) : (selectedTextColor))); + ((!this->m_focused || !ult::useSelectionText) ? defaultTextColor : selectedTextColor)); renderer->drawString(valuePart, false, this->getWidth() -17 - valueWidth, this->getY() + 14 + 16, 16, (this->m_focused && ult::useSelectionValue) ? selectedValueTextColor : onTextColor); } else { // Original Style: Draw icon if (m_icon[0] != '\0') - renderer->drawString(this->m_icon, false, this->getX()+42, this->getY() + 50+2, 23, a(tsl::style::color::ColorText)); + renderer->drawString(this->m_icon, false, this->getX()+42, this->getY() + 50+2, 23, tsl::style::color::ColorText); } @@ -8926,47 +9172,71 @@ namespace tsl { const double time_seconds = static_cast(currentTime_ns) / 1000000000.0; // Standard cosine wave calculation with high precision - progress = (std::cos(2.0 * ult::_M_PI * std::fmod(time_seconds, 1.0) - ult::_M_PI / 2) + 1.0) / 2.0; + progress = (ult::cos(2.0 * ult::_M_PI * std::fmod(time_seconds, 1.0) - ult::_M_PI / 2) + 1.0) / 2.0; - // High precision floating point color interpolation - highlightColor = { - static_cast(highlightColor2.r + (highlightColor1.r - highlightColor2.r) * progress + 0.5), - static_cast(highlightColor2.g + (highlightColor1.g - highlightColor2.g) * progress + 0.5), - static_cast(highlightColor2.b + (highlightColor1.b - highlightColor2.b) * progress + 0.5), - 0xF - }; + // Determine which colors to interpolate based on animation state + if (m_clickAnimationActive) { + // Handle click animation color transition + Color clickColor1 = highlightColor1; + Color clickColor2 = clickColor; + + if (progress >= 0.5) { + clickColor1 = clickColor; + clickColor2 = highlightColor2; + } + const u64 elapsedTime_ns = currentTime_ns - this->m_clickAnimationStartTime; + if (elapsedTime_ns < 500000000ULL) { + highlightColor = { + static_cast((clickColor1.r - clickColor2.r) * progress + clickColor2.r + 0.5), + static_cast((clickColor1.g - clickColor2.g) * progress + clickColor2.g + 0.5), + static_cast((clickColor1.b - clickColor2.b) * progress + clickColor2.b + 0.5), + 0xF + }; + } else { + m_clickAnimationActive = false; + } + } else { + // Normal highlight animation + highlightColor = { + static_cast(highlightColor2.r + (highlightColor1.r - highlightColor2.r) * progress + 0.5), + static_cast(highlightColor2.g + (highlightColor1.g - highlightColor2.g) * progress + 0.5), + static_cast(highlightColor2.b + (highlightColor1.b - highlightColor2.b) * progress + 0.5), + 0xF + }; + } // Initialize position offsets x = 0; y = 0; if (this->m_highlightShaking) { - //const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); - t_ns = currentTime_ns - this->m_highlightShakingStartTime; // Changed - if (t_ns >= 100000000) // 100ms in nanoseconds + t_ns = currentTime_ns - this->m_highlightShakingStartTime; + const double t_ms = t_ns / 1000000.0; + + static constexpr double SHAKE_DURATION_MS = 200.0; + + if (t_ms >= SHAKE_DURATION_MS) this->m_highlightShaking = false; else { - amplitude = std::rand() % 5 + 5; + // Generate random amplitude only once per shake using the start time as seed + const double amplitude = 6.0 + ((this->m_highlightShakingStartTime / 1000000) % 5); + const double progress = t_ms / SHAKE_DURATION_MS; // 0 to 1 + + // Lighter damping so both bounces are visible + const double damping = 1.0 / (1.0 + 2.5 * progress * (1.0 + 1.3 * progress)); + + // 2 full oscillations = 2 clear bounces + const double oscillation = ult::cos(ult::_M_PI * 4.0 * progress); + const double displacement = amplitude * oscillation * damping; + const int offset = static_cast(displacement); switch (this->m_highlightShakingDirection) { - case FocusDirection::Up: - y -= shakeAnimation(t_ns, amplitude); // Changed parameter - break; - case FocusDirection::Down: - y += shakeAnimation(t_ns, amplitude); // Changed parameter - break; - case FocusDirection::Left: - x -= shakeAnimation(t_ns, amplitude); // Changed parameter - break; - case FocusDirection::Right: - x += shakeAnimation(t_ns, amplitude); // Changed parameter - break; - default: - break; + case FocusDirection::Up: y = -offset; break; + case FocusDirection::Down: y = offset; break; + case FocusDirection::Left: x = -offset; break; + case FocusDirection::Right: x = offset; break; + default: break; } - - x = std::clamp(x, -amplitude, amplitude); - y = std::clamp(y, -amplitude, amplitude); } } @@ -8976,8 +9246,8 @@ namespace tsl { renderer->drawRectMultiThreaded(this->getX() + x +19, this->getY() + y, this->getWidth()-11-4, this->getHeight(), aWithOpacity(selectionBGColor)); // CUSTOM MODIFICATION else renderer->drawRect(this->getX() + x +19, this->getY() + y, this->getWidth()-11-4, this->getHeight(), aWithOpacity(selectionBGColor)); // CUSTOM MODIFICATION - - + + //renderer->drawRect(this->getX() + x +19, this->getY() + y, this->getWidth()-11-4, this->getHeight(), a(selectionBGColor)); // CUSTOM MODIFICATION } @@ -8990,9 +9260,38 @@ namespace tsl { renderer->drawRect(this->getX() + x +19, this->getY() + y, this->getWidth()-11-4, this->getHeight(), aWithOpacity(clickColor)); // CUSTOM MODIFICATION } } - - + + ult::onTrackBar.exchange(true, std::memory_order_acq_rel); + + // Click animation rendering - checking if animation is active + if (this->m_clickAnimationActive) { + const u64 elapsedTime_ns = currentTime_ns - this->m_clickAnimationStartTime; + + auto clickAnimationProgress = tsl::style::ListItemHighlightLength * (1.0f - (static_cast(elapsedTime_ns) / 500000000.0f)); + + if (clickAnimationProgress < 0.0f) { + clickAnimationProgress = 0.0f; + this->m_clickAnimationActive = false; + } + + if (clickAnimationProgress > 0.0f) { + const u8 saturation = tsl::style::ListItemHighlightSaturation * (float(clickAnimationProgress) / float(tsl::style::ListItemHighlightLength)); + + Color animColor = {0xF, 0xF, 0xF, 0xF}; + if (invertBGClickColor) { + animColor.r = 15 - saturation; + animColor.g = 15 - saturation; + animColor.b = 15 - saturation; + } else { + animColor.r = saturation; + animColor.g = saturation; + animColor.b = saturation; + } + animColor.a = selectionBGColor.a; + renderer->drawRect(this->getX() +22, this->getY(), this->getWidth() -22, this->getHeight(), aWithOpacity(animColor)); + } + } } /** @@ -9034,6 +9333,9 @@ namespace tsl { bool m_unlockedTrackbar = true; bool touchInSliderBounds = false; + u64 m_clickAnimationStartTime = 0; + bool m_clickAnimationActive = false; + u8 m_numSteps = 101; // V2 Style properties bool m_useV2Style = false; @@ -9043,6 +9345,12 @@ namespace tsl { bool m_drawFrameless = false; float m_lastBottomBound; + + s16 m_index = 0; // Add index tracking like V2 + u64 m_holdStartTime_ns = 0; + bool m_holding = false; + bool m_wasLastHeld = false; + u64 m_prevKeysHeld = 0; }; @@ -9069,91 +9377,187 @@ namespace tsl { virtual ~StepTrackBar() {} virtual bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState &touchPos, HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override { - static u32 tick = 0; - - if (keysHeld & KEY_LEFT && keysHeld & KEY_RIGHT) { - tick = 0; - return true; + const u64 keysReleased = m_prevKeysHeld & ~keysHeld; + m_prevKeysHeld = keysHeld; + + const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); + static u64 lastUpdate_ns = currentTime_ns; + const u64 elapsed_ns = currentTime_ns - lastUpdate_ns; + + if (keysDown & KEY_A) { + this->triggerClickAnimation(); + triggerEnterFeedback(); } - - if (keysHeld & (KEY_LEFT | KEY_RIGHT)) { - if ((tick == 0 || tick > 20) && (tick % 3) == 0) { - if (keysHeld & KEY_LEFT && this->m_value > 0) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - triggerNavigationFeedback(); - this->m_value = std::max(this->m_value - (100 / (this->m_numSteps - 1)), 0); - } else if (keysHeld & KEY_RIGHT && this->m_value < 100) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - triggerNavigationFeedback(); - this->m_value = std::min(this->m_value + (100 / (this->m_numSteps - 1)), 100); - } else { - return false; - } + + // Calculate actual max value based on steps + const int stepSize = 100 / (this->m_numSteps - 1); + const int maxValue = stepSize * (this->m_numSteps - 1); // For 25 steps: 4 * 24 = 96 + + // Handle key release + if ((keysReleased & KEY_LEFT) || (keysReleased & KEY_RIGHT)) { + if (m_wasLastHeld) { + m_wasLastHeld = false; + m_holding = false; + lastUpdate_ns = currentTime_ns; + return true; + } else if (m_holding) { + m_holding = false; + lastUpdate_ns = currentTime_ns; + return true; + } + } + + // Ignore simultaneous left+right + if (keysHeld & KEY_LEFT && keysHeld & KEY_RIGHT) + return true; + + // Handle initial key press + if (keysDown & KEY_LEFT || keysDown & KEY_RIGHT) { + m_holding = true; + m_wasLastHeld = false; + m_holdStartTime_ns = currentTime_ns; + lastUpdate_ns = currentTime_ns; + + // Perform initial single tick + if (keysDown & KEY_LEFT && this->m_value > 0) { + triggerNavigationFeedback(); + this->m_value = std::max(this->m_value - stepSize, 0); + this->m_valueChangedListener(this->getProgress()); + } else if (keysDown & KEY_RIGHT && this->m_value < maxValue) { // CHANGED: was < 100 + triggerNavigationFeedback(); + this->m_value = std::min(this->m_value + stepSize, maxValue); // CHANGED: was 100 this->m_valueChangedListener(this->getProgress()); } - tick++; return true; - } else { - tick = 0; } - + + // Handle continued holding with acceleration + if (m_holding && ((keysHeld & KEY_LEFT) || (keysHeld & KEY_RIGHT))) { + const u64 holdDuration_ns = currentTime_ns - m_holdStartTime_ns; + + static constexpr u64 initialDelay_ns = 300000000ULL; + static constexpr u64 initialInterval_ns = 67000000ULL; + static constexpr u64 shortInterval_ns = 10000000ULL; + static constexpr u64 transitionPoint_ns = 1000000000ULL; + + if (holdDuration_ns < initialDelay_ns) { + return true; + } + + const u64 holdDurationAfterDelay_ns = holdDuration_ns - initialDelay_ns; + const float t = std::min(1.0f, static_cast(holdDurationAfterDelay_ns) / static_cast(transitionPoint_ns)); + const u64 currentInterval_ns = static_cast((initialInterval_ns - shortInterval_ns) * (1.0f - t) + shortInterval_ns); + + if (elapsed_ns >= currentInterval_ns) { + if (keysHeld & KEY_LEFT && this->m_value > 0) { + triggerNavigationFeedback(); + this->m_value = std::max(this->m_value - stepSize, 0); + this->m_valueChangedListener(this->getProgress()); + lastUpdate_ns = currentTime_ns; + m_wasLastHeld = true; + return true; + } + + if (keysHeld & KEY_RIGHT && this->m_value < maxValue) { // CHANGED: was < 100 + triggerNavigationFeedback(); + this->m_value = std::min(this->m_value + stepSize, maxValue); // CHANGED: was 100 + this->m_valueChangedListener(this->getProgress()); + lastUpdate_ns = currentTime_ns; + m_wasLastHeld = true; + return true; + } + } + } else { + m_holding = false; + } + return false; } + virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, s32 initialX, s32 initialY) override { + // Calculate actual max value based on steps FIRST + const int stepSize = 100 / (this->m_numSteps - 1); + const int maxValue = stepSize * (this->m_numSteps - 1); // For 25 steps: 96 + const u16 trackBarWidth = this->getWidth() - 95; - const u16 handlePos = (trackBarWidth * this->m_value) / 100; + const u16 handlePos = (trackBarWidth * this->m_value) / maxValue; // CHANGED: was /100 const s32 circleCenterX = this->getX() + 59 + handlePos; - const s32 circleCenterY = this->getY() + 40 + 16 - 1; + const s32 circleCenterY = this->getY() + 40 + 16 - 1 - (m_usingNamedStepTrackbar ? 0 : 11); static constexpr s32 circleRadius = 16; static bool triggerOnce = true; - const bool touchInCircle = (std::abs(initialX - circleCenterX) <= circleRadius) && (std::abs(initialY - circleCenterY) <= circleRadius); + const bool touchInCircle = (std::abs(currX - circleCenterX) <= circleRadius) && (std::abs(currY - circleCenterY) <= circleRadius); + + // Check horizontal bounds only (allow vertical drift) + const s32 trackBarLeft = this->getX() + 59; + const s32 trackBarRight = trackBarLeft + trackBarWidth; + const bool currentlyInHorizontalBounds = (currX >= trackBarLeft && currX <= trackBarRight); if (event == TouchEvent::Release) { triggerOnce = true; - triggerRumbleDoubleClick.store(true, std::memory_order_release); - triggerOffSound.store(true, std::memory_order_release); + + if (touchInSliderBounds) { + triggerRumbleDoubleClick.store(true, std::memory_order_release); + triggerOffSound.store(true, std::memory_order_release); + } + touchInSliderBounds = false; return false; } if (touchInCircle || touchInSliderBounds) { - if (triggerOnce){ - triggerOnce = false; - triggerRumbleClick.store(true, std::memory_order_release); - triggerOnSound.store(true, std::memory_order_release); - } - - touchInSliderBounds = true; - //if (currY > this->getTopBound() && currY < this->getBottomBound()) { - s16 newValue = (static_cast(currX - (this->getX() + 60)) / static_cast(this->getWidth() - 95)) * 100; - - if (newValue < 0) { - newValue = 0; - } else if (newValue > 100) { - newValue = 100; - } else { - newValue = std::round(newValue / (100.0F / (this->m_numSteps - 1))) * (100.0F / (this->m_numSteps - 1)); - } - - if (newValue != this->m_value) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - triggerNavigationFeedback(); - this->m_value = newValue; + // If we were touching but now went out of horizontal bounds, clamp to edge value then stop + if (touchInSliderBounds && !currentlyInHorizontalBounds) { + // Clamp to max if past right edge, min if past left edge + if (currX > trackBarRight) { + this->m_value = maxValue; + } else if (currX < trackBarLeft) { + this->m_value = 0; + } this->m_valueChangedListener(this->getProgress()); + + touchInSliderBounds = false; + return false; + } + + // Only update if we're still in horizontal bounds + if (currentlyInHorizontalBounds) { + if (triggerOnce){ + triggerOnce = false; + triggerRumbleClick.store(true, std::memory_order_release); + triggerOnSound.store(true, std::memory_order_release); + } + + touchInSliderBounds = true; + + // CHANGED: Scale rawValue to maxValue instead of 100 + float rawValue = (static_cast(currX - trackBarLeft) / static_cast(trackBarWidth)) * maxValue; + s16 newValue; + + if (rawValue < 0) { + newValue = 0; + } else if (rawValue > maxValue) { + newValue = maxValue; + } else { + // Round to nearest step + newValue = std::round(rawValue / stepSize) * stepSize; + newValue = std::min(std::max(newValue, s16(0)), s16(maxValue)); + } + + if (newValue != this->m_value) { + triggerNavigationFeedback(); + this->m_value = newValue; + this->m_valueChangedListener(this->getProgress()); + } + + return true; } - - return true; - //} } return false; } - + /** * @brief Gets the current value of the trackbar * @@ -9184,37 +9588,27 @@ namespace tsl { */ class NamedStepTrackBar : public StepTrackBar { public: - /** - * @brief Constructor - * - * @param icon Icon shown next to the track bar - * @param stepDescriptions Step names displayed above the track bar - * @param useV2Style Whether to use V2 visual style (label + value instead of icon) - * @param label Label text for V2 style - */ NamedStepTrackBar(const char icon[3], std::initializer_list stepDescriptions, bool useV2Style = false, const std::string& label = "") : StepTrackBar(icon, stepDescriptions.size(), true, useV2Style, label, ""), m_stepDescriptions(stepDescriptions.begin(), stepDescriptions.end()) { this->m_usingNamedStepTrackbar = true; - // Initialize selection with first step + m_numSteps = m_stepDescriptions.size(); + + // Initialize m_selection with first step if (!m_stepDescriptions.empty()) { this->m_selection = m_stepDescriptions[0]; } - m_numSteps = m_stepDescriptions.size(); } - + virtual ~NamedStepTrackBar() {} - - virtual bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState &touchPos, HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override { - // Store previous value to update selection + + virtual bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState &touchPos, + HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override { const u8 prevProgress = this->getProgress(); - - // Call parent input handling const bool result = StepTrackBar::handleInput(keysDown, keysHeld, touchPos, leftJoyStick, rightJoyStick); - // Update selection if progress changed - if (result && this->getProgress() != prevProgress) { + if (this->getProgress() != prevProgress) { const u8 currentIndex = this->getProgress(); if (currentIndex < m_stepDescriptions.size()) { this->m_selection = m_stepDescriptions[currentIndex]; @@ -9223,15 +9617,12 @@ namespace tsl { return result; } - - virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, s32 initialX, s32 initialY) override { - // Store previous value to update selection + + virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, + s32 initialX, s32 initialY) override { const u8 prevProgress = this->getProgress(); - - // Call parent touch handling const bool result = StepTrackBar::onTouch(event, currX, currY, prevX, prevY, initialX, initialY); - // Update selection if progress changed if (result && this->getProgress() != prevProgress) { const u8 currentIndex = this->getProgress(); if (currentIndex < m_stepDescriptions.size()) { @@ -9241,17 +9632,20 @@ namespace tsl { return result; } - + virtual void setProgress(u8 value) override { StepTrackBar::setProgress(value); - // Update selection when progress is set programmatically const u8 currentIndex = this->getProgress(); if (currentIndex < m_stepDescriptions.size()) { this->m_selection = m_stepDescriptions[currentIndex]; } } - + + const std::string& getSelection() const { + return this->m_selection; + } + virtual void draw(gfx::Renderer *renderer) override { if (touchInSliderBounds) { m_drawFrameless = true; @@ -9263,11 +9657,11 @@ namespace tsl { s32 xPos = this->getX() + 59; s32 yPos = this->getY() + 40 + 16 - 1; s32 width = this->getWidth() - 95; - u16 handlePos = width * (this->m_value) / (100); - - if (!m_usingNamedStepTrackbar) { - yPos -= 11; - } + const int maxValue = (100 / (this->m_numSteps - 1)) * (this->m_numSteps - 1); // For 25 steps: 96 + u16 handlePos = width * (this->m_value) / maxValue; // Changed from /100 + + // NOTE: For NamedStepTrackBar, yPos is NOT adjusted down + // (the !m_usingNamedStepTrackbar check is false here) s32 iconOffset = 0; @@ -9279,92 +9673,102 @@ namespace tsl { handlePos = (width) * (this->m_value) / (100); } - // Draw step tick marks if this is a step trackbar - { - const u8 numSteps = m_numSteps; - const u16 baseX = xPos; - const u16 baseY = this->getY() + 44; - const u8 halfNumSteps = (numSteps - 1) / 2; - const u16 lastStepX = baseX + width - 1; - const float stepSpacing = static_cast(width) / (numSteps - 1); - const auto stepColor = a(trackBarEmptyColor); - - u16 stepX; - for (u8 i = 0; i < numSteps; i++) { - if (i == numSteps - 1) { - stepX = lastStepX; - } else { - stepX = baseX + static_cast(std::round(i * stepSpacing)); - if (i > halfNumSteps) { - stepX -= 1; - } + // Draw step tick marks + const u8 numSteps = m_numSteps; + const u16 baseX = xPos; + const u16 baseY = this->getY() + 44; + const u8 halfNumSteps = (numSteps - 1) / 2; + const u16 lastStepX = baseX + width - 1; + const float stepSpacing = static_cast(width) / (numSteps - 1); + const auto stepColor = a(trackBarEmptyColor); + + u16 stepX; + for (u8 i = 0; i < numSteps; i++) { + if (i == numSteps - 1) { + stepX = lastStepX; + } else { + stepX = baseX + static_cast(std::round(i * stepSpacing)); + if (i > halfNumSteps) { + stepX -= 1; } - renderer->drawRect(stepX, baseY, 1, 8, stepColor); } + renderer->drawRect(stepX, baseY, 1, 8, stepColor); } - + // Draw track bar background - drawBar(renderer, xPos, yPos-3, width, trackBarEmptyColor, !m_usingNamedStepTrackbar); + drawBar(renderer, xPos, yPos-3, width, trackBarEmptyColor, false); // Not rounded for named step if (!this->m_focused) { - drawBar(renderer, xPos, yPos-3, handlePos, trackBarFullColor, !m_usingNamedStepTrackbar); + drawBar(renderer, xPos, yPos-3, handlePos, trackBarFullColor, false); renderer->drawCircle(xPos + handlePos, yPos, 16, true, a(m_drawFrameless ? highlightColor : trackBarSliderBorderColor)); renderer->drawCircle(xPos + handlePos, yPos, 13, true, a((m_unlockedTrackbar || touchInSliderBounds) ? trackBarSliderMalleableColor : trackBarSliderColor)); } else { touchInSliderBounds = false; if (m_unlockedTrackbar != ult::unlockedSlide.load(std::memory_order_acquire)) ult::unlockedSlide.store(m_unlockedTrackbar, std::memory_order_release); - drawBar(renderer, xPos, yPos-3, handlePos, trackBarFullColor, !m_usingNamedStepTrackbar); + drawBar(renderer, xPos, yPos-3, handlePos, trackBarFullColor, false); renderer->drawCircle(xPos + x + handlePos, yPos +y, 16, true, a(highlightColor)); renderer->drawCircle(xPos + x + handlePos, yPos +y, 12, true, a((ult::allowSlide.load(std::memory_order_acquire) || m_unlockedTrackbar) ? trackBarSliderMalleableColor : trackBarSliderColor)); } - // Draw icon (original style) or label + value (V2 style) + // CRITICAL FIX: Draw the selection text based on which style is being used if (m_useV2Style) { - // V2 Style: Draw label and value + // V2 Style: Draw label on left, value on right std::string labelPart = this->m_label; ult::removeTag(labelPart); - std::string valuePart; - if (!m_usingNamedStepTrackbar) { - valuePart = (m_units.compare("%") == 0 || m_units.compare("°C") == 0 || m_units.compare("°F") == 0) - ? ult::to_string(m_value) + m_units - : ult::to_string(m_value) + (m_units.empty() ? "" : " ") + m_units; - } else { - valuePart = this->m_selection; - } - + std::string valuePart = this->m_selection; const auto valueWidth = renderer->getTextDimensions(valuePart, false, 16).first; renderer->drawString(labelPart, false, this->getX() + 59, this->getY() + 14 + 16, 16, - ((!this->m_focused || !ult::useSelectionText) ? (defaultTextColor) : (selectedTextColor))); + ((!this->m_focused || !ult::useSelectionText) ? defaultTextColor : selectedTextColor)); - renderer->drawString(valuePart, false, this->getWidth() -17 - valueWidth, this->getY() + 14 + 16, 16, (this->m_focused && ult::useSelectionValue) ? selectedValueTextColor : onTextColor); + renderer->drawString(valuePart, false, this->getWidth() -17 - valueWidth, this->getY() + 14 + 16, 16, + (this->m_focused && ult::useSelectionValue) ? selectedValueTextColor : onTextColor); } else { - // Original Style: Draw icon + // OLD API Style: Draw selection text CENTERED ABOVE the bar + // This is the original libtesla behavior! + + // Calculate text width to center it (same font size and Y position as V2) + const auto textDimensions = renderer->getTextDimensions(this->m_selection, false, 16); + const s32 textWidth = textDimensions.first; + + // Center the text horizontally - account for the left margin (59) and right space + // The actual content area starts at getX() + 59 and the trackbar area is getWidth() - 95 + const s32 contentStart = 59; + const s32 trackbarWidth = this->getWidth() - 95; + const s32 textX = this->getX() + contentStart + (trackbarWidth / 2) - (textWidth / 2); + const s32 textY = this->getY() + 14 + 16; // Same Y position as V2 style + + // Draw the centered selection text + renderer->drawString(this->m_selection.c_str(), false, textX, textY, 16, + a(this->m_focused ? tsl::style::color::ColorHighlight : tsl::style::color::ColorText)); + + // Also draw icon if provided (though usually empty for named step trackbars) if (m_icon[0] != '\0') - renderer->drawString(this->m_icon, false, this->getX()+42, this->getY() + 50+2, 23, a(tsl::style::color::ColorText)); + renderer->drawString(this->m_icon, false, this->getX()+42, this->getY() + 50+2, 23, tsl::style::color::ColorText); } + // Draw separators if (m_lastBottomBound != this->getTopBound()) renderer->drawRect(this->getX() + 4+20-1, this->getTopBound(), this->getWidth() + 6 + 10+20 +4, 1, a(separatorColor)); renderer->drawRect(this->getX() + 4+20-1, this->getBottomBound(), this->getWidth() + 6 + 10+20 +4, 1, a(separatorColor)); m_lastBottomBound = this->getBottomBound(); } - + protected: std::vector m_stepDescriptions; - }; - /** * @brief A customizable analog trackbar going from minValue to maxValue * */ class TrackBarV2 : public Element { public: + using SimpleValueChangeCallback = std::function; + u64 lastUpdate_ns; Color highlightColor = {0xf, 0xf, 0xf, 0xf}; @@ -9448,6 +9852,12 @@ namespace tsl { } inline void updateAndExecute(bool updateIni = true) { + if (m_simpleCallback) { + m_simpleCallback(m_value, m_index); + return; + } + + if (m_packagePath.empty()) { return; } @@ -9524,11 +9934,8 @@ namespace tsl { } if ((keysDown & KEY_A) && !(keysHeld & ~KEY_A & ALL_KEYS_MASK)) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerEnterSound.store(true, std::memory_order_release); triggerEnterFeedback(); - if (!m_unlockedTrackbar) { ult::atomicToggle(ult::allowSlide); m_holding = false; @@ -9539,11 +9946,6 @@ namespace tsl { } return true; } - - //if (keysDown & KEY_B && !(keysHeld & ~KEY_B & ALL_KEYS_MASK)) { - // triggerRumbleDoubleClick.store(true, std::memory_order_release); - // triggerExitSound.store(true, std::memory_order_release); - //} if ((keysDown & SCRIPT_KEY) && !(keysHeld & ~SCRIPT_KEY & ALL_KEYS_MASK)) { if (m_scriptKeyListener) { @@ -9553,14 +9955,15 @@ namespace tsl { } if (ult::allowSlide.load(std::memory_order_acquire) || m_unlockedTrackbar) { + static s16 lastHapticSegment = -1; + // Handle key release if (((keysReleased & KEY_LEFT) || (keysReleased & KEY_RIGHT))) { + lastHapticSegment = -1; // Reset for next interaction + // If we were holding and repeating, just stop if (m_wasLastHeld) { m_wasLastHeld = false; - //triggerNavigationSound.store(true, std::memory_order_release); - //triggerRumbleClick.store(true, std::memory_order_release); - m_holding = false; updateAndExecute(); lastUpdate_ns = armTicksToNs(armGetSystemTick()); @@ -9569,8 +9972,6 @@ namespace tsl { // If it was a quick tap (no repeat happened), handle the single tick else if (m_holding) { m_holding = false; - //triggerNavigationSound.store(true, std::memory_order_release); - //triggerRumbleClick.store(true, std::memory_order_release); updateAndExecute(); lastUpdate_ns = armTicksToNs(armGetSystemTick()); return true; @@ -9586,6 +9987,7 @@ namespace tsl { // Handle initial key press if (keysDown & KEY_LEFT || keysDown & KEY_RIGHT) { triggerRumbleClick.store(true, std::memory_order_release); + // Start tracking the hold m_holding = true; m_wasLastHeld = false; @@ -9598,11 +10000,25 @@ namespace tsl { this->m_value--; this->m_valueChangedListener(this->m_value); updateAndExecute(false); + + // Calculate and store initial segment (0-10 for 11 segments) + const s16 currentSegment = (this->m_index * 10) / (m_numSteps - 1); + if (this->m_index == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } } else if (keysDown & KEY_RIGHT && this->m_value < m_maxValue) { this->m_index++; this->m_value++; this->m_valueChangedListener(this->m_value); updateAndExecute(false); + + // Calculate and store initial segment (0-10 for 11 segments) + const s16 currentSegment = (this->m_index * 10) / (m_numSteps - 1); + if (this->m_index == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } } return true; } @@ -9616,20 +10032,8 @@ namespace tsl { // Calculate interval with acceleration static constexpr u64 initialInterval_ns = 67000000ULL; // ~67ms static constexpr u64 shortInterval_ns = 10000000ULL; // ~10ms - static constexpr u64 transitionPoint_ns = 1000000000ULL; // 2 seconds - - // Trigger navigation sound every 100ms while holding - static u64 lastNavigationSound_ns = 0; - if (currentTime_ns - lastNavigationSound_ns >= 150'000'000ULL) { // 100ms - if (this->m_value > m_minValue && this->m_value < m_maxValue) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - triggerNavigationFeedback(); - - } - lastNavigationSound_ns = currentTime_ns; - } - + static constexpr u64 transitionPoint_ns = 1000000000ULL; // 1 second + // If we haven't passed the initial delay, don't repeat yet if (holdDuration_ns < initialDelay_ns) { return true; @@ -9647,6 +10051,14 @@ namespace tsl { if (m_executeOnEveryTick) { updateAndExecute(false); } + + // Calculate current segment (0-10 for 11 segments) and trigger haptics on segment change + const s16 currentSegment = (this->m_index * 10) / (m_numSteps - 1); + if (this->m_index == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + lastUpdate_ns = currentTime_ns; m_wasLastHeld = true; return true; @@ -9659,6 +10071,14 @@ namespace tsl { if (m_executeOnEveryTick) { updateAndExecute(false); } + + // Calculate current segment (0-10 for 11 segments) and trigger haptics on segment change + const s16 currentSegment = (this->m_index * 10) / (m_numSteps - 1); + if (this->m_index == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + lastUpdate_ns = currentTime_ns; m_wasLastHeld = true; return true; @@ -9671,7 +10091,7 @@ namespace tsl { return false; } - + virtual bool onTouch(TouchEvent event, s32 currX, s32 currY, s32 prevX, s32 prevY, s32 initialX, s32 initialY) override { const u16 trackBarWidth = this->getWidth() - 95; const u16 handlePos = (trackBarWidth * (this->m_value - m_minValue)) / (m_maxValue - m_minValue); @@ -9679,56 +10099,110 @@ namespace tsl { const s32 circleCenterY = this->getY() + 40 + 16 - 1; static constexpr s32 circleRadius = 16; static bool triggerOnce = true; + static s16 lastHapticSegment = -1; + static bool wasOriginallyLocked = false; const bool touchInCircle = (std::abs(initialX - circleCenterX) <= circleRadius) && (std::abs(initialY - circleCenterY) <= circleRadius); - if (!m_unlockedTrackbar && !ult::allowSlide.load(std::memory_order_acquire)) { - + // CRITICAL FIX: Check if current touch is within valid horizontal bounds + // Allow vertical drift (top/bottom), only care about left/right bounds + const s32 trackBarLeft = this->getX() + 59; + const s32 trackBarRight = trackBarLeft + trackBarWidth; + const bool currentlyInHorizontalBounds = (currX >= trackBarLeft && currX <= trackBarRight); + + // Handle touch start + if (event == TouchEvent::Touch && touchInCircle) { + // Remember if it was locked before we touched it + wasOriginallyLocked = !m_unlockedTrackbar && !ult::allowSlide.load(std::memory_order_acquire); + + // Temporarily unlock if it was locked + if (wasOriginallyLocked) { + ult::allowSlide.store(true, std::memory_order_release); + } + } + + // Handle release + if (event == TouchEvent::Release) { + triggerOnce = true; + lastHapticSegment = -1; + + // Re-lock if it was originally locked + if (wasOriginallyLocked) { + ult::allowSlide.store(false, std::memory_order_release); + wasOriginallyLocked = false; + } + + if (touchInSliderBounds) { + updateAndExecute(); + touchInSliderBounds = false; + triggerRumbleDoubleClick.store(true, std::memory_order_release); + triggerOffSound.store(true, std::memory_order_release); + } return false; } - if ((touchInCircle || touchInSliderBounds)) { - touchInSliderBounds = true; - - if (triggerOnce) { - triggerOnce = false; - triggerRumbleClick.store(true, std::memory_order_release); - triggerOnSound.store(true, std::memory_order_release); - } - - const s16 newIndex = std::max(static_cast(0), std::min(static_cast((currX - (this->getX() + 59)) / static_cast(this->getWidth() - 95) * (m_numSteps - 1)), static_cast(m_numSteps - 1))); - const s16 newValue = m_minValue + newIndex * (static_cast(m_maxValue - m_minValue) / (m_numSteps - 1)); - - if (newValue != this->m_value || newIndex != this->m_index) { - this->m_value = newValue; - this->m_index = newIndex; + const bool isUnlocked = m_unlockedTrackbar || ult::allowSlide.load(std::memory_order_acquire); + + // CRITICAL FIX: Only process touch if we're in bounds OR if we were already interacting + // When going out of horizontal bounds, clamp to min/max value before stopping + if ((touchInCircle || touchInSliderBounds) && isUnlocked) { + // If we were touching but now went out of horizontal bounds, clamp to edge value then stop + if (touchInSliderBounds && !currentlyInHorizontalBounds) { + // Clamp to max if past right edge, min if past left edge + if (currX > trackBarRight) { + this->m_value = m_maxValue; + this->m_index = m_numSteps - 1; + } else if (currX < trackBarLeft) { + this->m_value = m_minValue; + this->m_index = 0; + } this->m_valueChangedListener(this->getProgress()); if (m_executeOnEveryTick) { updateAndExecute(false); } - if (m_usingStepTrackbar || m_usingNamedStepTrackbar) { - //triggerRumbleClick.store(true, std::memory_order_release); - //triggerNavigationSound.store(true, std::memory_order_release); - triggerNavigationFeedback(); - } - } else { - if (event == TouchEvent::Release) { - triggerOnce = true; - updateAndExecute(); - if (event == TouchEvent::Release) - touchInSliderBounds = false; - - triggerRumbleDoubleClick.store(true, std::memory_order_release); - triggerOffSound.store(true, std::memory_order_release); - } + + touchInSliderBounds = false; + return false; + } + + // We're in valid horizontal bounds, continue interaction + if (currentlyInHorizontalBounds) { + touchInSliderBounds = true; + if (triggerOnce) { + triggerOnce = false; + triggerRumbleClick.store(true, std::memory_order_release); + triggerOnSound.store(true, std::memory_order_release); + } + + // Add 0.5 to round to nearest step instead of truncating + const s16 newIndex = std::max(static_cast(0), std::min(static_cast((currX - trackBarLeft) / static_cast(trackBarWidth) * (m_numSteps - 1) + 0.5f), static_cast(m_numSteps - 1))); + const s16 newValue = m_minValue + newIndex * (static_cast(m_maxValue - m_minValue) / (m_numSteps - 1)); + + if (newValue != this->m_value || newIndex != this->m_index) { + this->m_value = newValue; + this->m_index = newIndex; + this->m_valueChangedListener(this->getProgress()); + if (m_executeOnEveryTick) { + updateAndExecute(false); + } + + // Calculate which 10% segment we're in (0-10 for 11 segments) + const s16 currentSegment = (newIndex * 10) / (m_numSteps - 1); + + // Trigger haptics when crossing into a new 10% segment OR at index 0 + if (newIndex == 0 || currentSegment != lastHapticSegment) { + lastHapticSegment = currentSegment; + triggerNavigationFeedback(); + } + } + + return true; } - - return true; } return false; } - + void drawBar(gfx::Renderer *renderer, s32 x, s32 y, u16 width, Color& color, bool isRounded = true) { if (isRounded) { renderer->drawUniformRoundedRect(x, y, width, 7, a(color)); @@ -9782,7 +10256,7 @@ namespace tsl { const auto valueWidth = renderer->getTextDimensions(m_valuePart, false, 16).first; - renderer->drawString(labelPart, false, xPos, this->getY() + 14 + 16, 16, ((!this->m_focused || !ult::useSelectionText) ? (defaultTextColor) : (selectedTextColor))); + renderer->drawString(labelPart, false, xPos, this->getY() + 14 + 16, 16, (!this->m_focused || !ult::useSelectionText) ? defaultTextColor : selectedTextColor); renderer->drawString(m_valuePart, false, this->getWidth() -17 - valueWidth, this->getY() + 14 + 16, 16, (this->m_focused && ult::useSelectionValue) ? selectedValueTextColor : onTextColor); @@ -9802,7 +10276,7 @@ namespace tsl { virtual void drawHighlight(gfx::Renderer *renderer) override { const u64 currentTime_ns = armTicksToNs(armGetSystemTick()); const double timeInSeconds = static_cast(currentTime_ns) / 1000000000.0; - progress = ((std::cos(2.0 * ult::_M_PI * std::fmod(timeInSeconds, 1.0) - ult::_M_PI / 2) + 1.0) / 2.0); + progress = ((ult::cos(2.0 * ult::_M_PI * std::fmod(timeInSeconds, 1.0) - ult::_M_PI / 2) + 1.0) / 2.0); Color clickColor1 = highlightColor1; Color clickColor2 = clickColor; @@ -9860,30 +10334,32 @@ namespace tsl { if (this->m_highlightShaking) { t_ns = currentTime_ns - this->m_highlightShakingStartTime; - if (t_ns >= 100000000ULL) + const double t_ms = t_ns / 1000000.0; + + static constexpr double SHAKE_DURATION_MS = 200.0; + + if (t_ms >= SHAKE_DURATION_MS) this->m_highlightShaking = false; else { - amplitude = std::rand() % 5 + 5; + // Generate random amplitude only once per shake using the start time as seed + const double amplitude = 6.0 + ((this->m_highlightShakingStartTime / 1000000) % 5); + const double progress = t_ms / SHAKE_DURATION_MS; // 0 to 1 + + // Lighter damping so both bounces are visible + const double damping = 1.0 / (1.0 + 2.5 * progress * (1.0 + 1.3 * progress)); + + // 2 full oscillations = 2 clear bounces + const double oscillation = ult::cos(ult::_M_PI * 4.0 * progress); + const double displacement = amplitude * oscillation * damping; + const int offset = static_cast(displacement); switch (this->m_highlightShakingDirection) { - case FocusDirection::Up: - y -= shakeAnimation(t_ns, amplitude); - break; - case FocusDirection::Down: - y += shakeAnimation(t_ns, amplitude); - break; - case FocusDirection::Left: - x -= shakeAnimation(t_ns, amplitude); - break; - case FocusDirection::Right: - x += shakeAnimation(t_ns, amplitude); - break; - default: - break; + case FocusDirection::Up: y = -offset; break; + case FocusDirection::Down: y = offset; break; + case FocusDirection::Left: x = -offset; break; + case FocusDirection::Right: x = offset; break; + default: break; } - - x = std::clamp(x, -amplitude, amplitude); - y = std::clamp(y, -amplitude, amplitude); } } @@ -9909,7 +10385,7 @@ namespace tsl { ult::onTrackBar.store(true, std::memory_order_release); - if (m_clickActive) { + if (m_clickActive && m_useClickAnimation) { const u64 elapsedTime_ns = currentTime_ns - m_clickStartTime_ns; auto clickAnimationProgress = tsl::style::ListItemHighlightLength * (1.0f - (static_cast(elapsedTime_ns) / 500000000.0f)); @@ -9937,6 +10413,10 @@ namespace tsl { } } + virtual inline u8 getIndex() { + return this->m_index; + } + virtual inline u8 getProgress() { return this->m_value; } @@ -9948,7 +10428,15 @@ namespace tsl { void setValueChangedListener(std::function valueChangedListener) { this->m_valueChangedListener = valueChangedListener; } + + void setSimpleCallback(SimpleValueChangeCallback callback) { + m_simpleCallback = std::move(callback); + } + inline void disableClickAnimation() { + m_useClickAnimation = false; + } + protected: std::string m_label; std::string m_packagePath; @@ -9988,6 +10476,10 @@ namespace tsl { u64 m_prevKeysHeld = 0; bool m_wasLastHeld = false; bool m_drawFrameless = false; + + bool m_useClickAnimation = true; + + SimpleValueChangeCallback m_simpleCallback = nullptr; }; @@ -10143,7 +10635,17 @@ namespace tsl { */ virtual void setProgress(u8 value) override { value = std::min(value, u8(this->m_numSteps - 1)); - this->m_value = value * (100 / (this->m_numSteps - 1)); + this->m_index = value; + + // If using simple callback (modern API), use minValue/maxValue range + // Otherwise use legacy 0-100 range for config.ini compatibility + if (m_simpleCallback) { + const float stepSize = static_cast(m_maxValue - m_minValue) / (this->m_numSteps - 1); + this->m_value = static_cast(std::round(m_minValue + m_index * stepSize)); + } else { + // Legacy behavior for command system + this->m_value = value * (100 / (this->m_numSteps - 1)); + } } //protected: @@ -10313,15 +10815,15 @@ namespace tsl { void show(const std::string& msg, size_t fontSize = 26, u32 priority = 20, const std::string& fileName = "", u32 durationMs = 2500, - s32 promptWidth = 448, s32 promptHeight = 88) + s32 promptWidth = 448, s32 promptHeight = 88, bool immediately = false) { if (msg.empty()) return; - + // Quick reject using atomics (fast-path) if (!enabled_.load(std::memory_order_acquire)) return; if (!ult::useNotifications) return; if (generation_ != notificationGeneration.load(std::memory_order_acquire)) return; - + NotificationData data; data.text = msg; data.fileName = fileName; @@ -10329,23 +10831,37 @@ namespace tsl { data.promptWidth = std::clamp(promptWidth, s32(100), s32(1280)); data.promptHeight = std::clamp(promptHeight, s32(50), s32(720)); data.durationMs = std::clamp(durationMs, 500u, 30000u); - data.priority = priority; + data.priority = immediately ? 0 : priority; // Priority 0 for immediate data.arrivalNs = armTicksToNs(armGetSystemTick()); - + std::lock_guard lg(state_mutex_); - + // Re-check under lock to avoid TOCTOU if (!enabled_.load(std::memory_order_acquire)) return; if (generation_ != notificationGeneration.load(std::memory_order_acquire)) return; if (pending_queue_.size() >= MAX_NOTIFS) return; - + + // If immediately = true and there's an active notification, force it to complete + if (immediately && is_active_ && current_state_.state != PromptState::Inactive) { + // Delete current notification's file if exists + const std::string fileToDelete = current_state_.fileName; + if (!fileToDelete.empty()) { + std::lock_guard lg(notificationJsonMutex); + const std::string fullPath = ult::NOTIFICATIONS_PATH + fileToDelete; + remove(fullPath.c_str()); + } + + // Reset current state + current_state_ = NotificationState{}; + is_active_ = false; + } + pending_queue_.push(data); - + if (!is_active_) { startNext_NoLock(); - //pending_event_fire_.store(true, std::memory_order_release); eventFire(¬ificationEvent); - + #if IS_STATUS_MONITOR_DIRECTIVE if (isRendering) { isRendering = false; @@ -10356,6 +10872,11 @@ namespace tsl { #endif } } + + // Immediate notification function - shows immediately with highest priority + void showNow(const std::string& msg, size_t fontSize = 26) { + show(msg, fontSize, 0, "", 2500, 448, 88, true); + } void draw(gfx::Renderer* renderer, bool promptOnly = false) { @@ -10417,7 +10938,7 @@ namespace tsl { size_t start = 0; while (start < text.size() && lines.size() < 8) { // Look for escaped "\n" - const size_t pos = text.find("\\n", start); + const size_t pos = text.find("\n", start); if (pos == std::string::npos) { // No more "\n", take the rest @@ -10426,12 +10947,12 @@ namespace tsl { } else { // Extract line up to the escape sequence lines.emplace_back(text.substr(start, pos - start)); - start = pos + 2; // Skip past "\n" + start = pos + 1; // Skip past "\n" } } const auto fm = tsl::gfx::FontManager::getFontMetricsForCharacter('A', copy.fontSize); - const s32 startY = y + (copy.promptHeight - static_cast(lines.size()) * fm.lineHeight) / 2 + fm.ascent; + const s32 startY = y + (copy.promptHeight - (static_cast(lines.size()) * fm.lineHeight)) / 2 + fm.ascent; for (size_t i = 0; i < lines.size(); ++i) { const std::string& line = lines[i]; @@ -10634,23 +11155,6 @@ namespace tsl { //pending_event_fire_.store(false, std::memory_order_release); } - //void forceCompleteTransition() { - // std::lock_guard lg(state_mutex_); - // current_state_ = NotificationState{}; - // while (!pending_queue_.empty()) pending_queue_.pop(); - // is_active_ = false; - // //pending_event_fire_.store(false, std::memory_order_release); - //} - // - //void freezeState() { - // generation_++; - // enabled_.store(false, std::memory_order_release); - // { - // std::lock_guard lg(state_mutex_); - // is_active_ = false; - // } - // //pending_event_fire_.store(false, std::memory_order_release); - //} private: static constexpr size_t MAX_NOTIFS = 30; @@ -10938,8 +11442,19 @@ namespace tsl { * */ void show() { + if (ult::useHapticFeedback) { + if (!ult::isHidden.load(std::memory_order_acquire)) { + triggerInitHaptics.store(true, std::memory_order_release); + } + } + // reinitialize audio for changes from handheld to docked and vise versa + if (!ult::limitedMemory && ult::useSoundEffects) + reloadIfDockedChangedNow.store(true, std::memory_order_release); + //ult::Audio::reloadIfDockedChanged(); + + if (this->m_disableNextAnimation) { this->m_animationCounter = MAX_ANIMATION_COUNTER; this->m_disableNextAnimation = false; @@ -10948,15 +11463,15 @@ namespace tsl { this->m_fadeInAnimationPlaying = true; this->m_animationCounter = 0; } + + this->onShow(); ult::isHidden.store(false); - this->onShow(); - triggerRumbleClick.store(true, std::memory_order_release); - - // reinitialize audio for changes from handheld to docked and vise versa - if (ult::expandedMemory && ult::useSoundEffects) - ult::AudioPlayer::reloadIfDockedChanged(); + if (ult::useHapticFeedback) { + triggerRumbleClick.store(true, std::memory_order_release); + } + //if (auto& currGui = this->getCurrentGui(); currGui != nullptr) // TESTING DISABLED (EFFECTS NEED TO BE VERIFIED) // currGui->restoreFocus(); } @@ -11311,9 +11826,16 @@ namespace tsl { } } #endif - + + #if IS_STATUS_MONITOR_DIRECTIVE if (FullMode && !deactivateOriginalFooter) { + if ((keysDown & ALL_KEYS_MASK) && ult::stillTouching && ult::currentForeground.load(std::memory_order_acquire)) { + triggerRumbleClick.store(true, std::memory_order_release); + triggerWallSound.store(true, std::memory_order_release); + return; + } + if (ult::simulatedSelect.exchange(false, std::memory_order_acq_rel)) keysDown |= KEY_A; @@ -11339,12 +11861,19 @@ namespace tsl { ult::simulatedBack.exchange(false, std::memory_order_acq_rel); } #else + if (ult::simulatedSelect.exchange(false, std::memory_order_acq_rel)) keysDown |= KEY_A; if (ult::simulatedBack.exchange(false, std::memory_order_acq_rel)) keysDown |= KEY_B; + if ((keysDown & ALL_KEYS_MASK) && ult::stillTouching && ult::currentForeground.load(std::memory_order_acquire)) { + triggerRumbleClick.store(true, std::memory_order_release); + triggerWallSound.store(true, std::memory_order_release); + return; + } + if (!overrideBackButton) { if (keysDown & KEY_B && !(keysHeld & ~KEY_B & ALL_KEYS_MASK)) { if (!currentGui->handleInput(KEY_B,0,{},{},{})) { @@ -11359,13 +11888,17 @@ namespace tsl { return; } } else { + #if IS_LAUNCHER_DIRECTIVE if (keysDown & KEY_B && !(keysHeld & ~KEY_B & ALL_KEYS_MASK)) { if (this->m_guiStack.size() >= 1 && !interpreterIsRunning) { //triggerRumbleDoubleClick.store(true, std::memory_order_release); //triggerExitSound.store(true, std::memory_order_release); + triggerExitFeedback(); + } } + #endif } #endif @@ -11865,10 +12398,34 @@ namespace tsl { const bool menuTouched = (touchPos.x > ult::layerEdge+7U && touchPos.x <= menuRightEdge && touchPos.y > 10U && touchPos.y <= 83U) && (initialTouchPos.x > ult::layerEdge+7U && initialTouchPos.x <= menuRightEdge && initialTouchPos.y > 10U && initialTouchPos.y <= 83U); - ult::touchingBack.store(backTouched, std::memory_order_release); - ult::touchingSelect.store(selectTouched, std::memory_order_release); - ult::touchingNextPage.store(nextPageTouched, std::memory_order_release); - ult::touchingMenu.store(menuTouched, std::memory_order_release); + //ult::touchingBack.store(backTouched, std::memory_order_release); + //ult::touchingSelect.store(selectTouched, std::memory_order_release); + //ult::touchingNextPage.store(nextPageTouched, std::memory_order_release); + //ult::touchingMenu.store(menuTouched, std::memory_order_release); + + // Only update and trigger rumble on state changes + bool shouldTriggerRumble = false; + + if (backTouched != ult::touchingBack.exchange(backTouched, std::memory_order_acq_rel)) { + if (backTouched) shouldTriggerRumble = true; + } + + if (selectTouched != ult::touchingSelect.exchange(selectTouched, std::memory_order_acq_rel)) { + if (selectTouched) shouldTriggerRumble = true; + } + + if (nextPageTouched != ult::touchingNextPage.exchange(nextPageTouched, std::memory_order_acq_rel)) { + if (nextPageTouched) shouldTriggerRumble = true; + } + + if (menuTouched != ult::touchingMenu.exchange(menuTouched, std::memory_order_acq_rel)) { + if (menuTouched && (ult::inMainMenu.load(std::memory_order_acquire) || (ult::inHiddenMode.load(std::memory_order_acquire) && !ult::inSettingsMenu.load(std::memory_order_acquire) && !ult::inSubSettingsMenu.load(std::memory_order_acquire)))) shouldTriggerRumble = true; + } + + if (shouldTriggerRumble) { + triggerRumbleClick.store(true, std::memory_order_release); + } + if (touchDetected) { // Update lastSimulatedTouch with current touch states @@ -11901,7 +12458,10 @@ namespace tsl { ult::touchInBounds = (initialTouchPos.y <= footerY && initialTouchPos.y > 73U && initialTouchPos.x <= ult::layerEdge + cfg::FramebufferWidth - 30U && initialTouchPos.x > 40U + ult::layerEdge); - if (ult::touchInBounds) currentGui->removeFocus(); + if (ult::touchInBounds) { + triggerRumbleClick.store(true, std::memory_order_release); + currentGui->removeFocus(); + } } touchEvent = elm::TouchEvent::Touch; } @@ -11923,7 +12483,8 @@ namespace tsl { this->hide(); } #else - this->hide(); + if (!disableHiding) + this->hide(); #endif } ult::stillTouching.store(true, std::memory_order_release); @@ -12063,19 +12624,19 @@ namespace tsl { */ std::unique_ptr& swapTo(std::unique_ptr&& gui, u32 count = 1) { //isNavigatingBackwards = true; - + isNavigatingBackwards.store(true, std::memory_order_release); // Clamp count to available stack size to prevent underflow const u32 actualCount = std::min(count, static_cast(this->m_guiStack.size())); if (actualCount > 1) { - tsl::elm::skipDeconstruction.store(true, std::memory_order_release); + //tsl::elm::skipDeconstruction.store(true, std::memory_order_release); // Pop the specified number of GUIs for (u32 i = 0; i < actualCount; ++i) { this->m_guiStack.pop(); } - tsl::elm::skipDeconstruction.store(false, std::memory_order_release); + //tsl::elm::skipDeconstruction.store(false, std::memory_order_release); } else { this->m_guiStack.pop(); } @@ -12125,7 +12686,13 @@ namespace tsl { * @note The Overlay gets closed once there are no more Guis on the stack */ void goBack(u32 count = 1) { - tsl::elm::g_disableMenuCacheOnReturn.store(true, std::memory_order_release); + if (ult::stillTouching && ult::currentForeground.load(std::memory_order_acquire)) { + triggerRumbleClick.store(true, std::memory_order_release); + triggerWallSound.store(true, std::memory_order_release); + return; + } + + //tsl::elm::g_disableMenuCacheOnReturn.store(true, std::memory_order_release); // If there is exactly one GUI and an active notification, handle that first if (this->m_guiStack.size() == 1 && notification && notification->isActive()) { @@ -12144,15 +12711,15 @@ namespace tsl { return; } - if (actualCount > 1) - tsl::elm::skipDeconstruction.store(true, std::memory_order_release); + //if (actualCount > 1) + // tsl::elm::skipDeconstruction.store(true, std::memory_order_release); // Pop the specified number of GUIs for (u32 i = 0; i < actualCount && !this->m_guiStack.empty(); ++i) { this->m_guiStack.pop(); } - tsl::elm::skipDeconstruction.exchange(false, std::memory_order_acq_rel); + //tsl::elm::skipDeconstruction.exchange(false, std::memory_order_acq_rel); // Close overlay if stack is empty if (this->m_guiStack.empty()) { @@ -12165,18 +12732,25 @@ namespace tsl { } void pop(u32 count = 1) { + + if (ult::stillTouching && ult::currentForeground.load(std::memory_order_acquire)) { + triggerRumbleClick.store(true, std::memory_order_release); + triggerWallSound.store(true, std::memory_order_release); + return; + } + isNavigatingBackwards.store(true, std::memory_order_release); // Clamp count to available stack size to prevent underflow const u32 actualCount = std::min(count, static_cast(this->m_guiStack.size())); if (actualCount > 1) { - tsl::elm::skipDeconstruction.store(true, std::memory_order_release); + //tsl::elm::skipDeconstruction.store(true, std::memory_order_release); // Pop the specified number of GUIs for (u32 i = 0; i < actualCount; ++i) { this->m_guiStack.pop(); } - tsl::elm::skipDeconstruction.store(false, std::memory_order_release); + //tsl::elm::skipDeconstruction.store(false, std::memory_order_release); } else { this->m_guiStack.pop(); } @@ -12325,6 +12899,7 @@ namespace tsl { }, ULTRAHAND_CONFIG_FILE); } + static auto currentUnderscanPixels = std::make_pair(0, 0); /** * @brief Background event polling loop thread @@ -12332,7 +12907,13 @@ namespace tsl { * @param args Used to pass in a pointer to a \ref SharedThreadData struct */ static void backgroundEventPoller(void *args) { - + requiresLNY2 = amsVersionAtLeast(1,10,0); // Detect if using HOS 21+ + + // Initialize the audio service + if (ult::useSoundEffects && !ult::limitedMemory) { + ult::Audio::initialize(); + } + tsl::hlp::loadEntryKeyCombos(); ult::launchingOverlay.store(false, std::memory_order_release); @@ -12385,7 +12966,7 @@ namespace tsl { padUpdate(&pad_p1); padUpdate(&pad_handheld); - //ult::initRumble(); // initialize rumble + //ult::initHaptics(); // initialize rumble enum WaiterObject { WaiterObject_HomeButton, @@ -12439,10 +13020,11 @@ namespace tsl { time_t creationTime; + while (shData->running.load(std::memory_order_acquire)) { - const u64 nowTick = armGetSystemTick(); - const u64 nowNs = armTicksToNs(nowTick); + u64 nowTick = armGetSystemTick(); + u64 nowNs = armTicksToNs(nowTick); @@ -12485,7 +13067,7 @@ namespace tsl { } if (firstUnderscanCheck || (nowNs - lastUnderscanCheckNs) >= UNDERSCAN_INTERVAL_NS) { - const auto currentUnderscanPixels = tsl::gfx::getUnderscanPixels(); + currentUnderscanPixels = tsl::gfx::getUnderscanPixels(); if (firstUnderscanCheck || currentUnderscanPixels != lastUnderscanPixels) { // Update layer dimensions without destroying state @@ -12649,37 +13231,61 @@ namespace tsl { } + if (ult::useHapticFeedback) { + // Process ongoing rumbles + if (ult::clickActive.load(std::memory_order_acquire)) + ult::processRumbleStop(nowNs); + if (ult::doubleClickActive.load(std::memory_order_acquire)) + ult::processRumbleDoubleClick(nowNs); + } + if (ult::launchingOverlay.load(std::memory_order_acquire)) break; std::scoped_lock lock(shData->dataMutex); if (ult::launchingOverlay.load(std::memory_order_acquire)) break; + // Repoll after lock + nowTick = armGetSystemTick(); + nowNs = armTicksToNs(nowTick); + // Flush any pending rumble triggers when feedback is off - if (!ult::useHapticFeedback) { - triggerRumbleClick.exchange(false, std::memory_order_acq_rel); - triggerRumbleDoubleClick.exchange(false, std::memory_order_acq_rel); - } else { - ult::checkAndReinitRumble(); + if (ult::useHapticFeedback) { + if (!triggerInitHaptics.load(std::memory_order_acquire)) + ult::checkAndReinitHaptics(); + else + ult::initHaptics(); - if (triggerRumbleDoubleClick.exchange(false)) { - if (!ult::doubleClickActive.load(std::memory_order_acquire)) { + // Double-click takes priority + if (triggerRumbleDoubleClick.exchange(false, std::memory_order_acq_rel)) { + if (!ult::clickActive.load(std::memory_order_acquire) && !ult::doubleClickActive.load(std::memory_order_acquire)) { ult::rumbleDoubleClick(); } - triggerRumbleClick.exchange(false); - } else if (triggerRumbleClick.exchange(false)) { - ult::rumbleClick(); + // Clear any pending single click since double-click supersedes it + triggerRumbleClick.exchange(false, std::memory_order_acq_rel); + } + + if (triggerRumbleClick.exchange(false, std::memory_order_acq_rel)) { + // Only start single click if nothing else is active + if (!ult::clickActive.load(std::memory_order_acquire) && !ult::doubleClickActive.load(std::memory_order_acquire)) { + ult::rumbleClick(); + } + //triggerRumbleDoubleClick.exchange(false, std::memory_order_acq_rel); } - //const u64 _nowNs = armTicksToNs(armGetSystemTick()); - - ult::processRumbleStop(nowNs); - ult::processRumbleDoubleClick(nowNs); + // Process ongoing rumbles + if (ult::clickActive.load(std::memory_order_acquire)) + ult::processRumbleStop(nowNs); + if (ult::doubleClickActive.load(std::memory_order_acquire)) + ult::processRumbleDoubleClick(nowNs); + } else { + triggerRumbleClick.exchange(false, std::memory_order_acq_rel); + triggerRumbleDoubleClick.exchange(false, std::memory_order_acq_rel); } // Flush any pending sound triggers when effects are off - if (ult::expandedMemory) { + if (!ult::limitedMemory) { if (!ult::useSoundEffects || disableSound.load(std::memory_order_acquire)) { triggerNavigationSound.exchange(false, std::memory_order_acq_rel); triggerEnterSound.exchange(false, std::memory_order_acq_rel); @@ -12690,32 +13296,35 @@ namespace tsl { triggerSettingsSound.exchange(false, std::memory_order_acq_rel); triggerMoveSound.exchange(false, std::memory_order_acq_rel); } else { + if (reloadIfDockedChangedNow.exchange(false, std::memory_order_acq_rel)) { + ult::Audio::reloadIfDockedChanged(); + } if (reloadSoundCacheNow.exchange(false, std::memory_order_acq_rel)) { - ult::AudioPlayer::reloadAllSounds(); + ult::Audio::reloadAllSounds(); } if (triggerNavigationSound.exchange(false)) { - ult::AudioPlayer::playNavigateSound(); + ult::Audio::playNavigateSound(); } else if (triggerEnterSound.exchange(false)) { - ult::AudioPlayer::playEnterSound(); + ult::Audio::playEnterSound(); } else if (triggerExitSound.exchange(false)) { - ult::AudioPlayer::playExitSound(); + ult::Audio::playExitSound(); } else if (triggerWallSound.exchange(false)) { - ult::AudioPlayer::playWallSound(); + ult::Audio::playWallSound(); } else if (triggerOnSound.exchange(false)) { - ult::AudioPlayer::playOnSound(); + ult::Audio::playOnSound(); } else if (triggerOffSound.exchange(false)) { - ult::AudioPlayer::playOffSound(); + ult::Audio::playOffSound(); } else if (triggerSettingsSound.exchange(false)) { - ult::AudioPlayer::playSettingsSound(); + ult::Audio::playSettingsSound(); } else if (triggerMoveSound.exchange(false)) { - ult::AudioPlayer::playMoveSound(); + ult::Audio::playMoveSound(); } //if (clearSoundCacheNow.exchange(false, std::memory_order_acq_rel)) { - // //ult::AudioPlayer::unloadAllSounds(ult::AudioPlayer::SoundType::Wall); - // ult::AudioPlayer::unloadAllSounds({ult::AudioPlayer::SoundType::Wall}); - // //ult::AudioPlayer::unloadAllSounds(); + // //ult::Audio::unloadAllSounds(ult::Audio::SoundType::Wall); + // ult::Audio::unloadAllSounds({ult::Audio::SoundType::Wall}); + // //ult::Audio::unloadAllSounds(); // //clearSoundCacheNow.store(false, std::memory_order_release); // clearSoundCacheNow.notify_all(); //} @@ -12723,7 +13332,7 @@ namespace tsl { } //else if (triggerNavigationSound.exchange(false)) { - // ult::AudioPlayer::playSlideSound(); + // ult::Audio::playSlideSound(); //} // Combine inputs from both controllers @@ -12850,8 +13459,10 @@ namespace tsl { #endif if (shData->overlayOpen) { - tsl::Overlay::get()->hide(); - shData->overlayOpen = false; + if (!disableHiding) { + tsl::Overlay::get()->hide(); + shData->overlayOpen = false; + } } else { eventFire(&shData->comboEvent); @@ -12928,9 +13539,24 @@ namespace tsl { #else if (!overlayPath.empty() && (shData->keysHeld) && (nowNs - startNs) >= FAST_SWAP_THRESHOLD_NS) { #endif + const std::string& modeArg = comboInfo.launchArg; const std::string overlayFileName = ult::getNameFromPath(overlayPath); + // Check HOS21 support before doing anything + if (requiresLNY2 && !usingLNY2(overlayPath)) { + // Skip launch if not supported + const auto forceSupportStatus = ult::parseValueFromIniSection( + ult::OVERLAYS_INI_FILEPATH, overlayFileName, "force_support"); + if (forceSupportStatus != ult::TRUE_STR) { + if (tsl::notification) { + tsl::notification->showNow(ult::NOTIFY_HEADER+ult::INCOMPATIBLE_WARNING, 22); + } + continue; + } + //continue; + } + // hideHidden check if (hideHidden) { const auto hideStatus = ult::parseValueFromIniSection( @@ -13269,7 +13895,7 @@ namespace tsl { u8 action; }; - static const struct option_entry options[] = { + static constexpr struct option_entry options[] = { {"direct", 6, 1}, {"skipCombo", 9, 2}, {"lastTitleID", 11, 3}, @@ -13296,21 +13922,45 @@ namespace tsl { #if IS_STATUS_MONITOR_DIRECTIVE leventClear(&renderingStopEvent); - #endif + // Status monitor will load heap settings directly in main, so bypass here in loop + #else + + ult::currentHeapSize = ult::getCurrentHeapSize(); + ult::expandedMemory = ult::currentHeapSize >= ult::OverlayHeapSize::Size_8MB; + ult::limitedMemory = ult::currentHeapSize == ult::OverlayHeapSize::Size_4MB; + // Initialize buffer sizes based on expanded memory setting if (ult::expandedMemory) { - ult::COPY_BUFFER_SIZE = 262144; - ult::HEX_BUFFER_SIZE = 8192; - ult::UNZIP_READ_BUFFER = 262144; - ult::UNZIP_WRITE_BUFFER = 131072; - ult::DOWNLOAD_READ_BUFFER = 262144/2; - ult::DOWNLOAD_WRITE_BUFFER = 131072; + ult::furtherExpandedMemory = ult::currentHeapSize > ult::OverlayHeapSize::Size_8MB; + + if (!ult::furtherExpandedMemory) { + ult::loaderTitle += "+"; + ult::COPY_BUFFER_SIZE = 262144; + ult::HEX_BUFFER_SIZE = 8192; + ult::UNZIP_READ_BUFFER = 262144; + ult::UNZIP_WRITE_BUFFER = 131072; + ult::DOWNLOAD_READ_BUFFER = 131072; + ult::DOWNLOAD_WRITE_BUFFER = 131072; + } else { + ult::loaderTitle += "×"; + ult::COPY_BUFFER_SIZE = 262144*2; + ult::HEX_BUFFER_SIZE = 8192; + ult::UNZIP_READ_BUFFER = 262144*2; + ult::UNZIP_WRITE_BUFFER = 131072*4; + ult::DOWNLOAD_READ_BUFFER = 131072*4; + ult::DOWNLOAD_WRITE_BUFFER = 131072*4; + } + } else if (ult::limitedMemory) { + ult::loaderTitle += "-"; + ult::DOWNLOAD_READ_BUFFER = 16*1024; + ult::UNZIP_READ_BUFFER = 16*1024; } + #endif if (argc > 0) { - g_overlayFilename = ult::getNameFromPath(argv[0]); - lastOverlayFilename = g_overlayFilename; + //g_overlayFilename = ult::getNameFromPath(argv[0]); + lastOverlayFilename = ult::getNameFromPath(argv[0]); lastOverlayMode.clear(); bool skip; @@ -13379,7 +14029,7 @@ namespace tsl { switch (options[i].action) { case 1: // direct directMode = true; - g_overlayFilename = ""; + //g_overlayFilename = ""; jumpItemName = ""; jumpItemValue = ""; jumpItemExactMatch.store(true, std::memory_order_release); @@ -13429,27 +14079,10 @@ namespace tsl { threadStart(&backgroundThread); eventCreate(&shData.comboEvent, false); - - auto& overlay = tsl::Overlay::s_overlayInstance; - overlay = new TOverlay(); - overlay->m_closeOnExit = (u8(launchFlags) & u8(impl::LaunchFlags::CloseOnExit)) == u8(impl::LaunchFlags::CloseOnExit); - - tsl::hlp::doWithSmSession([&overlay]{ - overlay->initServices(); - }); + #if !IS_LAUNCHER_DIRECTIVE tsl::initializeUltrahandSettings(); #endif - - // Initialize the audio service - if (ult::useSoundEffects && ult::expandedMemory) { - ult::AudioPlayer::initialize(); - } - - - - overlay->initScreen(); - overlay->changeTo(overlay->loadInitialGui()); bool shouldFireEvent = false; @@ -13457,50 +14090,54 @@ namespace tsl { #if IS_LAUNCHER_DIRECTIVE { - bool inOverlay; - auto configData = ult::getParsedDataFromIniFile(ult::ULTRAHAND_CONFIG_INI_PATH); bool needsUpdate = false; - - if (ult::firstBoot) { - configData[ult::ULTRAHAND_PROJECT_NAME][ult::IN_OVERLAY_STR] = ult::FALSE_STR; + + // Get reference to project section (create if missing) + auto& project = configData[ult::ULTRAHAND_PROJECT_NAME]; + + // Determine current overlay state + bool inOverlay = true; + auto it = project.find(ult::IN_OVERLAY_STR); + if (it != project.end()) { + inOverlay = (it->second != ult::FALSE_STR); + } + + // Only update the overlay key once, for either firstBoot or skipCombo + if (ult::firstBoot || (inOverlay && skipCombo)) { + project[ult::IN_OVERLAY_STR] = ult::FALSE_STR; needsUpdate = true; + if (inOverlay && skipCombo) { + shouldFireEvent = true; + } } - - auto projectIt = configData.find(ult::ULTRAHAND_PROJECT_NAME); - if (projectIt != configData.end()) { - auto overlayIt = projectIt->second.find(ult::IN_OVERLAY_STR); - inOverlay = (overlayIt == projectIt->second.end() || overlayIt->second != ult::FALSE_STR); - } else { - inOverlay = true; - } - - if (inOverlay && skipCombo) { - configData[ult::ULTRAHAND_PROJECT_NAME][ult::IN_OVERLAY_STR] = ult::FALSE_STR; - needsUpdate = true; - shouldFireEvent = true; - } - + + // Write INI only if we changed something if (needsUpdate) { ult::saveIniFileData(ult::ULTRAHAND_CONFIG_INI_PATH, configData); } - + + // Fire event if needed if (shouldFireEvent) { eventFire(&shData.comboEvent); + } else { + lastOverlayFilename = ""; } } #else { - auto configData = ult::getParsedDataFromIniFile(ult::ULTRAHAND_CONFIG_INI_PATH); - + auto projectIt = configData.find(ult::ULTRAHAND_PROJECT_NAME); if (projectIt != configData.end()) { - auto overlayIt = projectIt->second.find(ult::IN_OVERLAY_STR); - const bool inOverlay = (overlayIt == projectIt->second.end() || overlayIt->second != ult::FALSE_STR); - + auto& project = projectIt->second; + + auto overlayIt = project.find(ult::IN_OVERLAY_STR); + const bool inOverlay = (overlayIt == project.end() || + overlayIt->second != ult::FALSE_STR); + if (inOverlay && directMode) { - configData[ult::ULTRAHAND_PROJECT_NAME][ult::IN_OVERLAY_STR] = ult::FALSE_STR; + project[ult::IN_OVERLAY_STR] = ult::FALSE_STR; ult::saveIniFileData(ult::ULTRAHAND_CONFIG_INI_PATH, configData); } } @@ -13511,17 +14148,28 @@ namespace tsl { shouldFireEvent = true; } #endif + + auto& overlay = tsl::Overlay::s_overlayInstance; + overlay = new TOverlay(); + overlay->m_closeOnExit = (u8(launchFlags) & u8(impl::LaunchFlags::CloseOnExit)) == u8(impl::LaunchFlags::CloseOnExit); + tsl::hlp::doWithSmSession([&overlay]{ + overlay->initServices(); + }); + + overlay->initScreen(); + overlay->changeTo(overlay->loadInitialGui()); + overlay->disableNextAnimation(); - + { - Handle handles[2] = { shData.comboEvent.revent, notificationEvent.revent }; + const Handle handles[2] = { shData.comboEvent.revent, notificationEvent.revent }; s32 index = -1; - + bool exitAfterPrompt = false; bool comboBreakout = false; bool firstLoop = !ult::firstBoot; - + while (shData.running.load(std::memory_order_acquire)) { // Early exit if launching new overlay if (ult::launchingOverlay.load(std::memory_order_acquire)) { @@ -13530,7 +14178,7 @@ namespace tsl { shData.overlayOpen.store(false, std::memory_order_release); break; } - + // Wait for events only if no active notification if (!(notification && notification->isActive())) { svcWaitSynchronization(&index, handles, 2, UINT64_MAX); @@ -13539,10 +14187,10 @@ namespace tsl { } eventClear(¬ificationEvent); eventClear(&shData.comboEvent); - + if ((notification && notification->isActive() && !firstLoop) || index == 1) { comboBreakout = false; - + while (shData.running.load(std::memory_order_acquire)) { { //std::scoped_lock lock(shData.dataMutex); @@ -13553,25 +14201,25 @@ namespace tsl { } overlay->loop(true); // Draw prompts while hidden } - + if (mainComboHasTriggered.exchange(false, std::memory_order_acq_rel)) { comboBreakout = true; exitAfterPrompt = false; break; } - + if (launchComboHasTriggered.load(std::memory_order_acquire)) { exitAfterPrompt = true; usingPackageLauncher = false; directMode = false; break; } - + if (!(notification && notification->isActive())) { break; } } - + if (!comboBreakout || !shData.running.load(std::memory_order_acquire)) { { //std::scoped_lock lock(shData.dataMutex); @@ -13667,7 +14315,8 @@ namespace tsl { triggerExitFeedback(); } else { //triggerRumbleClick.store(true, std::memory_order_release); - triggerEnterSound.store(true, std::memory_order_release); + //triggerEnterSound.store(true, std::memory_order_release); + triggerEnterFeedback(); } #else //triggerRumbleClick.store(true, std::memory_order_release); @@ -13720,8 +14369,8 @@ namespace tsl { overlay->resetFlags(); hlp::requestForeground(false); shData.overlayOpen.store(false, std::memory_order_release); - mainComboHasTriggered.store(false, std::memory_order_acquire); - launchComboHasTriggered.store(false, std::memory_order_acquire); + mainComboHasTriggered.store(false, std::memory_order_release); + //launchComboHasTriggered.store(false, std::memory_order_acquire); eventClear(&shData.comboEvent); } } @@ -13733,7 +14382,7 @@ namespace tsl { // Cleanup overlay resources - tsl::elm::fullDeconstruction.store(true, std::memory_order_release); + //tsl::elm::fullDeconstruction.store(true, std::memory_order_release); hlp::requestForeground(false); overlay->exitScreen(); overlay->exitServices(); @@ -13745,7 +14394,7 @@ namespace tsl { if (directMode && !launchComboHasTriggered.load(std::memory_order_acquire)) { if (!disableSound.load(std::memory_order_acquire) && ult::useSoundEffects) - ult::AudioPlayer::playExitSound(); + ult::Audio::playExitSound(); if (ult::useHapticFeedback) { ult::rumbleDoubleClickStandalone(); } @@ -13823,9 +14472,10 @@ extern "C" { //ASSERT_FATAL(nifmInitialize(NifmServiceType_User)); //}); - - + //requiresLNY2 = amsVersionAtLeast(1,9,0); // Detect if using HOS 21+ + //ult::currentHeapSize = ult::getCurrentHeapSize(); + //ult::expandedMemory = ult::currentHeapSize >= ult::OverlayHeapSize::Size_8MB; #if IS_STATUS_MONITOR_DIRECTIVE Service *plSrv = plGetServiceSession(); @@ -13848,9 +14498,9 @@ extern "C" { delete tsl::notification; eventClose(&tsl::notificationEvent); - //deinitRumble(); - if (ult::expandedMemory) - ult::AudioPlayer::exit(); + //deinitHaptics(); + if (!ult::limitedMemory) + ult::Audio::exit(); //socketExit(); diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio_player.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio.hpp similarity index 95% rename from Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio_player.hpp rename to Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio.hpp index d9e9765e..ee9eddb9 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio_player.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/audio.hpp @@ -1,8 +1,8 @@ /******************************************************************************** - * File: audio_player.hpp + * File: audio.hpp * Author: ppkantorski * Description: - * This header defines the AudioPlayer class and related structures used for + * This header defines the Audio class and related structures used for * handling sound playback within the Ultrahand Overlay. It provides interfaces * for loading, caching, and playing WAV audio through libnx’s audout service, * along with basic sound type management and synchronization support. @@ -25,9 +25,10 @@ #include #include #include +#include "tsl_utils.hpp" namespace ult { - class AudioPlayer { + class Audio { public: enum class SoundType : uint8_t { // <- uint8_t saves space Navigate, @@ -64,7 +65,7 @@ namespace ult { static void setMasterVolume(float volume); static void setEnabled(bool enabled); static bool isEnabled(); - static bool isDocked(); + //static bool isDocked(); static bool reloadIfDockedChanged(); static void reloadAllSounds(); static void unloadAllSounds(const std::initializer_list& excludeSounds = {}); diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/debug_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/debug_funcs.hpp index aa0a045d..3eecbb01 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/debug_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/debug_funcs.hpp @@ -12,7 +12,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/download_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/download_funcs.hpp index 240db66c..f505037d 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/download_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/download_funcs.hpp @@ -13,7 +13,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/get_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/get_funcs.hpp index f2ad167d..a2e05861 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/get_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/get_funcs.hpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/global_vars.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/global_vars.hpp index 26ea2aef..2c1b3ad3 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/global_vars.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/global_vars.hpp @@ -13,7 +13,7 @@ * altered or removed. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ @@ -39,6 +39,11 @@ namespace ult { extern const std::string ROOT_PATH; extern const std::string SETTINGS_PATH; + + extern const std::string NX_OVLLOADER_PATH; + extern const std::string OVL_HEAP_CONFIG_PATH; + extern const std::string OVL_EXIT_FLAG_PATH; + extern const std::string ULTRAHAND_CONFIG_INI_PATH; extern const std::string TESLA_CONFIG_INI_PATH; extern const std::string LANG_PATH; @@ -63,7 +68,8 @@ namespace ult { extern const std::string PACKAGE_FILENAME; extern const std::string DOWNLOADS_PATH; - extern const std::string EXPANSION_PATH; + + //extern const std::string EXPANSION_PATH; extern const std::string FUSE_DATA_INI_PATH; extern const std::string PACKAGE_PATH; extern const std::string OVERLAY_PATH; @@ -77,12 +83,13 @@ namespace ult { extern const std::string ULTRAHAND_REPO_URL; extern const std::string INCLUDED_THEME_FOLDER_URL; extern const std::string LATEST_RELEASE_INFO_URL; - extern const std::string NX_OVLLOADER_ZIP_URL; - extern const std::string NX_OVLLOADER_PLUS_ZIP_URL; + extern const std::string LATEST_UPDATER_INI_URL; + //extern const std::string NX_OVLLOADER_ZIP_URL; + //extern const std::string NX_OVLLOADER_PLUS_ZIP_URL; extern const std::string OLD_NX_OVLLOADER_ZIP_URL; - extern const std::string OLD_NX_OVLLOADER_PLUS_ZIP_URL; + //extern const std::string OLD_NX_OVLLOADER_PLUS_ZIP_URL; extern const std::string UPDATER_PAYLOAD_URL; - extern const std::string SOUND_EFFECTS_URL; + //extern const std::string SOUND_EFFECTS_URL; extern const std::string LAUNCH_ARGS_STR; extern const std::string USE_LAUNCH_ARGS_STR; @@ -137,6 +144,7 @@ namespace ult { extern const std::string FALSE_STR; extern const std::string GLOBAL_STR; extern const std::string DEFAULT_STR; + extern const std::string HOLD_STR; extern const std::string SLOT_STR; extern const std::string OPTION_STR; extern const std::string FORWARDER_STR; @@ -161,6 +169,7 @@ namespace ult { extern const std::string INPROGRESS_SYMBOL; extern const std::string STAR_SYMBOL; extern const std::string DIVIDER_SYMBOL; + extern const std::string NOTIFY_HEADER; extern const std::vector THROBBER_SYMBOLS; diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/haptics.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/haptics.hpp index 1b887295..5cb2ab9f 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/haptics.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/haptics.hpp @@ -26,12 +26,12 @@ namespace ult { //extern bool rumbleInitialized; - extern std::atomic rumbleActive; + extern std::atomic clickActive; extern std::atomic doubleClickActive; - //void initRumble(); - void deinitRumble(); - void checkAndReinitRumble(); + void initHaptics(); + void deinitHaptics(); + void checkAndReinitHaptics(); void rumbleClick(); void rumbleDoubleClick(); diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/hex_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/hex_funcs.hpp index bdd29144..aab69461 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/hex_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/hex_funcs.hpp @@ -13,7 +13,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once @@ -206,6 +206,9 @@ namespace ult { std::string extractVersionFromBinary(const std::string &filePath); + + + std::string decodeBase64ToString(const std::string& b64); } #endif diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ini_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ini_funcs.hpp index c85da275..ca68ae65 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ini_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ini_funcs.hpp @@ -13,7 +13,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once @@ -290,7 +290,7 @@ namespace ult { //} - void syncIniValue(std::map>& packageConfigData, + bool syncIniValue(std::map>& packageConfigData, const std::string& packageConfigIniPath, const std::string& optionName, const std::string& key, @@ -339,6 +339,36 @@ namespace ult { * @param data The complete INI data structure to save. */ void saveIniFileData(const std::string& filePath, const std::map>& data); + + + + /** + * @brief Adds a key-value pair to all sections that contain a specified pattern key. + * + * If patternKey is empty, the key-value pair will be added to ALL sections. + * If patternKey is specified, only sections containing that key will be modified. + * + * @param filePath The path to the INI file. + * @param patternKey The key to search for (empty = all sections). + * @param newKey The new key to add. + * @param newValue The value for the new key. + */ + void addKeyToMatchingSections(const std::string& filePath, const std::string& patternKey, + const std::string& newKey, const std::string& newValue); + + /** + * @brief Removes a key from all sections that contain a specified pattern key. + * + * If patternKey is empty, the key will be removed from ALL sections. + * If patternKey is specified, only sections containing that key will have keyToRemove deleted. + * + * @param filePath The path to the INI file. + * @param patternKey The key to search for (empty = all sections). + * @param keyToRemove The key to remove from matching sections. + */ + void removeKeyFromMatchingSections(const std::string& filePath, const std::string& patternKey, + const std::string& keyToRemove); + } #endif \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/json_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/json_funcs.hpp index 5995cc7d..e0848e93 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/json_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/json_funcs.hpp @@ -12,8 +12,9 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ + #pragma once #ifndef JSON_FUNCS_HPP #define JSON_FUNCS_HPP diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/list_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/list_funcs.hpp index b1b8aabb..ce5a6131 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/list_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/list_funcs.hpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ @@ -70,7 +70,7 @@ namespace ult { // Function to read file into a vector of strings - std::vector readListFromFile(const std::string& filePath, size_t maxLines=0); + std::vector readListFromFile(const std::string& filePath, size_t maxLines=0, bool preserveNewlines = false); // Function to get an entry from the list based on the index @@ -89,7 +89,7 @@ namespace ult { // Function to read file into a set of strings - std::unordered_set readSetFromFile(const std::string& filePath); + std::unordered_set readSetFromFile(const std::string& filePath, const std::string& packagePath = ""); // Function to write a set to a file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/mod_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/mod_funcs.hpp index b5b04315..fc60aaf3 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/mod_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/mod_funcs.hpp @@ -13,7 +13,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2024-2025 ppkantorski ********************************************************************************/ #pragma once diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/path_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/path_funcs.hpp index 2eea6781..e350fe29 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/path_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/path_funcs.hpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once @@ -36,6 +36,7 @@ #include "get_funcs.hpp" #include #include +#include namespace ult { @@ -143,7 +144,7 @@ namespace ult { * * @param pathPattern The pattern used to match and delete files or directories. */ - void deleteFileOrDirectoryByPattern(const std::string& pathPattern, const std::string& logSource = ""); + void deleteFileOrDirectoryByPattern(const std::string& pathPattern, const std::string& logSourc = "", const std::unordered_set* filterSet = nullptr); void moveDirectory(const std::string& sourcePath, const std::string& destinationPath, @@ -176,12 +177,16 @@ namespace ult { * * This function identifies files or directories that match the `sourcePathPattern` and moves them to the `destinationPath`. * It processes each matching entry in the source directory pattern and moves them to the specified destination. + * Files/directories in the filterSet will be skipped. * * @param sourcePathPattern The pattern used to match files or directories to be moved. * @param destinationPath The destination directory where matching files or directories will be moved. + * @param logSource Optional log source identifier. + * @param logDestination Optional log destination identifier. + * @param filterSet Optional set of paths to exclude from moving (nullptr to move all). */ void moveFilesOrDirectoriesByPattern(const std::string& sourcePathPattern, const std::string& destinationPath, - const std::string& logSource = "", const std::string& logDestination = ""); + const std::string& logSource = "", const std::string& logDestination = "", const std::unordered_set* filterSet = nullptr); @@ -227,12 +232,16 @@ namespace ult { * * This function identifies files or directories that match the `sourcePathPattern` and copies them to the `toDirectory`. * It processes each matching entry in the source directory pattern and copies them to the specified destination. + * Files/directories in the filterSet will be skipped. * * @param sourcePathPattern The pattern used to match files or directories to be copied. * @param toDirectory The destination directory where matching files or directories will be copied. + * @param logSource Optional log source identifier. + * @param logDestination Optional log destination identifier. + * @param filterSet Optional set of paths to exclude from copying (nullptr to copy all). */ void copyFileOrDirectoryByPattern(const std::string& sourcePathPattern, const std::string& toDirectory, - const std::string& logSource = "", const std::string& logDestination = ""); + const std::string& logSource = "", const std::string& logDestination = "", const std::unordered_set* filterSet = nullptr); diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/string_funcs.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/string_funcs.hpp index 71696d07..1eb86a6f 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/string_funcs.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/string_funcs.hpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #pragma once @@ -40,7 +40,7 @@ namespace ult { extern int stoi(const std::string& str, std::size_t* pos = nullptr, int base = 10); extern float stof(const std::string& str); - extern bool canConvertToInt(const std::string& str); + //extern bool canConvertToInt(const std::string& str); /** * @brief A lightweight string stream class that mimics basic functionality of std::istringstream. @@ -144,7 +144,7 @@ namespace ult { * @param input The input string to process. * @return The string with multiple slashes replaced. */ - std::string replaceMultipleSlashes(const std::string& input); + //std::string replaceMultipleSlashes(const std::string& input); void resolveDirectoryTraversal(std::string& path); diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/tsl_utils.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/tsl_utils.hpp index 4baabffe..ff3084d6 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/tsl_utils.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/tsl_utils.hpp @@ -18,7 +18,7 @@ * altered or removed. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ @@ -54,39 +54,39 @@ #include #include -#ifndef APPROXIMATE_cos -// Approximation for cos(x) using Taylor series around 0 -#define APPROXIMATE_cos(x) (1 - (x) * (x) / 2 + (x) * (x) * (x) * (x) / 24) // valid for small x -#endif - - -#ifndef APPROXIMATE_ifloor -#define APPROXIMATE_ifloor(x) ((int)((x) >= 0 ? (x) : (x) - 1)) // truncate toward negative infinity -#define APPROXIMATE_iceil(x) ((int)((x) == (int)(x) ? (x) : ((x) > 0 ? (int)(x) + 1 : (int)(x)))) // truncate toward positive infinity -#endif - -#ifndef APPROXIMATE_sqrt -// Fast approximation for sqrt using Newton's method -#define APPROXIMATE_sqrt(x) ((x) <= 0 ? 0 : (x) / 2.0 * (3.0 - ((x) * (x) * 0.5))) // Approximation for x close to 1 -#define APPROXIMATE_pow(x, y) ((y) == 0 ? 1 : ((y) == 1 ? (x) : APPROXIMATE_sqrt(x))) // limited to approximate sqrt if y=0.5 -#endif - -#ifndef APPROXIMATE_fmod -#define APPROXIMATE_fmod(x, y) ((x) - ((int)((x) / (y)) * (y))) // equivalent to x - floor(x/y) * y -#endif - -#ifndef APPROXIMATE_cos -// Approximation for cos(x) using Taylor series around 0 -#define APPROXIMATE_cos(x) (1 - (x) * (x) / 2 + (x) * (x) * (x) * (x) / 24) // valid for small x -#endif - -#ifndef APPROXIMATE_acos -#define APPROXIMATE_acos(x) (1.5708 - (x) - (x)*(x)*(x) / 6) // limited approximation for acos in range [-1, 1] -#endif - -#ifndef APPROXIMATE_fabs -#define APPROXIMATE_fabs(x) ((x) < 0 ? -(x) : (x)) -#endif +//#ifndef APPROXIMATE_cos +//// Approximation for cos(x) using Taylor series around 0 +//#define APPROXIMATE_cos(x) (1 - (x) * (x) / 2 + (x) * (x) * (x) * (x) / 24) // valid for small x +//#endif +// +// +//#ifndef APPROXIMATE_ifloor +//#define APPROXIMATE_ifloor(x) ((int)((x) >= 0 ? (x) : (x) - 1)) // truncate toward negative infinity +//#define APPROXIMATE_iceil(x) ((int)((x) == (int)(x) ? (x) : ((x) > 0 ? (int)(x) + 1 : (int)(x)))) // truncate toward positive infinity +//#endif +// +//#ifndef APPROXIMATE_sqrt +//// Fast approximation for sqrt using Newton's method +//#define APPROXIMATE_sqrt(x) ((x) <= 0 ? 0 : (x) / 2.0 * (3.0 - ((x) * (x) * 0.5))) // Approximation for x close to 1 +//#define APPROXIMATE_pow(x, y) ((y) == 0 ? 1 : ((y) == 1 ? (x) : APPROXIMATE_sqrt(x))) // limited to approximate sqrt if y=0.5 +//#endif +// +//#ifndef APPROXIMATE_fmod +//#define APPROXIMATE_fmod(x, y) ((x) - ((int)((x) / (y)) * (y))) // equivalent to x - floor(x/y) * y +//#endif +// +//#ifndef APPROXIMATE_cos +//// Approximation for cos(x) using Taylor series around 0 +//#define APPROXIMATE_cos(x) (1 - (x) * (x) / 2 + (x) * (x) * (x) * (x) / 24) // valid for small x +//#endif +// +//#ifndef APPROXIMATE_acos +//#define APPROXIMATE_acos(x) (1.5708 - (x) - (x)*(x)*(x) / 6) // limited approximation for acos in range [-1, 1] +//#endif +// +//#ifndef APPROXIMATE_fabs +//#define APPROXIMATE_fabs(x) ((x) < 0 ? -(x) : (x)) +//#endif struct OverlayCombo { std::string path; // full overlay path @@ -99,6 +99,35 @@ struct SwapDepth { }; namespace ult { + // math funcs + inline double cos(double x) { + static constexpr double PI = 3.14159265358979323846; + static constexpr double TWO_PI = 6.28318530717958647692; + static constexpr double HALF_PI = 1.57079632679489661923; + + // Fast normalization using multiply instead of divide when possible + x = x - TWO_PI * static_cast(x * 0.159154943091895); // 1/(2π) + if (x < 0) x += TWO_PI; + + // Use symmetry to reduce range + int sign = 1; + if (x > PI) { + x -= PI; + sign = -1; + } + if (x > HALF_PI) { + x = PI - x; + sign = -sign; + } + + // Horner's method for faster polynomial evaluation (fewer operations) + // 5-term minimax polynomial for [0, π/2] - accurate to ~10^-8 + const double x2 = x * x; + return sign * (1.0 + x2 * (-0.5 + x2 * (0.04166666666666666 + x2 * (-0.001388888888888889 + x2 * (0.0000248015873015873 - x2 * 0.0000002755731922398589))))); + } + + + extern bool correctFrameSize; // for detecting the correct Overlay display size extern u16 DefaultFramebufferWidth; ///< Width of the framebuffer @@ -182,6 +211,9 @@ namespace ult { extern std::atomic selectWidth; extern std::atomic nextPageWidth; extern std::atomic inMainMenu; + extern std::atomic inHiddenMode; + extern std::atomic inSettingsMenu; + extern std::atomic inSubSettingsMenu; extern std::atomic inOverlaysPage; extern std::atomic inPackagesPage; @@ -200,7 +232,7 @@ namespace ult { //bool progressAnimation = false; extern bool disableTransparency; //bool useCustomWallpaper = false; - extern bool useMemoryExpansion; + //extern bool useMemoryExpansion; extern bool useOpaqueScreenshots; extern std::atomic onTrackBar; @@ -344,6 +376,7 @@ namespace ult { extern std::string HIDE_OVERLAY; extern std::string HIDE_PACKAGE; extern std::string LAUNCH_ARGUMENTS; + extern std::string FORCE_AMS110_SUPPORT; extern std::string QUICK_LAUNCH; extern std::string BOOT_COMMANDS; extern std::string EXIT_COMMANDS; @@ -371,6 +404,8 @@ namespace ult { extern std::string USER_GUIDE; extern std::string SHOW_HIDDEN; extern std::string SHOW_DELETE; + extern std::string SHOW_UNSUPPORTED; + extern std::string PAGE_SWAP; extern std::string RIGHT_SIDE_MODE; extern std::string OVERLAY_VERSIONS; @@ -379,7 +414,7 @@ namespace ult { //extern std::string VERSION_LABELS; extern std::string KEY_COMBO; extern std::string MODE; - extern std::string MODES; + extern std::string LAUNCH_MODES; extern std::string LANGUAGE; extern std::string OVERLAY_INFO; extern std::string SOFTWARE_UPDATE; @@ -394,11 +429,19 @@ namespace ult { extern std::string VENDOR; extern std::string MODEL; extern std::string STORAGE; - extern std::string NOTICE; - extern std::string UTILIZES; + //extern std::string NOTICE; + //extern std::string UTILIZES; - extern std::string MEMORY_EXPANSION; - extern std::string REBOOT_REQUIRED; + extern std::string OVERLAY_MEMORY; + extern std::string NOT_ENOUGH_MEMORY; + extern std::string WALLPAPER_SUPPORT_DISABLED; + extern std::string SOUND_SUPPORT_DISABLED; + extern std::string WALLPAPER_SUPPORT_ENABLED; + extern std::string SOUND_SUPPORT_ENABLED; + extern std::string EXIT_OVERLAY_SYSTEM; + + //extern std::string MEMORY_EXPANSION; + //extern std::string REBOOT_REQUIRED; extern std::string LOCAL_IP; extern std::string WALLPAPER; extern std::string THEME; @@ -443,9 +486,16 @@ namespace ult { extern std::string ULTRAHAND_HAS_STARTED; extern std::string NEW_UPDATE_IS_AVAILABLE; - extern std::string REBOOT_IS_REQUIRED; - extern std::string HOLD_A_TO_DELETE; + //extern std::string REBOOT_IS_REQUIRED; + //extern std::string HOLD_A_TO_DELETE; + + extern std::string DELETE_PACKAGE; + extern std::string DELETE_OVERLAY; extern std::string SELECTION_IS_EMPTY; + extern std::string FORCED_SUPPORT_WARNING; + + extern std::string TASK_IS_COMPLETE; + extern std::string TASK_HAS_FAILED; //extern std::string PACKAGE_VERSIONS; //extern std::string PROGRESS_ANIMATION; @@ -456,6 +506,8 @@ namespace ult { extern std::string BOOT_ENTRY; #endif + extern std::string INCOMPATIBLE_WARNING; + extern std::string SYSTEM_RAM; extern std::string FREE; extern std::string DEFAULT_CHAR_WIDTH; @@ -567,7 +619,7 @@ namespace ult { - float calculateAmplitude(float x, float peakDurationFactor = 0.25f); + //float calculateAmplitude(float x, float peakDurationFactor = 0.25f); extern std::atomic refreshWallpaperNow; @@ -685,9 +737,44 @@ namespace ult { extern bool cleanVersionLabels, hideOverlayVersions, hidePackageVersions, useLibultrahandTitles, useLibultrahandVersions, usePackageTitles, usePackageVersions; + + + // nx-ovlloader settings + enum class OverlayHeapSize : u64 { + Size_4MB = 0x400000, + Size_6MB = 0x600000, + Size_8MB = 0x800000 + }; + + // Static cache + static struct { + bool initialized = false; + OverlayHeapSize cachedSize = OverlayHeapSize::Size_6MB; + u64 customSizeMB = 0; // NEW: store custom size in MB + } heapSizeCache; + + + // Helper function to convert MB to bytes + extern u64 mbToBytes(u32 mb); + + // Helper function to convert bytes to MB + extern u32 bytesToMB(u64 bytes); + + // Implementation + OverlayHeapSize getCurrentHeapSize(); + + extern OverlayHeapSize currentHeapSize; + + bool setOverlayHeapSize(OverlayHeapSize heapSize); + + // Implementation + bool requestOverlayExit(); + extern const std::string loaderInfo; - extern const std::string loaderTitle; - extern const bool expandedMemory; + extern std::string loaderTitle; + extern bool expandedMemory; + extern bool furtherExpandedMemory; + extern bool limitedMemory; extern std::string versionLabel; diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ultra.hpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ultra.hpp index c0d1f1f8..c761c589 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ultra.hpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/include/ultra.hpp @@ -19,7 +19,7 @@ * altered or removed. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2024-2025 ppkantorski ********************************************************************************/ #pragma once @@ -43,7 +43,7 @@ #include "download_funcs.hpp" #include "mod_funcs.hpp" #include "tsl_utils.hpp" -#include "audio_player.hpp" +#include "audio.hpp" #include "haptics.hpp" #endif // ULTRA_HPP \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio_player.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio.cpp similarity index 87% rename from Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio_player.cpp rename to Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio.cpp index b9246519..aaf30159 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio_player.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/audio.cpp @@ -1,5 +1,5 @@ /******************************************************************************** - * File: audio_player.cpp + * File: audio.cpp * Author: ppkantorski * Description: * Memory-optimized version with reduced allocation overhead and chunked I/O. @@ -19,17 +19,17 @@ * Copyright (c) 2025 ppkantorski ********************************************************************************/ -#include "audio_player.hpp" +#include "audio.hpp" namespace ult { - bool AudioPlayer::m_initialized = false; - std::atomic AudioPlayer::m_enabled{true}; - float AudioPlayer::m_masterVolume = 0.6f; - bool AudioPlayer::m_lastDockedState = false; - std::vector AudioPlayer::m_cachedSounds; - std::mutex AudioPlayer::m_audioMutex; + bool Audio::m_initialized = false; + std::atomic Audio::m_enabled{true}; + float Audio::m_masterVolume = 0.6f; + bool Audio::m_lastDockedState = false; + std::vector Audio::m_cachedSounds; + std::mutex Audio::m_audioMutex; - bool AudioPlayer::initialize() { + bool Audio::initialize() { std::lock_guard lock(m_audioMutex); if (m_initialized) return true; @@ -41,13 +41,13 @@ namespace ult { m_initialized = true; m_cachedSounds.resize(static_cast(SoundType::Count)); - m_lastDockedState = isDocked(); + m_lastDockedState = ult::consoleIsDocked(); reloadAllSounds(); return true; } - void AudioPlayer::exit() { + void Audio::exit() { std::lock_guard lock(m_audioMutex); // Free all cached sound buffers @@ -67,24 +67,24 @@ namespace ult { } } - void AudioPlayer::reloadAllSounds() { + void Audio::reloadAllSounds() { for (uint32_t i = 0; i < static_cast(SoundType::Count); ++i) { loadSoundFromWav(static_cast(i), m_soundPaths[i]); } } - - void AudioPlayer::unloadAllSounds(const std::initializer_list& excludeSounds) { + + void Audio::unloadAllSounds(const std::initializer_list& excludeSounds) { std::lock_guard lock(m_audioMutex); if (!m_initialized) return; - + for (uint32_t i = 0; i < m_cachedSounds.size(); ++i) { SoundType current = static_cast(i); - + // Skip if this sound is in the exclude list if (std::find(excludeSounds.begin(), excludeSounds.end(), current) != excludeSounds.end()) { continue; } - + auto& cached = m_cachedSounds[i]; if (cached.buffer) { free(cached.buffer); @@ -95,10 +95,10 @@ namespace ult { } } - bool AudioPlayer::reloadIfDockedChanged() { + bool Audio::reloadIfDockedChanged() { if (!m_initialized) return false; - const bool currentDocked = isDocked(); + const bool currentDocked = ult::consoleIsDocked(); if (currentDocked == m_lastDockedState) return false; std::lock_guard lock(m_audioMutex); @@ -108,28 +108,28 @@ namespace ult { return true; } - bool AudioPlayer::loadSoundFromWav(SoundType type, const char* path) { + bool Audio::loadSoundFromWav(SoundType type, const char* path) { const uint32_t idx = static_cast(type); if (!m_initialized || idx >= static_cast(SoundType::Count)) return false; - + // Free existing buffer free(m_cachedSounds[idx].buffer); m_cachedSounds[idx] = { nullptr, 0, 0 }; - + FILE* f = fopen(path, "rb"); if (!f) return false; - + // Parse WAV header char hdr[12]; if (fread(hdr, 1, 12, f) != 12 || memcmp(hdr, "RIFF", 4) || memcmp(hdr + 8, "WAVE", 4)) { fclose(f); return false; } - + u16 fmt = 0, ch = 0, bits = 0; u32 rate = 0, dSize = 0; long dPos = 0; - + // Find fmt and data chunks while (fread(hdr, 1, 8, f) == 8) { const u32 sz = *(u32*)(hdr + 4); @@ -148,13 +148,13 @@ namespace ult { fseek(f, sz, SEEK_CUR); } } - + // Validate format if (!dSize || fmt != 1 || ch == 0 || ch > 2 || (bits != 8 && bits != 16)) { fclose(f); return false; } - + // Calculate buffer sizes // Note: audout REQUIRES stereo (2 channels), so we must duplicate mono const bool mono = (ch == 1); @@ -165,14 +165,14 @@ namespace ult { // Use smaller alignment to reduce waste (256 bytes instead of 4KB) const uint32_t align = 0x100; const uint32_t bufSize = (outSize + align - 1) & ~(align - 1); - + // Allocate output buffer void* buf = aligned_alloc(align, bufSize); if (!buf) { fclose(f); return false; } - + fseek(f, dPos, SEEK_SET); s16* out = (s16*)buf; @@ -182,7 +182,7 @@ namespace ult { effectiveVolume *= 0.5f; } const float scale = std::clamp(effectiveVolume, 0.0f, 1.0f); - + // Process audio in chunks to minimize memory usage // This eliminates the need for temporary vectors constexpr uint32_t CHUNK_SIZE = 512; @@ -241,25 +241,25 @@ namespace ult { remaining -= toRead; } } - + fclose(f); - + // Zero-fill any padding if (outSize < bufSize) { memset((u8*)buf + outSize, 0, bufSize - outSize); } - + m_cachedSounds[idx] = { buf, bufSize, outSize }; return true; } - void AudioPlayer::playSound(SoundType type) { + void Audio::playSound(SoundType type) { // Lock-free check - SAFE with atomic if (!m_enabled.load(std::memory_order_relaxed)) return; - + const uint32_t idx = static_cast(type); if (idx >= static_cast(SoundType::Count)) return; - + std::lock_guard lock(m_audioMutex); // Check again under lock @@ -267,12 +267,12 @@ namespace ult { auto& cached = m_cachedSounds[idx]; if (!cached.buffer) return; - + // Release any finished buffers AudioOutBuffer* releasedBuffers = nullptr; u32 releasedCount = 0; audoutGetReleasedAudioOutBuffer(&releasedBuffers, &releasedCount); - + // Static buffer is safe with mutex protection static AudioOutBuffer audioBuffer = {}; audioBuffer = {}; @@ -281,32 +281,32 @@ namespace ult { audioBuffer.data_size = cached.dataSize; audioBuffer.data_offset = 0; audioBuffer.next = nullptr; - + AudioOutBuffer* rel = nullptr; audoutPlayBuffer(&audioBuffer, &rel); } - void AudioPlayer::setMasterVolume(float v) { + void Audio::setMasterVolume(float v) { std::lock_guard lock(m_audioMutex); m_masterVolume = std::clamp(v, 0.0f, 1.0f); } - void AudioPlayer::setEnabled(bool e) { + void Audio::setEnabled(bool e) { m_enabled.store(e, std::memory_order_relaxed); } - bool AudioPlayer::isEnabled() { + bool Audio::isEnabled() { return m_enabled.load(std::memory_order_relaxed); } - bool AudioPlayer::isDocked() { - Result rc = apmInitialize(); - if (R_FAILED(rc)) return false; - - ApmPerformanceMode perfMode = ApmPerformanceMode_Invalid; - rc = apmGetPerformanceMode(&perfMode); - apmExit(); - - return R_SUCCEEDED(rc) && (perfMode == ApmPerformanceMode_Boost); - } + //bool Audio::isDocked() { + // Result rc = apmInitialize(); + // if (R_FAILED(rc)) return false; + // + // ApmPerformanceMode perfMode = ApmPerformanceMode_Invalid; + // rc = apmGetPerformanceMode(&perfMode); + // apmExit(); + // + // return R_SUCCEEDED(rc) && (perfMode == ApmPerformanceMode_Boost); + //} } \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/debug_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/debug_funcs.cpp index 0ec0fbd2..2599fe97 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/debug_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/debug_funcs.cpp @@ -4,6 +4,15 @@ * Description: * This source file contains the implementation of debugging functions for the * Ultrahand Overlay project. + * + * For the latest updates and contributions, visit the project's GitHub repository. + * (GitHub Repository: https://github.com/ppkantorski/Ultrahand-Overlay) + * + * Note: Please be aware that this notice cannot be altered or removed. It is a part + * of the project's documentation and must remain intact. + * + * Licensed under both GPLv2 and CC-BY-4.0 + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "debug_funcs.hpp" diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/download_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/download_funcs.cpp index 3ff0216e..6d3c6da6 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/download_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/download_funcs.cpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "download_funcs.hpp" @@ -23,8 +23,8 @@ namespace ult { // Base loader definitions -size_t DOWNLOAD_READ_BUFFER = 8*1024;//64 * 1024;//4096*10; -size_t DOWNLOAD_WRITE_BUFFER = 8*1024;//64 * 1024; +size_t DOWNLOAD_READ_BUFFER = 32*1024;//64 * 1024;//4096*10; +size_t DOWNLOAD_WRITE_BUFFER = 16*1024;//64 * 1024; size_t UNZIP_READ_BUFFER = 32*1024;//131072*2;//4096*4; size_t UNZIP_WRITE_BUFFER = 16*1024;//131072*2;//4096*4; @@ -131,7 +131,7 @@ int progressCallback(void *ptr, curl_off_t totalToDownload, curl_off_t nowDownlo // } //} -std::unique_ptr globalWriteBuffer; +//std::unique_ptr writeBuffer; /** * @brief Downloads a file from a URL to a specified destination. @@ -192,12 +192,12 @@ bool downloadFile(const std::string& url, const std::string& toDestination, bool } // ADD THIS: Set up write buffer for better performance - //std::unique_ptr globalWriteBuffer; + std::unique_ptr writeBuffer; if (DOWNLOAD_WRITE_BUFFER > 0) { - //if (!globalWriteBuffer) - globalWriteBuffer = std::make_unique(DOWNLOAD_WRITE_BUFFER); + //if (!writeBuffer) + writeBuffer = std::make_unique(DOWNLOAD_WRITE_BUFFER); // _IOFBF = full buffering, _IOLBF = line buffering, _IONBF = no buffering - setvbuf(file.get(), globalWriteBuffer.get(), _IOFBF, DOWNLOAD_WRITE_BUFFER); + setvbuf(file.get(), writeBuffer.get(), _IOFBF, DOWNLOAD_WRITE_BUFFER); } //setvbuf(file.get(), NULL, _IOFBF, DOWNLOAD_WRITE_BUFFER); @@ -224,7 +224,7 @@ bool downloadFile(const std::string& url, const std::string& toDestination, bool file.close(); #else file.reset(); - globalWriteBuffer.reset(); + writeBuffer.reset(); #endif return false; } @@ -277,12 +277,15 @@ bool downloadFile(const std::string& url, const std::string& toDestination, bool //const bool wasAborted = (result == CURLE_ABORTED_BY_CALLBACK || // abortDownload.load(std::memory_order_acquire)); + // Check HTTP response code BEFORE closing file/curl + long http_code = 0; + curl_easy_getinfo(curl.get(), CURLINFO_RESPONSE_CODE, &http_code); #if USING_FSTREAM_DIRECTIVE file.close(); #else file.reset(); - globalWriteBuffer.reset(); + writeBuffer.reset(); #endif curl.reset(); @@ -309,6 +312,20 @@ bool downloadFile(const std::string& url, const std::string& toDestination, bool //cleanupCurl(); //socketExit(); + + // Check for HTTP errors (404, 500, etc.) + if (result == CURLE_OK && (http_code < 200 || http_code >= 300)) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("HTTP error " + std::to_string(http_code) + " downloading: " + url); + #endif + deleteFileOrDirectory(tempFilePath); + if (!noPercentagePolling) { + downloadPercentage.store(-1, std::memory_order_release); + } + return false; + } + if (result != CURLE_OK) { #if USING_LOGGING_DIRECTIVE @@ -382,6 +399,7 @@ bool downloadFile(const std::string& url, const std::string& toDestination, bool } moveFile(tempFilePath, destination); + return true; } @@ -622,7 +640,7 @@ bool unzipFile(const std::string& zipFilePath, const std::string& toDestination) const size_t bufferSize = UNZIP_WRITE_BUFFER; //std::unique_ptr buffer = std::make_unique(bufferSize); - globalWriteBuffer = std::make_unique(bufferSize); + std::unique_ptr writeBuffer = std::make_unique(bufferSize); char filenameBuffer[512]; // Stack allocated for filename reading @@ -758,14 +776,14 @@ bool unzipFile(const std::string& zipFilePath, const std::string& toDestination) fileBytesProcessed = 0; - while ((bytesRead = unzReadCurrentFile(zipFile, globalWriteBuffer.get(), bufferSize)) > 0) { + while ((bytesRead = unzReadCurrentFile(zipFile, writeBuffer.get(), bufferSize)) > 0) { if (abortUnzip.load(std::memory_order_relaxed)) { extractSuccess = false; break; // RAII will handle cleanup } // Write data to file - if (outputFile.write(globalWriteBuffer.get(), bytesRead) != static_cast(bytesRead)) { + if (outputFile.write(writeBuffer.get(), bytesRead) != static_cast(bytesRead)) { extractSuccess = false; break; } @@ -845,7 +863,7 @@ bool unzipFile(const std::string& zipFilePath, const std::string& toDestination) result = unzGoToNextFile(zipFile); } - globalWriteBuffer.reset(); + writeBuffer.reset(); // Check final abort state if (abortUnzip.load(std::memory_order_relaxed)) { diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/get_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/get_funcs.cpp index 84f117e3..2ff8159d 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/get_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/get_funcs.cpp @@ -15,7 +15,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "get_funcs.hpp" diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/global_vars.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/global_vars.cpp index 777b89fd..a4241624 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/global_vars.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/global_vars.cpp @@ -13,7 +13,7 @@ * altered or removed. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "global_vars.hpp" @@ -26,6 +26,10 @@ namespace ult { const std::string TESLA_CONFIG_PATH = ROOT_PATH + "config/tesla/"; const std::string SWITCH_PATH = ROOT_PATH + "switch/"; + const std::string NX_OVLLOADER_PATH = ROOT_PATH + "config/nx-ovlloader/"; + const std::string OVL_HEAP_CONFIG_PATH = NX_OVLLOADER_PATH + "heap_size.bin"; + const std::string OVL_EXIT_FLAG_PATH = NX_OVLLOADER_PATH + "exit_flag.bin"; + // Filenames CONSTEXPR_STRING std::string CONFIG_FILENAME = "config.ini"; const std::string BOOT_PACKAGE_FILENAME = "boot_package.ini"; @@ -59,7 +63,8 @@ namespace ult { std::string THEME_CONFIG_INI_PATH = BASE_CONFIG_PATH + THEME_FILENAME; std::string WALLPAPER_PATH = BASE_CONFIG_PATH + WALLPAPER_FILENAME; const std::string DOWNLOADS_PATH = BASE_CONFIG_PATH + "downloads/"; - const std::string EXPANSION_PATH = BASE_CONFIG_PATH + "expansion/"; + + //const std::string EXPANSION_PATH = BASE_CONFIG_PATH + "expansion/"; const std::string FUSE_DATA_INI_PATH = BASE_CONFIG_PATH + FUSE_FILENAME; const std::string PACKAGE_PATH = SWITCH_PATH + ".packages/"; const std::string OVERLAY_PATH = SWITCH_PATH + ".overlays/"; @@ -79,12 +84,13 @@ namespace ult { const std::string ULTRAHAND_REPO_URL = GITHUB_BASE_URL + "Ultrahand-Overlay/"; const std::string INCLUDED_THEME_FOLDER_URL = GITHUB_RAW_BASE_URL + "Ultrahand-Overlay/main/themes/"; const std::string LATEST_RELEASE_INFO_URL = GITHUB_RAW_BASE_URL + "Ultrahand-Overlay/main/RELEASE.ini"; - const std::string NX_OVLLOADER_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/latest/download/nx-ovlloader.zip"; - const std::string NX_OVLLOADER_PLUS_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/latest/download/nx-ovlloader+.zip"; + const std::string LATEST_UPDATER_INI_URL = ULTRAHAND_REPO_URL + "releases/latest/download/update.ini"; + //const std::string NX_OVLLOADER_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/latest/download/nx-ovlloader.zip"; + //const std::string NX_OVLLOADER_PLUS_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/latest/download/nx-ovlloader+.zip"; const std::string OLD_NX_OVLLOADER_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/download/v1.0.8/nx-ovlloader.zip"; - const std::string OLD_NX_OVLLOADER_PLUS_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/download/v1.0.8/nx-ovlloader+.zip"; + //const std::string OLD_NX_OVLLOADER_PLUS_ZIP_URL = GITHUB_BASE_URL + "nx-ovlloader/releases/download/v1.0.8/nx-ovlloader+.zip"; const std::string UPDATER_PAYLOAD_URL = GITHUB_RAW_BASE_URL + "Ultrahand-Overlay/main/payloads/ultrahand_updater.bin"; - const std::string SOUND_EFFECTS_URL = GITHUB_RAW_BASE_URL + "Ultrahand-Overlay/main/sounds/sounds.zip"; + //const std::string SOUND_EFFECTS_URL = GITHUB_RAW_BASE_URL + "Ultrahand-Overlay/main/sounds/sounds.zip"; // Launch options const std::string LAUNCH_ARGS_STR = "launch_args"; @@ -140,6 +146,7 @@ namespace ult { CONSTEXPR_STRING std::string FALSE_STR = "false"; CONSTEXPR_STRING std::string GLOBAL_STR = "global"; CONSTEXPR_STRING std::string DEFAULT_STR = "default"; + CONSTEXPR_STRING std::string HOLD_STR = "hold"; CONSTEXPR_STRING std::string SLOT_STR = "slot"; CONSTEXPR_STRING std::string OPTION_STR = "option"; CONSTEXPR_STRING std::string FORWARDER_STR = "forwarder"; @@ -164,6 +171,7 @@ namespace ult { CONSTEXPR_STRING std::string INPROGRESS_SYMBOL = "\u25CF"; CONSTEXPR_STRING std::string STAR_SYMBOL = "\u2605"; CONSTEXPR_STRING std::string DIVIDER_SYMBOL = ""; + CONSTEXPR_STRING std::string NOTIFY_HEADER = " "; const std::vector THROBBER_SYMBOLS = {"", "", "", "", "", "", "", ""}; diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/haptics.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/haptics.cpp index 59a4b5cd..be00b524 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/haptics.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/haptics.cpp @@ -30,10 +30,13 @@ namespace ult { static HidVibrationDeviceHandle vibPlayer1Right; static u64 rumbleStartTick = 0; static u64 doubleClickTick = 0; - static u8 doubleClickPulse = 0; + static u8 doubleClickPulse = 0; + + static u32 cachedHandheldStyle = 0; + static u32 cachedPlayer1Style = 0; // ===== Shared flags (accessible globally) ===== - std::atomic rumbleActive{false}; + std::atomic clickActive{false}; std::atomic doubleClickActive{false}; // ===== Constants ===== @@ -41,144 +44,182 @@ namespace ult { static constexpr u64 DOUBLE_CLICK_PULSE_DURATION_NS = 30'000'000ULL; static constexpr u64 DOUBLE_CLICK_GAP_NS = 100'000'000ULL; - static constexpr HidVibrationValue clickDocked = { + //static constexpr HidVibrationValue clickDocked = { + // .amp_low = 0.20f, + // .freq_low = 100.0f, + // .amp_high = 0.80f, + // .freq_high = 300.0f + //}; + // + //static constexpr HidVibrationValue clickHandheld = { + // .amp_low = 0.20f, + // .freq_low = 100.0f, + // .amp_high = 0.80f, + // .freq_high = 300.0f + //}; + + static constexpr HidVibrationValue hapticsPreset = { .amp_low = 0.20f, .freq_low = 100.0f, .amp_high = 0.80f, .freq_high = 300.0f }; - - static constexpr HidVibrationValue clickHandheld = { - .amp_low = 0.25f, - .freq_low = 100.0f, - .amp_high = 1.0f, - .freq_high = 300.0f - }; - + static constexpr HidVibrationValue vibrationStop{0}; // ===== Internal helpers ===== - static void initController(HidNpadIdType npad, HidVibrationDeviceHandle* handles, int count) { - const u32 styleMask = hidGetNpadStyleSet(npad); - if (styleMask) - hidInitializeVibrationDevices(handles, count, npad, static_cast(styleMask)); - } - - static void sendVibration(const HidVibrationValue* value) { - if (hidGetNpadStyleSet(HidNpadIdType_Handheld)) + static inline void sendVibration(const HidVibrationValue* value) { + if (cachedHandheldStyle) hidSendVibrationValue(vibHandheld, value); - - if (hidGetNpadStyleSet(HidNpadIdType_No1)) { + + if (cachedPlayer1Style) { hidSendVibrationValue(vibPlayer1Left, value); hidSendVibrationValue(vibPlayer1Right, value); } } - - // ===== Public API ===== - void initRumble() { - //if (rumbleInitialized) return; - - // Try to initialize whatever is available - // Don't check if controllers exist - let initController handle it - initController(HidNpadIdType_Handheld, &vibHandheld, 1); - - HidVibrationDeviceHandle handles[2]; - initController(HidNpadIdType_No1, handles, 2); - vibPlayer1Left = handles[0]; - vibPlayer1Right = handles[1]; - - // Only mark as initialized if at least one controller was found - hidGetNpadStyleSet(HidNpadIdType_Handheld); - hidGetNpadStyleSet(HidNpadIdType_No1); - - //rumbleInitialized = (handheldStyle || player1Style); - - // If neither exist, stay uninitialized so we retry later + + static inline void sendVibration2x(const HidVibrationValue* value) { + sendVibration(value); + sendVibration(value); } - //void deinitRumble() { + // ===== Public API ===== + void initHaptics() { + const u32 handheldStyle = hidGetNpadStyleSet(HidNpadIdType_Handheld); + const u32 player1Style = hidGetNpadStyleSet(HidNpadIdType_No1); + + // Clear previous handles to avoid using stale handles if controllers were removed + vibHandheld = (HidVibrationDeviceHandle)0; + vibPlayer1Left = (HidVibrationDeviceHandle)0; + vibPlayer1Right = (HidVibrationDeviceHandle)0; + + // Handheld + if (handheldStyle) { + hidInitializeVibrationDevices(&vibHandheld, 1, + HidNpadIdType_Handheld, + (HidNpadStyleTag)handheldStyle); + } + + // Player 1 (left + right Joy-Con or Pro Controller) + if (player1Style) { + HidVibrationDeviceHandle tmp[2] = { (HidVibrationDeviceHandle)0, (HidVibrationDeviceHandle)0 }; + hidInitializeVibrationDevices(tmp, 2, + HidNpadIdType_No1, + (HidNpadStyleTag)player1Style); + + vibPlayer1Left = tmp[0]; + vibPlayer1Right = tmp[1]; + } + + // Ensure cache is valid immediately after initHaptics() + cachedHandheldStyle = handheldStyle; + cachedPlayer1Style = player1Style; + } + + //void deinitHaptics() { // rumbleInitialized = false; //} - void checkAndReinitRumble() { + void checkAndReinitHaptics() { static u32 lastHandheldStyle = 0; - static u32 lastPlayer1Style = 0; + static u32 lastPlayer1Style = 0; const u32 currentHandheldStyle = hidGetNpadStyleSet(HidNpadIdType_Handheld); - const u32 currentPlayer1Style = hidGetNpadStyleSet(HidNpadIdType_No1); + const u32 currentPlayer1Style = hidGetNpadStyleSet(HidNpadIdType_No1); - // If not initialized but controllers exist, try to init - // This handles the boot race condition where HID reports controllers - // but vibration subsystem isn't ready yet - //if (!rumbleInitialized && (currentHandheldStyle || currentPlayer1Style)) { - // initRumble(); - //} + // Reinitialize only if something changed (appearance/disappearance or style change) + //const bool changed = + // (currentHandheldStyle != lastHandheldStyle) || (currentPlayer1Style != lastPlayer1Style); - // Reinit if controller configuration changed - if (currentHandheldStyle != lastHandheldStyle || currentPlayer1Style != lastPlayer1Style) { - //rumbleInitialized = false; - initRumble(); + if ((currentHandheldStyle != lastHandheldStyle) || (currentPlayer1Style != lastPlayer1Style)) { + initHaptics(); } - // Update last style tracking regardless + + // Update last-known styles for change detection lastHandheldStyle = currentHandheldStyle; - lastPlayer1Style = currentPlayer1Style; + lastPlayer1Style = currentPlayer1Style; + + // Update cached styles used by sendVibration()/rumble paths + cachedHandheldStyle = currentHandheldStyle; + cachedPlayer1Style = currentPlayer1Style; } + void rumbleClick() { - //if (!rumbleInitialized) { - // initRumble(); - // if (!rumbleInitialized) return; + // Use cached style bit instead of querying hid each call + //const HidVibrationValue* pattern = cachedHandheldStyle ? &clickHandheld : &clickDocked; + sendVibration(&vibrationStop); + //if (cachedHandheldStyle) { + // sendVibration(&clickHandheld); + // sendVibration(&clickHandheld); + //} else { + // sendVibration(&clickDocked); + // sendVibration(&clickDocked); //} - - sendVibration(hidGetNpadStyleSet(HidNpadIdType_Handheld) ? &clickHandheld : &clickDocked); - rumbleActive.store(true, std::memory_order_release); + sendVibration2x(&hapticsPreset); + clickActive.store(true, std::memory_order_release); rumbleStartTick = armGetSystemTick(); + } void rumbleDoubleClick() { - //if (!rumbleInitialized) { - // initRumble(); - // if (!rumbleInitialized) return; + //onst HidVibrationValue* pattern = cachedHandheldStyle ? &clickHandheld : &clickDocked; + sendVibration(&vibrationStop); + //if (cachedHandheldStyle) { + // sendVibration(&clickHandheld); + // sendVibration(&clickHandheld); + //} else { + // sendVibration(&clickDocked); + // sendVibration(&clickDocked); //} - - sendVibration(hidGetNpadStyleSet(HidNpadIdType_Handheld) ? &clickHandheld : &clickDocked); + sendVibration2x(&hapticsPreset); doubleClickActive.store(true, std::memory_order_release); doubleClickPulse = 1; - doubleClickTick = armGetSystemTick(); + doubleClickTick = armGetSystemTick(); // Set ONCE } + void processRumbleStop(u64 nowNs) { - if (rumbleActive.load(std::memory_order_acquire) && + if (clickActive.load(std::memory_order_acquire) && nowNs - armTicksToNs(rumbleStartTick) >= RUMBLE_DURATION_NS) { sendVibration(&vibrationStop); - rumbleActive.store(false, std::memory_order_release); + clickActive.store(false, std::memory_order_release); } } + void processRumbleDoubleClick(u64 nowNs) { if (!doubleClickActive.load(std::memory_order_acquire)) return; - const u64 elapsed = nowNs - armTicksToNs(doubleClickTick); + const u64 elapsed = nowNs - armTicksToNs(doubleClickTick); // Always from original start switch (doubleClickPulse) { case 1: if (elapsed >= DOUBLE_CLICK_PULSE_DURATION_NS) { sendVibration(&vibrationStop); doubleClickPulse = 2; - doubleClickTick = armGetSystemTick(); + // Don't reset tick! } break; case 2: - if (elapsed >= DOUBLE_CLICK_GAP_NS) { - sendVibration(hidGetNpadStyleSet(HidNpadIdType_Handheld) ? &clickHandheld : &clickDocked); + if (elapsed >= DOUBLE_CLICK_PULSE_DURATION_NS + DOUBLE_CLICK_GAP_NS) { + // Use cached style here too + //if (cachedHandheldStyle) { + // sendVibration(&clickHandheld); + // sendVibration(&clickHandheld); + //} else { + // sendVibration(&clickDocked); + // sendVibration(&clickDocked); + //} + sendVibration2x(&hapticsPreset); doubleClickPulse = 3; - doubleClickTick = armGetSystemTick(); + // Don't reset tick! } break; case 3: - if (elapsed >= DOUBLE_CLICK_PULSE_DURATION_NS) { + if (elapsed >= (DOUBLE_CLICK_PULSE_DURATION_NS * 2) + DOUBLE_CLICK_GAP_NS) { sendVibration(&vibrationStop); doubleClickActive.store(false, std::memory_order_release); doubleClickPulse = 0; @@ -187,16 +228,34 @@ namespace ult { } } + void rumbleDoubleClickStandalone() { - sendVibration(hidGetNpadStyleSet(HidNpadIdType_Handheld) ? &clickHandheld : &clickDocked); + // Standalone uses sleeps, but still use cached style for decision + //const HidVibrationValue* pattern = cachedHandheldStyle ? &clickHandheld : &clickDocked; + sendVibration(&vibrationStop); + //if (cachedHandheldStyle) { + // sendVibration(&clickHandheld); + // sendVibration(&clickHandheld); + //} else { + // sendVibration(&clickDocked); + // sendVibration(&clickDocked); + //} + sendVibration2x(&hapticsPreset); svcSleepThread(DOUBLE_CLICK_PULSE_DURATION_NS); - + sendVibration(&vibrationStop); svcSleepThread(DOUBLE_CLICK_GAP_NS); - - sendVibration(hidGetNpadStyleSet(HidNpadIdType_Handheld) ? &clickHandheld : &clickDocked); + + //if (cachedHandheldStyle) { + // sendVibration(&clickHandheld); + // sendVibration(&clickHandheld); + //} else { + // sendVibration(&clickDocked); + // sendVibration(&clickDocked); + //} + sendVibration2x(&hapticsPreset); svcSleepThread(DOUBLE_CLICK_PULSE_DURATION_NS); - + sendVibration(&vibrationStop); } } \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/hex_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/hex_funcs.cpp index c795f23c..d5a1874e 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/hex_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/hex_funcs.cpp @@ -15,7 +15,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "hex_funcs.hpp" @@ -229,15 +229,16 @@ namespace ult { const size_t fileSize = ftell(file); fseek(file, 0, SEEK_SET); - std::vector binaryData; if (hexData.length() % 2 != 0) { fclose(file); return offsets; } - const size_t hexLen = hexData.length(); - binaryData.resize(hexLen / 2); + const size_t patternLen = hexLen / 2; + + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr binaryData(new unsigned char[patternLen]); const unsigned char* hexPtr = reinterpret_cast(hexData.c_str()); // Unrolled hex conversion loop @@ -252,17 +253,17 @@ namespace ult { } // Optimized search variables - const unsigned char* patternPtr = binaryData.data(); - const size_t patternLen = binaryData.size(); + const unsigned char* patternPtr = binaryData.get(); const unsigned char firstByte = patternPtr[0]; - std::vector buffer(HEX_BUFFER_SIZE); + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr buffer(new unsigned char[HEX_BUFFER_SIZE]); size_t bytesRead = 0; size_t offset = 0; - while ((bytesRead = fread(buffer.data(), 1, HEX_BUFFER_SIZE, file)) > 0) { - const unsigned char* bufPtr = buffer.data(); + while ((bytesRead = fread(buffer.get(), 1, HEX_BUFFER_SIZE, file)) > 0) { + const unsigned char* bufPtr = buffer.get(); // Optimized search with first-byte filtering and loop unrolling i = 0; @@ -322,15 +323,16 @@ namespace ult { const size_t fileSize = file.tellg(); file.seekg(0, std::ios::beg); - std::vector binaryData; if (hexData.length() % 2 != 0) { file.close(); return offsets; } - const size_t hexLen = hexData.length(); - binaryData.resize(hexLen / 2); + const size_t patternLen = hexLen / 2; + + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr binaryData(new unsigned char[patternLen]); const unsigned char* hexPtr = reinterpret_cast(hexData.c_str()); size_t i = 0; @@ -342,17 +344,17 @@ namespace ult { binaryData[i/2] = (hexTable[hexPtr[i]] << 4) | hexTable[hexPtr[i + 1]]; } - const unsigned char* patternPtr = binaryData.data(); - const size_t patternLen = binaryData.size(); + const unsigned char* patternPtr = binaryData.get(); const unsigned char firstByte = patternPtr[0]; - std::vector buffer(HEX_BUFFER_SIZE); + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr buffer(new unsigned char[HEX_BUFFER_SIZE]); size_t bytesRead = 0; size_t offset = 0; - while (file.read(reinterpret_cast(buffer.data()), HEX_BUFFER_SIZE) || file.gcount() > 0) { + while (file.read(reinterpret_cast(buffer.get()), HEX_BUFFER_SIZE) || file.gcount() > 0) { bytesRead = file.gcount(); - const unsigned char* bufPtr = buffer.data(); + const unsigned char* bufPtr = buffer.get(); // Same optimized search as FILE* version i = 0; @@ -418,7 +420,6 @@ namespace ult { void hexEditByOffset(const std::string& filePath, const std::string& offsetStr, const std::string& hexData) { // Lock file writes to prevent concurrent modifications to the same file std::lock_guard fileWriteLock(fileWriteMutex); - const std::streampos offset = std::stoll(offsetStr); #if !USING_FSTREAM_DIRECTIVE @@ -435,7 +436,6 @@ namespace ult { // Retrieve the file size fseek(file, 0, SEEK_END); const std::streampos fileSize = ftell(file); - fseek(file, 0, SEEK_SET); if (offset >= fileSize) { #if USING_LOGGING_DIRECTIVE @@ -446,18 +446,37 @@ namespace ult { return; } - // Convert the hex string to binary data - std::vector binaryData(hexData.length() / 2); - std::string byteString; - for (size_t i = 0, j = 0; i < hexData.length(); i += 2, ++j) { - byteString = hexData.substr(i, 2); - binaryData[j] = static_cast(ult::stoi(byteString, nullptr, 16)); + // Validate hex data length + const size_t hexLen = hexData.length(); + if (hexLen % 2 != 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Invalid hex data length."); + #endif + fclose(file); + return; + } + + // Convert the hex string to binary data using optimized lookup table + const size_t dataLen = hexLen / 2; + std::unique_ptr binaryData(new unsigned char[dataLen]); + const unsigned char* hexPtr = reinterpret_cast(hexData.c_str()); + + // Unrolled hex conversion loop (same as findHexDataOffsets) + size_t i = 0; + for (; i + 4 <= hexLen; i += 4) { + binaryData[i/2] = (hexTable[hexPtr[i]] << 4) | hexTable[hexPtr[i + 1]]; + binaryData[i/2 + 1] = (hexTable[hexPtr[i + 2]] << 4) | hexTable[hexPtr[i + 3]]; + } + // Handle remaining bytes + for (; i < hexLen; i += 2) { + binaryData[i/2] = (hexTable[hexPtr[i]] << 4) | hexTable[hexPtr[i + 1]]; } // Move to the specified offset and write the binary data directly to the file fseek(file, offset, SEEK_SET); - const size_t bytesWritten = fwrite(binaryData.data(), sizeof(unsigned char), binaryData.size(), file); - if (bytesWritten != binaryData.size()) { + const size_t bytesWritten = fwrite(binaryData.get(), sizeof(unsigned char), dataLen, file); + if (bytesWritten != dataLen) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) logMessage("Failed to write data to the file."); @@ -481,7 +500,6 @@ namespace ult { // Retrieve the file size file.seekg(0, std::ios::end); const std::streampos fileSize = file.tellg(); - file.seekg(0, std::ios::beg); if (offset >= fileSize) { #if USING_LOGGING_DIRECTIVE @@ -491,17 +509,34 @@ namespace ult { return; } - // Convert the hex string to binary data - std::vector binaryData(hexData.length() / 2); - std::string byteString; - for (size_t i = 0, j = 0; i < hexData.length(); i += 2, ++j) { - byteString = hexData.substr(i, 2); - binaryData[j] = static_cast(ult::stoi(byteString, nullptr, 16)); + // Validate hex data length + const size_t hexLen = hexData.length(); + if (hexLen % 2 != 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Invalid hex data length."); + #endif + return; + } + + // Convert the hex string to binary data using optimized lookup table + const size_t dataLen = hexLen / 2; + std::unique_ptr binaryData(new unsigned char[dataLen]); + const unsigned char* hexPtr = reinterpret_cast(hexData.c_str()); + + // Unrolled hex conversion loop + size_t i = 0; + for (; i + 4 <= hexLen; i += 4) { + binaryData[i/2] = (hexTable[hexPtr[i]] << 4) | hexTable[hexPtr[i + 1]]; + binaryData[i/2 + 1] = (hexTable[hexPtr[i + 2]] << 4) | hexTable[hexPtr[i + 3]]; + } + for (; i < hexLen; i += 2) { + binaryData[i/2] = (hexTable[hexPtr[i]] << 4) | hexTable[hexPtr[i + 1]]; } // Move to the specified offset and write the binary data directly to the file file.seekp(offset); - file.write(reinterpret_cast(binaryData.data()), binaryData.size()); + file.write(reinterpret_cast(binaryData.get()), dataLen); if (!file) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) @@ -676,8 +711,10 @@ namespace ult { } const std::streampos totalOffset = hexSum + std::stoll(offsetStr); - std::vector hexBuffer(length); - std::vector hexStream(length * 2); + + // Pre-allocate final string size to avoid reallocation + std::string result; + result.reserve(length * 2); #if !USING_FSTREAM_DIRECTIVE FILE* file = fopen(filePath.c_str(), "rb"); @@ -698,23 +735,41 @@ namespace ult { return ""; } - const size_t bytesRead = fread(hexBuffer.data(), sizeof(char), length, file); - if (bytesRead == length) { - static constexpr char hexDigits[] = "0123456789ABCDEF"; - for (size_t i = 0; i < length; ++i) { - hexStream[i * 2] = hexDigits[(hexBuffer[i] >> 4) & 0xF]; - hexStream[i * 2 + 1] = hexDigits[hexBuffer[i] & 0xF]; - } - } else { + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr buffer(new unsigned char[length]); + const size_t bytesRead = fread(buffer.get(), 1, length, file); + fclose(file); + + if (bytesRead != length) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) logMessage("Error reading data from file or end of file reached."); #endif - fclose(file); return ""; } - fclose(file); + // Optimized hex conversion - directly build uppercase string + static constexpr char hexDigits[] = "0123456789ABCDEF"; + result.resize(length * 2); + + // Unrolled loop for better performance + size_t i = 0; + for (; i + 4 <= length; i += 4) { + result[i * 2] = hexDigits[(buffer[i] >> 4) & 0xF]; + result[i * 2 + 1] = hexDigits[buffer[i] & 0xF]; + result[i * 2 + 2] = hexDigits[(buffer[i + 1] >> 4) & 0xF]; + result[i * 2 + 3] = hexDigits[buffer[i + 1] & 0xF]; + result[i * 2 + 4] = hexDigits[(buffer[i + 2] >> 4) & 0xF]; + result[i * 2 + 5] = hexDigits[buffer[i + 2] & 0xF]; + result[i * 2 + 6] = hexDigits[(buffer[i + 3] >> 4) & 0xF]; + result[i * 2 + 7] = hexDigits[buffer[i + 3] & 0xF]; + } + // Handle remaining bytes + for (; i < length; ++i) { + result[i * 2] = hexDigits[(buffer[i] >> 4) & 0xF]; + result[i * 2 + 1] = hexDigits[buffer[i] & 0xF]; + } + #else std::ifstream file(filePath, std::ios::binary); if (!file) { @@ -734,14 +789,12 @@ namespace ult { return ""; } - file.read(hexBuffer.data(), length); - if (file.gcount() == static_cast(length)) { - static constexpr char hexDigits[] = "0123456789ABCDEF"; - for (size_t i = 0; i < length; ++i) { - hexStream[i * 2] = hexDigits[(hexBuffer[i] >> 4) & 0xF]; - hexStream[i * 2 + 1] = hexDigits[hexBuffer[i] & 0xF]; - } - } else { + // Use heap allocation for the buffer to avoid stack overflow with large buffer sizes + std::unique_ptr buffer(new unsigned char[length]); + file.read(reinterpret_cast(buffer.get()), length); + file.close(); + + if (file.gcount() != static_cast(length)) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) logMessage("Error reading data from file or end of file reached."); @@ -749,12 +802,29 @@ namespace ult { return ""; } - file.close(); + // Optimized hex conversion - directly build uppercase string + static constexpr char hexDigits[] = "0123456789ABCDEF"; + result.resize(length * 2); + + // Unrolled loop for better performance + size_t i = 0; + for (; i + 4 <= length; i += 4) { + result[i * 2] = hexDigits[(buffer[i] >> 4) & 0xF]; + result[i * 2 + 1] = hexDigits[buffer[i] & 0xF]; + result[i * 2 + 2] = hexDigits[(buffer[i + 1] >> 4) & 0xF]; + result[i * 2 + 3] = hexDigits[buffer[i + 1] & 0xF]; + result[i * 2 + 4] = hexDigits[(buffer[i + 2] >> 4) & 0xF]; + result[i * 2 + 5] = hexDigits[buffer[i + 2] & 0xF]; + result[i * 2 + 6] = hexDigits[(buffer[i + 3] >> 4) & 0xF]; + result[i * 2 + 7] = hexDigits[buffer[i + 3] & 0xF]; + } + // Handle remaining bytes + for (; i < length; ++i) { + result[i * 2] = hexDigits[(buffer[i] >> 4) & 0xF]; + result[i * 2 + 1] = hexDigits[buffer[i] & 0xF]; + } #endif - std::string result(hexStream.begin(), hexStream.end()); - result = stringToUppercase(result); - return result; } @@ -878,4 +948,71 @@ namespace ult { return ""; // Return empty string if no match is found } + + // 1. Table optimization: Mark as constexpr for compile-time evaluation + static constexpr uint8_t b64_table[256] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,62, 0xFF,0xFF,0xFF,63, + 52,53,54,55,56,57,58,59,60,61,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF + }; + + // 2. Optimized decode: Pre-calculate output size, reduce bounds checking + static size_t base64_decode(const char* src, uint8_t* out) { + size_t outLen = 0; + const char* p = src; + + // Process 4 chars at a time (unrolled loop for better instruction pipelining) + while (*p) { + uint8_t a = b64_table[static_cast(*p++)]; + if (a == 0xFF) break; + + uint8_t b = b64_table[static_cast(*p++)]; + if (b == 0xFF) break; + + out[outLen++] = (a << 2) | (b >> 4); + + uint8_t cChar = *p++; + if (cChar == '=' || cChar == '\0') break; + + uint8_t c = b64_table[cChar]; + if (c == 0xFF) break; + + out[outLen++] = (b << 4) | (c >> 2); + + uint8_t dChar = *p++; + if (dChar == '=' || dChar == '\0') break; + + uint8_t d = b64_table[dChar]; + if (d == 0xFF) break; + + out[outLen++] = (c << 6) | d; + } + + return outLen; + } + + // 3. Optimized wrapper: Pre-calculate exact output size, avoid vector overhead + std::string decodeBase64ToString(const std::string& b64) { + // Base64 decodes to ~3/4 original size + const size_t maxOutSize = (b64.size() * 3) / 4 + 3; + std::string result(maxOutSize, '\0'); + + const size_t len = base64_decode(b64.c_str(), reinterpret_cast(result.data())); + result.resize(len); + + return result; + } } diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/ini_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/ini_funcs.cpp index 47551c5a..33ad3876 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/ini_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/ini_funcs.cpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include @@ -220,52 +220,75 @@ namespace ult { */ std::map> parseIni(const std::string &str) { std::map> iniData; + std::string lastHeader; + lastHeader.reserve(64); - auto lines = split(str, '\n'); - std::string lastHeader = ""; + const char* lineStart = str.c_str(); + const char* lineEnd; + const char* strEnd = lineStart + str.size(); - //std::string trimmedLine; + auto isWhitespace = [](char c) { + return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f' || c == '\v'; + }; - size_t delimiterPos; - //std::string key, value; - - std::string newLine1, newLine2; - - for (auto& line : lines) { - trim(line); - - // Ignore empty lines and comments - if (line.empty() || line.front() == '#') { - // Clear line to reuse capacity - line.clear(); - continue; + while (lineStart < strEnd) { + // Find line end + lineEnd = lineStart; + while (lineEnd < strEnd && *lineEnd != '\n') { + lineEnd++; } - if (line.front() == '[' && line.back() == ']') { - lastHeader = line.substr(1, line.size() - 2); - iniData[lastHeader]; // Ensures the section exists even if it remains empty - - } else { - delimiterPos = line.find('='); - if (delimiterPos != std::string::npos) { - //key = trim(trimmedLine.substr(0, delimiterPos)); - //value = trim(trimmedLine.substr(delimiterPos + 1)); - if (!lastHeader.empty()) { - //iniData[lastHeader][key] = value; - newLine1 = line.substr(0, delimiterPos); - trim(newLine1); - newLine2 = line.substr(delimiterPos + 1); - trim(newLine2); - iniData[lastHeader][newLine1] = newLine2; - - // Clear strings to reuse capacity - newLine1.clear(); - newLine2.clear(); + // Trim whitespace from start + while (lineStart < lineEnd && isWhitespace(*lineStart)) { + lineStart++; + } + + // Trim whitespace from end + while (lineEnd > lineStart && isWhitespace(*(lineEnd-1))) { + lineEnd--; + } + + size_t lineLen = lineEnd - lineStart; + + // Skip empty lines and comments + if (lineLen > 0 && *lineStart != '#') { + if (*lineStart == '[' && *(lineEnd-1) == ']') { + // Section header + lastHeader.assign(lineStart + 1, lineEnd - 1); + iniData[lastHeader]; // Ensure section exists + } else if (!lastHeader.empty()) { + // Key=value pair + const char* eqPos = lineStart; + while (eqPos < lineEnd && *eqPos != '=') { + eqPos++; + } + + if (eqPos < lineEnd) { + // Trim key + const char* keyStart = lineStart; + const char* keyEnd = eqPos; + while (keyStart < keyEnd && isWhitespace(*keyStart)) keyStart++; + while (keyEnd > keyStart && isWhitespace(*(keyEnd-1))) keyEnd--; + + // Trim value + const char* valStart = eqPos + 1; + const char* valEnd = lineEnd; + while (valStart < valEnd && isWhitespace(*valStart)) valStart++; + while (valEnd > valStart && isWhitespace(*(valEnd-1))) valEnd--; + + iniData[lastHeader].emplace( + std::string(keyStart, keyEnd), + std::string(valStart, valEnd) + ); } } } - // Clear line to reuse capacity - line.clear(); + + // Move to next line + lineStart = lineEnd; + if (lineStart < strEnd && *lineStart == '\n') { + lineStart++; + } } return iniData; @@ -285,99 +308,68 @@ namespace ult { std::map> getParsedDataFromIniFile(const std::string& configIniPath) { auto fileMutex = getFileMutex(configIniPath); std::shared_lock lock(*fileMutex); - + std::map> parsedData; #if !USING_FSTREAM_DIRECTIVE FILE* file = fopen(configIniPath.c_str(), "r"); if (!file) { - return parsedData; // Return empty map if file cannot be opened + return parsedData; } char buffer[1024]; - std::string line; - std::string currentSection; - size_t delimiterPos; std::string key, value; + key.reserve(64); + value.reserve(256); - // Cache iterator to current section to avoid repeated map lookups std::map* currentSectionMap = nullptr; - size_t len; - const char* start; - const char* end; - while (fgets(buffer, sizeof(buffer), file)) { - // More efficient newline removal - len = strlen(buffer); + size_t len = strlen(buffer); + + // Strip trailing newline/carriage return if (len > 0 && buffer[len-1] == '\n') { - buffer[len-1] = '\0'; - --len; - if (len > 0 && buffer[len-1] == '\r') { - buffer[len-1] = '\0'; - --len; - } + if (--len > 0 && buffer[len-1] == '\r') --len; } - // Early exit for empty lines if (len == 0) continue; - // Manual trim for better performance - find start of non-whitespace - start = buffer; - while (*start == ' ' || *start == '\t') ++start; + // Trim whitespace + const char* start = buffer; + const char* end = buffer + len; - // Find end of non-whitespace (working backwards from known end) - end = buffer + len - 1; - while (end >= start && (*end == ' ' || *end == '\t')) --end; + while (start < end && (*start == ' ' || *start == '\t')) ++start; + while (end > start && (end[-1] == ' ' || end[-1] == '\t')) --end; - // Early exit for whitespace-only lines - if (end < start) continue; + if (start >= end) continue; - // Calculate trimmed length - len = end - start + 1; - - // Check for section header first (most efficient check) - if (*start == '[' && *end == ']') { - // Remove the brackets and set the current section - if (len > 2) { - currentSection.assign(start + 1, len - 2); - currentSectionMap = &parsedData[currentSection]; - } - // Clear section string to reuse capacity - currentSection.clear(); - } else if (currentSectionMap != nullptr) { - // Look for '=' delimiter - scan from start for efficiency - delimiterPos = 0; - const char* eq_pos = start; - while (eq_pos <= end && *eq_pos != '=') { - ++eq_pos; - ++delimiterPos; + // Section header + if (*start == '[' && end[-1] == ']') { + if (end - start > 2) { + currentSectionMap = &parsedData[std::string(start + 1, end - 1)]; } + } else if (currentSectionMap) { + // Find '=' delimiter + const char* eq = start; + while (eq < end && *eq != '=') ++eq; - if (eq_pos <= end) { // Found '=' delimiter - // Extract key (start to delimiter) - const char* key_end = eq_pos - 1; - while (key_end >= start && (*key_end == ' ' || *key_end == '\t')) --key_end; + if (eq < end) { + // Trim key + const char* key_end = eq; + while (key_end > start && (key_end[-1] == ' ' || key_end[-1] == '\t')) --key_end; - if (key_end >= start) { - key.assign(start, key_end - start + 1); + if (key_end > start) { + // Trim value + const char* val_start = eq + 1; + while (val_start < end && (*val_start == ' ' || *val_start == '\t')) ++val_start; - // Extract value (after delimiter to end) - const char* val_start = eq_pos + 1; - while (val_start <= end && (*val_start == ' ' || *val_start == '\t')) ++val_start; - - if (val_start <= end) { - value.assign(val_start, end - val_start + 1); - } else { - value.clear(); - } - - (*currentSectionMap)[key] = std::move(value); + currentSectionMap->emplace( + std::piecewise_construct, + std::forward_as_tuple(start, key_end), + std::forward_as_tuple(val_start, end) + ); } } - // Clear strings to reuse capacity - key.clear(); - value.clear(); } } @@ -385,87 +377,58 @@ namespace ult { #else std::ifstream configFile(configIniPath); if (!configFile) { - return parsedData; // Return empty map if file cannot be opened + return parsedData; } std::string line; - std::string currentSection; - size_t delimiterPos; - std::string key, value; + line.reserve(256); - size_t start, end, key_end, val_start; - - // Cache iterator to current section to avoid repeated map lookups std::map* currentSectionMap = nullptr; while (getline(configFile, line)) { - // Remove carriage return if present (getline already removes \n) + // Strip carriage return if (!line.empty() && line.back() == '\r') { line.pop_back(); } - // Early exit for empty lines if (line.empty()) continue; - // Manual trim for better performance - start = 0; - end = line.length() - 1; + // Trim using pointers for speed + const char* start = line.c_str(); + const char* end = start + line.length(); - // Find start of non-whitespace - while (start < line.length() && (line[start] == ' ' || line[start] == '\t')) { - ++start; - } + while (start < end && (*start == ' ' || *start == '\t')) ++start; + while (end > start && (end[-1] == ' ' || end[-1] == '\t')) --end; - // Early exit for whitespace-only lines - if (start >= line.length()) continue; + if (start >= end) continue; - // Find end of non-whitespace - while (end > start && (line[end] == ' ' || line[end] == '\t')) { - --end; - } - - // Check for section header first - if (line[start] == '[' && line[end] == ']') { - // Remove the brackets and set the current section - if (end > start + 1) { - currentSection.assign(line, start + 1, end - start - 1); - currentSectionMap = &parsedData[currentSection]; + // Section header + if (*start == '[' && end[-1] == ']') { + if (end - start > 2) { + currentSectionMap = &parsedData[std::string(start + 1, end - 1)]; } - // Clear strings to reuse capacity - line.clear(); - currentSection.clear(); - } else if (currentSectionMap != nullptr) { - // Look for '=' delimiter within the trimmed range - delimiterPos = line.find('=', start); - if (delimiterPos != std::string::npos && delimiterPos <= end) { - // Extract and trim key - key_end = delimiterPos - 1; - while (key_end > start && (line[key_end] == ' ' || line[key_end] == '\t')) { - --key_end; - } + } else if (currentSectionMap) { + // Find '=' delimiter + const char* eq = start; + while (eq < end && *eq != '=') ++eq; + + if (eq < end) { + // Trim key + const char* key_end = eq; + while (key_end > start && (key_end[-1] == ' ' || key_end[-1] == '\t')) --key_end; - if (key_end >= start) { - key.assign(line, start, key_end - start + 1); + if (key_end > start) { + // Trim value + const char* val_start = eq + 1; + while (val_start < end && (*val_start == ' ' || *val_start == '\t')) ++val_start; - // Extract and trim value - val_start = delimiterPos + 1; - while (val_start <= end && (line[val_start] == ' ' || line[val_start] == '\t')) { - ++val_start; - } - - if (val_start <= end) { - value.assign(line, val_start, end - val_start + 1); - } else { - value.clear(); - } - - (*currentSectionMap)[key] = std::move(value); + currentSectionMap->emplace( + std::piecewise_construct, + std::forward_as_tuple(start, key_end), + std::forward_as_tuple(val_start, end) + ); } } - // Clear strings to reuse capacity - line.clear(); - key.clear(); - value.clear(); } } @@ -481,7 +444,8 @@ namespace ult { * @brief Parses an INI file and retrieves key-value pairs from a specific section. * * This function reads the contents of an INI file located at the specified path, - * and returns the key-value pairs within a specific section. + * and returns the key-value pairs within a specific section. Lines starting with + * # or ; are treated as comments and ignored. * * @param configIniPath The path to the INI file to be parsed. * @param sectionName The name of the section to retrieve key-value pairs from. @@ -490,166 +454,117 @@ namespace ult { std::map getKeyValuePairsFromSection(const std::string& configIniPath, const std::string& sectionName) { auto fileMutex = getFileMutex(configIniPath); std::shared_lock lock(*fileMutex); - + std::map sectionData; #if !USING_FSTREAM_DIRECTIVE FILE* file = fopen(configIniPath.c_str(), "r"); if (!file) { - // logMessage("Failed to open the file: " + configIniPath); - return sectionData; // Return empty map if file cannot be opened + return sectionData; } char buffer[1024]; std::string line; - //line.reserve(1024); // Reserve to match buffer size + line.reserve(256); - std::string currentSection; - //currentSection.reserve(64); // Reserve for section names - - size_t delimiterPos; std::string key, value; - //key.reserve(128); // Reserve for key names - //value.reserve(256); // Reserve for values + key.reserve(64); + value.reserve(128); - bool inTargetSection = false; // To track if we're in the desired section - - size_t len; - + bool inTargetSection = false; + size_t len, delimiterPos; + while (fgets(buffer, sizeof(buffer), file)) { - // More efficient newline removal + // Remove newline characters len = strlen(buffer); if (len > 0 && buffer[len-1] == '\n') { - buffer[len-1] = '\0'; - if (len > 1 && buffer[len-2] == '\r') { - buffer[len-2] = '\0'; + buffer[--len] = '\0'; + if (len > 0 && buffer[len-1] == '\r') { + buffer[--len] = '\0'; } } - line.assign(buffer); // More efficient than string constructor + line.assign(buffer); trim(line); - - if (line.empty()) { - line.clear(); // Clear even for empty lines - continue; // Skip empty lines - } - + + if (line.empty()) continue; + + // Skip comment lines + if (line[0] == '#' || line[0] == ';') continue; + if (line[0] == '[' && line.back() == ']') { - // More efficient section name extraction - currentSection.assign(line, 1, line.size() - 2); - // Check if this is the section we're interested in - inTargetSection = (currentSection == sectionName); + // Compare section directly without extraction + inTargetSection = (line.size() - 2 == sectionName.size() && + line.compare(1, line.size() - 2, sectionName) == 0); - // Early exit optimization: if we were in target section and hit a new section, we're done if (!inTargetSection && !sectionData.empty()) { - // Clear before breaking - line.clear(); - currentSection.clear(); - break; // Found target section and processed it, no need to continue + break; } - - // Clear strings to reuse capacity - line.clear(); - currentSection.clear(); } else if (inTargetSection) { - // Look for key-value pairs within the target section delimiterPos = line.find('='); if (delimiterPos != std::string::npos) { - key.assign(line, 0, delimiterPos); // More efficient than substr + key.assign(line, 0, delimiterPos); trim(key); - value.assign(line, delimiterPos + 1, std::string::npos); // More efficient than substr + value.assign(line, delimiterPos + 1, std::string::npos); trim(value); - sectionData[std::move(key)] = std::move(value); // Move semantics to avoid copies - - // Clear strings after moving to reuse capacity - //key.clear(); - //value.clear(); + sectionData[std::move(key)] = std::move(value); } - line.clear(); - } else { - line.clear(); // Clear line when not in target section } } - + fclose(file); #else std::ifstream configFile(configIniPath); if (!configFile) { - // logMessage("Failed to open the file: " + configIniPath); - return sectionData; // Return empty map if file cannot be opened + return sectionData; } std::string line; - //line.reserve(1024); // Reserve for typical line length + line.reserve(256); - std::string currentSection; - //currentSection.reserve(64); // Reserve for section names - - size_t delimiterPos; std::string key, value; - //key.reserve(128); // Reserve for key names - //value.reserve(256); // Reserve for values + key.reserve(64); + value.reserve(128); - bool inTargetSection = false; // To track if we're in the desired section + bool inTargetSection = false; + size_t delimiterPos; while (getline(configFile, line)) { - // Remove carriage return if present (getline already removes \n) if (!line.empty() && line.back() == '\r') { line.pop_back(); } trim(line); - - if (line.empty()) { - line.clear(); // Clear even for empty lines - continue; // Skip empty lines - } - + + if (line.empty()) continue; + + // Skip comment lines + if (line[0] == '#' || line[0] == ';') continue; + if (line[0] == '[' && line.back() == ']') { - // More efficient section name extraction - currentSection.assign(line, 1, line.size() - 2); - // Check if this is the section we're interested in - inTargetSection = (currentSection == sectionName); + inTargetSection = (line.size() - 2 == sectionName.size() && + line.compare(1, line.size() - 2, sectionName) == 0); - // Early exit optimization: if we were in target section and hit a new section, we're done if (!inTargetSection && !sectionData.empty()) { - // Clear before breaking - line.clear(); - currentSection.clear(); - break; // Found target section and processed it, no need to continue + break; } - - // Clear strings to reuse capacity - line.clear(); - currentSection.clear(); } else if (inTargetSection) { - // Look for key-value pairs within the target section delimiterPos = line.find('='); if (delimiterPos != std::string::npos) { - key.assign(line, 0, delimiterPos); // More efficient than substr + key.assign(line, 0, delimiterPos); trim(key); - value.assign(line, delimiterPos + 1, std::string::npos); // More efficient than substr + value.assign(line, delimiterPos + 1, std::string::npos); trim(value); - sectionData[std::move(key)] = std::move(value); // Move semantics to avoid copies - - // Clear strings after moving to reuse capacity - //key.clear(); - //value.clear(); + sectionData[std::move(key)] = std::move(value); } - line.clear(); - } else { - line.clear(); // Clear line when not in target section } } - - configFile.close(); #endif return sectionData; } - /** * @brief Parses sections from an INI file and returns them as a list of strings. * @@ -748,7 +663,7 @@ namespace ult { std::string parseValueFromIniSection(const std::string& filePath, const std::string& sectionName, const std::string& keyName) { auto fileMutex = getFileMutex(filePath); std::shared_lock lock(*fileMutex); - + std::string value; #if !USING_FSTREAM_DIRECTIVE @@ -758,94 +673,66 @@ namespace ult { } char buffer[1024]; - std::string currentSection; - std::string currentKey; - - //size_t delimiterPos; bool inTargetSection = false; - bool wasInTargetSection = false; // Track if we've been in the target section - - size_t len; - const char* start; - const char* end; while (fgets(buffer, sizeof(buffer), file)) { - // More efficient newline removal - len = strlen(buffer); + size_t len = strlen(buffer); + + // Strip trailing newline/carriage return if (len > 0 && buffer[len-1] == '\n') { - buffer[len-1] = '\0'; - --len; - if (len > 0 && buffer[len-1] == '\r') { - buffer[len-1] = '\0'; - --len; - } + if (--len > 0 && buffer[len-1] == '\r') --len; } - // Early exit for empty lines if (len == 0) continue; - // Manual trim for better performance - find start of non-whitespace - start = buffer; - while (*start == ' ' || *start == '\t') ++start; + // Trim whitespace + const char* start = buffer; + const char* end = buffer + len; - // Find end of non-whitespace (working backwards from known end) - end = buffer + len - 1; - while (end >= start && (*end == ' ' || *end == '\t')) --end; + while (start < end && (*start == ' ' || *start == '\t')) ++start; + while (end > start && (end[-1] == ' ' || end[-1] == '\t')) --end; - // Early exit for whitespace-only lines - if (end < start) continue; + if (start >= end) continue; - // Calculate trimmed length - len = end - start + 1; - - // Check for section header first - if (*start == '[' && *end == ']') { - if (len > 2) { - currentSection.assign(start + 1, len - 2); - inTargetSection = (currentSection == sectionName); + // Section header + if (*start == '[' && end[-1] == ']') { + if (end - start > 2) { + // Compare directly without constructing string + const size_t sectionLen = end - start - 2; + inTargetSection = (sectionLen == sectionName.length() && + std::memcmp(start + 1, sectionName.data(), sectionLen) == 0); - // Early exit: if we WERE in target section and now we're not, key wasn't found - if (wasInTargetSection && !inTargetSection) { - break; // Left target section without finding key - } - - if (inTargetSection) { - wasInTargetSection = true; + // Early exit: left target section without finding key + if (!inTargetSection && value.empty() && sectionLen > 0) { + // We passed a different section; if we already processed target, we're done + // This is implicit - if inTargetSection was true before and now false, we already found it or it doesn't exist + continue; } } - // Clear section string to reuse capacity - currentSection.clear(); } else if (inTargetSection) { - // Look for '=' delimiter - scan from start for efficiency - const char* eq_pos = start; - while (eq_pos <= end && *eq_pos != '=') { - ++eq_pos; - } + // Find '=' delimiter + const char* eq = start; + while (eq < end && *eq != '=') ++eq; - if (eq_pos <= end) { // Found '=' delimiter - // Extract and trim key - const char* key_end = eq_pos - 1; - while (key_end >= start && (*key_end == ' ' || *key_end == '\t')) --key_end; + if (eq < end) { + // Trim key + const char* key_end = eq; + while (key_end > start && (key_end[-1] == ' ' || key_end[-1] == '\t')) --key_end; - if (key_end >= start) { - currentKey.assign(start, key_end - start + 1); + if (key_end > start) { + const size_t keyLen = key_end - start; - if (currentKey == keyName) { - // Extract and trim value - const char* val_start = eq_pos + 1; - while (val_start <= end && (*val_start == ' ' || *val_start == '\t')) ++val_start; + // Compare directly without constructing string + if (keyLen == keyName.length() && std::memcmp(start, keyName.data(), keyLen) == 0) { + // Trim value + const char* val_start = eq + 1; + while (val_start < end && (*val_start == ' ' || *val_start == '\t')) ++val_start; - if (val_start <= end) { - value.assign(val_start, end - val_start + 1); - } - currentKey.clear(); // Clear before breaking - // Found the key, exit - break; + value.assign(val_start, end); + break; // Found it, exit immediately } } } - // Clear key string to reuse capacity - currentKey.clear(); } } @@ -857,94 +744,59 @@ namespace ult { } std::string line; - std::string currentSection; - std::string currentKey; - - size_t delimiterPos; + line.reserve(256); bool inTargetSection = false; - bool wasInTargetSection = false; // Track if we've been in the target section - - size_t start, end, key_end, val_start; + while (std::getline(file, line)) { if (!line.empty() && line.back() == '\r') { line.pop_back(); } - // Early exit for empty lines if (line.empty()) continue; - // Manual trim for better performance - start = 0; - end = line.length() - 1; + // Trim using pointers + const char* start = line.c_str(); + const char* end = start + line.length(); - // Find start of non-whitespace - while (start < line.length() && (line[start] == ' ' || line[start] == '\t')) { - ++start; - } + while (start < end && (*start == ' ' || *start == '\t')) ++start; + while (end > start && (end[-1] == ' ' || end[-1] == '\t')) --end; - // Early exit for whitespace-only lines - if (start >= line.length()) continue; + if (start >= end) continue; - // Find end of non-whitespace - while (end > start && (line[end] == ' ' || line[end] == '\t')) { - --end; - } - - // Check for section header first - if (line[start] == '[' && line[end] == ']') { - if (end > start + 1) { - currentSection.assign(line, start + 1, end - start - 1); - inTargetSection = (currentSection == sectionName); - - // Early exit: if we WERE in target section and now we're not, key wasn't found - if (wasInTargetSection && !inTargetSection) { - // Clear strings to reuse capacity - line.clear(); - currentSection.clear(); - break; // Left target section without finding key - } - - if (inTargetSection) { - wasInTargetSection = true; - } + // Section header + if (*start == '[' && end[-1] == ']') { + if (end - start > 2) { + size_t sectionLen = end - start - 2; + inTargetSection = (sectionLen == sectionName.length() && + std::memcmp(start + 1, sectionName.data(), sectionLen) == 0); } - // Clear strings to reuse capacity - line.clear(); - currentSection.clear(); } else if (inTargetSection) { - // Look for '=' delimiter within the trimmed range - delimiterPos = line.find('=', start); - if (delimiterPos != std::string::npos && delimiterPos <= end) { - // Extract and trim key - key_end = delimiterPos - 1; - while (key_end > start && (line[key_end] == ' ' || line[key_end] == '\t')) { - --key_end; - } + // Find '=' delimiter + const char* eq = start; + while (eq < end && *eq != '=') ++eq; + + if (eq < end) { + // Trim key + const char* key_end = eq; + while (key_end > start && (key_end[-1] == ' ' || key_end[-1] == '\t')) --key_end; - if (key_end >= start) { - currentKey.assign(line, start, key_end - start + 1); + if (key_end > start) { + size_t keyLen = key_end - start; - if (currentKey == keyName) { - // Extract and trim value - val_start = delimiterPos + 1; - while (val_start <= end && (line[val_start] == ' ' || line[val_start] == '\t')) { - ++val_start; - } + // Compare directly without constructing string + if (keyLen == keyName.length() && std::memcmp(start, keyName.data(), keyLen) == 0) { + // Trim value + const char* val_start = eq + 1; + while (val_start < end && (*val_start == ' ' || *val_start == '\t')) ++val_start; - if (val_start <= end) { - value.assign(line, val_start, end - val_start + 1); - } - // Found the key, exit - break; + value.assign(val_start, end); + break; // Found it, exit immediately } } } - // Clear strings to reuse capacity - line.clear(); - currentKey.clear(); } } - + file.close(); #endif @@ -2119,25 +1971,25 @@ namespace ult { //} - void syncIniValue(std::map>& packageConfigData, + bool syncIniValue(std::map>& packageConfigData, const std::string& packageConfigIniPath, const std::string& optionName, const std::string& key, std::string& value) { auto optionIt = packageConfigData.find(optionName); + + // Check if option exists and has the key if (optionIt != packageConfigData.end()) { auto it = optionIt->second.find(key); if (it != optionIt->second.end()) { - value = it->second; // Update value only if the key exists - //} else { - // setIniFileValue(packageConfigIniPath, optionName, key, value); // Set INI file value if key not found - //} - } else { - // Key not found - add it to in-memory data and save entire structure - packageConfigData[optionName][key] = value; - saveIniFileData(packageConfigIniPath, packageConfigData); + value = it->second; // Load existing value from config + return false; // Value exists, we're done } } + + // Key/section doesn't exist - add it (will be saved later in batch) + packageConfigData[optionName][key] = value; + return true; } @@ -2208,56 +2060,41 @@ namespace ult { std::vector>>> loadOptionsFromIni(const std::string& packageIniPath) { auto fileMutex = getFileMutex(packageIniPath); std::shared_lock lock(*fileMutex); - + #if !USING_FSTREAM_DIRECTIVE FILE* packageFile = fopen(packageIniPath.c_str(), "r"); - if (!packageFile) return {}; // Return empty vector if file can't be opened + if (!packageFile) return {}; std::vector>>> options; + options.reserve(32); // Reserve reasonable capacity - char line[1024]; + char buffer[1024]; std::string currentSection; std::vector> sectionCommands; - std::string strLine; - - size_t len; - //const char* start; - //const char* end; + sectionCommands.reserve(16); - while (fgets(line, sizeof(line), packageFile)) { - // More efficient newline removal - len = strlen(line); - if (len > 0 && line[len-1] == '\n') { - line[len-1] = '\0'; - --len; - if (len > 0 && line[len-1] == '\r') { - line[len-1] = '\0'; - --len; - } + while (fgets(buffer, sizeof(buffer), packageFile)) { + size_t len = strlen(buffer); + + // Strip trailing newline/carriage return + if (len > 0 && buffer[len-1] == '\n') { + if (--len > 0 && buffer[len-1] == '\r') --len; } - // Early exit for empty lines - if (len == 0) continue; + if (len == 0 || buffer[0] == '#') continue; - // Check for comments early (most efficient check) - if (line[0] == '#') continue; - - // Assign the processed line - strLine.assign(line, len); - - if (strLine[0] == '[' && strLine.back() == ']') { // Section headers + // Section header + if (buffer[0] == '[' && buffer[len-1] == ']') { if (!currentSection.empty()) { options.emplace_back(std::move(currentSection), std::move(sectionCommands)); - //sectionCommands.clear(); - //sectionCommands.shrink_to_fit(); // Free capacity after move + sectionCommands = std::vector>(); + sectionCommands.reserve(16); } - currentSection.assign(strLine, 1, strLine.size() - 2); - } else if (!currentSection.empty()) { // Command lines within sections - sectionCommands.push_back(parseCommandLine(strLine)); + currentSection.assign(buffer + 1, len - 2); + } else if (!currentSection.empty()) { + // Parse command directly from buffer - avoid string construction + sectionCommands.push_back(parseCommandLine(std::string(buffer, len))); } - - // Clear strLine content to free string memory - strLine.clear(); } if (!currentSection.empty()) { @@ -2267,34 +2104,35 @@ namespace ult { fclose(packageFile); #else std::ifstream packageFile(packageIniPath); - if (!packageFile) return {}; // Return empty vector if file can't be opened + if (!packageFile) return {}; std::vector>>> options; + options.reserve(32); - std::string line, currentSection; + std::string line; + line.reserve(256); + std::string currentSection; std::vector> sectionCommands; + sectionCommands.reserve(16); while (std::getline(packageFile, line)) { - // Remove carriage return if present (getline already removes \n) + // Remove carriage return if present if (!line.empty() && line.back() == '\r') { line.pop_back(); } - // Early exits for empty lines and comments if (line.empty() || line[0] == '#') continue; - if (line[0] == '[' && line.back() == ']') { // Section headers + if (line[0] == '[' && line.back() == ']') { if (!currentSection.empty()) { options.emplace_back(std::move(currentSection), std::move(sectionCommands)); - //sectionCommands.clear(); - //sectionCommands.shrink_to_fit(); // Free capacity after move + sectionCommands = std::vector>(); + sectionCommands.reserve(16); } currentSection.assign(line, 1, line.size() - 2); - } else if (!currentSection.empty()) { // Command lines within sections + } else if (!currentSection.empty()) { sectionCommands.push_back(parseCommandLine(line)); } - // Clear line content to reuse capacity - line.clear(); } if (!currentSection.empty()) { @@ -2319,99 +2157,92 @@ namespace ult { std::vector> loadSpecificSectionFromIni(const std::string& packageIniPath, const std::string& sectionName) { auto fileMutex = getFileMutex(packageIniPath); std::shared_lock lock(*fileMutex); - + #if !USING_FSTREAM_DIRECTIVE FILE* packageFile = fopen(packageIniPath.c_str(), "r"); - - if (!packageFile) return {}; // Return empty vector if file can't be opened + if (!packageFile) return {}; std::vector> sectionCommands; + sectionCommands.reserve(16); - char line[1024]; - std::string currentSection; + char buffer[1024]; bool inTargetSection = false; - std::string strLine; - size_t len; - - while (fgets(line, sizeof(line), packageFile)) { - // More efficient newline removal - len = strlen(line); - if (len > 0 && line[len-1] == '\n') { - line[len-1] = '\0'; - --len; - if (len > 0 && line[len-1] == '\r') { - line[len-1] = '\0'; - --len; - } + while (fgets(buffer, sizeof(buffer), packageFile)) { + size_t len = strlen(buffer); + + // Strip trailing newline/carriage return + if (len > 0 && buffer[len-1] == '\n') { + if (--len > 0 && buffer[len-1] == '\r') --len; } - // Early exit for empty lines - if (len == 0) continue; + if (len == 0 || buffer[0] == '#') continue; - // Check for comments early (most efficient check) - if (line[0] == '#') continue; - - // Assign the processed line - strLine.assign(line, len); - - if (strLine[0] == '[' && strLine.back() == ']') { // Section headers - currentSection.assign(strLine, 1, strLine.size() - 2); - inTargetSection = (currentSection == sectionName); // Check if this is the target section - - // Early exit optimization: if we were in target section and hit a new section, we're done - if (!inTargetSection && !sectionCommands.empty()) { - break; // Found target section and processed it, no need to continue + // Section header + if (buffer[0] == '[' && buffer[len-1] == ']') { + if (len > 2) { + size_t sectionLen = len - 2; + + // Direct comparison without constructing string + bool isTarget = (sectionLen == sectionName.length() && + std::memcmp(buffer + 1, sectionName.data(), sectionLen) == 0); + + // Early exit: found target section and now leaving it + if (inTargetSection && !isTarget) { + break; + } + + inTargetSection = isTarget; } - } else if (inTargetSection) { // Only parse commands within the target section - sectionCommands.push_back(parseCommandLine(strLine)); + } else if (inTargetSection) { + sectionCommands.push_back(parseCommandLine(std::string(buffer, len))); } - - // Clear strings to reuse capacity - strLine.clear(); - currentSection.clear(); } fclose(packageFile); #else std::ifstream packageFile(packageIniPath); + if (!packageFile) return {}; - if (!packageFile) return {}; // Return empty vector if file can't be opened - - std::string line, currentSection; + std::string line; + line.reserve(256); std::vector> sectionCommands; + sectionCommands.reserve(16); bool inTargetSection = false; while (std::getline(packageFile, line)) { - // Remove carriage return if present (getline already removes \n) + // Remove carriage return if present if (!line.empty() && line.back() == '\r') { line.pop_back(); } - // Early exits for empty lines and comments if (line.empty() || line[0] == '#') continue; - if (line[0] == '[' && line.back() == ']') { // Section headers - currentSection.assign(line, 1, line.size() - 2); - inTargetSection = (currentSection == sectionName); // Check if this is the target section + // Section header + if (line[0] == '[' && line.back() == ']') { + size_t sectionLen = line.size() - 2; - // Early exit optimization: if we were in target section and hit a new section, we're done - if (!inTargetSection && !sectionCommands.empty()) { - break; // Found target section and processed it, no need to continue + if (sectionLen > 0) { + // Direct comparison without constructing substring + bool isTarget = (sectionLen == sectionName.length() && + std::memcmp(line.data() + 1, sectionName.data(), sectionLen) == 0); + + // Early exit: found target section and now leaving it + if (inTargetSection && !isTarget) { + break; + } + + inTargetSection = isTarget; } - } else if (inTargetSection) { // Only parse commands within the target section + } else if (inTargetSection) { sectionCommands.push_back(parseCommandLine(line)); } - - // Clear strings to reuse capacity - //strLine.clear(); - currentSection.clear(); } packageFile.close(); #endif - return sectionCommands; // Return only the commands from the target section + return sectionCommands; } @@ -2427,39 +2258,306 @@ namespace ult { void saveIniFileData(const std::string& filePath, const std::map>& data) { auto fileMutex = getFileMutex(filePath); std::unique_lock lock(*fileMutex); - - #if !USING_FSTREAM_DIRECTIVE + + #if !USING_FSTREAM_DIRECTIVE FILE* file = fopen(filePath.c_str(), "w"); if (!file) { - // Handle error: could not open file return; } + // Use larger buffer for better write performance + char writeBuffer[4096]; + setvbuf(file, writeBuffer, _IOFBF, sizeof(writeBuffer)); + + std::string buffer; + buffer.reserve(2048); // Pre-allocate buffer + for (const auto& section : data) { - fprintf(file, "[%s]\n", section.first.c_str()); + buffer.clear(); + + // Build section header + buffer += '['; + buffer += section.first; + buffer += "]\n"; + + // Build all key-value pairs for this section for (const auto& kv : section.second) { - fprintf(file, "%s=%s\n", kv.first.c_str(), kv.second.c_str()); + buffer += kv.first; + buffer += '='; + buffer += kv.second; + buffer += '\n'; } - fputc('\n', file); // Separate sections with a newline + buffer += '\n'; // Section separator + + // Write entire section at once + fwrite(buffer.data(), 1, buffer.size(), file); } fclose(file); - #else + #else std::ofstream file(filePath); if (!file.is_open()) { - // Handle error: could not open file return; } + + // Set larger buffer for better performance + char writeBuffer[4096]; + file.rdbuf()->pubsetbuf(writeBuffer, sizeof(writeBuffer)); + + std::string buffer; + buffer.reserve(2048); for (const auto& section : data) { - file << "[" << section.first << "]\n"; + buffer.clear(); + + // Build section header + buffer += '['; + buffer += section.first; + buffer += "]\n"; + + // Build all key-value pairs for this section for (const auto& kv : section.second) { - file << kv.first << "=" << kv.second << "\n"; + buffer += kv.first; + buffer += '='; + buffer += kv.second; + buffer += '\n'; } - file << "\n"; // Separate sections with a newline + buffer += '\n'; + + // Write entire section at once + file.write(buffer.data(), buffer.size()); } file.close(); - #endif + #endif } + + + + enum class KeyOp { ADD, REMOVE }; + + /** + * @brief Internal helper for pattern-based key operations. + * Section-buffered approach for clean formatting with minimal code size. + */ + void processKeysInMatchingSections(const std::string& filePath, const std::string& patternKey, + const std::string& targetKey, const std::string& value, + KeyOp operation) { + auto fileMutex = getFileMutex(filePath); + std::unique_lock lock(*fileMutex); + + const std::string tempPath = filePath + ".tmp"; + const bool matchAll = patternKey.empty(); + + #if !USING_FSTREAM_DIRECTIVE + FILE* in = fopen(filePath.c_str(), "r"); + if (!in) return; + FILE* out = fopen(tempPath.c_str(), "w"); + if (!out) { fclose(in); return; } + + char buf[1024]; + std::vector section; + bool inMatch = matchAll; + size_t patIdx = SIZE_MAX, tgtIdx = SIZE_MAX; + size_t len; + + while (fgets(buf, sizeof(buf), in)) { + len = strlen(buf); + if (len > 0 && buf[len-1] == '\n') buf[--len] = '\0'; + if (len > 0 && buf[len-1] == '\r') buf[--len] = '\0'; + + std::string line(buf), tl = line; + trim(tl); + + if (!tl.empty() && tl[0] == '[' && tl.back() == ']') { + // Flush previous section + if (!section.empty() && inMatch) { + if (operation == KeyOp::ADD) { + // If target exists, update it in place; otherwise insert after pattern + size_t insertAt = (tgtIdx != SIZE_MAX) ? SIZE_MAX : (matchAll ? section.size() : patIdx + 1); + for (size_t i = 0; i < section.size(); ++i) { + if (i == tgtIdx) { + fprintf(out, "%s=%s\n", targetKey.c_str(), value.c_str()); + } else { + fprintf(out, "%s\n", section[i].c_str()); + } + if (i + 1 == insertAt) { + fprintf(out, "%s=%s\n", targetKey.c_str(), value.c_str()); + } + } + } else if (operation == KeyOp::REMOVE) { + for (size_t i = 0; i < section.size(); ++i) { + if (i != tgtIdx) fprintf(out, "%s\n", section[i].c_str()); + } + } + } else { + for (const auto& l : section) fprintf(out, "%s\n", l.c_str()); + } + + section.clear(); + fprintf(out, "%s\n", buf); + inMatch = matchAll; + patIdx = tgtIdx = SIZE_MAX; + continue; + } + + size_t eq = tl.find('='); + if (eq != std::string::npos) { + std::string k(tl, 0, eq); + trim(k); + if (!matchAll && k == patternKey) { inMatch = true; patIdx = section.size(); } + if (k == targetKey) tgtIdx = section.size(); + } + + section.push_back(buf); + } + + // Flush last section + if (!section.empty() && inMatch) { + if (operation == KeyOp::ADD) { + size_t insertAt = (tgtIdx != SIZE_MAX) ? SIZE_MAX : (matchAll ? section.size() : patIdx + 1); + for (size_t i = 0; i < section.size(); ++i) { + if (i == tgtIdx) { + fprintf(out, "%s=%s\n", targetKey.c_str(), value.c_str()); + } else { + fprintf(out, "%s\n", section[i].c_str()); + } + if (i + 1 == insertAt) { + fprintf(out, "%s=%s\n", targetKey.c_str(), value.c_str()); + } + } + } else if (operation == KeyOp::REMOVE) { + for (size_t i = 0; i < section.size(); ++i) { + if (i != tgtIdx) fprintf(out, "%s\n", section[i].c_str()); + } + } + } else { + for (const auto& l : section) fprintf(out, "%s\n", l.c_str()); + } + + fclose(in); + fclose(out); + #else + std::ifstream in(filePath); + if (!in) return; + std::ofstream out(tempPath); + if (!out) return; + + std::vector section; + std::string line; + bool inMatch = matchAll; + size_t patIdx = SIZE_MAX, tgtIdx = SIZE_MAX; + + while (std::getline(in, line)) { + if (!line.empty() && line.back() == '\r') line.pop_back(); + + std::string tl = line; + trim(tl); + + if (!tl.empty() && tl[0] == '[' && tl.back() == ']') { + // Flush previous section + if (!section.empty() && inMatch) { + if (operation == KeyOp::ADD) { + size_t insertAt = (tgtIdx != SIZE_MAX) ? SIZE_MAX : (matchAll ? section.size() : patIdx + 1); + for (size_t i = 0; i < section.size(); ++i) { + if (i == tgtIdx) { + out << targetKey << "=" << value << '\n'; + } else { + out << section[i] << '\n'; + } + if (i + 1 == insertAt) { + out << targetKey << "=" << value << '\n'; + } + } + } else if (operation == KeyOp::REMOVE) { + for (size_t i = 0; i < section.size(); ++i) { + if (i != tgtIdx) out << section[i] << '\n'; + } + } + } else { + for (const auto& l : section) out << l << '\n'; + } + + section.clear(); + out << line << '\n'; + inMatch = matchAll; + patIdx = tgtIdx = SIZE_MAX; + continue; + } + + size_t eq = tl.find('='); + if (eq != std::string::npos) { + std::string k(tl, 0, eq); + trim(k); + if (!matchAll && k == patternKey) { inMatch = true; patIdx = section.size(); } + if (k == targetKey) tgtIdx = section.size(); + } + + section.push_back(line); + } + + // Flush last section + if (!section.empty() && inMatch) { + if (operation == KeyOp::ADD) { + size_t insertAt = (tgtIdx != SIZE_MAX) ? SIZE_MAX : (matchAll ? section.size() : patIdx + 1); + for (size_t i = 0; i < section.size(); ++i) { + if (i == tgtIdx) { + out << targetKey << "=" << value << '\n'; + } else { + out << section[i] << '\n'; + } + if (i + 1 == insertAt) { + out << targetKey << "=" << value << '\n'; + } + } + } else if (operation == KeyOp::REMOVE) { + for (size_t i = 0; i < section.size(); ++i) { + if (i != tgtIdx) out << section[i] << '\n'; + } + } + } else { + for (const auto& l : section) out << l << '\n'; + } + + in.close(); + out.close(); + #endif + + std::remove(filePath.c_str()); + std::rename(tempPath.c_str(), filePath.c_str()); + } + + + /** + * @brief Adds a key-value pair to all sections that contain a specified pattern key. + * + * If patternKey is empty, the key-value pair will be added to ALL sections. + * If patternKey is specified, only sections containing that key will be modified. + * + * @param filePath The path to the INI file. + * @param patternKey The key to search for (empty = all sections). + * @param newKey The new key to add. + * @param newValue The value for the new key. + */ + void addKeyToMatchingSections(const std::string& filePath, const std::string& patternKey, + const std::string& newKey, const std::string& newValue) { + processKeysInMatchingSections(filePath, patternKey, newKey, newValue, KeyOp::ADD); + } + + + /** + * @brief Removes a key from all sections that contain a specified pattern key. + * + * If patternKey is empty, the key will be removed from ALL sections. + * If patternKey is specified, only sections containing that key will have keyToRemove deleted. + * + * @param filePath The path to the INI file. + * @param patternKey The key to search for (empty = all sections). + * @param keyToRemove The key to remove from matching sections. + */ + void removeKeyFromMatchingSections(const std::string& filePath, const std::string& patternKey, + const std::string& keyToRemove) { + processKeysInMatchingSections(filePath, patternKey, keyToRemove, "", KeyOp::REMOVE); + } + } \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/json_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/json_funcs.cpp index b4acb50e..e96859e2 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/json_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/json_funcs.cpp @@ -12,7 +12,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "json_funcs.hpp" diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/list_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/list_funcs.cpp index b18edabf..fe7c5243 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/list_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/list_funcs.cpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include @@ -84,9 +84,9 @@ namespace ult { } } - - // Function to read file into a vector of strings with optional cap - std::vector readListFromFile(const std::string& filePath, size_t maxLines) { + + // Function to read file into a vector of strings with optional cap and newline preservation + std::vector readListFromFile(const std::string& filePath, size_t maxLines, bool preserveNewlines) { std::lock_guard lock(file_access_mutex); std::vector lines; @@ -109,18 +109,22 @@ namespace ult { break; } - // More efficient newline removal - len = strlen(buffer); - if (len > 0 && buffer[len - 1] == '\n') { - buffer[len - 1] = '\0'; - --len; - // Also remove carriage return if present - if (len > 0 && buffer[len - 1] == '\r') { + if (preserveNewlines) { + // Keep the line as-is, including newlines + lines.emplace_back(buffer); + } else { + // Remove newlines + len = strlen(buffer); + if (len > 0 && buffer[len - 1] == '\n') { buffer[len - 1] = '\0'; + --len; + // Also remove carriage return if present + if (len > 0 && buffer[len - 1] == '\r') { + buffer[len - 1] = '\0'; + } } + lines.emplace_back(buffer); } - - lines.emplace_back(buffer); } fclose(file); @@ -140,12 +144,17 @@ namespace ult { break; } - // Remove carriage return if present (getline removes \n but not \r) - if (!line.empty() && line.back() == '\r') { - line.pop_back(); + if (preserveNewlines) { + // Add back the newline that getline removed + line += '\n'; + lines.emplace_back(std::move(line)); + } else { + // Remove carriage return if present (getline removes \n but not \r) + if (!line.empty() && line.back() == '\r') { + line.pop_back(); + } + lines.emplace_back(std::move(line)); } - - lines.emplace_back(std::move(line)); } file.close(); @@ -282,7 +291,7 @@ namespace ult { // Function to read file into a set of strings - std::unordered_set readSetFromFile(const std::string& filePath) { + std::unordered_set readSetFromFile(const std::string& filePath, const std::string& packagePath) { std::lock_guard lock(file_access_mutex); std::unordered_set lines; @@ -304,7 +313,12 @@ namespace ult { if (len > 0 && buffer[len - 1] == '\n') { buffer[len - 1] = '\0'; } - lines.insert(buffer); + + std::string line = buffer; + if (!packagePath.empty()) { + preprocessPath(line, packagePath); + } + lines.insert(std::move(line)); } fclose(file); @@ -319,6 +333,9 @@ namespace ult { std::string line; while (std::getline(file, line)) { + if (!packagePath.empty()) { + preprocessPath(line, packagePath); + } lines.insert(std::move(line)); } diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/mod_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/mod_funcs.cpp index aacede6e..bf13342c 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/mod_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/mod_funcs.cpp @@ -14,7 +14,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2024-2025 ppkantorski ********************************************************************************/ #include diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/path_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/path_funcs.cpp index fed30684..b4e47670 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/path_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/path_funcs.cpp @@ -15,7 +15,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "path_funcs.hpp" @@ -24,7 +24,7 @@ namespace ult { std::atomic abortFileOp(false); - size_t COPY_BUFFER_SIZE = 65536/8; // Back to non-const as requested + size_t COPY_BUFFER_SIZE = 8192; // Back to non-const as requested std::atomic copyPercentage(-1); @@ -220,23 +220,25 @@ namespace ult { #endif } - /** - * @brief Deletes a file or directory. + * @brief Deletes a file or directory without using an explicit stack. * - * This function deletes the file or directory specified by `path`. It can delete both files and directories. + * This function deletes the file or directory specified by `pathToDelete`. + * It uses a state-machine approach with a current directory pointer instead + * of an explicit stack data structure. * - * @param path The path of the file or directory to be deleted. + * @param pathToDelete The path of the file or directory to be deleted. + * @param logSource The path to the log file where deletions are recorded. */ void deleteFileOrDirectory(const std::string& pathToDelete, const std::string& logSource) { - std::vector stack; + if (pathToDelete.empty()) return; - // Batch logging optimization - collect successful deletions instead of logging immediately std::vector successfulDeletions; const bool needsLogging = !logSource.empty(); - + + // Handle single file case const bool pathIsFile = pathToDelete.back() != '/'; - + if (pathIsFile) { if (isFile(pathToDelete)) { if (remove(pathToDelete.c_str()) == 0) { @@ -282,82 +284,104 @@ namespace ult { } return; } - - stack.push_back(pathToDelete); - struct stat pathStat; - std::string currentPath, filePath; - bool isEmpty; - - while (!stack.empty()) { - currentPath = stack.back(); - - if (stat(currentPath.c_str(), &pathStat) != 0) { - stack.pop_back(); + + // Directory deletion - stackless approach + // Normalize root path + std::string rootPath = pathToDelete; + if (rootPath.back() != '/') rootPath += '/'; + + std::string currentDir = rootPath; + struct stat st; + + while (true) { + DIR* directory = opendir(currentDir.c_str()); + if (!directory) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Failed to open directory: " + currentDir); + #endif + + // Can't open - either deleted or error. Try to move up. + if (currentDir == rootPath) break; // Done with root + + size_t pos = currentDir.find_last_of('/', currentDir.length() - 2); + if (pos != std::string::npos && pos >= rootPath.length() - 1) { + currentDir = currentDir.substr(0, pos + 1); + } else { + break; + } continue; } - - if (S_ISREG(pathStat.st_mode)) { // It's a file - stack.pop_back(); // Remove from stack before deletion - if (remove(currentPath.c_str()) == 0) { - // Batch logging - store successful deletion instead of writing immediately - if (needsLogging) { - successfulDeletions.push_back(currentPath); + + bool foundSubdir = false; + bool foundFile = false; + dirent* entry; + + while ((entry = readdir(directory)) != nullptr) { + const char* name = entry->d_name; + if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue; + + std::string childPath = currentDir + name; + if (stat(childPath.c_str(), &st) != 0) continue; + + if (S_ISDIR(st.st_mode)) { + // Found a subdirectory - dive into it + currentDir = childPath + "/"; + foundSubdir = true; + break; + } else if (S_ISREG(st.st_mode)) { + // Delete file immediately + if (remove(childPath.c_str()) == 0) { + if (needsLogging) { + successfulDeletions.push_back(childPath); + } + foundFile = true; + } else { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Failed to delete file: " + childPath); + #endif } } else { #if USING_LOGGING_DIRECTIVE if (!disableLogging) - logMessage("Failed to delete file: " + currentPath); + logMessage("Unknown file type: " + childPath); #endif } - } else if (S_ISDIR(pathStat.st_mode)) { // It's a directory - DIR* directory = opendir(currentPath.c_str()); - if (!directory) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) - logMessage("Failed to open directory: " + currentPath); - #endif - stack.pop_back(); - continue; - } - - dirent* entry; - isEmpty = true; - while ((entry = readdir(directory)) != nullptr) { - const std::string& fileName = entry->d_name; - if (fileName != "." && fileName != "..") { - filePath = currentPath + fileName; - stack.push_back(filePath + (filePath.back() == '/' ? "" : "/")); - isEmpty = false; - } - } - closedir(directory); - - if (isEmpty) { - stack.pop_back(); // Directory is now empty, safe to remove from stack - if (rmdir(currentPath.c_str()) == 0) { - // Note: Typically we don't log directory deletions, only files - // If you want to log directory deletions too, uncomment the lines below: - // if (needsLogging) { - // successfulDeletions.push_back(currentPath); - // } - } else { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) - logMessage("Failed to delete directory: " + currentPath); - #endif - } - } - } else { - stack.pop_back(); // Unknown file type, just remove from stack + } + closedir(directory); + + if (foundSubdir) { + // Continue with the subdirectory + continue; + } + + if (foundFile) { + // We deleted files, re-scan this directory to check if empty + continue; + } + + // Directory is empty - delete it and move up + if (rmdir(currentDir.c_str()) != 0) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) - logMessage("Unknown file type: " + currentPath); + logMessage("Failed to delete directory: " + currentDir); #endif } + + // Check if we just deleted the root directory + if (currentDir == rootPath) break; + + // Move up, but NEVER go above rootPath + size_t pos = currentDir.find_last_of('/', currentDir.length() - 2); + if (pos != std::string::npos && pos >= rootPath.length() - 1) { + currentDir = currentDir.substr(0, pos + 1); + } else { + break; // Safety: don't go above root + } } - - // KEY OPTIMIZATION: Batch write all successful deletions to log file at the end - // This eliminates the overhead of logging inside the hot loop + + // Batch write all successful deletions to log file at the end if (needsLogging && !successfulDeletions.empty()) { #if !USING_FSTREAM_DIRECTIVE createDirectory(getParentDirFromPath(logSource)); @@ -397,75 +421,89 @@ namespace ult { * * This function deletes files or directories specified by `pathPattern` by matching against a pattern. * It identifies files or directories that match the pattern and deletes them. + * Files/directories in the filterSet will be skipped. * * @param pathPattern The pattern used to match and delete files or directories. + * @param logSource Optional log source identifier. + * @param filterSet Optional set of paths to exclude from deletion (nullptr to delete all). */ - void deleteFileOrDirectoryByPattern(const std::string& pathPattern, const std::string& logSource) { - //logMessage("pathPattern: "+pathPattern); + void deleteFileOrDirectoryByPattern(const std::string& pathPattern, const std::string& logSource, + const std::unordered_set* filterSet) { + fileList = getFilesListByWildcards(pathPattern); for (auto& path : fileList) { - //logMessage("path: "+path); - deleteFileOrDirectory(path, logSource); + // Check filter before deleting + const bool shouldDelete = !filterSet || filterSet->find(path) == filterSet->end(); + + if (shouldDelete) { + deleteFileOrDirectory(path, logSource); + } path = ""; } + fileList.clear(); fileList.shrink_to_fit(); } // Helper function to reverse a log file safely void reverseLogFile(const std::string& logFilePath) { - std::vector lines; - - #if !USING_FSTREAM_DIRECTIVE - FILE* file = fopen(logFilePath.c_str(), "r"); + // First pass: count lines and build offset index + FILE* file = fopen(logFilePath.c_str(), "rb"); if (!file) return; - + setvbuf(file, nullptr, _IOFBF, 8192); - + + std::vector lineOffsets; + + lineOffsets.push_back(0); // First line starts at offset 0 + static constexpr size_t BUFFER_SIZE = 8192; char buffer[BUFFER_SIZE]; - + long currentOffset = 0; + while (fgets(buffer, BUFFER_SIZE, file)) { - size_t len = strlen(buffer); - if (len > 0 && buffer[len - 1] == '\n') buffer[len - 1] = '\0'; - lines.emplace_back(buffer); // std::string constructor ensures proper termination + currentOffset = ftell(file); + lineOffsets.push_back(currentOffset); } + + // Remove the last offset (it's past EOF) + if (!lineOffsets.empty()) lineOffsets.pop_back(); + + if (lineOffsets.empty()) { + fclose(file); + return; + } + + // Create temp file + std::string tempPath = logFilePath + ".tmp"; + FILE* outFile = fopen(tempPath.c_str(), "wb"); + if (!outFile) { + fclose(file); + return; + } + + setvbuf(outFile, nullptr, _IOFBF, 8192); + + // Second pass: write lines in reverse order + for (auto it = lineOffsets.rbegin(); it != lineOffsets.rend(); ++it) { + fseek(file, *it, SEEK_SET); + if (fgets(buffer, BUFFER_SIZE, file)) { + // Remove trailing newline if present + size_t len = strlen(buffer); + if (len > 0 && buffer[len - 1] == '\n') buffer[len - 1] = '\0'; + + fprintf(outFile, "%s\n", buffer); + } + } + + fflush(outFile); + fclose(outFile); fclose(file); - - FILE* outFile = fopen(logFilePath.c_str(), "w"); - if (outFile) { - setvbuf(outFile, nullptr, _IOFBF, 8192); - for (auto it = lines.rbegin(); it != lines.rend(); ++it) { - // Use fprintf instead of fputs to avoid any residual buffer issues - fprintf(outFile, "%s\n", it->c_str()); - } - fflush(outFile); - fclose(outFile); - } - #else - std::ifstream file(logFilePath); - if (!file.is_open()) return; - - static char readBuffer[8192]; - file.rdbuf()->pubsetbuf(readBuffer, sizeof(readBuffer)); - - std::string line; - while (std::getline(file, line)) lines.push_back(std::move(line)); - file.close(); - - std::ofstream outFile(logFilePath); - if (outFile.is_open()) { - static char writeBuffer[8192]; - outFile.rdbuf()->pubsetbuf(writeBuffer, sizeof(writeBuffer)); - - for (auto it = lines.rbegin(); it != lines.rend(); ++it) { - outFile << *it << '\n'; - } - outFile.flush(); - outFile.close(); - } - #endif + + // Replace original with temp + remove(logFilePath.c_str()); + rename(tempPath.c_str(), logFilePath.c_str()); } void moveDirectory(const std::string& sourcePath, const std::string& destinationPath, @@ -487,142 +525,125 @@ namespace ult { } bool needsLogging = !logSource.empty() || !logDestination.empty(); - - { - std::vector> stack; - std::vector directoriesToRemove; - stack.push_back({sourcePath, destinationPath}); - - #if !USING_FSTREAM_DIRECTIVE - FILE* logSrcFile = nullptr; - FILE* logDestFile = nullptr; - - if (needsLogging && !logSource.empty()) { - createDirectory(getParentDirFromPath(logSource)); - logSrcFile = fopen(logSource.c_str(), "w"); - if (logSrcFile) setvbuf(logSrcFile, nullptr, _IOFBF, 8192); - } - if (needsLogging && !logDestination.empty()) { - createDirectory(getParentDirFromPath(logDestination)); - logDestFile = fopen(logDestination.c_str(), "w"); - if (logDestFile) setvbuf(logDestFile, nullptr, _IOFBF, 8192); - } - #else - std::unique_ptr logSrcFile, logDestFile; - static char srcBuffer[8192], destBuffer[8192]; - - if (needsLogging && !logSource.empty()) { - createDirectory(getParentDirFromPath(logSource)); - logSrcFile = std::make_unique(logSource); - if (logSrcFile->is_open()) logSrcFile->rdbuf()->pubsetbuf(srcBuffer, sizeof(srcBuffer)); - } - if (needsLogging && !logDestination.empty()) { - createDirectory(getParentDirFromPath(logDestination)); - logDestFile = std::make_unique(logDestination); - if (logDestFile->is_open()) logDestFile->rdbuf()->pubsetbuf(destBuffer, sizeof(destBuffer)); - } - #endif - - std::string fullPathSrc, fullPathDst; - //fullPathSrc.reserve(1024); - //fullPathDst.reserve(1024); - - dirent* entry; - DIR* dir; - const char* name; - - std::string currentSource, currentDestination; - while (!stack.empty()) { - std::tie(currentSource, currentDestination) = stack.back(); - stack.pop_back(); - - dir = opendir(currentSource.c_str()); - if (!dir) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) logMessage("Failed to open source directory: " + currentSource); - #endif - continue; - } - - while ((entry = readdir(dir)) != nullptr) { - name = entry->d_name; - if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) continue; - - fullPathSrc.assign(currentSource); - if (!fullPathSrc.empty() && fullPathSrc.back() != '/') fullPathSrc += '/'; - fullPathSrc += name; - - fullPathDst.assign(currentDestination); - if (!fullPathDst.empty() && fullPathDst.back() != '/') fullPathDst += '/'; - fullPathDst += name; - - if (entry->d_type == DT_DIR) { - if (mkdir(fullPathDst.c_str(), 0777) != 0 && errno != EEXIST) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) logMessage("Failed to create destination directory: " + fullPathDst); - #endif - continue; - } - stack.emplace_back(fullPathSrc, fullPathDst); - directoriesToRemove.emplace_back(fullPathSrc); - - if (needsLogging) { - #if !USING_FSTREAM_DIRECTIVE - if (logSrcFile) fprintf(logSrcFile, "%s/\n", fullPathSrc.c_str()), fflush(logSrcFile); - if (logDestFile) fprintf(logDestFile, "%s/\n", fullPathDst.c_str()), fflush(logDestFile); - #else - if (logSrcFile && logSrcFile->is_open()) { *logSrcFile << fullPathSrc << "/\n"; logSrcFile->flush(); } - if (logDestFile && logDestFile->is_open()) { *logDestFile << fullPathDst << "/\n"; logDestFile->flush(); } - #endif - } - } else { - remove(fullPathDst.c_str()); - if (rename(fullPathSrc.c_str(), fullPathDst.c_str()) == 0) { - if (needsLogging) { - #if !USING_FSTREAM_DIRECTIVE - if (logSrcFile) fprintf(logSrcFile, "%s\n", fullPathSrc.c_str()), fflush(logSrcFile); - if (logDestFile) fprintf(logDestFile, "%s\n", fullPathDst.c_str()), fflush(logDestFile); - #else - if (logSrcFile && logSrcFile->is_open()) { *logSrcFile << fullPathSrc << '\n'; logSrcFile->flush(); } - if (logDestFile && logDestFile->is_open()) { *logDestFile << fullPathDst << '\n'; logDestFile->flush(); } - #endif - } - } else { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) logMessage("Failed to move: " + fullPathSrc); - #endif - } - } - } - closedir(dir); - } - - #if !USING_FSTREAM_DIRECTIVE - if (logSrcFile) fclose(logSrcFile); - if (logDestFile) fclose(logDestFile); - #else - if (logSrcFile) { logSrcFile->flush(); logSrcFile->close(); } - if (logDestFile) { logDestFile->flush(); logDestFile->close(); } - #endif - - // Clean up directories - for (auto it = directoriesToRemove.rbegin(); it != directoriesToRemove.rend(); ++it) { - if (rmdir(it->c_str()) != 0) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) logMessage("Failed to delete source directory: " + *it); - #endif - } - } - - if (rmdir(sourcePath.c_str()) != 0) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) logMessage("Failed to delete source directory: " + sourcePath); - #endif - } + // Open log files once at the start + FILE* logSrcFile = nullptr; + FILE* logDestFile = nullptr; + + if (needsLogging && !logSource.empty()) { + createDirectory(getParentDirFromPath(logSource)); + logSrcFile = fopen(logSource.c_str(), "w"); + if (logSrcFile) setvbuf(logSrcFile, nullptr, _IOFBF, 8192); + } + if (needsLogging && !logDestination.empty()) { + createDirectory(getParentDirFromPath(logDestination)); + logDestFile = fopen(logDestination.c_str(), "w"); + if (logDestFile) setvbuf(logDestFile, nullptr, _IOFBF, 8192); } - // Safely reverse logs now + // Recursive helper that moves files/dirs and logs in post-order (deepest first) + std::function moveRecursive = + [&](const std::string& srcPath, const std::string& dstPath) { + + DIR* dir = opendir(srcPath.c_str()); + if (!dir) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) logMessage("Failed to open source directory: " + srcPath); + #endif + return; + } + + //bool hasContent = false; + dirent* entry; + + while ((entry = readdir(dir)) != nullptr) { + const char* name = entry->d_name; + if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) { + continue; + } + + //hasContent = true; + + // Build full paths + std::string fullSrcPath = srcPath; + if (!fullSrcPath.empty() && fullSrcPath.back() != '/') fullSrcPath += '/'; + fullSrcPath += name; + + std::string fullDstPath = dstPath; + if (!fullDstPath.empty() && fullDstPath.back() != '/') fullDstPath += '/'; + fullDstPath += name; + + // Use d_type if available + #ifdef _DIRENT_HAVE_D_TYPE + if (entry->d_type == DT_DIR) { + // Create destination directory + if (mkdir(fullDstPath.c_str(), 0777) != 0 && errno != EEXIST) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) logMessage("Failed to create destination directory: " + fullDstPath); + #endif + continue; + } + + // Recurse into subdirectory + moveRecursive(fullSrcPath, fullDstPath); + + // Remove the now-empty source directory + if (rmdir(fullSrcPath.c_str()) != 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) logMessage("Failed to delete source directory: " + fullSrcPath); + #endif + } + + // Log after processing (post-order) + if (needsLogging) { + if (logSrcFile) { + fprintf(logSrcFile, "%s/\n", fullSrcPath.c_str()); + } + if (logDestFile) { + fprintf(logDestFile, "%s/\n", fullDstPath.c_str()); + } + } + continue; + } else if (entry->d_type != DT_UNKNOWN && entry->d_type != DT_REG) { + // Skip non-regular files (symlinks, devices, etc.) + continue; + } + #endif + // Move regular file + remove(fullDstPath.c_str()); + if (rename(fullSrcPath.c_str(), fullDstPath.c_str()) == 0) { + if (needsLogging) { + if (logSrcFile) { + fprintf(logSrcFile, "%s\n", fullSrcPath.c_str()); + } + if (logDestFile) { + fprintf(logDestFile, "%s\n", fullDstPath.c_str()); + } + } + } else { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) logMessage("Failed to move: " + fullSrcPath); + #endif + } + } + closedir(dir); + }; + + // Start the recursive move + moveRecursive(sourcePath, destinationPath); + + // Close log files + if (logSrcFile) fclose(logSrcFile); + if (logDestFile) fclose(logDestFile); + + // Remove the top-level source directory + if (rmdir(sourcePath.c_str()) != 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) logMessage("Failed to delete source directory: " + sourcePath); + #endif + } + + // Reverse logs to get shallowest-first order if (needsLogging) { if (!logSource.empty()) reverseLogFile(logSource); if (!logDestination.empty()) reverseLogFile(logDestination); @@ -771,43 +792,40 @@ namespace ult { * * This function identifies files or directories that match the `sourcePathPattern` and moves them to the `destinationPath`. * It processes each matching entry in the source directory pattern and moves them to the specified destination. + * Files/directories in the filterSet will be skipped. * * @param sourcePathPattern The pattern used to match files or directories to be moved. * @param destinationPath The destination directory where matching files or directories will be moved. + * @param logSource Optional log source identifier. + * @param logDestination Optional log destination identifier. + * @param filterSet Optional set of paths to exclude from moving (nullptr to move all). */ void moveFilesOrDirectoriesByPattern(const std::string& sourcePathPattern, const std::string& destinationPath, - const std::string& logSource, const std::string& logDestination) { + const std::string& logSource, const std::string& logDestination, const std::unordered_set* filterSet) { fileList = getFilesListByWildcards(sourcePathPattern); - //std::string fileListAsString; - //for (const std::string& filePath : fileList) - // fileListAsString += filePath + "\n"; - //logMessage("File List:\n" + fileListAsString); - - //logMessage("pre loop"); std::string folderName, fixedDestinationPath; // Iterate through the file list for (std::string& sourceFileOrDirectory : fileList) { - //logMessage("sourceFileOrDirectory: "+sourceFileOrDirectory); - // if sourceFile is a file (Needs condition handling) - if (!isDirectory(sourceFileOrDirectory)) { - //logMessage("destinationPath: "+destinationPath); - moveFileOrDirectory(sourceFileOrDirectory, destinationPath, logSource, logDestination); - } else if (isDirectory(sourceFileOrDirectory)) { - // if sourceFile is a directory (needs conditoin handling) - folderName = getNameFromPath(sourceFileOrDirectory); - fixedDestinationPath = destinationPath + folderName + "/"; - - //logMessage("fixedDestinationPath: "+fixedDestinationPath); - - moveFileOrDirectory(sourceFileOrDirectory, fixedDestinationPath, logSource, logDestination); + // Check filter before moving + const bool shouldMove = !filterSet || filterSet->find(sourceFileOrDirectory) == filterSet->end(); + + if (shouldMove) { + // if sourceFile is a file + if (!isDirectory(sourceFileOrDirectory)) { + moveFileOrDirectory(sourceFileOrDirectory, destinationPath, logSource, logDestination); + } else if (isDirectory(sourceFileOrDirectory)) { + // if sourceFile is a directory + folderName = getNameFromPath(sourceFileOrDirectory); + fixedDestinationPath = destinationPath + folderName + "/"; + moveFileOrDirectory(sourceFileOrDirectory, fixedDestinationPath, logSource, logDestination); + } } sourceFileOrDirectory = ""; } - //logMessage("post loop"); - + fileList.clear(); fileList.shrink_to_fit(); } @@ -1025,45 +1043,65 @@ namespace ult { if (S_ISDIR(statbuf.st_mode)) { long long totalSize = 0; - std::queue directories; - directories.push(path); - std::string currentPath, newPath; - while (!directories.empty()) { - currentPath = directories.front(); - directories.pop(); - - DIR* dir = opendir(currentPath.c_str()); - if (!dir) { - continue; // Cannot open directory, skip it - } - - dirent* entry; - while ((entry = readdir(dir)) != nullptr) { - if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) { - continue; // Skip "." and ".." - } - newPath = currentPath + "/" + entry->d_name; - - if (lstat(newPath.c_str(), &statbuf) != 0) { - continue; // Cannot stat file, skip it - } - - if (S_ISREG(statbuf.st_mode)) { - totalSize += statbuf.st_size; - } else if (S_ISDIR(statbuf.st_mode)) { - directories.push(newPath); // Push subdirectory onto queue for processing - } - } - closedir(dir); + DIR* dir = opendir(path.c_str()); + if (!dir) { + return 0; // Cannot open directory } + // Calculate base path with slash for efficient concatenation + bool needsSlash = (!path.empty() && path.back() != '/'); + + dirent* entry; + while ((entry = readdir(dir)) != nullptr) { + // Fast check for "." and ".." + if (entry->d_name[0] == '.') { + if (entry->d_name[1] == '\0' || + (entry->d_name[1] == '.' && entry->d_name[2] == '\0')) { + continue; + } + } + + // Build the full path + std::string fullPath = path; + if (needsSlash) fullPath += '/'; + fullPath += entry->d_name; + + // Use d_type if available (much faster than lstat) + #ifdef _DIRENT_HAVE_D_TYPE + if (entry->d_type != DT_UNKNOWN) { + if (entry->d_type == DT_REG) { + // Regular file - get size + if (lstat(fullPath.c_str(), &statbuf) == 0) { + totalSize += statbuf.st_size; + } + } else if (entry->d_type == DT_DIR) { + // Directory - recurse + totalSize += getTotalSize(fullPath); + } + // Ignore other types (symlinks, devices, etc.) + continue; + } + #endif + // Fallback to lstat if d_type unavailable or unknown + if (lstat(fullPath.c_str(), &statbuf) != 0) { + continue; // Cannot stat file, skip it + } + + if (S_ISREG(statbuf.st_mode)) { + totalSize += statbuf.st_size; + } else if (S_ISDIR(statbuf.st_mode)) { + totalSize += getTotalSize(fullPath); + } + } + closedir(dir); + return totalSize; } return 0; // Non-file/directory entries } - + /** * @brief Copies a file or directory from the source path to the destination path. * @@ -1079,189 +1117,182 @@ namespace ult { bool isTopLevelCall = totalBytesCopied == nullptr; long long tempBytesCopied = 0; - // Batch logging optimization - collect successful operations instead of logging immediately - std::vector successfulSources, successfulDestinations; bool needsLogging = !logSource.empty() || !logDestination.empty(); - bool filesCopied = false; if (isTopLevelCall) { totalSize = getTotalSize(fromPath); totalBytesCopied = &tempBytesCopied; } - if (toPath.back() != '/') { - // If toPath is a file, create its parent directory and copy the file - createDirectory(getParentDirFromPath(toPath)); - copySingleFile(fromPath, toPath, *totalBytesCopied, totalSize, logSource, logDestination); + // Check abort flag + if (abortFileOp.load(std::memory_order_acquire)) { + copyPercentage.store(-1, std::memory_order_release); return; } - // Ensure the toPath directory exists - createDirectory(toPath); - - std::vector> directories; - directories.emplace_back(fromPath, toPath); // Use emplace_back for efficiency - - size_t currentDirectoryIndex = 0; - - // Pre-declare strings to avoid repeated allocations - std::string filename, toFilePath, toDirPath, currentFromPath, currentToPath; - std::string subFromPath, subToPath; - struct stat fromStat; - - while (currentDirectoryIndex < directories.size()) { - if (abortFileOp.load(std::memory_order_acquire)) { - copyPercentage.store(-1, std::memory_order_release); - return; - } - - // Use structured binding more efficiently - const auto& [currentFrom, currentTo] = directories[currentDirectoryIndex++]; - currentFromPath = currentFrom; - currentToPath = currentTo; - - if (stat(currentFromPath.c_str(), &fromStat) != 0) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) - logMessage("Failed to get stat of " + currentFromPath); - #endif - continue; - } - - if (S_ISREG(fromStat.st_mode)) { - // If it's a regular file, copy it to the toPath directory - filename = getNameFromPath(currentFromPath); - - // More efficient path building - toFilePath.assign(getParentDirFromPath(currentToPath)); - toFilePath += '/'; - toFilePath += filename; - - createDirectory(getParentDirFromPath(toFilePath)); // Ensure the parent directory exists - copySingleFile(currentFromPath, toFilePath, *totalBytesCopied, totalSize, logSource, logDestination); - - // Mark that files were copied - filesCopied = true; - - if (totalSize > 0) { - copyPercentage.store(static_cast((*totalBytesCopied * 100) / totalSize), std::memory_order_release); // Update progress - } - } else if (S_ISDIR(fromStat.st_mode)) { - // If it's a directory, iterate over its contents and add them to the vector for processing - DIR* dir = opendir(currentFromPath.c_str()); - if (!dir) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) - logMessage("Failed to open directory: " + currentFromPath); - #endif - continue; - } - - bool hasContent = false; - // Cache current path lengths for efficient string building - dirent* entry; - while ((entry = readdir(dir)) != nullptr) { - if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) continue; - - hasContent = true; - - // More efficient path building - subFromPath.clear(); - subFromPath.assign(currentFromPath); - subFromPath += '/'; - subFromPath += entry->d_name; - - subToPath.clear(); - subToPath.assign(currentToPath); - subToPath += '/'; - subToPath += entry->d_name; - - directories.emplace_back(std::move(subFromPath), std::move(subToPath)); // Use move semantics - } - closedir(dir); - - // Log this directory if it has content and we need logging - if (hasContent && needsLogging) { - successfulSources.push_back(currentFromPath + "/"); - successfulDestinations.push_back(currentToPath + "/"); - } - } + if (stat(fromPath.c_str(), &fromStat) != 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Failed to get stat of " + fromPath); + #endif + return; } - // Batch write all successful operations to log files at the end - if (isTopLevelCall && needsLogging && filesCopied && !successfulSources.empty()) { + if (S_ISREG(fromStat.st_mode)) { + // It's a regular file + if (toPath.back() == '/') { + // toPath is a directory, copy file into it + std::string filename = getNameFromPath(fromPath); + std::string toFilePath = toPath + filename; + + createDirectory(toPath); + copySingleFile(fromPath, toFilePath, *totalBytesCopied, totalSize, logSource, logDestination); + } else { + // toPath is a file path, copy directly + createDirectory(getParentDirFromPath(toPath)); + copySingleFile(fromPath, toPath, *totalBytesCopied, totalSize, logSource, logDestination); + } + + if (totalSize > 0) { + copyPercentage.store(static_cast((*totalBytesCopied * 100) / totalSize), std::memory_order_release); + } + } else if (S_ISDIR(fromStat.st_mode)) { + // It's a directory + std::string actualToPath = toPath; + + // Ensure toPath ends with / + if (actualToPath.back() != '/') { + actualToPath += '/'; + } + + // Create the destination directory + createDirectory(actualToPath); + + // Open and iterate through the directory + DIR* dir = opendir(fromPath.c_str()); + if (!dir) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Failed to open directory: " + fromPath); + #endif + return; + } + + bool hasContent = false; + dirent* entry; + while ((entry = readdir(dir)) != nullptr) { + if (abortFileOp.load(std::memory_order_acquire)) { + closedir(dir); + copyPercentage.store(-1, std::memory_order_release); + return; + } + + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) continue; + + hasContent = true; + + // Build paths for recursion - ensure fromPath has trailing slash + std::string fromWithSlash = fromPath; + if (fromWithSlash.back() != '/') { + fromWithSlash += '/'; + } + + std::string subFromPath = fromWithSlash + entry->d_name; + std::string subToPath = actualToPath + entry->d_name; + + // Check if this entry is a directory and add trailing slash if so + struct stat entryStat; + if (stat(subFromPath.c_str(), &entryStat) == 0 && S_ISDIR(entryStat.st_mode)) { + subToPath += '/'; + } + + // Recursive call - this will write logs in DFS order (deepest first) + copyFileOrDirectory(subFromPath, subToPath, totalBytesCopied, totalSize, logSource, logDestination); + } + closedir(dir); + + // Log this directory AFTER processing its contents (post-order traversal) + if (hasContent && needsLogging) { + std::string logFromPath = fromPath; + if (logFromPath.back() != '/') logFromPath += '/'; + + std::string logToPath = actualToPath; + #if !USING_FSTREAM_DIRECTIVE - if (!logSource.empty()) { - createDirectory(getParentDirFromPath(logSource)); - if (FILE* logFile = fopen(logSource.c_str(), "a")) { - for (auto it = successfulSources.rbegin(); it != successfulSources.rend(); ++it) { - writeLog(logFile, *it); + if (!logSource.empty()) { + createDirectory(getParentDirFromPath(logSource)); + if (FILE* logFile = fopen(logSource.c_str(), "a")) { + writeLog(logFile, logFromPath); + fclose(logFile); } - fclose(logFile); + #if USING_LOGGING_DIRECTIVE + else { + if (!disableLogging) + logMessage("Failed to open source log file: " + logSource); + } + #endif } - #if USING_LOGGING_DIRECTIVE - else { - if (!disableLogging) - logMessage("Failed to open source log file: " + logSource); - } - #endif - } - if (!logDestination.empty()) { - createDirectory(getParentDirFromPath(logDestination)); - if (FILE* logFile = fopen(logDestination.c_str(), "a")) { - for (auto it = successfulDestinations.rbegin(); it != successfulDestinations.rend(); ++it) { - writeLog(logFile, *it); + if (!logDestination.empty()) { + createDirectory(getParentDirFromPath(logDestination)); + if (FILE* logFile = fopen(logDestination.c_str(), "a")) { + writeLog(logFile, logToPath); + fclose(logFile); } - fclose(logFile); + #if USING_LOGGING_DIRECTIVE + else { + if (!disableLogging) + logMessage("Failed to open destination log file: " + logDestination); + } + #endif } - #if USING_LOGGING_DIRECTIVE - else { - if (!disableLogging) - logMessage("Failed to open destination log file: " + logDestination); - } - #endif - } #else - if (!logSource.empty()) { - createDirectory(getParentDirFromPath(logSource)); - std::ofstream logSourceFile(logSource, std::ios::app); - if (logSourceFile.is_open()) { - for (auto it = successfulSources.rbegin(); it != successfulSources.rend(); ++it) { - writeLog(logSourceFile, *it); + if (!logSource.empty()) { + createDirectory(getParentDirFromPath(logSource)); + std::ofstream logSourceFile(logSource, std::ios::app); + if (logSourceFile.is_open()) { + writeLog(logSourceFile, logFromPath); + logSourceFile.close(); } - logSourceFile.close(); + #if USING_LOGGING_DIRECTIVE + else { + if (!disableLogging) + logMessage("Failed to open source log file: " + logSource); + } + #endif } - #if USING_LOGGING_DIRECTIVE - else { - if (!disableLogging) - logMessage("Failed to open source log file: " + logSource); - } - #endif - } - if (!logDestination.empty()) { - createDirectory(getParentDirFromPath(logDestination)); - std::ofstream logDestFile(logDestination, std::ios::app); - if (logDestFile.is_open()) { - for (auto it = successfulDestinations.rbegin(); it != successfulDestinations.rend(); ++it) { - writeLog(logDestFile, *it); + if (!logDestination.empty()) { + createDirectory(getParentDirFromPath(logDestination)); + std::ofstream logDestFile(logDestination, std::ios::app); + if (logDestFile.is_open()) { + writeLog(logDestFile, logToPath); + logDestFile.close(); } - logDestFile.close(); + #if USING_LOGGING_DIRECTIVE + else { + if (!disableLogging) + logMessage("Failed to open destination log file: " + logDestination); + } + #endif } - #if USING_LOGGING_DIRECTIVE - else { - if (!disableLogging) - logMessage("Failed to open destination log file: " + logDestination); - } - #endif - } #endif + } } if (isTopLevelCall) { - copyPercentage.store(100, std::memory_order_release); // Set progress to 100% on completion of top-level call + copyPercentage.store(100, std::memory_order_release); + + // Reverse the log files to match original behavior (shallowest directories first) + if (needsLogging) { + if (!logSource.empty()) { + reverseLogFile(logSource); + } + if (!logDestination.empty()) { + reverseLogFile(logDestination); + } + } } } @@ -1272,27 +1303,41 @@ namespace ult { * * This function identifies files or directories that match the `sourcePathPattern` and copies them to the `toDirectory`. * It processes each matching entry in the source directory pattern and copies them to the specified destination. + * Files/directories in the filterSet will be skipped. * * @param sourcePathPattern The pattern used to match files or directories to be copied. * @param toDirectory The destination directory where matching files or directories will be copied. + * @param logSource Optional log source identifier. + * @param logDestination Optional log destination identifier. + * @param filterSet Optional set of paths to exclude from copying (nullptr to copy all). */ void copyFileOrDirectoryByPattern(const std::string& sourcePathPattern, const std::string& toDirectory, - const std::string& logSource, const std::string& logDestination) { + const std::string& logSource, const std::string& logDestination, const std::unordered_set* filterSet) { + fileList = getFilesListByWildcards(sourcePathPattern); + + // Calculate total size only for files that will actually be copied long long totalSize = 0; for (const std::string& path : fileList) { - totalSize += getTotalSize(path); + const bool shouldCopy = !filterSet || filterSet->find(path) == filterSet->end(); + if (shouldCopy) { + totalSize += getTotalSize(path); + } } long long totalBytesCopied = 0; for (std::string& sourcePath : fileList) { - copyFileOrDirectory(sourcePath, toDirectory, &totalBytesCopied, totalSize, logSource, logDestination); + // Check filter before copying + const bool shouldCopy = !filterSet || filterSet->find(sourcePath) == filterSet->end(); + + if (shouldCopy) { + copyFileOrDirectory(sourcePath, toDirectory, &totalBytesCopied, totalSize, logSource, logDestination); + } sourcePath = ""; } - + fileList.clear(); fileList.shrink_to_fit(); - //copyPercentage.store(-1, std::memory_order_release); // Reset after operation } @@ -1386,7 +1431,7 @@ namespace ult { fileList.clear(); fileList.shrink_to_fit(); } - + /** * @brief Removes all files starting with "._" from a directory and its subdirectories. * @@ -1397,91 +1442,81 @@ namespace ult { * @param sourcePath The path of the directory to clean. */ void dotCleanDirectory(const std::string& sourcePath) { - DIR* rootDir = opendir(sourcePath.c_str()); - if (!rootDir) { + DIR* dir = opendir(sourcePath.c_str()); + if (!dir) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) logMessage("Path is not a directory or cannot open: " + sourcePath); #endif return; } - closedir(rootDir); - - std::vector stack; - stack.push_back(sourcePath); struct dirent* entry; - struct stat pathStat{}; - std::string subDirPath; // reuse for directories - std::string filePath; // reuse for dot-underscore files + struct stat pathStat; + bool needsSlash = (!sourcePath.empty() && sourcePath.back() != '/'); - while (!stack.empty()) { - const std::string currentPath = std::move(stack.back()); - stack.pop_back(); + while ((entry = readdir(dir)) != nullptr) { + const char* fileName = entry->d_name; - DIR* directory = opendir(currentPath.c_str()); - if (!directory) { - #if USING_LOGGING_DIRECTIVE - if (!disableLogging) - logMessage("Failed to open directory: " + currentPath); - #endif + // Fast skip for "." and ".." + if (fileName[0] == '.' && + (fileName[1] == '\0' || (fileName[1] == '.' && fileName[2] == '\0'))) { continue; } - while ((entry = readdir(directory)) != nullptr) { - const char* fileName = entry->d_name; + // Build full path + std::string fullPath = sourcePath; + if (needsSlash) fullPath += '/'; + fullPath += fileName; - // Skip "." and ".." - if (fileName[0] == '.' && - (fileName[1] == '\0' || (fileName[1] == '.' && fileName[2] == '\0'))) { - continue; - } + // Handle directories - recurse into them + if (entry->d_type == DT_DIR) { + dotCleanDirectory(fullPath); + continue; + } - // Handle directories first - if (entry->d_type == DT_DIR) { - subDirPath.clear(); - subDirPath = currentPath; - if (!subDirPath.empty() && subDirPath.back() != '/') - subDirPath += '/'; - subDirPath += fileName; - stack.push_back(std::move(subDirPath)); - continue; - } + // Only care about "._" files and ".DS_Store" + bool isDotUnderscore = (fileName[0] == '.' && fileName[1] == '_'); + bool isDSStore = (fileName[0] == '.' && fileName[1] == 'D' && fileName[2] == 'S' && + fileName[3] == '_' && fileName[4] == 'S' && fileName[5] == 't' && + fileName[6] == 'o' && fileName[7] == 'r' && fileName[8] == 'e' && + fileName[9] == '\0'); + + if (!isDotUnderscore && !isDSStore) { + continue; + } - // Only care about "._" files - if (!(fileName[0] == '.' && fileName[1] == '_')) - continue; - - // Only process files or unknown types - if (entry->d_type != DT_REG && entry->d_type != DT_UNKNOWN) - continue; - - filePath.clear(); - filePath = currentPath; - if (!filePath.empty() && filePath.back() != '/') - filePath += '/'; - filePath += fileName; - - // If type unknown, verify with stat - if (entry->d_type == DT_UNKNOWN) { - if (stat(filePath.c_str(), &pathStat) != 0 || !S_ISREG(pathStat.st_mode)) - continue; - } - - if (remove(filePath.c_str()) == 0) { + // Process regular files or unknown types + if (entry->d_type == DT_REG) { + if (remove(fullPath.c_str()) == 0) { #if USING_LOGGING_DIRECTIVE if (!disableLogging) - logMessage("Removed dot-underscore file: " + filePath); + logMessage("Removed dot-underscore file: " + fullPath); #endif } else { #if USING_LOGGING_DIRECTIVE if (!disableLogging) - logMessage("Failed to remove dot-underscore file: " + filePath); + logMessage("Failed to remove dot-underscore file: " + fullPath); #endif } + } else if (entry->d_type == DT_UNKNOWN) { + // Verify with stat if type is unknown + if (stat(fullPath.c_str(), &pathStat) == 0 && S_ISREG(pathStat.st_mode)) { + if (remove(fullPath.c_str()) == 0) { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Removed dot-underscore file: " + fullPath); + #endif + } else { + #if USING_LOGGING_DIRECTIVE + if (!disableLogging) + logMessage("Failed to remove dot-underscore file: " + fullPath); + #endif + } + } } - - closedir(directory); } + + closedir(dir); } } \ No newline at end of file diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/string_funcs.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/string_funcs.cpp index 3788eb23..9738df36 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/string_funcs.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/string_funcs.cpp @@ -15,7 +15,7 @@ * of the project's documentation and must remain intact. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include "string_funcs.hpp" @@ -226,12 +226,14 @@ namespace ult { * @return The string with quotes removed. */ void removeQuotes(std::string& str) { - if (str.size() >= 2) { + const size_t len = str.size(); + if (len >= 2) { const char front = str[0]; - const char back = str[str.size() - 1]; + const char back = str[len - 1]; + if ((front == '\'' && back == '\'') || (front == '"' && back == '"')) { - str.erase(0, 1); - str.pop_back(); + std::memmove(&str[0], &str[1], len - 2); + str.resize(len - 2); } } } @@ -245,25 +247,25 @@ namespace ult { * @param input The input string to process. * @return The string with multiple slashes replaced. */ - std::string replaceMultipleSlashes(const std::string& input) { - std::string output; - output.reserve(input.size()); // Reserve space for the output string - - bool previousSlash = false; - for (char c : input) { - if (c == '/') { - if (!previousSlash) { - output.push_back(c); - } - previousSlash = true; - } else { - output.push_back(c); - previousSlash = false; - } - } - - return output; - } + //std::string replaceMultipleSlashes(const std::string& input) { + // std::string output; + // output.reserve(input.size()); // Reserve space for the output string + // + // bool previousSlash = false; + // for (char c : input) { + // if (c == '/') { + // if (!previousSlash) { + // output.push_back(c); + // } + // previousSlash = true; + // } else { + // output.push_back(c); + // previousSlash = false; + // } + // } + // + // return output; + //} @@ -366,7 +368,7 @@ namespace ult { * @param filename The input filename from which to drop the extension, passed by reference and modified in-place. */ void dropExtension(std::string& filename) { - const size_t lastDotPos = filename.find_last_of('.'); // Single char instead of string + const size_t lastDotPos = filename.rfind('.'); if (lastDotPos != std::string::npos) { filename.resize(lastDotPos); } @@ -510,9 +512,12 @@ namespace ult { * @param input The input string from which to remove the tag, passed by reference and modified in-place. */ void removeTag(std::string &input) { - const size_t pos = input.find('?'); - if (pos != std::string::npos) { - input.resize(pos); // Modify the string in-place to remove everything after the '?' + const char* pos = static_cast( + std::memchr(input.data(), '?', input.size()) + ); + + if (pos) { + input.resize(pos - input.data()); } } diff --git a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/tsl_utils.cpp b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/tsl_utils.cpp index 3518d190..9da62f8e 100644 --- a/Source/sys-clk/overlay/lib/libultrahand/libultra/source/tsl_utils.cpp +++ b/Source/sys-clk/overlay/lib/libultrahand/libultra/source/tsl_utils.cpp @@ -15,7 +15,7 @@ * altered or removed. * * Licensed under both GPLv2 and CC-BY-4.0 - * Copyright (c) 2024 ppkantorski + * Copyright (c) 2023-2025 ppkantorski ********************************************************************************/ #include @@ -28,6 +28,7 @@ extern "C" { // assertion override } namespace ult { + bool correctFrameSize; // for detecting the correct Overlay display size u16 DefaultFramebufferWidth = 448; ///< Width of the framebuffer @@ -67,7 +68,7 @@ namespace ult { content.assign(std::istreambuf_iterator(file), std::istreambuf_iterator()); file.close(); #endif - + return true; } @@ -76,7 +77,7 @@ namespace ult { size_t pos = 0; size_t keyStart, keyEnd, colonPos, valueStart, valueEnd; std::string key, value; - + auto normalizeNewlines = [](std::string &s) { size_t n = 0; while ((n = s.find("\\n", n)) != std::string::npos) { @@ -84,28 +85,28 @@ namespace ult { n += 1; } }; - + while ((pos = content.find('"', pos)) != std::string::npos) { keyStart = pos + 1; keyEnd = content.find('"', keyStart); if (keyEnd == std::string::npos) break; - + key = content.substr(keyStart, keyEnd - keyStart); colonPos = content.find(':', keyEnd); if (colonPos == std::string::npos) break; - + valueStart = content.find('"', colonPos); valueEnd = content.find('"', valueStart + 1); if (valueStart == std::string::npos || valueEnd == std::string::npos) break; - + value = content.substr(valueStart + 1, valueEnd - valueStart - 1); - - // 🔹 Convert escaped newlines (\\n) into real ones + + // Convert escaped newlines (\\n) into real ones normalizeNewlines(key); normalizeNewlines(value); - + result[key] = value; - + key.clear(); value.clear(); pos = valueEnd + 1; // Move to next pair @@ -132,29 +133,14 @@ namespace ult { u16 activeHeaderHeight = 97; bool consoleIsDocked() { - Result rc; + Result rc = apmInitialize(); + if (R_FAILED(rc)) return false; + ApmPerformanceMode perfMode = ApmPerformanceMode_Invalid; - - // Initialize the APM service - rc = apmInitialize(); - if (R_FAILED(rc)) { - return false; // Fail early if initialization fails - } - - // Get the current performance mode rc = apmGetPerformanceMode(&perfMode); - apmExit(); // Clean up the APM service - - if (R_FAILED(rc)) { - return false; // Fail early if performance mode check fails - } - - // Check if the performance mode indicates docked state - if (perfMode == ApmPerformanceMode_Boost) { - return true; // System is docked (boost mode active) - } - - return false; // Not docked (normal mode or handheld) + apmExit(); + + return R_SUCCEEDED(rc) && (perfMode == ApmPerformanceMode_Boost); } //static bool pminfoInitialized = false; @@ -314,6 +300,9 @@ namespace ult { std::atomic selectWidth; std::atomic nextPageWidth; std::atomic inMainMenu{false}; + std::atomic inHiddenMode{false}; + std::atomic inSettingsMenu{false}; + std::atomic inSubSettingsMenu{false}; std::atomic inOverlaysPage{false}; std::atomic inPackagesPage{false}; @@ -332,7 +321,7 @@ namespace ult { //bool progressAnimation = false; bool disableTransparency = false; //bool useCustomWallpaper = false; - bool useMemoryExpansion = false; + //bool useMemoryExpansion = false; bool useOpaqueScreenshots = false; std::atomic onTrackBar(false); @@ -394,7 +383,7 @@ namespace ult { if (combo.find(' ') != std::string::npos) { return; // Spaces found, return without modifying } - + std::string unicodeCombo; bool modified = false; size_t start = 0; @@ -402,7 +391,7 @@ namespace ult { size_t end = 0; // Moved outside the loop std::string token; // Moved outside the loop auto it = buttonCharMap.end(); // Initialize iterator once outside the loop - + // Iterate through the combo string and split by '+' for (size_t i = 0; i <= length; ++i) { if (i == length || combo[i] == '+') { @@ -410,25 +399,25 @@ namespace ult { end = i; // Reuse the end variable while (start < end && std::isspace(combo[start])) start++; // Trim leading spaces while (end > start && std::isspace(combo[end - 1])) end--; // Trim trailing spaces - + token = combo.substr(start, end - start); // Reuse the token variable it = buttonCharMap.find(token); // Reuse the iterator - + if (it != buttonCharMap.end()) { unicodeCombo += it->second; // Append the mapped Unicode value modified = true; } else { unicodeCombo += token; // Append the original token if not found } - + if (i != length) { unicodeCombo += "+"; // Only append '+' if we're not at the end } - + start = i + 1; // Move to the next token } } - + // If a modification was made, update the original combo if (modified) { combo = unicodeCombo; @@ -468,6 +457,7 @@ namespace ult { std::string HIDE_OVERLAY = "Hide Overlay"; std::string HIDE_PACKAGE = "Hide Package"; std::string LAUNCH_ARGUMENTS = "Launch Arguments"; + std::string FORCE_AMS110_SUPPORT = "Force AMS110+ Support"; std::string QUICK_LAUNCH = "Quick Launch"; std::string BOOT_COMMANDS = "Boot Commands"; std::string EXIT_COMMANDS = "Exit Commands"; @@ -495,6 +485,7 @@ namespace ult { std::string USER_GUIDE = "User Guide"; std::string SHOW_HIDDEN = "Show Hidden"; std::string SHOW_DELETE = "Show Delete"; + std::string SHOW_UNSUPPORTED = "Show Unsupported"; std::string PAGE_SWAP = "Page Swap"; std::string RIGHT_SIDE_MODE = "Right-side Mode"; std::string OVERLAY_VERSIONS = "Overlay Versions"; @@ -503,7 +494,7 @@ namespace ult { //std::string VERSION_LABELS = "Version Labels"; std::string KEY_COMBO = "Key Combo"; std::string MODE = "Mode"; - std::string MODES = "Modes"; + std::string LAUNCH_MODES = "Launch Modes"; std::string LANGUAGE = "Language"; std::string OVERLAY_INFO = "Overlay Info"; std::string SOFTWARE_UPDATE = "Software Update"; @@ -518,11 +509,20 @@ namespace ult { std::string VENDOR = "Vendor"; std::string MODEL = "Model"; std::string STORAGE = "Storage"; - std::string NOTICE = "Notice"; - std::string UTILIZES = "Utilizes"; + //std::string NOTICE = "Notice"; + //std::string UTILIZES = "Utilizes"; - std::string MEMORY_EXPANSION = "Memory Expansion"; - std::string REBOOT_REQUIRED = "*Reboot required."; + + std::string OVERLAY_MEMORY = "Overlay Memory"; + std::string NOT_ENOUGH_MEMORY = "Not enough memory."; + std::string WALLPAPER_SUPPORT_DISABLED = "Wallpaper support disabled."; + std::string SOUND_SUPPORT_DISABLED = "Sound support disabled."; + std::string WALLPAPER_SUPPORT_ENABLED = "Wallpaper support enabled."; + std::string SOUND_SUPPORT_ENABLED = "Sound support enabled."; + std::string EXIT_OVERLAY_SYSTEM = "Exit Overlay System"; + + //std::string MEMORY_EXPANSION = "Memory Expansion"; + //std::string REBOOT_REQUIRED = "*Reboot required."; std::string LOCAL_IP = "Local IP"; std::string WALLPAPER = "Wallpaper"; std::string THEME = "Theme"; @@ -566,10 +566,15 @@ namespace ult { std::string ULTRAHAND_HAS_STARTED = "Ultrahand has started."; std::string NEW_UPDATE_IS_AVAILABLE = "New update is available!"; - std::string REBOOT_IS_REQUIRED = "Reboot is required."; - std::string HOLD_A_TO_DELETE = "Hold \uE0E0 to Delete"; + //std::string REBOOT_IS_REQUIRED = "Reboot is required."; + //std::string HOLD_A_TO_DELETE = "Hold \uE0E0 to Delete"; + std::string DELETE_PACKAGE = "Delete Package"; + std::string DELETE_OVERLAY = "Delete Overlay"; std::string SELECTION_IS_EMPTY = "Selection is empty!"; - + std::string FORCED_SUPPORT_WARNING = "Forcing support can be dangerous."; + + std::string TASK_IS_COMPLETE = "Task is complete!"; + std::string TASK_HAS_FAILED = "Task has failed."; //std::string PACKAGE_VERSIONS = "Package Versions"; @@ -581,6 +586,8 @@ namespace ult { std::string BOOT_ENTRY = "Boot Entry"; #endif + std::string INCOMPATIBLE_WARNING = "Incompatible on AMS v1.10+"; + std::string SYSTEM_RAM = "System RAM"; std::string FREE = "free"; std::string DEFAULT_CHAR_WIDTH = "0.33"; @@ -678,6 +685,7 @@ namespace ult { HIDE_OVERLAY = "Hide Overlay"; HIDE_PACKAGE = "Hide Package"; LAUNCH_ARGUMENTS = "Launch Arguments"; + FORCE_AMS110_SUPPORT = "Force AMS110+ Support"; QUICK_LAUNCH = "Quick Launch"; BOOT_COMMANDS = "Boot Commands"; EXIT_COMMANDS = "Exit Commands"; @@ -704,6 +712,7 @@ namespace ult { USER_GUIDE = "User Guide"; SHOW_HIDDEN = "Show Hidden"; SHOW_DELETE = "Show Delete"; + SHOW_UNSUPPORTED = "Show Unsupported"; PAGE_SWAP = "Page Swap"; RIGHT_SIDE_MODE = "Right-side Mode"; OVERLAY_VERSIONS = "Overlay Versions"; @@ -712,7 +721,7 @@ namespace ult { //VERSION_LABELS = "Version Labels"; KEY_COMBO = "Key Combo"; MODE = "Mode"; - MODES = "Modes"; + LAUNCH_MODES = "Launch Modes"; LANGUAGE = "Language"; OVERLAY_INFO = "Overlay Info"; SOFTWARE_UPDATE = "Software Update"; @@ -727,11 +736,21 @@ namespace ult { VENDOR = "Vendor"; MODEL = "Model"; STORAGE = "Storage"; - NOTICE = "Notice"; - UTILIZES = "Utilizes"; + //NOTICE = "Notice"; + //UTILIZES = "Utilizes"; + SYSTEM_RAM = "System RAM"; FREE = "free"; - MEMORY_EXPANSION = "Memory Expansion"; - REBOOT_REQUIRED = "*Reboot required."; + + OVERLAY_MEMORY = "Overlay Memory"; + NOT_ENOUGH_MEMORY = "Not enough memory."; + WALLPAPER_SUPPORT_DISABLED = "Wallpaper support disabled."; + SOUND_SUPPORT_DISABLED = "Sound support disabled."; + WALLPAPER_SUPPORT_ENABLED = "Wallpaper support enabled."; + SOUND_SUPPORT_ENABLED = "Sound support enabled."; + EXIT_OVERLAY_SYSTEM = "Exit Overlay System"; + + //MEMORY_EXPANSION = "Memory Expansion"; + //REBOOT_REQUIRED = "*Reboot required."; LOCAL_IP = "Local IP"; WALLPAPER = "Wallpaper"; THEME = "Theme"; @@ -790,9 +809,15 @@ namespace ult { ULTRAHAND_HAS_STARTED = "Ultrahand has started."; NEW_UPDATE_IS_AVAILABLE = "New update is available!"; - REBOOT_IS_REQUIRED = "Reboot is required."; - HOLD_A_TO_DELETE = "Hold  to Delete"; + //REBOOT_IS_REQUIRED = "Reboot is required."; + //HOLD_A_TO_DELETE = "Hold  to Delete"; + DELETE_PACKAGE = "Delete Package"; + DELETE_OVERLAY = "Delete Overlay"; SELECTION_IS_EMPTY = "Selection is empty!"; + FORCED_SUPPORT_WARNING = "Forcing support can be dangerous."; + INCOMPATIBLE_WARNING = "Incompatible on AMS v1.10+"; + TASK_IS_COMPLETE = "Task is complete!"; + TASK_HAS_FAILED = "Task has failed."; //EMPTY = "Empty"; @@ -860,7 +885,7 @@ namespace ult { } - static std::unordered_map configMap = { + std::unordered_map configMap = { #if IS_LAUNCHER_DIRECTIVE {"ENGLISH", &ENGLISH}, {"SPANISH", &SPANISH}, @@ -887,6 +912,7 @@ namespace ult { {"HIDE_PACKAGE", &HIDE_PACKAGE}, {"HIDE_OVERLAY", &HIDE_OVERLAY}, {"LAUNCH_ARGUMENTS", &LAUNCH_ARGUMENTS}, + {"FORCE_AMS110_SUPPORT", &FORCE_AMS110_SUPPORT}, {"QUICK_LAUNCH", &QUICK_LAUNCH}, {"BOOT_COMMANDS", &BOOT_COMMANDS}, {"EXIT_COMMANDS", &EXIT_COMMANDS}, @@ -914,6 +940,7 @@ namespace ult { {"USER_GUIDE", &USER_GUIDE}, {"SHOW_HIDDEN", &SHOW_HIDDEN}, {"SHOW_DELETE", &SHOW_DELETE}, + {"SHOW_UNSUPPORTED", &SHOW_UNSUPPORTED}, {"PAGE_SWAP", &PAGE_SWAP}, {"RIGHT_SIDE_MODE", &RIGHT_SIDE_MODE}, {"OVERLAY_VERSIONS", &OVERLAY_VERSIONS}, @@ -922,7 +949,7 @@ namespace ult { //{"VERSION_LABELS", &VERSION_LABELS}, {"KEY_COMBO", &KEY_COMBO}, {"MODE", &MODE}, - {"MODES", &MODES}, + {"LAUNCH_MODES", &LAUNCH_MODES}, {"LANGUAGE", &LANGUAGE}, {"OVERLAY_INFO", &OVERLAY_INFO}, {"SOFTWARE_UPDATE", &SOFTWARE_UPDATE}, @@ -937,11 +964,19 @@ namespace ult { {"VENDOR", &VENDOR}, {"MODEL", &MODEL}, {"STORAGE", &STORAGE}, - {"NOTICE", &NOTICE}, - {"UTILIZES", &UTILIZES}, + //{"NOTICE", &NOTICE}, + //{"UTILIZES", &UTILIZES}, - {"MEMORY_EXPANSION", &MEMORY_EXPANSION}, - {"REBOOT_REQUIRED", &REBOOT_REQUIRED}, + {"OVERLAY_MEMORY", &OVERLAY_MEMORY}, + {"NOT_ENOUGH_MEMORY", &NOT_ENOUGH_MEMORY}, + {"WALLPAPER_SUPPORT_DISABLED", &WALLPAPER_SUPPORT_DISABLED}, + {"SOUND_SUPPORT_DISABLED", &SOUND_SUPPORT_DISABLED}, + {"WALLPAPER_SUPPORT_ENABLED", &WALLPAPER_SUPPORT_ENABLED}, + {"SOUND_SUPPORT_ENABLED", &SOUND_SUPPORT_ENABLED}, + {"EXIT_OVERLAY_SYSTEM", &EXIT_OVERLAY_SYSTEM}, + + //{"MEMORY_EXPANSION", &MEMORY_EXPANSION}, + //{"REBOOT_REQUIRED", &REBOOT_REQUIRED}, {"LOCAL_IP", &LOCAL_IP}, {"WALLPAPER", &WALLPAPER}, {"THEME", &THEME}, @@ -986,9 +1021,15 @@ namespace ult { {"ULTRAHAND_HAS_STARTED", &ULTRAHAND_HAS_STARTED}, {"NEW_UPDATE_IS_AVAILABLE", &NEW_UPDATE_IS_AVAILABLE}, - {"REBOOT_IS_REQUIRED", &REBOOT_IS_REQUIRED}, - {"HOLD_A_TO_DELETE", &HOLD_A_TO_DELETE}, + //{"REBOOT_IS_REQUIRED", &REBOOT_IS_REQUIRED}, + //{"HOLD_A_TO_DELETE", &HOLD_A_TO_DELETE}, + {"DELETE_PACKAGE", &DELETE_PACKAGE}, + {"DELETE_OVERLAY", &DELETE_OVERLAY}, {"SELECTION_IS_EMPTY", &SELECTION_IS_EMPTY}, + {"FORCED_SUPPORT_WARNING", &FORCED_SUPPORT_WARNING}, + {"INCOMPATIBLE_WARNING", &INCOMPATIBLE_WARNING}, + {"TASK_IS_COMPLETE", &TASK_IS_COMPLETE}, + {"TASK_HAS_FAILED", &TASK_HAS_FAILED}, //{"PACKAGE_VERSIONS", &PACKAGE_VERSIONS}, //{"PROGRESS_ANIMATION", &PROGRESS_ANIMATION}, @@ -999,6 +1040,7 @@ namespace ult { {"BOOT_ENTRY", &BOOT_ENTRY}, #endif + {"SYSTEM_RAM", &SYSTEM_RAM}, {"FREE", &FREE}, {"DEFAULT_CHAR_WIDTH", &DEFAULT_CHAR_WIDTH}, @@ -1058,7 +1100,7 @@ namespace ult { {"DEC", &DEC} #endif }; - + // Iterate over the map to update global variables for (auto& kv : configMap) { auto it = jsonMap.find(kv.first); @@ -1124,9 +1166,9 @@ namespace ult { {"November", &NOVEMBER}, {"December", &DECEMBER} }; - + std::string timeStrCopy = timeStr; // Convert the char array to a string for processing - + // Apply day and month replacements size_t pos; for (const auto& mapping : mappings) { @@ -1136,7 +1178,7 @@ namespace ult { pos = timeStrCopy.find(mapping.first, pos + mapping.second->length()); } } - + // Copy the modified string back to the character array strcpy(timeStr, timeStrCopy.c_str()); } @@ -1144,41 +1186,47 @@ namespace ult { // Unified function to apply replacements void applyLangReplacements(std::string& text, bool isValue) { - // Static maps for replacements - #if IS_LAUNCHER_DIRECTIVE - const std::unordered_map launcherReplacements = { - {"Reboot To", &REBOOT_TO}, - {"Boot Entry", &BOOT_ENTRY}, - {"Reboot", &REBOOT}, - {"Shutdown", &SHUTDOWN} - }; - #endif - - const std::unordered_map valueReplacements = { - {"On", &ON}, - {"Off", &OFF} - }; - - // Determine which map to use - const std::unordered_map* replacements = nullptr; - - if (!isValue) { - #if IS_LAUNCHER_DIRECTIVE - replacements = &launcherReplacements; - #else - return; - #endif - } else { - replacements = &valueReplacements; - } - - // Perform the direct replacement - if (replacements) { - auto it = replacements->find(text); - if (it != replacements->end()) { - text = *(it->second); + if (isValue) { + // Direct comparison for value replacements + if (text.length() == 2) { + if (text[0] == 'O') { + if (text[1] == 'n') { + text = ON; + return; + } else if (text[1] == 'f' && text == "Off") { + text = OFF; + return; + } + } } } + #if IS_LAUNCHER_DIRECTIVE + else { + // Direct comparison for launcher replacements + switch (text.length()) { + case 6: + if (text == "Reboot") { + text = REBOOT; + } + break; + case 8: + if (text == "Shutdown") { + text = SHUTDOWN; + } + break; + case 9: + if (text == "Reboot To") { + text = REBOOT_TO; + } + break; + case 10: + if (text == "Boot Entry") { + text = BOOT_ENTRY; + } + break; + } + } + #endif } @@ -1252,7 +1300,8 @@ namespace ult { {"selection_value_text_color", "FF7777"}, {"selection_bg_color", blackColor}, {"selection_bg_alpha", "11"}, - {"trackbar_color", "555555"}, + {"scrollbar_color", "555555"}, + {"scrollbar_wall_color", "AAAAAA"}, {"highlight_color_1", "2288CC"}, {"highlight_color_2", "88FFFF"}, {"highlight_color_3", "FFFF45"}, @@ -1292,23 +1341,6 @@ namespace ult { } - - float calculateAmplitude(float x, float peakDurationFactor) { - //const float phasePeriod = 360.0f * peakDurationFactor; // One full phase period - - // Convert x from radians to degrees and calculate phase within the period - const int phase = static_cast(x * RAD_TO_DEG) % static_cast(360.0f * peakDurationFactor); - - // Check if the phase is odd using bitwise operation - if (phase & 1) { - return 1.0f; // Flat amplitude (maximum positive) - } else { - // Calculate the sinusoidal amplitude for the remaining period - return (APPROXIMATE_cos(x) + 1.0f) / 2.0f; // Cosine function expects radians - } - } - - std::atomic refreshWallpaperNow(false); std::atomic refreshWallpaper(false); std::vector wallpaperData; @@ -1318,176 +1350,65 @@ namespace ult { std::condition_variable cv; - // Function to load the RGBA file into memory and modify wallpaperData directly - //void loadWallpaperFile(const std::string& filePath, s32 width, s32 height) { - // const size_t originalDataSize = width * height * 4; // Original size in bytes (4 bytes per pixel) - // const size_t compressedDataSize = originalDataSize / 2; // RGBA4444 uses half the space - // - // wallpaperData.resize(compressedDataSize); - // - // if (!isFileOrDirectory(filePath)) { - // wallpaperData.clear(); - // return; - // } - // - // #if !USING_FSTREAM_DIRECTIVE - // FILE* file = fopen(filePath.c_str(), "rb"); - // if (!file) { - // wallpaperData.clear(); - // return; - // } - // - // std::vector buffer; - // //if (reducedMemory) { - // // // Reuse wallpaperData to avoid double allocation - // // buffer.swap(wallpaperData); - // // buffer.resize(originalDataSize); - // //} else { - // buffer.resize(originalDataSize); - // //} - // - // const size_t bytesRead = fread(buffer.data(), 1, originalDataSize, file); - // fclose(file); - // - // if (bytesRead != originalDataSize) { - // wallpaperData.clear(); - // return; - // } - // - // #else - // std::ifstream file(filePath, std::ios::binary); - // if (!file) { - // wallpaperData.clear(); - // return; - // } - // - // std::vector buffer; - // //if (reducedMemory) { - // // buffer.swap(wallpaperData); - // // buffer.resize(originalDataSize); - // //} else { - // buffer.resize(originalDataSize); - // //} - // - // file.read(reinterpret_cast(buffer.data()), originalDataSize); - // if (!file) { - // wallpaperData.clear(); - // return; - // } - // #endif - // - // // Compress RGBA8888 to RGBA4444 - // //if (reducedMemory) { - // // // In-place compression to save memory - // // size_t writeIndex = 0; - // // for (size_t i = 0; i < originalDataSize; i += 8, writeIndex += 4) { - // // uint8_t r1 = buffer[i] >> 4; - // // uint8_t g1 = buffer[i + 1] >> 4; - // // uint8_t b1 = buffer[i + 2] >> 4; - // // uint8_t a1 = buffer[i + 3] >> 4; - // // - // // uint8_t r2 = buffer[i + 4] >> 4; - // // uint8_t g2 = buffer[i + 5] >> 4; - // // uint8_t b2 = buffer[i + 6] >> 4; - // // uint8_t a2 = buffer[i + 7] >> 4; - // // - // // buffer[writeIndex] = (r1 << 4) | g1; - // // buffer[writeIndex + 1] = (b1 << 4) | a1; - // // buffer[writeIndex + 2] = (r2 << 4) | g2; - // // buffer[writeIndex + 3] = (b2 << 4) | a2; - // // } - // // buffer.resize(compressedDataSize); - // // wallpaperData.swap(buffer); - // //} else { - // uint8_t* input = buffer.data(); - // uint8_t* output = wallpaperData.data(); - // //uint8_t r1, g1, b1, a1; - // //uint8_t r2, g2, b2, a2; - // - // //for (size_t i = 0, j = 0; i < originalDataSize; i += 8, j += 4) { - // // // Read 2 RGBA pixels (8 bytes) - // // const uint8_t r1 = input[i] >> 4; - // // const uint8_t g1 = input[i + 1] >> 4; - // // const uint8_t b1 = input[i + 2] >> 4; - // // const uint8_t a1 = input[i + 3] >> 4; - // // - // // const uint8_t r2 = input[i + 4] >> 4; - // // const uint8_t g2 = input[i + 5] >> 4; - // // const uint8_t b2 = input[i + 6] >> 4; - // // const uint8_t a2 = input[i + 7] >> 4; - // // - // // // Pack them into 4 bytes (2 bytes per pixel) - // // output[j] = (r1 << 4) | g1; - // // output[j + 1] = (b1 << 4) | a1; - // // output[j + 2] = (r2 << 4) | g2; - // // output[j + 3] = (b2 << 4) | a2; - // //} - // - // for (size_t i = 0, j = 0; i < originalDataSize; i += 16, j += 8) { - // output[j] = ((input[i] >> 4) << 4) | (input[i + 1] >> 4); - // output[j + 1] = ((input[i + 2] >> 4) << 4) | (input[i + 3] >> 4); - // output[j + 2] = ((input[i + 4] >> 4) << 4) | (input[i + 5] >> 4); - // output[j + 3] = ((input[i + 6] >> 4) << 4) | (input[i + 7] >> 4); - // output[j + 4] = ((input[i + 8] >> 4) << 4) | (input[i + 9] >> 4); - // output[j + 5] = ((input[i + 10] >> 4) << 4) | (input[i + 11] >> 4); - // output[j + 6] = ((input[i + 12] >> 4) << 4) | (input[i + 13] >> 4); - // output[j + 7] = ((input[i + 14] >> 4) << 4) | (input[i + 15] >> 4); - // } - // //} - //} - - void loadWallpaperFile(const std::string& filePath, s32 width, s32 height) { - const size_t originalDataSize = width * height * 4; + const size_t originalDataSize = width * height * 4; const size_t compressedDataSize = originalDataSize / 2; - + wallpaperData.resize(compressedDataSize); - + if (!isFileOrDirectory(filePath)) { wallpaperData.clear(); return; } - + FILE* file = fopen(filePath.c_str(), "rb"); if (!file) { wallpaperData.clear(); return; } - - constexpr size_t chunkBytes = 64 * 1024; // 64 KB chunks - uint8_t chunkBuffer[chunkBytes]; - - size_t totalRead = 0; - size_t writeIndex = 0; - - size_t remaining, toRead, bytesRead; + setvbuf(file, nullptr, _IOFBF, 256 * 1024); + + constexpr size_t chunkBytes = 128 * 1024; + uint8_t chunkBuffer[chunkBytes]; + + size_t totalRead = 0; + uint8_t* dst = wallpaperData.data(); + const uint8x8_t mask = vdup_n_u8(0xF0); + while (totalRead < originalDataSize) { - // Determine how much to read this iteration - remaining = originalDataSize - totalRead; - toRead = remaining < chunkBytes ? remaining : chunkBytes; - - bytesRead = fread(chunkBuffer, 1, toRead, file); - if (bytesRead == 0 || bytesRead % 8 != 0) { // must be multiple of 2 pixels + const size_t remaining = originalDataSize - totalRead; + const size_t toRead = remaining < chunkBytes ? remaining : chunkBytes; + + const size_t bytesRead = fread(chunkBuffer, 1, toRead, file); + if (bytesRead == 0) { fclose(file); wallpaperData.clear(); return; } - - // Compress each 2-pixel group in the chunk - for (size_t i = 0; i < bytesRead; i += 8, writeIndex += 4) { - wallpaperData[writeIndex] = (chunkBuffer[i] & 0xF0) | (chunkBuffer[i + 1] >> 4); - wallpaperData[writeIndex + 1] = (chunkBuffer[i + 2] & 0xF0) | (chunkBuffer[i + 3] >> 4); - wallpaperData[writeIndex + 2] = (chunkBuffer[i + 4] & 0xF0) | (chunkBuffer[i + 5] >> 4); - wallpaperData[writeIndex + 3] = (chunkBuffer[i + 6] & 0xF0) | (chunkBuffer[i + 7] >> 4); + + const uint8_t* src = chunkBuffer; + size_t i = 0; + + // NEON: Process 16 bytes -> 8 bytes + for (; i + 16 <= bytesRead; i += 16) { + uint8x16_t data = vld1q_u8(src + i); + uint8x8x2_t sep = vuzp_u8(vget_low_u8(data), vget_high_u8(data)); + vst1_u8(dst, vorr_u8(vand_u8(sep.val[0], mask), vshr_n_u8(sep.val[1], 4))); + dst += 8; } - + + // Scalar fallback + for (; i + 1 < bytesRead; i += 2) { + *dst++ = (src[i] & 0xF0) | (src[i + 1] >> 4); + } + totalRead += bytesRead; } - + fclose(file); } - + void loadWallpaperFileWhenSafe() { if (expandedMemory && !inPlot.load(std::memory_order_acquire) && !refreshWallpaper.load(std::memory_order_acquire)) { @@ -1503,21 +1424,21 @@ namespace ult { void reloadWallpaper() { // Signal that wallpaper is being refreshed refreshWallpaper.store(true, std::memory_order_release); - + // Lock the mutex for condition waiting std::unique_lock lock(wallpaperMutex); - + // Wait for inPlot to be false before reloading the wallpaper cv.wait(lock, [] { return !inPlot.load(std::memory_order_acquire); }); - + // Clear the current wallpaper data wallpaperData.clear(); - + // Reload the wallpaper file if (isFileOrDirectory(WALLPAPER_PATH)) { loadWallpaperFile(WALLPAPER_PATH); } - + // Signal that wallpaper has finished refreshing refreshWallpaper.store(false, std::memory_order_release); @@ -1595,12 +1516,12 @@ namespace ult { PsmChargerType charger = PsmChargerType_Unconnected; Result rc = psmGetBatteryChargePercentage(_batteryCharge); bool hwReadsSucceeded = R_SUCCEEDED(rc); - + if (hwReadsSucceeded) { rc = psmGetChargerType(&charger); hwReadsSucceeded &= R_SUCCEEDED(rc); *_isCharging = (charger != PsmChargerType_Unconnected); - + if (hwReadsSucceeded) { // Update cache powerCacheCharge = *_batteryCharge; @@ -1610,18 +1531,18 @@ namespace ult { return true; } } - + // Use cached values if the hardware read fails if (powerCacheInitialized) { *_batteryCharge = powerCacheCharge; *_isCharging = powerCacheIsCharging; return hwReadsSucceeded; // Return false if hardware read failed but cache is valid } - + // Return false if cache is not initialized and hardware read failed return false; } - + // Use cached values if not enough time has passed *_batteryCharge = powerCacheCharge; *_isCharging = powerCacheIsCharging; @@ -1632,19 +1553,19 @@ namespace ult { void powerInit(void) { uint32_t charge = 0; bool charging = false; - + powerCacheInitialized = false; powerCacheCharge = 0; powerCacheIsCharging = false; - + if (!powerInitialized) { Result rc = psmInitialize(); if (R_SUCCEEDED(rc)) { rc = psmBindStateChangeEvent(&powerSession, 1, 1, 1); - + if (R_FAILED(rc)) psmExit(); - + if (R_SUCCEEDED(rc)) { powerInitialized = true; ult::powerGetDetails(&charge, &charging); @@ -1684,15 +1605,15 @@ namespace ult { u8 receive; u8 receiveLength; }; - + I2cSession _session; - + Result res = i2cOpenSession(&_session, dev); if (res) return res; - + u16 val; - + struct readReg readRegister = { .send = 0 | (I2cTransactionOption_Start << 6), .sendLength = sizeof(reg), @@ -1700,13 +1621,13 @@ namespace ult { .receive = 1 | (I2cTransactionOption_All << 6), .receiveLength = sizeof(val), }; - + res = i2csessionExecuteCommandList(&_session, &val, sizeof(val), &readRegister, sizeof(readRegister)); if (res) { i2csessionClose(&_session); return res; } - + *out = val; i2csessionClose(&_session); return 0; @@ -1719,31 +1640,31 @@ namespace ult { u8 val; s32 integerPart = 0; float fractionalPart = 0.0f; // Change this to a float to retain fractional precision - + // Read the integer part of the temperature Result res = I2cReadRegHandler(integerReg, I2cDevice_Tmp451, &rawValue); if (R_FAILED(res)) { return res; // Error during I2C read } - + val = (u8)rawValue; // Cast the value to an 8-bit unsigned integer integerPart = val; // Integer part of temperature in Celsius - + if (integerOnly) { *temperature = static_cast(integerPart); // Ensure it's treated as a float return 0; // Return only integer part if requested } - + // Read the fractional part of the temperature res = I2cReadRegHandler(fractionalReg, I2cDevice_Tmp451, &rawValue); if (R_FAILED(res)) { return res; // Error during I2C read } - + val = (u8)rawValue; // Cast the value to an 8-bit unsigned integer fractionalPart = static_cast(val >> 4) * 0.0625f; // Convert upper 4 bits into fractional part - + // Combine integer and fractional parts *temperature = static_cast(integerPart) + fractionalPart; @@ -1762,8 +1683,8 @@ namespace ult { // Time implementation - CONSTEXPR_STRING std::string DEFAULT_DT_FORMAT = "'%a %T'"; - std::string datetimeFormat = "%a %T"; + CONSTEXPR_STRING std::string DEFAULT_DT_FORMAT = "%a %T"; + std::string datetimeFormat = DEFAULT_DT_FORMAT; // Widget settings @@ -1798,9 +1719,114 @@ namespace ult { bool cleanVersionLabels, hideOverlayVersions, hidePackageVersions, useLibultrahandTitles, useLibultrahandVersions, usePackageTitles, usePackageVersions; + + + + // Helper function to convert MB to bytes + u64 mbToBytes(u32 mb) { + return static_cast(mb) * 0x100000; + } + + // Helper function to convert bytes to MB + u32 bytesToMB(u64 bytes) { + return static_cast(bytes / 0x100000); + } + + + // Helper function to get version-appropriate default heap size + static OverlayHeapSize getDefaultHeapSize() { + if (hosversionAtLeast(21, 0, 0)) { + return OverlayHeapSize::Size_4MB; // HOS 21.0.0+ + } else if (hosversionAtLeast(20, 0, 0)) { + return OverlayHeapSize::Size_6MB; // HOS 20.0.0+ + } else { + return OverlayHeapSize::Size_8MB; // Older versions + } + } + + // Implementation + OverlayHeapSize getCurrentHeapSize() { + // Fast path: return cached value if already loaded + if (heapSizeCache.initialized) { + return heapSizeCache.cachedSize; + } + + // Slow path: read from file (only happens once) + FILE* f = fopen(ult::OVL_HEAP_CONFIG_PATH.c_str(), "rb"); + if (!f) { + // No config file - use version-specific default + heapSizeCache.cachedSize = getDefaultHeapSize(); + heapSizeCache.initialized = true; + return heapSizeCache.cachedSize; + } + + u64 size; + if (fread(&size, sizeof(size), 1, f) == 1) { + constexpr u64 twoMB = 0x200000; + // Only accept multiples of 2MB, excluding 2MB itself + if (size != twoMB && size % twoMB == 0) { + heapSizeCache.cachedSize = static_cast(size); + fclose(f); + heapSizeCache.initialized = true; + return heapSizeCache.cachedSize; + } + } + + // Invalid or no data in config - use version-specific default + fclose(f); + heapSizeCache.cachedSize = getDefaultHeapSize(); + heapSizeCache.initialized = true; + return heapSizeCache.cachedSize; + } + + // Update the global default too + OverlayHeapSize currentHeapSize = getDefaultHeapSize(); + + bool setOverlayHeapSize(OverlayHeapSize heapSize) { + ult::createDirectory(ult::NX_OVLLOADER_PATH); + + FILE* f = fopen(ult::OVL_HEAP_CONFIG_PATH.c_str(), "wb"); + if (!f) return false; + + const u64 size = static_cast(heapSize); + const bool success = (fwrite(&size, sizeof(size), 1, f) == 1); + fclose(f); + + // Update cache on successful write + if (success) { + heapSizeCache.cachedSize = heapSize; + heapSizeCache.initialized = true; + } + + return success; + } + + + // Implementation + bool requestOverlayExit() { + ult::createDirectory(ult::NX_OVLLOADER_PATH); + + FILE* f = fopen(ult::OVL_EXIT_FLAG_PATH.c_str(), "wb"); + if (!f) return false; + + // Write a single byte (flag file just needs to exist) + u8 flag = 1; + bool success = (fwrite(&flag, 1, 1, f) == 1); + fclose(f); + + + deleteFileOrDirectory(NOTIFICATIONS_FLAG_FILEPATH); + + return success; + } + + const std::string loaderInfo = envGetLoaderInfo(); - const std::string loaderTitle = extractTitle(loaderInfo); - const bool expandedMemory = (loaderTitle == "nx-ovlloader+"); + std::string loaderTitle = extractTitle(loaderInfo); + + bool expandedMemory = false; + bool furtherExpandedMemory = false; + bool limitedMemory = false; std::string versionLabel; @@ -1834,9 +1860,10 @@ namespace ult { // Number of renderer threads to use - const unsigned numThreads = expandedMemory ? 4 : 0; + const unsigned numThreads = 4;//expandedMemory ? 4 : 0; std::vector renderThreads(numThreads); - const s32 bmpChunkSize = (numThreads > 0) ? ((720 + numThreads - 1) / numThreads) : 0; + + const s32 bmpChunkSize = ((720 + numThreads - 1) / numThreads); std::atomic currentRow; //std::atomic barrierCounter{0}; diff --git a/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.cpp index 2f68228e..834a8659 100644 --- a/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.cpp @@ -97,12 +97,33 @@ void AppProfileGui::addModuleListItem(SysClkProfile profile, SysClkModule module this->listElement->addItem(listItem); } +void AppProfileGui::addModuleListItemToggle(SysClkProfile profile, SysClkModule module) +{ + const char* moduleName = sysclkFormatModule(module, true); + std::uint32_t currentValue = this->profileList->mhzMap[profile][module]; + + tsl::elm::ToggleListItem* toggle = new tsl::elm::ToggleListItem(moduleName, currentValue != 0); + + toggle->setStateChangedListener([this, profile, module](bool state) { + this->profileList->mhzMap[profile][module] = state ? 1 : 0; + + Result rc = sysclkIpcSetProfiles(this->applicationId, this->profileList); + if(R_FAILED(rc)) + { + FatalGui::openWithResultCode("sysclkIpcSetProfiles", rc); + } + }); + + this->listElement->addItem(toggle); +} + void AppProfileGui::addProfileUI(SysClkProfile profile) { this->listElement->addItem(new tsl::elm::CategoryHeader(sysclkFormatProfile(profile, true) + std::string(" ") + ult::DIVIDER_SYMBOL + "  Reset")); this->addModuleListItem(profile, SysClkModule_CPU); this->addModuleListItem(profile, SysClkModule_GPU); this->addModuleListItem(profile, SysClkModule_MEM); + this->addModuleListItemToggle(profile, HorizonOCModule_Governor); } void AppProfileGui::listUI() diff --git a/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.h b/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.h index 5cf87d9c..4ed0e94d 100644 --- a/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.h +++ b/Source/sys-clk/overlay/src/ui/gui/app_profile_gui.h @@ -40,6 +40,7 @@ class AppProfileGui : public BaseMenuGui void openFreqChoiceGui(tsl::elm::ListItem* listItem, SysClkProfile profile, SysClkModule module); void addModuleListItem(SysClkProfile profile, SysClkModule module); + void addModuleListItemToggle(SysClkProfile profile, SysClkModule module); void addProfileUI(SysClkProfile profile); public: diff --git a/Source/sys-clk/overlay/src/ui/gui/base_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/base_gui.cpp index f2a7e1f4..086063d5 100644 --- a/Source/sys-clk/overlay/src/ui/gui/base_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/base_gui.cpp @@ -27,7 +27,6 @@ #include "base_gui.h" #include "../elements/base_frame.h" -#include "logo_rgba_bin.h" #include #include diff --git a/Source/sys-clk/overlay/src/ui/gui/global_override_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/global_override_gui.cpp index eac22cee..3c25f9d7 100644 --- a/Source/sys-clk/overlay/src/ui/gui/global_override_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/global_override_gui.cpp @@ -96,16 +96,40 @@ void GlobalOverrideGui::addModuleListItem(SysClkModule module) } return false; }); + + this->listElement->addItem(listItem); this->listItems[module] = listItem; } +void GlobalOverrideGui::addModuleToggleItem(SysClkModule module) +{ + const char* moduleName = sysclkFormatModule(module, true); + bool isOn = this->listHz[module]; + + // Create a ToggleListItem + tsl::elm::ToggleListItem* toggle = new tsl::elm::ToggleListItem(moduleName, isOn); + + toggle->setStateChangedListener([this, module, toggle](bool state) { + + Result rc = sysclkIpcSetOverride(module, state ? 1 : 0); + if(R_FAILED(rc)) + { + FatalGui::openWithResultCode("sysclkIpcSetProfiles", rc); + } + }); + // Add to list and track + this->listElement->addItem(toggle); + this->listItems[module] = toggle; +} + void GlobalOverrideGui::listUI() { this->listElement->addItem(new tsl::elm::CategoryHeader("Temporary Overrides " + ult::DIVIDER_SYMBOL + "  Reset")); this->addModuleListItem(SysClkModule_CPU); this->addModuleListItem(SysClkModule_GPU); this->addModuleListItem(SysClkModule_MEM); + this->addModuleToggleItem(HorizonOCModule_Governor); } void GlobalOverrideGui::refresh() @@ -115,6 +139,8 @@ void GlobalOverrideGui::refresh() { for(std::uint16_t m = 0; m < SysClkModule_EnumMax; m++) { + if(m > SysClkModule_MEM) + continue; if(this->listItems[m] != nullptr && this->listHz[m] != this->context->overrideFreqs[m]) { this->listItems[m]->setValue(formatListFreqHz(this->context->overrideFreqs[m])); diff --git a/Source/sys-clk/overlay/src/ui/gui/global_override_gui.h b/Source/sys-clk/overlay/src/ui/gui/global_override_gui.h index 477ff7cc..8d5f1871 100644 --- a/Source/sys-clk/overlay/src/ui/gui/global_override_gui.h +++ b/Source/sys-clk/overlay/src/ui/gui/global_override_gui.h @@ -39,7 +39,7 @@ class GlobalOverrideGui : public BaseMenuGui void openFreqChoiceGui(SysClkModule module); void addModuleListItem(SysClkModule module); - + void addModuleToggleItem(SysClkModule module); public: GlobalOverrideGui(); ~GlobalOverrideGui() {} diff --git a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp index 5d40808c..f80d501a 100644 --- a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp @@ -399,8 +399,6 @@ void MiscGui::listUI() chargerCurrents, false ); - - addConfigToggle(HocClkConfigValue_HandheldGovernor, nullptr); } diff --git a/Source/sys-clk/sys-clk.zip b/Source/sys-clk/sys-clk.zip new file mode 100644 index 0000000000000000000000000000000000000000..2c12b950a8da41914fb8dec5b6f88e9c341dd1f3 GIT binary patch literal 1201928 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 z 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%0DG3@108*4M-W<^<{iLa{$#{# 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�+K&BI$)w66^ovyth>-v) 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%0D}eH9Ywm9z0(Q{bQrc++wASEk~zv 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�z=j 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

oP%Cx1Iit1TMe^K$SG9GL& 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ⅆ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 - if (!mgr->config->GetConfigValue(HocClkConfigValue_HandheldGovernor)) + if (!isGovernorEnabled) { svcSleepThread(50'000'000); continue; @@ -388,7 +390,6 @@ void ClockManager::Tick() } } - if(((tmp451TempSoc() / 1000) > (int)this->config->GetConfigValue(HocClkConfigValue_ThermalThrottleThreshold)) && this->config->GetConfigValue(HocClkConfigValue_ThermalThrottle)) { ResetToStockClocks(); return; @@ -402,47 +403,66 @@ void ClockManager::Tick() std::uint32_t maxHz = 0; std::uint32_t nearestHz = 0; - if(apmExtIsBoostMode(mode) && !this->config->GetConfigValue(HocClkConfigValue_OverwriteBoostMode)) { - ResetToStockClocks(); - return; - } - for (unsigned int module = 0; module < SysClkModule_EnumMax; module++) + if(apmExtIsBoostMode(mode) && !this->config->GetConfigValue(HocClkConfigValue_OverwriteBoostMode)) { + ResetToStockClocks(); + return; + } + + for (unsigned int module = 0; module < SysClkModule_EnumMax; module++) + { + targetHz = this->context->overrideFreqs[module]; + if (!targetHz) { - if(this->config->GetConfigValue(HocClkConfigValue_HandheldGovernor)) { - noGPU = true; - } else { - noGPU = false; - } - if(noGPU && module == SysClkModule_GPU) - continue; - targetHz = this->context->overrideFreqs[module]; - if (!targetHz) - { - targetHz = this->config->GetAutoClockHz(this->context->applicationId, (SysClkModule)module, this->context->profile); - if(!targetHz) - targetHz = this->config->GetAutoClockHz(GLOBAL_PROFILE_ID, (SysClkModule)module, this->context->profile); - } + targetHz = this->config->GetAutoClockHz(this->context->applicationId, (SysClkModule)module, this->context->profile); + if(!targetHz) + targetHz = this->config->GetAutoClockHz(GLOBAL_PROFILE_ID, (SysClkModule)module, this->context->profile); + } - if (targetHz) - { + if(module == HorizonOCModule_Governor) { + bool newGovernorState = targetHz; + if(newGovernorState != lastGovernorState) { + FileUtils::LogLine("[mgr] Governor state changed: %s", newGovernorState ? "enabled" : "disabled"); + lastGovernorState = newGovernorState; - maxHz = this->GetMaxAllowedHz((SysClkModule)module, this->context->profile); - nearestHz = this->GetNearestHz((SysClkModule)module, targetHz, maxHz); - if (nearestHz != this->context->freqs[module] && this->context->enabled) { - FileUtils::LogLine( - "[mgr] %s clock set : %u.%u MHz (target = %u.%u MHz)", - Board::GetModuleName((SysClkModule)module, true), - nearestHz / 1000000, nearestHz / 100000 - nearestHz / 1000000 * 10, - targetHz / 1000000, targetHz / 100000 - targetHz / 1000000 * 10); + // Force a "context refresh" like on app/profile change + hasChanged = true; + this->context->enabled = this->GetConfig()->Enabled(); + Board::ResetToStock(); // optional: reset clocks before re-applying + } + isGovernorEnabled = newGovernorState; + } - Board::SetHz((SysClkModule)module, nearestHz); - this->context->freqs[module] = nearestHz; - } - } + // Skip GPU if governor handles it + if(module > SysClkModule_MEM) { + continue; + } + if(isGovernorEnabled) { + noGPU = true; + } else { + noGPU = false; + } + if(noGPU && module == SysClkModule_GPU) + continue; + if (targetHz) + { + maxHz = this->GetMaxAllowedHz((SysClkModule)module, this->context->profile); + nearestHz = this->GetNearestHz((SysClkModule)module, targetHz, maxHz); + + if (nearestHz != this->context->freqs[module] && this->context->enabled) { + FileUtils::LogLine( + "[mgr] %s clock set : %u.%u MHz (target = %u.%u MHz)", + Board::GetModuleName((SysClkModule)module, true), + nearestHz / 1000000, nearestHz / 100000 - nearestHz / 1000000 * 10, + targetHz / 1000000, targetHz / 100000 - targetHz / 1000000 * 10 + ); + + Board::SetHz((SysClkModule)module, nearestHz); + this->context->freqs[module] = nearestHz; + } } } - + } } void ClockManager::ResetToStockClocks() { diff --git a/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index d542422110aa0f82273608bd5ec05a9cc108e98c..c2d63682c5378dacfb4b1cbf14d5a16c7bae486e 100644 GIT binary patch delta 62171 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 Mo&Hg}R@^85A01L@E&u=k delta 61257 zcmYg&4P2B}_W!xh^UNEJFfhZ5FgP!w;z)`Kz9j0yi-}2!Kx%3+AeN=Oiej0v&7f4a zx*Jaqn{N95IhvKs>Mj*-(z-P!y=?hw4c&69tpT;Qba$Nrl~Hj1-;3@4^Y`&#NyRFTZ4LPE8!C6Y2l|H&Um#=9g28NDSEvss$pSNY)4q!S+E8OLTfB zk-I=7J9DgR3*@Av4{oX-JU?#fqJ^dSEmA!~a>YtFwe$kXZqed*uA-I}s%tI=N@jmEMPn?* zk$P0^Lj|5yhsr@zeBp^Q5>pnIk!5}vr5MX-&XVGYyNt{al~KYL^^#D=o>8ZXF7}jK zE6!n$sE5U3HeU^i6Rq;LW2Cpx?0{JH#c39r6H5^vqjrvhMx7~*5%#Q5ACMqI2rmOErX{Ls6sbw080ySbMPZOyZq*0!~JE=w1QQjFXwY)!yTDtK^`QENiS7eFd zG1E+d#(TRyT7eQE&nMvObnlx*)PRd$ocaWJ%vR+&+kxO zgH`86CB`f=f0ctRL|r+mo5J)ZbWLyZpB<^bph=r^1B3rj*iL;$d4e(zeN)Nyt|0S; z-&{g1Uvd~@?G+C2iC;5QQzm$r?HA!7|9WbUXIvl))(DC zeSrGNJwX|dp7x{oyJ$2eN77W%TugX#C56UW{FjmUBmUN)y!SjQmw@&UHJF)Aj`##> z=hOHHU?%ZyNRbR zaH~;$P**Sf<4yIix*{g1W_=;MM_r^J!?vqW>*pA}NecPw%8%cvpXu`rflP%{?Y}px zX2TQ>pc9+b1%_q9pBAf!4Fjo9FUC%2e%TeU`N9j3w$q^IBq>j*ftYHRuR3EFurzgj z?4zFBi>SpbVCy8g!$*|YEhhQh@00TT(bVD_jOKb0<-y)#V&pCysk*~h5r>r$Z4%YF z8CCMUfJl{IiSpiObUJ{)StN%G-I79H{L$8z`KDTFkq=P7N_~#OE$_AVh~(nfHyJ$M z@{?$^!md$H;Md{RD!da4Xq7VC5Mgv((HkmhWsvu#Sx2Ryl`fNE1(vVQC}sTjnNG2XptB70_#Y+M21YDk1m4&G83Z-HdBD5u9aiZPfQa@_afo5lD?0!rPw}7 z!rz48hyc?s3ZNudNzyqI|3pln3chZoUSYMJQSN?mCtK_D#A1}#b`lr4k@BLOcCvQ1 zQ*yAK(%)(){cd0odjM4K;*Eo35)ZgBQ#VnrO}|cH-k6ZMft0dBEEc0Y&~wM&miO1` zoJ?n>Q2Jct%h71ASULBMV5dah(Zx7#c_*W`CM>!qfCR}#<%JQ44H}uM`PLj9R?p0B zxg!5l+W1~<8v!bzT#$SlF<)$NLMe_)^u0tIvDIU-u8&QkmNjFk`JwM)$>Z&h-}NC*O|d_Er?Mo}QKE7=gDhDz`kB#L#M*^E3YwIjr5V)nH4xoq?e$<foa_8Gx>~@cWSzSx$YDRym1Iz8@(^1TgQ53*?TEN+~hW zN9L2I#7d-kG~vxlNGc}ho7P&vyf>Q`^2$fcbiHf-+{%T8b{@4Pb>Dt3ky9gQJVDUl z4`A*GRik;HXXEYYuJiF+dV9;O^>Rm@iB8BoZInBHhO*t7+X6(9kcIu@XAyK-l(j@Z z?t{E6sh-l5r+}hN`m=1@?7Oq+7l9Pz=g2urOC!;|I5KLjD_21&0S~A`HgBDQp1e1s zxnE%|#9XXnkV&0Fp*&o9pq{A!CsGuzg&FTr8{0x4Re3YL+c zv{EK4*N^-m2sl^a*5&yF4V#CScBe*tN8dO1e1` zcaCOZFdLs;ZGhm0ftF%C4B*#U7CYqA5Qzq!cb)$|#-G9vToSg3A4 zD!G9G*?%$Zpy)g$?4<<*KrNLq%O6u&a+W@x6_X=#L1o%C&A-usEM!7GA}DNj{0)5f z@s+sr(sShWS*`I!kklWaBlEZQF{(c~E%|;(KoY>LA@O`zt!Ik!;~LkhUnM&{JLC01 z<2cQN)2u#dReWifC^>&te9E9dEhVnZC3ExD_^xK65sHekA(1C#zSC;7ynbz&(0XHq z*!s_skK;pHBUR3sfD@HQdH>*IdKl%sE}u%7lJ}32J|TQ>JXQV~$Al6nuh+%JE#>`Y zI<+hsCeYO-0=3Cz%8l66XH&+<430}ReUDu^Jz9M?Ww;VN`iG_NI7aMN#YEmJbiDiF%?bdu9OPzH`hmJJ~2`&#|v$yOM#$ zsK-1By;wiUrhaleltg6a$zTehXl|`AZdA$=dd}-qbjYr`!hZLctI^8&*a`2|Rbgg8U(vh(6e?)T%?=s^9h4M%J}?rgV<|Ld`AQ{?n?2l1H-@{%D5ubF3CQW+v(R5} zG%pKif-$wapQToQTG7)qTRZD{J{+y&csyZ8y|9&@4gM(i&6ONmBj{IEde<&7zfR zO$RvD+jXG+)J>KlE#4uuXcB|L#LggcIa1$5qr0Y3->_a>fGa>K8!%mWjaFG0iSBa0 zThPJPj7%C`4Sf6)(fh>*z2)9pyP4sf(C8JjltD(mu%tYg`egH%X3dIFvGRsc7A;ck9z7fsUJmf9^2XY$^(E%OuG|Rl@^7TWe zl>Js3V8n+-4wr?0MXemuRwj76URgwzci9D^ZqY-2nV)MfQ?j*ncA|*=tZcD{a1D?n zoW&I4rYYkBdqw9sCzGv_C3?G>aT%McT||-+8rK;kxk;*|YsMgIU&NXOA>A0Rw9xMl zHDaW}Eyu5F`eygx2Fwp-a*m+zgPBqWK6cylo!(}p^>)Y_?^dnS4`tW;1x9Ax^166_ z+NnJt;L3+P1DXD(ORn;T8_Q4!bsadVG8H>+N3k7Y&r`_eS7*L8xwoRb&Y+nJ)_egH zn?XcxD-;w7mH>xD$}EyD^UbZ<AD}b#>V5JIb73%=_jjbd&n|7{=#K>Y-RJ2| zhqEu7^$j(Bf->P|w6cjRHaNYr(@vE-e&oyfK9J(7vgv0Q2b9j%tBiR~Z^+q71nLnt zf@O=x=q_dN??BHPge#vTe&Z>_^=MS+8l}c(?1}lX3N{>&aG_mo&p0Cl?oyv0ks-WY zr5+k_?+6(EcGyxW^n;lyhj@Z}ywZbR;UnIzQVq5ePt5~Bph%9`C@GZ^=iyS7x*S>8 zD(-FNwQhJ~S{q-&0X->9n~$M_i{;1($=k)~>esJrriIS^3uQxnm@gMQT5f*%kshi}*RLOyDkE z?`{P15Oe7BW(RCT+~gCgrGcg{ zw6L(4!6!M1Pcrqg8^X4Gx`mabAX7gqrY-{2b8yR-+s*yc)aCZ69@kSqf1Dio4YrJz z;h-(2je-sn5>p`jGIHs9{8|)dVxNcO_ZkrA!_9w~51ZugTYYeJ!dwd#n*IM-y_|i{ z*M!?AxsqIHrDBW!(&}thJziOSExN0Wt*7xyB~r_IgDDSt+U=5+7T%AXE2P&3;=?mI zuLE)V$&14~QfQqI;ZP0gzLX+IW^F1wGGkrAk?E`CBeti6BN=te0@p7tW^5rL%IRQ@0V!fDP<}S+N``8pzbm4(goy(o(s>Q1Vgu zp?_l3i#VY_h=Tu;D7wBECI2kF`i5iXBORN_(u1NVleheP8*7E7rg?>Xl426s@?=Ja zPzXXi0c_vnIYlEhBpiGdgOftoXbdl9kYj6rh zj*j_%=1EuijZ?!D{0D`;?ZI5-ixjnBWHPH)myDbzeF<#U*GJxGugO!kLOMDc{3l^v*WM+ASdCG4viQp7DvTsa4+P}KE_11>j&<0L-N)^0X z?{R$%FIC4J*I!TXew+O_qw22Cnc95}&Mw8e? zRg=>wch`0rJ3BB{iQi5kL(-09BXzWZG4G4R{rE<-a!PRe-|X{qbT?wlld%Lho~Av) zUiPN@f!~C0JRR7>NAXlhLTLJp+eK&i!UiG0s=vk90{aw~!OJyJq$i{0liyNg%RA4P zFEbukfAf{*^35~+>pQ^8rk$UrSWy0jK#4fXuBUIV(=K$q1jRIy^%_cYcW`Wyrc%eg zWUA|i=-@+E@1~Tyn@Hm&+xOl$qN(3gWEGhYts>`S_1)3Qo>JQOzgh&rx=^}Lrxbu602uf=4kFQrLIt`<)Y^?V1B?EN`)yf=dC9MLTH zNFxyWA@;EN8eb+HsP^g~k5Ne6%5NIz@5vu2@;^z`a%=_?xE!8u)dW??e5JcimIUE4(0N4Tdc^N_I*b`BX9vVE|7xFru&e#^(f zv~n>uB^JuNkG3SB%nv10Z0%6w|8-+@nlD7Y*o>W5xHONY4s-#3YxI zb-C|RMx&H#%cjV7I>V8+LT#48)eeFNo4`9QmWi;ez?FoX@DCPhX_wjsZ+Uqv z78MkY`|W%r?@EK>HQIrK`v5_>)=7H#W+MdbuQ5V3$h!dK%^Ez8J&u7#)Z7N|JigW^ zpxn*Op^2*x>wJz-vj68Wd$@7U3BuyieS2T|{y!aA4{06CZ>VGSRLRdn1D!#u2^fZ- zsD0YQsbEr}__4^SL@{4lhSLEGbme8s9eG3g+s@qcF0Q?K_^5Zo>2uAiY5E(C?*cOG zNAL6e?(q?4)qzBK6!`3B6rM!#^nZ868tR$yV(+r{{-|WET#X? zqqcJc-3Lp=XdEA7KX4qxIQIT%`z-AE_xM9SkH0OK^x>2f!1OALeK(>=3!?pM$0rPx;?cCvI~tvp?MRnpCS1jn#jOvUP0TobNK;+M%-nRCh1 z;m4Sh+p*I?=l7V`nNEE!NN*`(J~3 z<-~^ASm^!0`UHB|g&q#H=tEixy#gvMgso#gejS0CiaU_M(-le||2nnYfF9r;N$mpG z633%!)1hCMZ~CQwJyhVXN1mgW^FTn5m+N|Cp#diQC%#H8HuZ1W@fx;$d^l0PobB-B zn%NaPvjCO3eHoVF9fb{Ge0)RaB9s4CVWjHcYZT71?-~I$4TK>yNE=f8*NT`jYcFMP zy=yNOC;4MuEr|;oQv7Sz!AbC@Ce#S&2DK8BE_JoTYG+|H6TRhTu#fqeo&)KiXE6=k zC+4Mcoe`r08VgVHGs(gx;d~G04HxI0oVXw zJOBp=o&?|mP{4sL07l1q}tpbzB|bPx_QY9 zsFnzTX#l7I;s7`}unPcp!4_~}4*)HIY7XoJAOL9Oz$*Yew?U%&IrKW9n*dI5;CBG7 z1L)?!9{_{_FfD+$0Q?((g9C2^_z^$>2mS=$djQoOcn?4ifJP3SG*QpD0NhVg`hK4A z5qRU@EmU(t3twLFQwxR7XHmWZ<$Q|WsMGsb>fmJb8S)v7-N7?ibl?*J4i0>Y?mq-j zz=5v;ybqw71K$C77eFHi&I5P{zCH(tVjC$EC2#J4>z28I@ZJu^&9o z?=j}fUNFb*%NFzYa$La&x5%y8F^xF+3K!I+ER+Qj<;T86eJ5vx=QITc#j&&a%x4hL z-m}r%v!u#1l<&>pn%c8uE;>uepTSPq_ zVF8*J9QO^SWPC$;zSGff=dkq!E0?+)=w`$<2eL;+^3k{mVb&dXOK?8(|C&6@Fy

J+}kr}VODKAo-Of2sI;Z3Q?Mlwm&^vvncujdY4^#MW-a*77ENdw*NXQj$wV z+|g>)33q2DT8)Lt{;kjC>ewde?(jh0r#^OfhUZ&EEp+2P9lV9z6Irp?s|{$BS(|V> z+eAnBO}qORN~8JWi|F_nOe%P5w~6J8FNp;a2dpI97UYW)F^61n_{cRvU9$iD7>Yc& zPIy1rzZOWI2W3mq~TO&qZJg&Ot!B4cG@YDVFE;3@C9>_~eA%e(n3V1LW&VS& z+b1l2-M%)}`+WXz?~eR5@6PZ(`edQIhOmMKeNNT zSSD7;qVhyynV5L83{Ji76-)`9(X?_aKrEJ67DJLOsY!X6p0~KdGO0vNX1j+w-^uO-%f3l0a0?VMQC}u8#d84s&;1!iN;NooUr>Z#X>6?E zoQ(W7qG@naL~Kym-Ct2;1$4cJIH$+rGlxfd>|l@3r>BA^@mmU4)>c3vyars|ohAP>S2-t_ZLg2|zB{vUh z;gxuF%TOgBk5I7<^@P+=r66oPLzQ4g`l%-*0wX-UmQV9jEx23n)bdIHt%XD&1JN!E z#Q)YoVyGvd@ZUN}1gyLc`)?g2?$n_>bymtq1k%^h>;u@4@*rM2#<$bvmUtRke`L)DS6qoXR^ zb72cWB^e2yWeB^;|HT{$;vLwL@R=*ofiF+-3=Oze&O<;@BJUK&syoQ|kQhQnMq;R8 zU=kW8@J?lsy=;{ zj0`)ftRf_W@tvfdN>#p`pW4Yt@Y1!x3Ftd+XcVN}yiYe0LuGa(g2Q-OaQsgL!!G>O z6p)~y4(>t+Mm_~EQs}?~JdqmeA()LGVuuz6Dc?}BS9PsI}!ms$0D#G>!&$-k&sci z$c{wtQgO^7S^y`Smk(}7f)BpdI~onOhe&+Tj+EO7S1O9z! zfx2`0y=;+sX8MGMkE5gg$=S*8?@va!Bh09{5c*5w5<2^>2QDBv7ef6&;yQAAHS1{c z#dxt5T*i4ZejW8{YY_b5jguqry0mlg%)K;aYI**=#69;>3!=4Z4kW_SWXfXUSoIJ2 zX{PqXGkvJ{9?|9Cn0;wu)GzZ#2^W}pJOAhArD(D!8a?__47@eer$H2>>Y0%~=YHf@ z4uzsx{5@d)?J;(gCi(A0e#`A>J8X@9?k=f_wbC^y%|8qI6{vp`19c(4-b$aR`=_ei zGb||+QMLi5h6u{uN1545lT!UI)i^W5q?MT(e}1TUNLuc5S^79{z<|0#Pxn*Y21Ce!`r{+k@`|NN&UM*YM}!_b|b z_hCMf>7jTpGhp931_bG2=Nk~GZA5}n-;=P{9CkcWV^TIc6BMpGa{20ZCMupZspGq^ zsP&86tkrX$)bZXI)Or+Y_e=ray^xkEuvkSr&ctc%av|dJOC9c|f={}Z=6Ofz5Fvzb zjD&=KKVe#ZVqrubKFj9$^<1nq_8^pMg6b;#8(a##8nvikXxoOV`x3QxKXjt zy(+0`aLYTbG~s1$mn5)D+TO$>rrbRrQDsn5e31VzOmxApqXfSc;kRPShH`gu$fz!t z(?|7L)zjYmAUrueW7Z^dHKUey3>d2GRcqq7W17Nb^?&4a&zf?5(iw&^3|MA9a{MWZ z&q-znET+PUEs!wH!upu&!tEu3v%h4CaKMc{w|S|R29`4^hg_R(X9|`pIg|@JxWrhc zQ_QCYe6=niys%v-RF20QyxokL?)<_?--H8PF(Ge)@|1CadOku}!7lgA!btZkxCpIU zKKgEK!n(AOE|{RKh3%Z5T{mcfJGck8`~_FMBu)ix>{I}!tOhNKc=Sg);lk~+*h!F&V;@fDLb0EEq%CfD7ATRuq@UO<;HCzSuo zN+fwH@p~)X?a!^6DoFyN#-H0rJS>E@g#Lr*;Wc!>0o@1TO8YXO5?womgp>6o;duT+ z3M`yfEYV~MyDv%9u63J~e~McFGZwhrNOQRa`ema?>e!-{p0+VzJs8nH;U8;4@cD&X z(W6&D+QA$i_@p%%B@!oM%q*Q`nkN*;gfm3fBN#dg#n}#H>m}}q2O5iYT=k^Ma2;J8 z%XEq!WIgtT@t$i;pFoOjB8BX@QIC9V)iLY5-Xu)*ZEPRTfEr&sb0&6iJ^JML2BRSC zHV9LVy~)tEP8S9f70}vgLL{G<44b-`;wp%t7QRk=?`zI7$*n$LJYv#VCJxXH+^hyD zWfSg(CoJhhH443y?{9v%S;#!zdP-~V^)YsMSa^gDQPk?!#aR=EwP%J6DhlKAE&5h>?#Wgoa1x*MBH={E*h7(_f_!jyH4F zBHRwP%+o6{?fuaIdE7XrKNRJ047Q&u#|dM4G;>^iy7n(>4pe0w=eJIL;t7uq$=_z2?bsT&NM8^0~BnLD){hR~#{Y5DsT{ zz+5J`dIZa5FWc!Vwo3*54LWCa%sN9j_8s;3y03wsE~|a-Z$R zIpa0H8R6KM)G2dZ_FvwMO%}~N&dsORRB`wY?#@0JgNs*O9;jr=M742FiTs<#ao;!3 zZvD@8N5N?*`b&hqBpxclBM`p(KDtXlOv(YsWCpqp!Vl~q;nOM%-X=R|L} z=n^$?P3U!uRwm&{-F}htfPf=39C)ZlOQx_?^FJbeZUf;LL&l8Zby$|S7C$`S}Yanp}D`Y z9n|<=#l(0JTR_BYYVn@L8-4LC3uSVnxBB3HQ`iAjx$n1g`X-e49^=6;A;AIa=F)G& zR#M)<(sY|Nx1iZLDDBgq&4vL4s7w=+cSPz1{l|INW4A&m!r9@!5U*+7uCASDAM@G8 z!$Jt`nkXvjKZmiNyNu+CA?P>EUx527;?N`HQ{R|pF?^T`nkf>MYW1^uDcS<4UQtr7 z%v&+4ib97nsB-F9YIlN91mat|+;P5ef&JXeI7dGgj7A()m0DkVU(5g`<eto}{eX91~ZJ@rCJS2)JnSl5+hO zxW5JIGM{}kpF+dj@HN|-s2}k;{@@D8SNkL;7WyNQH`LTN#J3>#TJ|phJVT*ge_4YT9Dy+qZBc9N3lEa36^7qP&}Mm zcu#|kf`tA4Jh~u7q?9z~7we~;J z_I;U%dWivE;PvA!+`G`WH$G&LwBaP-^4RmyO4ji89(8bmHLfucG=*@lc6VYI>D19> z&Y0fBf=lpW0ReSE*%U)@q=;IqqU-l+bD2FOWC+fqNDdn9lPGj40uoz{9mWbY2|D$Y zvU?`?KT0ieD9;2Lr{e8{A7ClN;8~!%}R(UN4g)+3>#cnctf-U~#rA-JRTL2rjDy)nM3ab$N~T z9jH_1bp`xok6(iD94+mPalKEaB<)UCd&&!}i+LCoG3>zwR3TV`LBN;25RAciwV=Yq z8q_rvX~Pae{F(N>yq_9ht~aSKRg6n6=K5$p?mng_a*`hRvnH|?sb5r_XD_PnRF-9B zU}$eLkBuP3iwhKPH|`|qf~kOC8@9)>;tUvc>k6&vqz6hpNpH7V-sr;#gw$wr1d}S0 z!x`Kt%(-DdINuFX^v|w=KBA>OE<1T(8=MFUo=;d^Fcm?)+6`vcKyP$ccW&zE(@-%8 z1q`gdoHdJmjj8@CwRh}lJUGttFx7FXZ%(FMJ0@`=zGXyLHBJTD&%6x%>qmx|EnbNw z!8K2&&o8Jci^j0OsAA9vH6Nqd99W8~2z7VDCqBr{XzUeJ{8zCm7I7h@Qc-uR^}2-Dqsb6PDgF=8 zl-u7wU0kd-E=^79ObXBCp+G#wDYzD%gkI{%Q-8m7j3)&VbHQyejxwB0PhxBENs2`G zU~RZ3VRdIekXH2;E5z5Gk}OkpM~;xD9RTI z8+s3FY&G;}_@uHsIZ*ccL z*PvKk6VHPOirTY|@bqqMb$5|g>BdrYpTxQqQ+vjXXn2Mqw}7DyXH^d^27ZQ6HQe}a zL7o;Y(oW-+i(4O2#I|bsR31p${n3TkzTs4jRpWayq}Tg06t4Kpy${a6lNbWsaeKfm zbZxYT9t!ZN0Hob8SOu{~Zs_U3FA2vX$yNO{4Ta}<3TYarz%xDAIBe@RMJ;$ZdF;nC zsFG)MX2~gW9ERW?k>E-GT1xa6iz#n4PbIjfRwt5+rKq~*!s->D0#GR2~X4s~;tO*efix>>kI^;M;?L+Y_AhbQea!EPuQ zk<#-vtb-z7u{3}8TXH1C^#qX3(rvhmlI60G+ZPK_@1sr0QO0lc-5BwosKrUf$270o z_xy)og)34!6Z17>xqOq;Qk1LI!*qwqWv1tGTac>T%LI3vQm( z9O%V4=LU_ST9ychBjw4kN)1}JN&6zu;i&A7RZgDqNp ztv3AV$6Ud<5N+pVrN@$U8sbd88=E{HHjVBxXn7JO`YBip|DXULQojPIVnVl2$d$Pj zv3RAAHGiC^ z7gw)F(3z>l&Yi&4)t6&QtIZka49@D4CI$_(J-&ul-)1Nwv%Q3z#{VXE;sXHvNmHOa z1ff83nL#GV1PGda&_jG45EU=rOK_ZO7T=8GjZzB>rJe_kbA;ByU0MtI9f79C?`Y@u za0KqWEwIt>QhUhW_b3+(>G*tv87v_M)gUA=k82PZ=g(kZkK7U5;I86onp{cu#Aw*Hv z$(_+kj`nY{tz1F0fwtRpb)uwj+?$em8F2bPh{@zAb9VJdx3SXUEy((gK3SMcy*kHOO&{*L|eH5;5Ub86SNZ#Kk=KS8b0{= zIp4%qW&@MYvq^W=P>Gi=Dc_}1>{ZEpHI*uO&3_rGfZs=sY3mV4Kk?h>E+Z9=$Iq!z zZ&{TTBsh&6y+o2JrUEYIl+F@rrqyCJ@BTOrCdzm0=1wjb&cn>i%@kI1D4lMmYdjBLC%)QklOw$Tglgm1ME}mBB=d*shD}QL z--KyL;Etl-H&ggIb?3@-O(Gvp{oTrYU@GR4j`;hBnVf|0e5PYO>>#*_op!*XEa12B zN)Z^6#h+7n$5PJIcg@TcM$fCHI7wzwF6-f!n<=Op6u9GeQ&J<>JKr%;OMZ;gJL2@{ z3f~Cj^B0%X8;R6DT7?}thK^c2!i#v^bsoby#nWZi&3|}^T6ROwv_sbrpq(}zuwl+- zfA?}~`7QFDCoOdJ8vri@C=@kW_)y4~0D1kbJj)%UG`=rW!RN@dP%@Ou##2bPyl+$R zv?Ca^%F)RC`w)3Mb>eBy*nYMV2kZpk_Y$cNcgIRARs057?^tPe0d&!0^oC#`LgFn{ zYA4Y|1%E&a24EAV{;rM6y|GGT;Z(A`+D6F%3pstuJ6Z2MnR&}EHe*eTm}19PZa$7X zQ~c~!_nv3F0@vRO%cs8%yVbiMHGA9!szkgCUY>$$;kOABfzP9^$*ohGXy3~pX!~Ll z-A#BH+=OwDVXDJV+Lg2Ai0p=R+zN#Ntml%e*VusK7O2rs%`S7)&-Re=_q&;rcG8|j z32FF#%K9w28<&kNdhSh9crOP^$+P$|v^!c#HSf>IM{iDUr$=g#@qW39QXbYb=PS*J zgyJ`r;c>s}gbc$Wp16l9OCvYsp zZRz52a!xU=qq=9{jY23%Kr|C2gl0@aM85jTDhIwqa%Giu3GCpo8clL@Uv-=RTAFXY}3FD###rVb@WyUt&>2J z^@6(MvGJad@FFdUgB}$12%eD?&fJ1pZz32^M=&10`w-cA`_79t9|R%JVfj1UtFcv{ zX2;hc+?=ojcnywzuBCJ5NkMCGMPVz39MV{`q_BX8nja}YJw<{urTb)12;J2^h9W2a zq?#U|>IvNybl`zZ`I(@I!EuT{!(^f(12cL+CH$)>JP)tGW<iVu886oHQ)%&Y zYKnCW8!Z0eXz{vg*MgT2(Dkm88hYF^oHWWv ztV4GSMT)S-SC#^u6qw*hwXU|_PsKv7md8Thabjv_|P=T98c4=2kv+G4^#yC{83C;s~?Nqu(pUA8y4Jq5Gj&bLh?dJBPC8;>DIqy=Jk zNIkWBX=+n~lezHR_qdU1GIPRd25%R)`u;|pu_kjR0@cj^Pq1wei>_xd50Fo;G5(EN z)Ujqdke?-Y97?S>L*76E&dzCMX#I*kQ-Kv(9tGO4_&=^B^U+Ew=2GXZ&begzaVc|A zd7Gd;PIaK#<_(1z>ZfaLhV60v4sQ)po>zO-U@Rqt%6HcYEN+E)2 z-5BAU7*H-gCjiSrvm+3zT*QX~Mw2&DqNXmdwa)B!7kbe69G=1Cd7Lz@{*Seqgp(f| z-~l-C0V02K9`P(-v~pT#2#is7K&{?Ho$sPk_rRTxw#ay^ugRxl2xe$NDHnrTWSyNw z9@(X=N6ubil2@wX%bX+!V}t<~9+%|L#l@sD4&69q)&BD&&-GlS3!&13>vKKm7bxRq z`%W~VPF`Y03E@jI{iHuk1s@==R?ni$Jx-a6LH> z=z;zk;S|eH#M>8JfX?hNdK6%i_TXUjoFrxB_7UM+{|s*+Ki_*If2Q~S{8{qJ{D;=j z5eHl#4&)C5DiupX8r47L^z0y$^wz7%K6?(JJgirmV(L96Cus4|&yD`KaKQ7BdYZmr|~ z(=p26mN#WhU+jlVR&H8}khRwijouMJ$eLXSGDbY|)HZ7pKJ$v9*?g{>FTrktjqyT+ zx$(eQChE8W*lv_N-0FgLlRRx=xQ0jPkm&#D1>6-;$PoN@2^@`gP>n{HVx`s`*bXnn z7Pk(h1ZHFm792^B$VZm1p(791vm+Ui!Xs7ncyu^e1Xw&$W%thDAsxIu-{Bc(`x)R& zpt#QpV|JpE;e$t^5l&fFS>0#@z8x}mszx{-r{>h9c`{I)+gpDZ!eS-TAmdO{=*XZRZ&r zo$iqo5z&A5NN)X?r_F-=>(=c{dmMeKITU)Z$~uKYe}T^JM2iAw#N6jt3b+tvZCtH8 zcrQIg)DgN6-PKdX^W=_4(0ZH7*4yXi$A$1Lx018++y-k!yEZgzdEpt}W&_&)18ulH zW;JH!HPGY}#Olm0hu7kF4B$DO|8V%M7!~<+9#z+_&mQ~PA$ZyRnL*a;9~+8RW@6JW zT#e>JP&T3Nzq9!Jv;b;0LchE{+=6u|~myJG%{{%Y|+RWnV(cAEziCn=VCeQ5={5!D%Fc`T45ad@2 zoTAosP$yi8S0CJ1YD+Z;s|YhQ@6I7@TWqH2$|T`5B^)DhbkDxMYUjq$@jC^?{|c?a zlT2Ce2n|zjZ#*Pih*b|gF=FIlC;S|O%o6@2vyi~1ZpAL*R$#+*6W_hLFmoVb|ST3p(^zP_GsiUu^RRLB0B9-c;oFO)R4U!gG0EWdoZ0eIg#nk?^e;Lz-)y zoC*)1a~b3EnIz#8Fcsdn9@=DNw*JJtY8VZ=F`oJ~jctsfj+fHtDgKy>6QtVo)NjlK z8IUz#RS*mXCb^?gpbmAy=IQL5x_Yyn1=XFK^Tx`cOyKQB9S7308mN_TQW545pc{#N z4kD-AX7$I-Q(2)pa*NYYh`B+aJ#<)|zhxZqHgCzp|7}|=iBchNXcxm{c}NlNF|zsv zsx+%Y!%6s`KWy0Q$-@v0QiUByFVRl=R1)rCoFK01g@Yq52rwxyzW~112zlWa!nQk( zBgvm4-+9@46Q)D{6f}Ti*}i({@!m8a?g2J1qkn0SIYS#Jd1Mu)LcClZKFDhEP zOwE3FR-9yKS-Kr4<``{Lw>&%2mT8xASmC$GJEmD_@uy?7bJWZDSg7-b`sZiojd}kV zial#tU1J*DpwyzQ4mBW%~ zsJ)(@#NuAqCMexI?rr^RJyrb~gIwt($^1?y{Q)1y!>2Fscsz7T5Y^c2F;j~cc8)SP zmQuotZ92u`|39b=Uth5?{w!kW#`4e7@>8@8BrqOqjh`K_h|8Hzy?=Xp4e1ogpbFq! zg@}zP%uYNY5aF{YxQ+*KOWL2^ln~N1qCRJDKrhdMBF^4QX-`0_@P=D8#Z->8y{(wi zn~U-O0#0d102egLn~0Bi{$+bc5*mpzP4iLuQ_CsJ?6;!1_JDe8d-`-|K)Z&-k174( zHJBK_@Mmu;=qOx6v1dtK8>7LO5ScJg^)awhaA){MfLiu^P9X+9Z3Q2K zbVDdsMojVX-TbZ26K9!hMnz+CL?qp)@KmqRfcJ$L5+c2zG z;0#~A{!3fB);CNv38MpAlVEEz3F+qZCSk&h<4nRU*VXJD55!D=fGl1y;eaV#{q>IF zu4=>>>e-IHqeG&~ukaQ>=NJ+27HH+BvDG~8;l6QajiCbd%#OL1L=e*xacpnueL=j* zy_A^nEsc0DI9Uri_6=CwN&W3^2ce*^j{rGs(?cM^lsh_166S-)O4?(K+uM z$S?r5HQ*HzVXZD*#(+mlj-97{F@}r*>dI`rs_~2?n=@ORG@kJ?s+DAF-38tm1Mn<7 zwjR}81l}VoWq6B?oMjNr7ZzEbWR2W`u1m(1inED$5!^I!hk;7&By z)dmw`yi)Il|MO~VmrS?E_;+gELqlXj1HnXY^kV0%?6N3N-fm@`TKVDalje446JGc0 z&_a~#(B?s@_obgltLo62I?jo9(a@nazb_FlhiJ7JRGJ7cp+nolEOcN4MvA0m4zpj* z_-2vTN~Y#wa(jgQ!}bw#o3!p%vEmgU3TJ#~YnLe%)#1%^Mf5dz>6?hw8rwuvfiX>_ zU@w5_58mGADH!H8L&v1=)< zkehe4(#i58yTekF<_?nkdVd-^_7gPm9{&u5p$xOQ`(Q@`N1G}x_v=7rkFj}N%*4M ze{58DD-@!cIK15c?J51Bd8w+;|9JfDaOMpdlT5#hlwMY^M){O>sb5F>B(zeuCpWk! z0BGdW8K|dV2Z&RoqS=wd>KggGJ)`D7rSx^|#pogderOXXZMDOXbiduS0Ai;r(pkC`G-2M_`?RgzT%np3ZnhDq-mD9H;V7)IGEB`}r z$VyZX$;gga3*&kiBsWBa4$p-dFb5t{{;t7aXd*unZJ_=ihUt>b7FV9-(PJlc#j>S@nr zf$osPwoIJ$6Fr=mfJ*XBp;`LFcD(&;I#ye-{euq_xnGLeJ!A9gk`* zP-=a18kr2Q>l5j#3m--j3G7WGq5hFY30X`!%J> z+g|%Sa|-g3*B1uCxfx83H$K`6hX#k3K0e@m`Qz84SZbtv`}JxTGx_MsHv%wye&=+5 z-2foKDsOZa>eI863ia+LBL@TI{4%R`KuXW9!JRrdXf!de^z3R}FnngS$~Qeb8#TWD zAGs6fRfTf;g`{0r3a8_;|`4s>Jd~Jlj%6-Nc4B!N=hE`I*rlVfJZlg^sWK^alt*ViIIU?Eq&wKB+{B?gFawV zElX82*rxtKx!~=QEQZNj-cIxeu4+`$MA_Qqf4sfgXLU80rESblG~4Cr&B_wn)f_{e z^10@S;P$LmCnM`zApS6uuXCym;^{oXnkwbH&FfIJ=E%KcI~CY8ANmPNbPD?XyH$mN zOB>*_2?dH#Is~TH=1|ScIT$&{z3YLKJ@^3dZ$dA1fP7CFi z-g&@+IasgY7|a85F6!uQU#dlt>@Q`XqZ97$3Ce&!l^lY>gKEbEDTb704V=dGFbpVQ zv5R0XCRh#hkdo5UghjKr(-T;(bg1!83={Tj0CcSfbh)zqwX6SvsY$uH$#Bgq?>!nT zZ3Tl^g*Kd>i9rct?j#0jmVOQujdE#Ubmx}8+;jA#m#oyNVt#J?k{xux)k0G?ppWzp5OY}4Rr&ejB`llC zeaD9qW_ht1CTC+(9f`!9MFQMK2G>sT44*da))~d!x_xKS(*nFWmF)MKFGsaRT8*uZ zen~fweA)k{>vcY{SM}m;Wc*lGL)~E%ja3dNX2+%CaOHagl-RFgO zs3a!JFP)fbnX_aRY4snG9mEpNdXX7T{}EYb8$f*UM69VpD|UsLZghoY9|Bh%FZ#F1 zt^sZR^ zbKi(st>{Z&6qLMGu2@r-EB1q(a8>UFSAaojbHyrXREoSPb!ExB-?P(w@~QVMb^G-0 zJKci`Vq}0=tg5%oe)>{@uBoR{m4_y^UgrV|ok(f^!O$%7je;7TfZZlMay^HLzD;C^ z{Rs?hPTW)CDfV?Inl$U*1VUBrWJgasd*DL%HUuVUG9%DAF=!7tqT$t#`49#2OZ)tzpK~Hw=2i=+FUbfFt--e2#*sU0B$X zIu8Kd6F98;5yM2*9K>AeB#1Djpx!ASgWCyWAVE!L^B4}RS1ZGiLW~xI%%h47XLKJ{ zne7sJ72x?#43*Pv*ruvFbKrhhjr=nsWBc@q7$_xXw|~I zVbPN8fg*fF1k3?&WQ&WokZ{%*aYPZ+fOpztX1Jk=`{ysUVMprC*dYXu$Olf1sv8*5 zcKYKNF4fO^t4Gn$pPut!k4@JB-H6ex*8J%xoPs=ZaQo%;%y2SfpCW6!7#xg#@r1CP zIOE?>_?9b%a;kO`!Cvp@BoRO3v^xTcGmG%zHIiXCb`ta_?<&%#D{0mhqtdT9T86xb z{TZisq3}Rhsf;0U^o)x7fwgoT$eI;jHp*?fcF?k4X;-CHnej>=(OwD zK|J>9>CvWt5qg276F0e4yVdR?v^Q4Pof+*5vIv9FYleoM#Z5_a)|u&nufa3)S&)VL zm9D|`J4Xu?^_9a%e*H}0eZU*_qt@qjD!(h&=PAUq{>}AyN|bE<&Gkx-Ta<6eQ?k+4 zuiTK=K3u*b@3Z0Z4S5Rjsvp&mr;6Vcuz)f37j0IoF6q57WSz zjoJbUB~kv3-eJvQguNxIn?;{oulIA5MeKW`CtNB64bE$2h<)S>ea zk6Eq2JhnGjAc{E@?qKq(pdI@_JDPI6^;#`8f2q}CY~J^n#fykOO8v)Eb@O3;+XQ<$ z^{ApGlSh@H{PQtw#Mx&!BMJ&_AVt!~?ACXc5-_1nB6#5-k3((6p)*w={ouPULQzxY zBH0z$t=nBhsplek*h_58qrLDfW9W6-H)CvGTM_kA>{S+hyOx=Qm=-{V@9 zOT1l{2Ec(do0-7iw22`-((3wso3JG@&iNf%# z7PBG=4}6Vl%$Bc*>M)jPoXi^UWOVKslluV+6E79KwfR#0oHu$3#{8?NphLa35g8)f zkI*hv81@KJYE8q~`TqH2gjMZi+NHz95Df(-IH4zGVwWn)sWHSG|8ad;HpAm%}9iLB7!U0DS!X*sF|p?7wR@i z>nO%P4tfy={tC6}J)-(e4a%d4sNh2zKed~Oal=DD>{hLoz_WVnX2&@Db3ZH&R(vz| zXBj_m>Ezsh&YNX7cLe97)V-pCh`oLtNMZ=`)mUE`toR#UngUdBcaZ+QI4_jOJ?DBr z-Kt1V$F%S6j|ha)+_ULm^O!O*&G`mVz<$1lP*3a19`I!ULiZ%<7!K;0t;Zcggp+LYS`U0x|mS0c!D`2Cd6thoe>V2G;Jh<>cy<)?Ojf|+vA#34L0Pb=`4ly}U z=8;JWekNmw5(($qbT^p(Bq6gMxG{^& zl%}`7j4(eq#imL)hnYhUuz0=+$?&ZRd(9;?6Q{R6n+s2zU+Wa+bb9NmT%wP`_E#Nu zfRJW7rnjy^sS644C7j=nLLiL<>9$gsJH534h44{Nm2f^4g*#B_>{SY#(_3ewko2Gs z=ddyRv{A1%q4K|m1gC1mi1@?|MIms@oQ4{UT|RQ5HyKDkfQ+*=RLoH)IE5PD2uxOu zZ$SsR_6$-X46@XEOoR<1@L~vASD#7x7pV1{eT_$zz+c7JY0r~HGBB-AkI%h;$jsBB z@(=&cVfab;>`1uQ6JEFgx8;2`>Tca#I9U`ZS|2EV6yaJP_$;l?HNrhW@Rvi!#90g$l%_W4-d=RFXQ zdm$mV3=PQxpO2s}IjB7%bg9DFN@Rg|r=+C^n+m75UWG$)ypMMDN_la+J+%Q$?%k>QptsI5p>77(i-(laJ`*Y*Xb+EdH%U`JZ7^)u z`IRR=X;a=qiM~RYp9mH6KIoqBx!$4GEY)K?K-qt453{1baB~{o`0XN7>0sm4fx-xP z%$drtH^?zxgo)REVRW4Jg)LdMB<{0gJ3M7egj3#WUO7q>seiKF!%}1NMNH=U)EHuo zyzwA0?@9AAJJP)517Ae@fU6?p`Zjd~k>vk;agSwl#(X07k9S@t8TGSln@VSoB*LHx zDQ}X#3>Ii^fIREVlo-1-DlJMb0n1hlmd&|?>2;I_f0^j5Y{UiMHQ`VedRQXKZ+|(n z?vd;88FP_#jn$PNsSXg+=%Ni6y884;`)QI0bCr+PHp@pfa@6|js2z%4Xg%6=#Y74V zB19=U=$kOQUg=|ullXfpE+xMSOeCLV0+U=t1ecAl=h{;w5*nXK#96|=_4v}O*c+(B zdMo-|zZZ08kN*d0?d8V*gya9)|C!6qgm1kPZ0Z-#C!igKp#ZJ6(Lq5Tb!8+h&GW99 zEspRB%1vuW{p8QEWzaTF>m>u}H6D;_uSEF$TtE377D53s9`%^7%YV6It-B?(k(?XC zz`GV=ZnKb_i^4$jMv{3$(|Y)Z+SX>z4Khj|(w9PUM`?Jk;*6?=(@>Y7_<(nx38?S!H!7Q+?d|#z)4!D?ad8o^6am? z<`d@xm=zMqvFlmzw*8em$#JDGTi~kdcmubIDoY%C;#Trzcy9YjU>w zN*ggq$|g7)NewYM$;V2u%^)BADonRK)K>1R6X$8bk+I&6fX)ukySZ5O9s(d@ko((J#xoUR4GLa&LKSBq@OhByzYf=R$0&j{ zR!mz#ru^pDqnNiSfBto(mnbS@a>?l}i{EVb3MvKz0@U!b{OUIk(tdg9o5|u8c>c;+ z9kbOJiV~@Hp1i%oZo+5+%8ztFyB3+q24aXPf7DSd-Is*irm(9}vQc=~^c&_a7kBo; zL*sQN`QA)<&ecFj#U)pBbU7W6@vBv*L1zxif4#a4UZxB7Gj>j#hB2IZJ~Z>pfmf4m zsg^3hNPTkXa5g0a@%;_1V9;dX$OkIu;NZWdJr5wy%BeQ-5HQ+s{7dQ2F{=M4dG3|* zQ3k94w75gX3_f?JE1sAgMS%HyL?mc4V+DMDX7dQSsdMi1Y)YQGbj+SN>>YDLcc-|` z?2_DT8QrAho+2*igcIN$6++Vl7dGd5(XDLEshBA`aUdu1A?03+Jn7mLeS;G_iYlsj z|A?`_7G=pVTnl5}6Xe6!lGVdOV}jgyEzZ&{PPy@Ckic=p`2-jm&Jzn@@rk-V+pE41 zvw;>ga_#ld$tM!PJ0S!}c{&rRC6tn*xM$G#PrvGf!x_n)V1qUXHkS$wT*?aSSkO%u z>zdq&y=Udi*JJ4-`R;X#T|ykZnj}G-T0moB%&)>wE4hy|+pd#{jzSPgg&?PWD|y|c zy!;x1MdgBTgEVUsBywl;Ho5NGFdG_B)bIrmYXLeYDk0q>BNOVLG#xwzRexBR{NA?{ zbgOS;NDxahYfX2A%)U!qoVnF=mo8TIYumFB;0DrD=*r8iZQAA82d5`^mS zoH^Xbq01NHn%v-tbqfe5ZepZ$J;|XxFr7Idq}OR;m9AAMG^@MSvirNK+N92FWH72* zD|dXiXlivXal>h}Ymj6xXpSejTg%}_TF z$QORDp7?H{%#OjyE1(b!4I#=It2 zq~u3`NubB%H-4F;tHx(s#pi6)#Qjy)bk+FfD+);7M|^#*u<$2jx$A?t2Ne81-9i1^ zBtz1-deS8#C)DrM25W!OgWl8={>ZExE9Ug4JX$)vmwvn~IbJtK=;SJ3Uz`L%O$3 z`I7udv0usz(s%|*6^Hj;xb`Y>5BhdT^WU{JJ`bEV zxHTuNaqZJn(cyTDz1L@XsAz!XsPbdvtv!U@^q_!H z5WsVYCsc(BS-U+{%B#F+La@X8cH&65l3#}h)Tskxb*G*kwE5TXtmp4}(KwpOzw^R} zd$`7%#>Xs#U-R`%nFp^SkfjOV*GT`c)IlE(p$Te8IDBGxD*Oarc zrZ=6g*#cEaBO!d84;`y1R*ye(;6f^|^r7)SUB;vrnUogald_n<=|dAu4#|BLK8bO# z;6(rzWJ?G5Pd;=(B$M2Q>#hANFk&v8xRoQb)781Y+8hqeF9qWsUspGAkv5x{1rXT)x}F@>p8Dv(5AsK z{+pf-i1B{eq5M~*1)qIA=<+26wdOnM>L#dtijmjft}rYxrurZ7gT+WChFOpp6R2Hb zkre*3Lx@Nl1DOSxKVbof{|niq@LzNXcNq~fA0KV}`$oq9Fw!W;`?ltFW@-rnqe$bj ziC&_b!($X|12;0D^Uwm}Wj-f>p7!hf zjFChC@k95j;7Z*R8c0V{;Jl0=ATJLu3Zk;+j+JcNP44hNg6L@9*xi6|7@;F}xBIC1 zcnh_Q>O|trAF|LGK=acUT1>C=n--cD`4pa8f~p&=PVaxY6vEn^Jph^F{5gVjXk^UM zT^`D(2h+)>{>W_WAR?~GQpvTX|H9Bl!nX%g>^iS=7aaJg=kyOZdJ35Opo97t|K@>n zv^7)FqB)GcKoi0Ao)qUSTCZ^FikOq`-7hMu$A8aGg=*)`genE2-%d||48@=mr-V%T zESoP5p>>IeLpBGTyKc=q_+x0+L3DBKt$=Rt=Y;;22I9R*!D=w1-X!9lkPZWBC6YH6 zLy@t*ia!xb$6->Ah0=ncDTr3MjxgkJcOgmB78ve;pgh|sj}N24Bl>)V;VlI3pue{P z2#pAU!h6O$kyfLT=ZDde{&N*SC4UvwA_1gCe67SobbLn`9rDsnW&)vh(2}MRbPlBr z{FiWg*R**iqK}VANWN1HER|10OUsazdW%t(7_rIk2%2vso-CxhCGpbd?a4=62B5jM~5wOU_ZtL2Q^s7 zIB2ms(Ltkr_H|I}3kjNML0$4lYGHMU}P|S!U-Um8I2zIdLVu>nr@&L?uel$=@tG*3{9YId~_^LVlmsf zGnU><@9;Nc=_Kmr-^bF1m>pAze=Y%*+#-ROATFD`!=maHAeF%E;>tq?HAO<{lK9J` z=y-4QpqAK)-9^k?j-%uGoKaNGUm8V2)ut<25+U){QPj%)lz)ffsIQ?MFD#2Z8! z9KR`|6kA!CRt0~wwR}xHU8w1*e=cJnGo4?Gr%4mKZ0Us)rbyT_3?!9cBKD#XV(o?c zLt65yxJikQtp9rUguP()2XH>lvMpM}$dHXs8BJfK{rua}w8VdIw(G>-&uc~OqT}@m z67yvXN!NJ(7#d9X@^xcC){pZ2W9UfME%6IuXo47{=^4+5#?Tj7-#or0fyQev_H8zg zjh{}SYiJW6pGZ?_H!n@3Q7Z4@f)^7prMWE~iQty>NoRIudg6b#P-LZ@GX5$TlK~+c zc}y~0sLj60x>{}tVoO6ZeUz%-9Z*6a_)rS)n}d%`rBC>Dk5r-%6v^lee>0Wl`E`ry zEsm|3(%GFwVb~^2J(k9>Gd7+$md3LF8T`Sq*hE>Oe#*fS`tm^J5ontZmEhgi1dG$s z3#O57Qg&$iH=-Gk5NN`chPWgAx3P38-su=eCop{4y% zj7XHA>>K_K3Ketqd;VnGUBZ7JPi>3_b7LCbznd>g!xAat{uAgWYUkfipbIp#Jud0I z?}Qe|MEVS+d-(ZDG@RD+?EVamE zb31DyDzbf(D#G1GzCr8>REZ=%7)$s3j~nCZ$oj zY#`=#tkWwv;2Heq%^SFR3pcuO^x^2oF*uAlDhN`b5VLl;rnxaUMmf-oMN%I9??oiE zgfXZUUx$B*I8t$>0THBQ6Nvw*HRU{Np&RD5|GsrfyMg?Ph0qW4_5bP1E%fET{lFWN z8>K-5u}vZE(SN>diWcQMJYc}#kHdl^42OgUR7&5b@T6?&fB%$p!~c1C!;b$SDjWXv zDZA0!|G{N{-fV_+Fx=D$bn&E?yslugY|Qi1e#bO#T+N0YmBc%z(mrJ!v`?efs1JNa z;WlMWKsuX&l?LlR1=(voF-Bk{iEgH|h@dBaj7Lm|C}!c0OsCOa2C-XYHLgpK@}1M^ z+jJ_wH;3*8UAmP+*J`8wsXJx`Mdiz9&{WnR%wL%SQVSL^mEf+TL#h>fycB+qe>{Vp z5w)OLT)vmih1hWIUK(v+I^r*S(PoV;%YI$gH=Bpdq)W6{Ont8nul^@z(w~LfVf%Rb zEE*Y$FN2G`Q-lT+7{wp-!&MmJ4p~9Afq-{q)MO77fRE1fMDX`!QF|=P6!(falwS?% z5LPQ>8BD-+q1Pm!enB1jZ8dYWP@a*!{3tzH<|HGteag07F4c1xURz<>Qc22 zI|+*r6H<{3m;YlnO*H)dDyW6RI65GpZ6@=$&m5Wy!)mq}+~x^2FP=lU=+1h_Fl>+l z^>weB56z(g;w{o^Y6+c7os=%%wYhYJSGFQfpL@7Fk-w2kr-&W;zF>YcmoB6sJaZo1 zqW#6I)<cvax|1H_)p@kcaED44zCqqMhmy(&0n05v=TUes*tajBR_fm(Eubn& zQ+d>VwA?sP0)IJ(C_^XhGb+3=fBil>J)l&J4T+%0FK^c*A-tw-m$;2Q!o`JD@?E5L zs=d64z&3l|p2L$C(gy?u>AbLz&SoTxf3=XV4IH1k*w!0~z$V3m+tc&Jr%*-?B=HrC z=>6ejyxWEpgf@6Ho*3JkrX;TjI&=<3BZRgbvLk;TEsQW^9^3$sCjv zt8!Q=+>hga=M66-U$z+0jw0da`{^znF}t0YX=LD`i)=ps+x;|34Nb}fV&gyDPoH8! zB(HdYhSJ~p<_BnWnll0kKIuU+1lJn_6vdcO2>A!sK`*ZO+YwMu0T4%P#DNHZltb!M zWHUFv`2Y=ucV7_qeh_m5sCgKVm>=bd57Mxp4%!oJK2!xn+6NH!D1l?BQO=7Vq?5C+ ztL@ppl}6Y+-kTd}q$my|-ZyCe0HVT!b0+rDl*h9N=3}^=$Q3F*E)MJ`=6m;(PWEW_ zz&Q6Gn)NG1>h47D3Wdwx?7GMJw|2^Z$fu)2dawz^4%i-`gpMnWa}1opmlcGZ z5TSWVc0#;Z%vU&Rvg)FN8bW!Klls$R{J2tZqUDy8mQmHzI0bU^3u%c46xoFxhxzP5 zFd9BZG+x!NVNQ{!7tth$4P`}iy0|<`Xy&a&^i@N1f=##}ikgS0vVh4VURq3-su}{t zb0Pf8V$9M3t}3BXXez!0Y}S&NsU`GfY990xJyeFL{;`oRSDq?c*B!`jFQp^JbX|{; zTbI#6i~q1Ko`Ip?PpT`j1{4IlnTSrFvYh^|YtVU3qgx@+la7d%i7RLZr2)Ja9y#

S$qf3K82MQeD*D(V1pzkU^6Lih7;R?!1~eSzM{ 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%0A_d~61jK*@I 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