Merge branch 'Horizon-OC:develop' into develop

This commit is contained in:
2fort sink
2026-02-04 18:07:27 -03:00
committed by GitHub
9 changed files with 238 additions and 107 deletions

View File

@@ -458,7 +458,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
} }
@@ -532,6 +532,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
} }
@@ -609,6 +610,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
@@ -689,6 +691,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
} }
@@ -762,6 +765,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
} }
@@ -835,6 +839,7 @@ public:
} }
} }
splExit(); splExit();
sysclkIpcInitialize();
}); });
Hinted = envIsSyscallHinted(0x6F); Hinted = envIsSyscallHinted(0x6F);
} }

53
Source/sys-clk/bitmap.py Normal file
View File

@@ -0,0 +1,53 @@
from PIL import Image
import argparse
import os
def image_to_rgba8888_array(image_path, output_path):
# Open and convert to RGBA
img = Image.open(image_path).convert('RGBA')
width, height = img.size
# Get pixel data
pixels = img.tobytes()
# Write as C header file
with open(output_path, 'w') as f:
f.write('// This is a generated automatically generated file, do not edit manually.\n')
f.write(f'// {os.path.basename(image_path)} - {width}x{height}\n')
f.write(f'const unsigned int IMG_WIDTH = {width};\n')
f.write(f'const unsigned int IMG_HEIGHT = {height};\n')
f.write('const unsigned char IMG_DATA[] = {\n ')
for i, byte in enumerate(pixels):
f.write(f'0x{byte:02X}')
if i < len(pixels) - 1:
f.write(', ')
if (i + 1) % 12 == 0:
f.write('\n ')
f.write('\n};\n')
print(f'Converted: {width}x{height} -> {len(pixels)} bytes')
print(f'Output: {output_path}')
def main():
parser = argparse.ArgumentParser(
description='PNG -> RGB8888 script'
)
parser.add_argument('input', help='Input image file (e.g. cat.png)')
parser.add_argument(
'-o', '--output',
help='Output header file (default: <input>.h)'
)
args = parser.parse_args()
output_path = args.output
if not output_path:
base, _ = os.path.splitext(args.input)
output_path = base + '.h'
image_to_rgba8888_array(args.input, output_path)
if __name__ == '__main__':
main()

View File

@@ -39,7 +39,7 @@ include ${TOPDIR}/lib/libultrahand/ultrahand.mk
# version control constants # version control constants
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
#TARGET_VERSION := $(shell git describe --dirty --always --tags) #TARGET_VERSION := $(shell git describe --dirty --always --tags)
APP_VERSION := 0.33 APP_VERSION := 0.34
TARGET_VERSION := $(APP_VERSION) TARGET_VERSION := $(APP_VERSION)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -29,6 +29,7 @@
#include "../format.h" #include "../format.h"
#include "fatal_gui.h" #include "fatal_gui.h"
#include "labels.h"
AppProfileGui::AppProfileGui(std::uint64_t applicationId, SysClkTitleProfileList* profileList) AppProfileGui::AppProfileGui(std::uint64_t applicationId, SysClkTitleProfileList* profileList)
{ {
this->applicationId = applicationId; this->applicationId = applicationId;
@@ -50,7 +51,13 @@ void AppProfileGui::openFreqChoiceGui(tsl::elm::ListItem* listItem, SysClkProfil
FatalGui::openWithResultCode("sysclkIpcGetFreqList", rc); FatalGui::openWithResultCode("sysclkIpcGetFreqList", rc);
return; return;
} }
std::map<uint32_t, std::string> labels = {};
if (module == SysClkModule_CPU) {
labels = IsMariko() ? cpu_freq_label_m : cpu_freq_label_e;
} else if (module == SysClkModule_GPU) {
labels = IsMariko() ? gpu_freq_label_m : gpu_freq_label_e;
}
tsl::changeTo<FreqChoiceGui>(this->profileList->mhzMap[profile][module] * 1000000, hzList, hzCount, module, [this, listItem, profile, module](std::uint32_t hz) { tsl::changeTo<FreqChoiceGui>(this->profileList->mhzMap[profile][module] * 1000000, hzList, hzCount, module, [this, listItem, profile, module](std::uint32_t hz) {
this->profileList->mhzMap[profile][module] = hz / 1000000; this->profileList->mhzMap[profile][module] = hz / 1000000;
listItem->setValue(formatListFreqMHz(this->profileList->mhzMap[profile][module])); listItem->setValue(formatListFreqMHz(this->profileList->mhzMap[profile][module]));
@@ -62,7 +69,7 @@ void AppProfileGui::openFreqChoiceGui(tsl::elm::ListItem* listItem, SysClkProfil
} }
return true; return true;
}, true }, true, labels
); );
} }
@@ -282,7 +289,7 @@ void AppProfileGui::addProfileUI(SysClkProfile profile)
ValueThresholds lcdThresholds(60, 65); ValueThresholds lcdThresholds(60, 65);
if(!IsHoag() && configList.values[HorizonOCConfigValue_OverwriteRefreshRate]) { if(!IsHoag() && configList.values[HorizonOCConfigValue_OverwriteRefreshRate]) {
if(profile != SysClkProfile_Docked) if(profile != SysClkProfile_Docked)
this->addModuleListItemValue(profile, HorizonOCModule_Display, "Display", 40, configList.values[HorizonOCConfigValue_EnableUnsafeDisplayFreqs] ? 72 : 60, 1, " Hz", 1, 0, lcdThresholds); this->addModuleListItemValue(profile, HorizonOCModule_Display, "Display", 40, configList.values[HorizonOCConfigValue_EnableUnsafeDisplayFreqs] ? IsAula() ? 65 : 72 : 60, 1, " Hz", 1, 0, lcdThresholds);
else else
this->addModuleListItemValue(profile, HorizonOCModule_Display, "Display", 50, 120, 5, " Hz", 1, 0); this->addModuleListItemValue(profile, HorizonOCModule_Display, "Display", 50, 120, 5, " Hz", 1, 0);
} }

View File

@@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
// this is a generated file, do not edit manually.
// cat.png - 96x128 // cat.png - 96x128
static const unsigned int CAT_WIDTH = 96; static const unsigned int CAT_WIDTH = 96;
static const unsigned int CAT_HEIGHT = 128; static const unsigned int CAT_HEIGHT = 128;

View File

@@ -19,7 +19,7 @@
#include "fatal_gui.h" #include "fatal_gui.h"
#include "global_override_gui.h" #include "global_override_gui.h"
#include "value_choice_gui.h" #include "value_choice_gui.h"
#include "labels.h"
GlobalOverrideGui::GlobalOverrideGui() GlobalOverrideGui::GlobalOverrideGui()
{ {
for (std::uint16_t m = 0; m < SysClkModule_EnumMax; m++) { for (std::uint16_t m = 0; m < SysClkModule_EnumMax; m++) {
@@ -38,6 +38,14 @@ void GlobalOverrideGui::openFreqChoiceGui(SysClkModule module)
FatalGui::openWithResultCode("sysclkIpcGetFreqList", rc); FatalGui::openWithResultCode("sysclkIpcGetFreqList", rc);
return; return;
} }
std::map<uint32_t, std::string> labels = {};
if (module == SysClkModule_CPU) {
labels = IsMariko() ? cpu_freq_label_m : cpu_freq_label_e;
} else if (module == SysClkModule_GPU) {
labels = IsMariko() ? gpu_freq_label_m : gpu_freq_label_e;
}
tsl::changeTo<FreqChoiceGui>( tsl::changeTo<FreqChoiceGui>(
this->context->overrideFreqs[module], hzList, hzCount, module, this->context->overrideFreqs[module], hzList, hzCount, module,
[this, module](std::uint32_t hz) { [this, module](std::uint32_t hz) {
@@ -52,7 +60,8 @@ void GlobalOverrideGui::openFreqChoiceGui(SysClkModule module)
return true; return true;
}, },
true); true, labels
);
} }
void GlobalOverrideGui::openValueChoiceGui( void GlobalOverrideGui::openValueChoiceGui(
@@ -283,7 +292,7 @@ void GlobalOverrideGui::listUI()
#if IS_MINIMAL == 0 #if IS_MINIMAL == 0
ValueThresholds lcdThresholds(60, 65); ValueThresholds lcdThresholds(60, 65);
if(!IsHoag() && configList.values[HorizonOCConfigValue_OverwriteRefreshRate]) if(!IsHoag() && configList.values[HorizonOCConfigValue_OverwriteRefreshRate])
this->addModuleListItemValue(HorizonOCModule_Display, "Display", 40, configList.values[HorizonOCConfigValue_EnableUnsafeDisplayFreqs] ? 72 : 60, 1, " Hz", 1, 0, lcdThresholds); this->addModuleListItemValue(HorizonOCModule_Display, "Display", 40, configList.values[HorizonOCConfigValue_EnableUnsafeDisplayFreqs] ? IsAula() ? 65 : 72 : 60, 1, " Hz", 1, 0, lcdThresholds);
#endif #endif
this->addModuleToggleItem(HorizonOCModule_Governor); this->addModuleToggleItem(HorizonOCModule_Governor);
} }

View File

@@ -0,0 +1,46 @@
#include <map>
#include <cstdint>
#include <string>
std::map<uint32_t, std::string> cpu_freq_label_m = {
{612000000, "Sleep Mode"},
{1020000000, "Stock"},
{1224000000, "Dev OC"},
{1785000000, "Boost Mode"},
{1963000000, "Safe Max"},
{2397000000, "Unsafe Max"},
{2703000000, "Absolute Max"},
};
std::map<uint32_t, std::string> cpu_freq_label_e = {
{612000000, "Sleep Mode"},
{1020000000, "Stock"},
{1224000000, "Dev OC"},
{1785000000, "Boost Mode & Safe Max"},
{2091000000, "Unsafe Max"},
{2295000000, "Absolute Max"},
};
std::map<uint32_t, std::string> gpu_freq_label_e = {
{76800000, "Boost Mode"},
{307200000, "Handheld"},
{345600000, "Handheld"},
{384000000, "Handheld"},
{422400000, "Handheld"},
{460800000, "Handheld Safe Max"},
{768000000, "Docked"},
{921600000, "Safe Max"},
{960000000, "Unsafe Max"},
{1075200000, "Aboslute Max"},
};
std::map<uint32_t, std::string> gpu_freq_label_m = {
{76800000, "Boost Mode"},
{307200000, "Handheld"},
{384000000, "Handheld"},
{460800000, "Handheld"},
{614400000, "Handheld Safe Max"},
{768000000, "Docked"},
{1075200000, "Safe Max"},
{1305600000, "Unsafe Max"},
{1536000000, "Aboslute Max"},
};

View File

@@ -0,0 +1,9 @@
#pragma once
#include <map>
#include <cstdint>
#include <string>
extern std::map<uint32_t, std::string> cpu_freq_label_m;
extern std::map<uint32_t, std::string> cpu_freq_label_e;
extern std::map<uint32_t, std::string> gpu_freq_label_m;
extern std::map<uint32_t, std::string> gpu_freq_label_e;

View File

@@ -23,6 +23,7 @@
#include <cstring> #include <cstring>
#include <vector> #include <vector>
#include <notification.h> #include <notification.h>
#include "labels.h"
#if IS_MINIMAL == 1 #if IS_MINIMAL == 1
#pragma message("Compiling with minimal features") #pragma message("Compiling with minimal features")
#endif #endif
@@ -33,25 +34,6 @@ class CpuSubmenuGui;
class GpuSubmenuGui; class GpuSubmenuGui;
class GpuCustomTableSubmenuGui; class GpuCustomTableSubmenuGui;
std::map<uint32_t, std::string> cpu_freq_label_m = {
{612000000, "Sleep Mode"},
{1020000000, "Stock"},
{1224000000, "Dev OC"},
{1785000000, "Boost Mode"},
{1963000000, "Safe Max"},
{2397000000, "Unsafe Max"},
{2805000000, "Absolute Max"},
};
std::map<uint32_t, std::string> cpu_freq_label_e = {
{612000000, "Sleep Mode"},
{1020000000, "Stock"},
{1224000000, "Dev OC"},
{1785000000, "Boost Mode & Safe Max"},
{2091000000, "Unsafe Max"},
{2295000000, "Absolute Max"},
};
MiscGui::MiscGui() MiscGui::MiscGui()
{ {
this->configList = new SysClkConfigValueList {}; this->configList = new SysClkConfigValueList {};
@@ -459,8 +441,10 @@ protected:
addConfigToggle(KipConfigValue_hpMode, "HP Mode"); addConfigToggle(KipConfigValue_hpMode, "HP Mode");
ValueThresholds eristaRamThresholds(2208000, 2304000);
std::vector<NamedValue> marikoMaxEmcClock = { std::vector<NamedValue> marikoMaxEmcClock = {
NamedValue("1600MHz (JEDEC.)", 1600000), NamedValue("1600MHz", 1600000, "JEDEC."),
NamedValue("1633MHz", 1633000), NamedValue("1633MHz", 1633000),
NamedValue("1666MHz", 1666000), NamedValue("1666MHz", 1666000),
NamedValue("1700MHz", 1700000), NamedValue("1700MHz", 1700000),
@@ -468,16 +452,16 @@ protected:
NamedValue("1766MHz", 1766000), NamedValue("1766MHz", 1766000),
NamedValue("1800MHz", 1800000), NamedValue("1800MHz", 1800000),
NamedValue("1833MHz", 1833000), NamedValue("1833MHz", 1833000),
NamedValue("1866MHz (JEDEC.)", 1866000), NamedValue("1866MHz", 1866000, "JEDEC."),
NamedValue("1900MHz", 1900000), NamedValue("1900MHz", 1900000),
NamedValue("1933MHz", 1933000), NamedValue("1933MHz", 1933000),
NamedValue("1966MHz", 1966000), NamedValue("1966MHz", 1966000),
NamedValue("1996MHz (JEDEC.)", 1996800), NamedValue("1996MHz", 1996800, "JEDEC."),
NamedValue("2000MHz", 2000000), NamedValue("2000MHz", 2000000),
NamedValue("2033MHz", 2033000), NamedValue("2033MHz", 2033000),
NamedValue("2066MHz", 2066000), NamedValue("2066MHz", 2066000),
NamedValue("2100MHz", 2100000), NamedValue("2100MHz", 2100000),
NamedValue("2133MHz (JEDEC.)", 2133000), NamedValue("2133MHz", 2133000),
NamedValue("2166MHz", 2166000), NamedValue("2166MHz", 2166000),
NamedValue("2200MHz", 2200000), NamedValue("2200MHz", 2200000),
NamedValue("2233MHz", 2233000), NamedValue("2233MHz", 2233000),
@@ -485,7 +469,7 @@ protected:
NamedValue("2300MHz", 2300000), NamedValue("2300MHz", 2300000),
NamedValue("2333MHz", 2333000), NamedValue("2333MHz", 2333000),
NamedValue("2366MHz", 2366000), NamedValue("2366MHz", 2366000),
NamedValue("2400MHz (JEDEC.)", 2400000), NamedValue("2400MHz", 2400000, "JEDEC."),
NamedValue("2433MHz", 2433000), NamedValue("2433MHz", 2433000),
NamedValue("2466MHz", 2466000), NamedValue("2466MHz", 2466000),
NamedValue("2500MHz", 2500000), NamedValue("2500MHz", 2500000),
@@ -493,7 +477,7 @@ protected:
NamedValue("2566MHz", 2566000), NamedValue("2566MHz", 2566000),
NamedValue("2600MHz", 2600000), NamedValue("2600MHz", 2600000),
NamedValue("2633MHz", 2633000), NamedValue("2633MHz", 2633000),
NamedValue("2666MHz", 2666000), NamedValue("2666MHz", 2666000, "JEDEC."),
NamedValue("2700MHz", 2700000), NamedValue("2700MHz", 2700000),
NamedValue("2733MHz", 2733000), NamedValue("2733MHz", 2733000),
NamedValue("2766MHz", 2766000), NamedValue("2766MHz", 2766000),
@@ -501,7 +485,7 @@ protected:
NamedValue("2833MHz", 2833000), NamedValue("2833MHz", 2833000),
NamedValue("2866MHz", 2866000), NamedValue("2866MHz", 2866000),
NamedValue("2900MHz", 2900000), NamedValue("2900MHz", 2900000),
NamedValue("2933MHz (JEDEC.)", 2933000), NamedValue("2933MHz", 2933000, "JEDEC."),
NamedValue("2966MHz", 2966000), NamedValue("2966MHz", 2966000),
NamedValue("3000MHz", 3000000), NamedValue("3000MHz", 3000000),
NamedValue("3033MHz", 3033000), NamedValue("3033MHz", 3033000),
@@ -509,10 +493,10 @@ protected:
NamedValue("3100MHz", 3100000), NamedValue("3100MHz", 3100000),
NamedValue("3133MHz", 3133000), NamedValue("3133MHz", 3133000),
NamedValue("3166MHz", 3166000), NamedValue("3166MHz", 3166000),
NamedValue("3200MHz (JEDEC.)", 3200000), NamedValue("3200MHz", 3200000, "JEDEC."),
// NamedValue("3233MHz (Needs high Speedo/PLL)", 3233000), NamedValue("3233MHz", 3233000, "High speedo needed!"),
// NamedValue("3266MHz (Needs high Speedo/PLL)", 3266000), NamedValue("3266MHz", 3266000, "High speedo needed!"),
// NamedValue("3300MHz (Needs high Speedo/PLL)", 3300000), NamedValue("3300MHz", 3300000, "High speedo needed!"),
// NamedValue("3333MHz (Needs extreme Speedo/PLL)", 3333000), // NamedValue("3333MHz (Needs extreme Speedo/PLL)", 3333000),
// NamedValue("3366MHz (Needs extreme Speedo/PLL)", 3366000), // NamedValue("3366MHz (Needs extreme Speedo/PLL)", 3366000),
// NamedValue("3400MHz (Needs extreme Speedo/PLL)", 3400000), // NamedValue("3400MHz (Needs extreme Speedo/PLL)", 3400000),
@@ -522,7 +506,7 @@ protected:
}; };
std::vector<NamedValue> eristaMaxEmcClock = { std::vector<NamedValue> eristaMaxEmcClock = {
NamedValue("1600MHz (JEDEC.)", 1600000), NamedValue("1600MHz", 1600000, "JEDEC."),
NamedValue("1633MHz", 1633000), NamedValue("1633MHz", 1633000),
NamedValue("1666MHz", 1666000), NamedValue("1666MHz", 1666000),
NamedValue("1700MHz", 1700000), NamedValue("1700MHz", 1700000),
@@ -530,32 +514,44 @@ protected:
NamedValue("1766MHz", 1766000), NamedValue("1766MHz", 1766000),
NamedValue("1800MHz", 1800000), NamedValue("1800MHz", 1800000),
NamedValue("1833MHz", 1833000), NamedValue("1833MHz", 1833000),
NamedValue("1866MHz (JEDEC.)", 1866000), NamedValue("1862MHz", 1862400, "JEDEC."),
NamedValue("1900MHz", 1900000), NamedValue("1881MHz", 1881600),
NamedValue("1933MHz", 1933000), NamedValue("1900MHz", 1900800),
NamedValue("1966MHz", 1966000), NamedValue("1920MHz", 1920000),
NamedValue("2000MHz", 2000000), NamedValue("1939MHz", 1939200),
NamedValue("2033MHz", 2033000), NamedValue("1958MHz", 1958400),
NamedValue("2066MHz", 2066000), NamedValue("1977MHz", 1977600),
NamedValue("2100MHz", 2100000), NamedValue("1996MHz", 1996800, "JEDEC."),
NamedValue("2133MHz (JEDEC.)", 2133000), NamedValue("2016MHz", 2016000),
NamedValue("2166MHz", 2166000), NamedValue("2035MHz", 2035200),
NamedValue("2200MHz (high power draw!)", 2200000), NamedValue("2054MHz", 2054400),
NamedValue("2233MHz (high power draw!)", 2233000), NamedValue("2073MHz", 2073600),
NamedValue("2266MHz (high power draw!)", 2266000), NamedValue("2092MHz", 2092800),
NamedValue("2300MHz (high power draw!)", 2300000), NamedValue("2112MHz", 2112000),
NamedValue("2333MHz (high power draw!)", 2333000), NamedValue("2131MHz", 2131200, "JEDEC."),
NamedValue("2366MHz (high power draw!)", 2366000), NamedValue("2150MHz", 2150400),
NamedValue("2400MHz (high power draw & JEDEC.)", 2400000), NamedValue("2169MHz", 2169600),
NamedValue("2188MHz", 2188800),
NamedValue("2208MHz", 2208000),
NamedValue("2227MHz", 2227200),
NamedValue("2246MHz", 2246400),
NamedValue("2265MHz", 2265600),
NamedValue("2284MHz", 2284800),
NamedValue("2304MHz", 2304000),
NamedValue("2323MHz", 2323200),
NamedValue("2342MHz", 2342400),
NamedValue("2361MHz", 2361600),
NamedValue("2380MHz", 2380800),
NamedValue("2400MHz", 2400000, "JEDEC."),
}; };
if(IsErista()) { if(IsErista()) {
addConfigButton( addConfigButton(
KipConfigValue_eristaEmcMaxClock, KipConfigValue_eristaEmcMaxClock,
"EMC Max Clock", "RAM Max Clock",
ValueRange(0, 1, 1, "", 1), ValueRange(0, 1, 1, "", 1),
"EMC Max Clock", "RAM Max Clock",
&thresholdsDisabled, &eristaRamThresholds,
{}, {},
eristaMaxEmcClock, eristaMaxEmcClock,
false false
@@ -563,9 +559,9 @@ protected:
} else { } else {
addConfigButton( addConfigButton(
KipConfigValue_marikoEmcMaxClock, KipConfigValue_marikoEmcMaxClock,
"EMC Max Clock", "RAM Max Clock",
ValueRange(0, 1, 1, "", 1), ValueRange(0, 1, 1, "", 1),
"EMC Max Clock", "RAM Max Clock",
&thresholdsDisabled, &thresholdsDisabled,
{}, {},
marikoMaxEmcClock, marikoMaxEmcClock,
@@ -585,7 +581,7 @@ protected:
ValueThresholds vdd2Thresholds(1212500, 1250000); ValueThresholds vdd2Thresholds(1212500, 1250000);
addConfigButton( addConfigButton(
KipConfigValue_commonEmcMemVolt, KipConfigValue_commonEmcMemVolt,
"EMC VDD2 Voltage", "RAM VDD2 Voltage",
ValueRange(912500, 1350000, 12500, "mV", 1000, 1), ValueRange(912500, 1350000, 12500, "mV", 1000, 1),
"Voltage", "Voltage",
&vdd2Thresholds, &vdd2Thresholds,
@@ -597,9 +593,9 @@ protected:
if(IsMariko()) { if(IsMariko()) {
addConfigButton( addConfigButton(
KipConfigValue_marikoEmcVddqVolt, KipConfigValue_marikoEmcVddqVolt,
"EMC VDDQ Voltage", "RAM VDDQ Voltage",
ValueRange(550000, 700000, 5000, "mV", 1000), ValueRange(550000, 700000, 5000, "mV", 1000),
"EMC VDDQ Voltage", "RAM VDDQ Voltage",
&thresholdsDisabled, &thresholdsDisabled,
{}, {},
{}, {},
@@ -609,16 +605,16 @@ protected:
addConfigButton( addConfigButton(
KipConfigValue_emcDvbShift, KipConfigValue_emcDvbShift,
"DVB Shift", "SoC DVB Shift",
ValueRange(0, 10, 1, "", 1), ValueRange(0, 10, 1, "", 1),
"DVB Shift", "SoC DVB Shift",
&thresholdsDisabled, &thresholdsDisabled,
{}, {},
{}, {},
false false
); );
tsl::elm::ListItem* timingsSubmenu = new tsl::elm::ListItem("Memory Timings"); tsl::elm::ListItem* timingsSubmenu = new tsl::elm::ListItem("RAM Timing Reductions");
timingsSubmenu->setClickListener([](u64 keys) { timingsSubmenu->setClickListener([](u64 keys) {
if (keys & HidNpadButton_A) { if (keys & HidNpadButton_A) {
tsl::changeTo<RamTimingsSubmenuGui>(); tsl::changeTo<RamTimingsSubmenuGui>();
@@ -628,7 +624,7 @@ protected:
}); });
this->listElement->addItem(timingsSubmenu); this->listElement->addItem(timingsSubmenu);
tsl::elm::ListItem* latenciesSubmenu = new tsl::elm::ListItem("Memory Latencies"); tsl::elm::ListItem* latenciesSubmenu = new tsl::elm::ListItem("RAM Latencies");
latenciesSubmenu->setClickListener([](u64 keys) { latenciesSubmenu->setClickListener([](u64 keys) {
if (keys & HidNpadButton_A) { if (keys & HidNpadButton_A) {
tsl::changeTo<RamLatenciesSubmenuGui>(); tsl::changeTo<RamLatenciesSubmenuGui>();
@@ -659,32 +655,34 @@ protected:
addConfigButton(KipConfigValue_t7_tWTR, "t7 tWTR", ValueRange(0, 10, 1, "", 1), "tWTR", &thresholdsDisabled, {}, {}, false); addConfigButton(KipConfigValue_t7_tWTR, "t7 tWTR", ValueRange(0, 10, 1, "", 1), "tWTR", &thresholdsDisabled, {}, {}, false);
addConfigButton(KipConfigValue_t8_tREFI, "t8 tREFI", ValueRange(0, 6, 1, "", 1), "tREFI", &thresholdsDisabled, {}, {}, false); addConfigButton(KipConfigValue_t8_tREFI, "t8 tREFI", ValueRange(0, 6, 1, "", 1), "tREFI", &thresholdsDisabled, {}, {}, false);
#if IS_MINIMAL == 0 #if IS_MINIMAL == 0
this->listElement->addItem(new tsl::elm::CategoryHeader("Experimental")); if(IsMariko()) {
this->listElement->addItem(new tsl::elm::CategoryHeader("Experimental"));
tsl::elm::ListItem* emcUpdBtn = new tsl::elm::ListItem("Update RAM Timings"); tsl::elm::ListItem* emcUpdBtn = new tsl::elm::ListItem("Update RAM Timings");
emcUpdBtn->setClickListener([this](u64 keys) { emcUpdBtn->setClickListener([this](u64 keys) {
if (keys & HidNpadButton_A) { if (keys & HidNpadButton_A) {
if(this->context->freqs[SysClkModule_MEM] > 1600000000) { if(this->context->freqs[SysClkModule_MEM] > 1600000000) {
Result rc = hocClkIpcUpdateEmcRegs(); Result rc = hocClkIpcUpdateEmcRegs();
if (R_FAILED(rc)) { if (R_FAILED(rc)) {
FatalGui::openWithResultCode("hocClkIpcUpdateEmcRegs", rc); FatalGui::openWithResultCode("hocClkIpcUpdateEmcRegs", rc);
return false; return false;
}
return true;
} else {
writeNotification("Horizon OC\nSet your ram frequency to max\nbefore applying timings!");
} }
return true;
} else {
writeNotification("Horizon OC\nSet your ram frequency to max\nbefore applying timings!");
} }
} return false;
return false; });
});
this->listElement->addItem(emcUpdBtn); this->listElement->addItem(emcUpdBtn);
tsl::elm::CustomDrawer* warningText = new tsl::elm::CustomDrawer([](tsl::gfx::Renderer *renderer, s32 x, s32 y, s32 w, s32 h) { tsl::elm::CustomDrawer* warningText = new tsl::elm::CustomDrawer([](tsl::gfx::Renderer *renderer, s32 x, s32 y, s32 w, s32 h) {
renderer->drawString("\uE150 This feature is EXPERIMENTAL", false, x + 20, y + 30, 18, tsl::style::color::ColorText); renderer->drawString("\uE150 This feature is EXPERIMENTAL", false, x + 20, y + 30, 18, tsl::style::color::ColorText);
renderer->drawString("and should only be used for testing!", false, x + 20, y + 50, 18, tsl::style::color::ColorText); renderer->drawString("and should only be used for testing!", false, x + 20, y + 50, 18, tsl::style::color::ColorText);
}); });
warningText->setBoundaries(0, 0, tsl::cfg::FramebufferWidth, 70); warningText->setBoundaries(0, 0, tsl::cfg::FramebufferWidth, 70);
this->listElement->addItem(warningText); this->listElement->addItem(warningText);
}
#endif #endif
} }
}; };
@@ -700,17 +698,17 @@ protected:
this->listElement->addItem(new tsl::elm::CategoryHeader("Memory Latencies")); this->listElement->addItem(new tsl::elm::CategoryHeader("Memory Latencies"));
std::vector<NamedValue> rlLabels = { std::vector<NamedValue> rlLabels = {
NamedValue("1333RL", 28), NamedValue("1333 RL", 28),
NamedValue("1600RL", 32), NamedValue("1600 RL", 32),
NamedValue("1866RL", 36), NamedValue("1866 RL", 36),
NamedValue("2133RL", 40) NamedValue("2133 RL", 40)
}; };
std::vector<NamedValue> wlLabels = { std::vector<NamedValue> wlLabels = {
NamedValue("1333WL", 12), NamedValue("1333 WL", 12),
NamedValue("1600WL", 14), NamedValue("1600 WL", 14),
NamedValue("1866WL", 16), NamedValue("1866 WL", 16),
NamedValue("2133WL", 18) NamedValue("2133 WL", 18)
}; };
addConfigButton( addConfigButton(
@@ -748,6 +746,8 @@ protected:
this->listElement->addItem(new tsl::elm::CategoryHeader("CPU Settings")); this->listElement->addItem(new tsl::elm::CategoryHeader("CPU Settings"));
if(IsMariko()) { if(IsMariko()) {
std::vector<NamedValue> ClkOptions = { std::vector<NamedValue> ClkOptions = {
NamedValue("1785 MHz", 1785000),
NamedValue("1887 MHz", 1887000),
NamedValue("1963 MHz", 1963000), NamedValue("1963 MHz", 1963000),
NamedValue("2091 MHz", 2091000), NamedValue("2091 MHz", 2091000),
NamedValue("2193 MHz", 2193000), NamedValue("2193 MHz", 2193000),
@@ -863,6 +863,8 @@ protected:
); );
std::vector<NamedValue> maxClkOptions = { std::vector<NamedValue> maxClkOptions = {
NamedValue("1785 MHz", 1785000),
NamedValue("1887 MHz", 1887000),
NamedValue("1963 MHz", 1963000), NamedValue("1963 MHz", 1963000),
NamedValue("2091 MHz", 2091000), NamedValue("2091 MHz", 2091000),
NamedValue("2193 MHz", 2193000), NamedValue("2193 MHz", 2193000),
@@ -933,7 +935,7 @@ protected:
this->listElement->addItem(new tsl::elm::CategoryHeader("GPU Settings")); this->listElement->addItem(new tsl::elm::CategoryHeader("GPU Settings"));
std::vector<NamedValue> gpuUvConf = { std::vector<NamedValue> gpuUvConf = {
NamedValue("No UV", 0), NamedValue("No Undervolt", 0),
NamedValue("SLT Table", 1), NamedValue("SLT Table", 1),
NamedValue("HiOPT Table", 2), NamedValue("HiOPT Table", 2),
}; };
@@ -977,9 +979,9 @@ protected:
); );
addConfigButton( addConfigButton(
KipConfigValue_eristaGpuVmin, KipConfigValue_eristaGpuVmin,
"GPU VMIN", "GPU Minimum Voltage",
ValueRange(700, 875, 5, "mV", 1), ValueRange(700, 875, 5, "mV", 1),
"GPU VMIN", "GPU Minimum Voltage",
&thresholdsDisabled, &thresholdsDisabled,
{}, {},
{}, {},
@@ -1014,9 +1016,9 @@ protected:
ValueThresholds MgpuVmaxThresholds(800, 850); ValueThresholds MgpuVmaxThresholds(800, 850);
addConfigButton( addConfigButton(
KipConfigValue_marikoGpuVmax, KipConfigValue_marikoGpuVmax,
"GPU VMAX", "GPU Maximum Voltage",
ValueRange(750, 960, 5, "mV", 1), ValueRange(750, 960, 5, "mV", 1),
"GPU VMAX", "GPU Maximum Voltage",
&MgpuVmaxThresholds, &MgpuVmaxThresholds,
{}, {},
{}, {},
@@ -1026,9 +1028,9 @@ protected:
addConfigButton( addConfigButton(
KipConfigValue_commonGpuVoltOffset, KipConfigValue_commonGpuVoltOffset,
"GPU Volt Offset", "GPU Voltage Offset",
ValueRange(0, 50, 5, "mV", 1), ValueRange(0, 50, 5, "mV", 1),
"GPU Volt Offset", "GPU Voltage Offset",
&thresholdsDisabled, &thresholdsDisabled,
{}, {},
{}, {},
@@ -1224,7 +1226,7 @@ protected:
addConfigButton(KipConfigValue_g_volt_1344000, "1344.0MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1344000, "1344.0MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
addConfigButton(KipConfigValue_g_volt_1382400, "1382.4MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1382400, "1382.4MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
addConfigButton(KipConfigValue_g_volt_1420800, "1420.8MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1420800, "1420.8MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
addConfigButton(KipConfigValue_g_volt_1459200, "1459.2MHz)", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1459200, "1459.2MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
addConfigButton(KipConfigValue_g_volt_1497600, "1497.6MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1497600, "1497.6MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
addConfigButton(KipConfigValue_g_volt_1536000, "1536.0MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false); addConfigButton(KipConfigValue_g_volt_1536000, "1536.0MHz", ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false);
} }