diff --git a/Source/Horizon-OC-Monitor/source/Utils.hpp b/Source/Horizon-OC-Monitor/source/Utils.hpp index 1db6b457..8e458b87 100644 --- a/Source/Horizon-OC-Monitor/source/Utils.hpp +++ b/Source/Horizon-OC-Monitor/source/Utils.hpp @@ -222,7 +222,7 @@ uint64_t lastFrameNumber = 0; uint32_t realCPU_Hz = 0; uint32_t realGPU_Hz = 0; uint32_t realRAM_Hz = 0; -uint32_t PartLoad[SysClkPartLoad_EnumMax]; +uint32_t partLoad[SysClkPartLoad_EnumMax]; uint32_t realCPU_mV = 0; uint32_t realGPU_mV = 0; uint32_t realVDD2_mV = 0; @@ -578,8 +578,8 @@ void Misc(void*) { realCPU_Hz = sysclkCTX.realFreqs[SysClkModule_CPU]; realGPU_Hz = sysclkCTX.realFreqs[SysClkModule_GPU]; realRAM_Hz = sysclkCTX.realFreqs[SysClkModule_MEM]; - PartLoad[SysClkPartLoad_EMC] = sysclkCTX.PartLoad[SysClkPartLoad_EMC]; - PartLoad[SysClkPartLoad_EMCCpu] = sysclkCTX.PartLoad[SysClkPartLoad_EMCCpu]; + partLoad[SysClkPartLoad_EMC] = sysclkCTX.partLoad[SysClkPartLoad_EMC]; + partLoad[SysClkPartLoad_EMCCpu] = sysclkCTX.partLoad[SysClkPartLoad_EMCCpu]; realCPU_mV = sysclkCTX.voltages[HocClkVoltage_CPU]; realGPU_mV = sysclkCTX.voltages[HocClkVoltage_GPU]; @@ -704,8 +704,8 @@ void Misc3(void*) { if (R_SUCCEEDED(sysclkCheck)) { SysClkContext sysclkCTX; if (R_SUCCEEDED(sysclkIpcGetCurrentContext(&sysclkCTX))) { - PartLoad[SysClkPartLoad_EMC] = sysclkCTX.PartLoad[SysClkPartLoad_EMC]; - PartLoad[SysClkPartLoad_EMCCpu] = sysclkCTX.PartLoad[SysClkPartLoad_EMCCpu]; + partLoad[SysClkPartLoad_EMC] = sysclkCTX.partLoad[SysClkPartLoad_EMC]; + partLoad[SysClkPartLoad_EMCCpu] = sysclkCTX.partLoad[SysClkPartLoad_EMCCpu]; realCPU_mV = sysclkCTX.voltages[HocClkVoltage_CPU]; realGPU_mV = sysclkCTX.voltages[HocClkVoltage_GPU]; diff --git a/Source/Horizon-OC-Monitor/source/modes/FPS_Graph.hpp b/Source/Horizon-OC-Monitor/source/modes/FPS_Graph.hpp index 22a2da29..56aa24b2 100644 --- a/Source/Horizon-OC-Monitor/source/modes/FPS_Graph.hpp +++ b/Source/Horizon-OC-Monitor/source/modes/FPS_Graph.hpp @@ -496,8 +496,8 @@ public: snprintf(CPU_Load_c, sizeof(CPU_Load_c), "%.1f%%", cpu_usageM); snprintf(GPU_Load_c, sizeof(GPU_Load_c), "%d.%d%%", GPU_Load_u / 10, GPU_Load_u % 10); snprintf(RAM_Load_c, sizeof(RAM_Load_c), "%hu.%hhu%%", - PartLoad[SysClkPartLoad_EMC] / 10, - PartLoad[SysClkPartLoad_EMC] % 10); + partLoad[SysClkPartLoad_EMC] / 10, + partLoad[SysClkPartLoad_EMC] % 10); mutexUnlock(&mutex_Misc); diff --git a/Source/Horizon-OC-Monitor/source/modes/Full.hpp b/Source/Horizon-OC-Monitor/source/modes/Full.hpp index ed68710a..8dbb571f 100644 --- a/Source/Horizon-OC-Monitor/source/modes/Full.hpp +++ b/Source/Horizon-OC-Monitor/source/modes/Full.hpp @@ -446,11 +446,11 @@ public: ); if (R_SUCCEEDED(sysclkCheck)) { - const int RAM_GPU_Load = PartLoad[SysClkPartLoad_EMC] - PartLoad[SysClkPartLoad_EMCCpu]; + const int RAM_GPU_Load = partLoad[SysClkPartLoad_EMC] - partLoad[SysClkPartLoad_EMCCpu]; snprintf(RAM_load_c, sizeof RAM_load_c, "%u.%u%% CPU %u.%u%% GPU %u.%u%%", - PartLoad[SysClkPartLoad_EMC] / 10, PartLoad[SysClkPartLoad_EMC] % 10, - PartLoad[SysClkPartLoad_EMCCpu] / 10, PartLoad[SysClkPartLoad_EMCCpu] % 10, + partLoad[SysClkPartLoad_EMC] / 10, partLoad[SysClkPartLoad_EMC] % 10, + partLoad[SysClkPartLoad_EMCCpu] / 10, partLoad[SysClkPartLoad_EMCCpu] % 10, RAM_GPU_Load / 10, RAM_GPU_Load % 10); } ///Thermal diff --git a/Source/Horizon-OC-Monitor/source/modes/Micro.hpp b/Source/Horizon-OC-Monitor/source/modes/Micro.hpp index 22fe9855..50371d3e 100644 --- a/Source/Horizon-OC-Monitor/source/modes/Micro.hpp +++ b/Source/Horizon-OC-Monitor/source/modes/Micro.hpp @@ -821,7 +821,7 @@ public: if (R_SUCCEEDED(sysclkCheck)) { // Use sys-clk's RAM load if available snprintf(MICRO_RAM_all_c, sizeof(MICRO_RAM_all_c), "%hu%%", - PartLoad[SysClkPartLoad_EMC] / 10); + partLoad[SysClkPartLoad_EMC] / 10); } else { // Calculate percentage manually when sys-clk isn't available const uint64_t RAM_Total_all = RAM_Total_application_u + RAM_Total_applet_u + RAM_Total_system_u + RAM_Total_systemunsafe_u; diff --git a/Source/Horizon-OC-Monitor/source/modes/Mini.hpp b/Source/Horizon-OC-Monitor/source/modes/Mini.hpp index 3041850e..01c020d4 100644 --- a/Source/Horizon-OC-Monitor/source/modes/Mini.hpp +++ b/Source/Horizon-OC-Monitor/source/modes/Mini.hpp @@ -994,11 +994,11 @@ public: unsigned PartLoadInt; if (R_SUCCEEDED(sysclkCheck)) { - PartLoadInt = PartLoad[SysClkPartLoad_EMC] / 10; + PartLoadInt = partLoad[SysClkPartLoad_EMC] / 10; if (settings.showRAMLoadCPUGPU) { - unsigned ramCpuLoadInt = PartLoad[SysClkPartLoad_EMCCpu] / 10; - int RAM_GPU_Load = PartLoad[SysClkPartLoad_EMC] - PartLoad[SysClkPartLoad_EMCCpu]; + unsigned ramCpuLoadInt = partLoad[SysClkPartLoad_EMCCpu] / 10; + int RAM_GPU_Load = partLoad[SysClkPartLoad_EMC] - partLoad[SysClkPartLoad_EMCCpu]; unsigned ramGpuLoadInt = RAM_GPU_Load / 10; if (settings.realFrequencies && realRAM_Hz) { diff --git a/Source/sys-clk/common/include/sysclk/clock_manager.h b/Source/sys-clk/common/include/sysclk/clock_manager.h index 008bde70..2e4cca0b 100644 --- a/Source/sys-clk/common/include/sysclk/clock_manager.h +++ b/Source/sys-clk/common/include/sysclk/clock_manager.h @@ -39,13 +39,14 @@ typedef struct uint32_t overrideFreqs[SysClkModule_EnumMax]; uint32_t temps[SysClkThermalSensor_EnumMax]; int32_t power[SysClkPowerSensor_EnumMax]; - uint32_t PartLoad[SysClkPartLoad_EnumMax]; + uint32_t partLoad[SysClkPartLoad_EnumMax]; uint32_t voltages[HocClkVoltage_EnumMax]; u16 speedos[HorizonOCSpeedo_EnumMax]; - uint32_t perfConfId; + u16 iddq[HorizonOCSpeedo_EnumMax]; u8 maxDisplayFreq; u8 fps; u8 dramID; + bool isDram8GB; } SysClkContext; typedef struct diff --git a/Source/sys-clk/overlay/src/ui/gui/base_menu_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/base_menu_gui.cpp index b1029028..b5cab9d6 100644 --- a/Source/sys-clk/overlay/src/ui/gui/base_menu_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/base_menu_gui.cpp @@ -259,9 +259,9 @@ void BaseMenuGui::refresh() sprintf(displayStrings[16], "%d mW", context->power[1]); // Avg - sprintf(displayStrings[17], "%u%%", context->PartLoad[HocClkPartLoad_GPU] / 10); - sprintf(displayStrings[18], "%u%%", context->PartLoad[SysClkPartLoad_EMC] / 10); - // sprintf(displayStrings[19], "%u", context->PartLoad[HocClkPartLoad_CPUAvg]); + sprintf(displayStrings[17], "%u%%", context->partLoad[HocClkPartLoad_GPU] / 10); + sprintf(displayStrings[18], "%u%%", context->partLoad[SysClkPartLoad_EMC] / 10); + // sprintf(displayStrings[19], "%u", context->partLoad[HocClkPartLoad_CPUAvg]); millis = context->temps[HorizonOCThermalSensor_Battery]; // Battery sprintf(displayStrings[20], "%u.%u °C", millis / 1000U, (millis % 1000U) / 100U); @@ -269,9 +269,9 @@ void BaseMenuGui::refresh() sprintf(displayStrings[21], "%d mV", context->voltages[HocClkVoltage_Battery]); // BAT AVG - sprintf(displayStrings[23], "%u%%", context->PartLoad[HocClkPartLoad_BAT] / 1000); + sprintf(displayStrings[23], "%u%%", context->partLoad[HocClkPartLoad_BAT] / 1000); - sprintf(displayStrings[24], "%u%%", context->PartLoad[HocClkPartLoad_FAN]); + sprintf(displayStrings[24], "%u%%", context->partLoad[HocClkPartLoad_FAN]); sprintf(displayStrings[25], "%u Hz", context->realFreqs[HorizonOCModule_Display]); diff --git a/Source/sys-clk/overlay/src/ui/gui/fatal_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/fatal_gui.cpp index e2ce452e..fe510c11 100644 --- a/Source/sys-clk/overlay/src/ui/gui/fatal_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/fatal_gui.cpp @@ -40,7 +40,7 @@ void FatalGui::openWithResultCode(std::string tag, Result rc) info.append(rcStr, snprintf(rcStr, sizeof(rcStr), "\n\n[0x%x] %04d-%04d", rc, R_MODULE(rc), R_DESCRIPTION(rc))); tsl::changeTo( - "Could not connect to Horizon OC sysmodule.\n\n" + "Could not connect to hoc-clk sysmodule.\n\n" "\n" "Please make sure everything is\n\n" "correctly installed and enabled.", 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 81f04382..cc5adcc5 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 @@ -1,3 +1,20 @@ +/* + * + * Copyright (c) Souldbminer and Horizon OC Contributors + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #include "../format.h" #include "fatal_gui.h" #include "global_override_gui.h" diff --git a/Source/sys-clk/overlay/src/ui/gui/info_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/info_gui.cpp index 74ddbe0e..28816f2e 100644 --- a/Source/sys-clk/overlay/src/ui/gui/info_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/info_gui.cpp @@ -17,14 +17,14 @@ #include "../format.h" #include #include -tsl::elm::ListItem* cpuSpeedoItem; -tsl::elm::ListItem* gpuSpeedoItem; -tsl::elm::ListItem* socSpeedoItem; + +tsl::elm::ListItem* SpeedoItem; +tsl::elm::ListItem* IddqItem; InfoGui::InfoGui() { // Initialize display strings - memset(speedoStrings, 0, sizeof(speedoStrings)); + memset(strings, 0, sizeof(strings)); } InfoGui::~InfoGui() @@ -33,17 +33,14 @@ InfoGui::~InfoGui() void InfoGui::listUI() { - cpuSpeedoItem = - new tsl::elm::ListItem("CPU Speedo"); - this->listElement->addItem(cpuSpeedoItem); - - gpuSpeedoItem = - new tsl::elm::ListItem("GPU Speedo"); - this->listElement->addItem(gpuSpeedoItem); - - socSpeedoItem = - new tsl::elm::ListItem("SOC Speedo"); - this->listElement->addItem(socSpeedoItem); + SpeedoItem = + new tsl::elm::ListItem("Speedos:"); + this->listElement->addItem(SpeedoItem); + + IddqItem = + new tsl::elm::ListItem("IDDQ:"); + this->listElement->addItem(IddqItem); + } void InfoGui::update() @@ -58,12 +55,10 @@ void InfoGui::refresh() if (!this->context) return; - // Format speedo strings once per refresh - sprintf(speedoStrings[0], "%u", this->context->speedos[HorizonOCSpeedo_CPU]); - sprintf(speedoStrings[1], "%u", this->context->speedos[HorizonOCSpeedo_GPU]); - sprintf(speedoStrings[2], "%u", this->context->speedos[HorizonOCSpeedo_SOC]); - cpuSpeedoItem->setValue(speedoStrings[HorizonOCSpeedo_CPU]); // this is SO hacky but it works i guess - gpuSpeedoItem->setValue(speedoStrings[HorizonOCSpeedo_GPU]); - socSpeedoItem->setValue(speedoStrings[HorizonOCSpeedo_SOC]); + // Format strings once per refresh + sprintf(strings[0], "%u/%u/%u", this->context->speedos[HorizonOCSpeedo_CPU], this->context->speedos[HorizonOCSpeedo_GPU], this->context->speedos[HorizonOCSpeedo_SOC]); + sprintf(strings[1], "%u/%u/%u", this->context->iddq[HorizonOCSpeedo_CPU], this->context->iddq[HorizonOCSpeedo_GPU], this->context->iddq[HorizonOCSpeedo_SOC]); + SpeedoItem->setValue(strings[0]); + IddqItem->setValue(strings[1]); } \ No newline at end of file diff --git a/Source/sys-clk/overlay/src/ui/gui/info_gui.h b/Source/sys-clk/overlay/src/ui/gui/info_gui.h index 10c869b1..1e9f3925 100644 --- a/Source/sys-clk/overlay/src/ui/gui/info_gui.h +++ b/Source/sys-clk/overlay/src/ui/gui/info_gui.h @@ -25,7 +25,7 @@ class InfoGui : public BaseMenuGui { protected: - char speedoStrings[3][16]; // Pre-formatted speedo strings + char strings[32][32]; // Pre-formatted strings public: InfoGui(); 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 3b025e80..b9891dfb 100644 --- a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp @@ -16,7 +16,6 @@ * */ - #include "misc_gui.h" #include "fatal_gui.h" #include "../format.h" diff --git a/Source/sys-clk/overlay/src/ui/gui/misc_gui.h b/Source/sys-clk/overlay/src/ui/gui/misc_gui.h index 59dea9b0..8d017dbc 100644 --- a/Source/sys-clk/overlay/src/ui/gui/misc_gui.h +++ b/Source/sys-clk/overlay/src/ui/gui/misc_gui.h @@ -1,3 +1,21 @@ + +/* + * + * Copyright (c) Souldbminer and Horizon OC Contributors + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #pragma once #include "../../ipc.h" #include "base_menu_gui.h" diff --git a/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.cpp index 20085097..880c1dcb 100644 --- a/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.cpp @@ -1,3 +1,21 @@ + +/* + * + * Copyright (c) Souldbminer and Horizon OC Contributors + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #include "value_choice_gui.h" #include "../format.h" #include "fatal_gui.h" diff --git a/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.h b/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.h index 60f8533b..19a5e9bd 100644 --- a/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.h +++ b/Source/sys-clk/overlay/src/ui/gui/value_choice_gui.h @@ -1,3 +1,21 @@ + +/* + * + * Copyright (c) Souldbminer and Horizon OC Contributors + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #pragma once #include #include diff --git a/Source/sys-clk/sysmodule/src/board.cpp b/Source/sys-clk/sysmodule/src/board.cpp index c5cf72fb..d0f8988a 100644 --- a/Source/sys-clk/sysmodule/src/board.cpp +++ b/Source/sys-clk/sysmodule/src/board.cpp @@ -323,17 +323,34 @@ void Board::fuseReadSpeedos() { svcCloseHandle(debug); } -u16 Board::getCPUSpeedo() { - return cpuSpeedo0; +u16 Board::getSpeedo(HorizonOCSpeedo speedoType) { + switch(speedoType) { + case HorizonOCSpeedo_CPU: + return cpuSpeedo0; + case HorizonOCSpeedo_GPU: + return cpuSpeedo2; + case HorizonOCSpeedo_SOC: + return socSpeedo0; + default: + ASSERT_ENUM_VALID(HorizonOCSpeedo, speedoType); + return 0; + } } -u16 Board::getGPUSpeedo() { - return cpuSpeedo2; +u16 Board::getIDDQ(HorizonOCSpeedo speedoType) { + switch(speedoType) { + case HorizonOCSpeedo_CPU: + return cpuIDDQ; + case HorizonOCSpeedo_GPU: + return gpuIDDQ; + case HorizonOCSpeedo_SOC: + return socIDDQ; + default: + ASSERT_ENUM_VALID(HorizonOCSpeedo, speedoType); + return 0; + } } -u16 Board::getSOCSpeedo() { - return socSpeedo0; -} void Board::Exit() { @@ -1066,3 +1083,17 @@ void Board::UpdateShadowRegs(u32 tRCD_i, u32 tRP_i, u32 tRAS_i, u32 tRRD_i, u32 WRITE_REGISTER_MC(MC_TIMING_CONTROL_0, 0x1); // update timing regs as they are shadowed WRITE_REGISTER_EMC(EMC_TIMING_CONTROL_0, 0x1); } + + +bool Board::IsDram8GB() { + SecmonArgs args = {}; + args.X[0] = 0xF0000002; + args.X[1] = MC_REGISTER_BASE + MC_EMEM_CFG_0; + svcCallSecureMonitor(&args); + + if(args.X[1] == (MC_REGISTER_BASE + MC_EMEM_CFG_0)) { // if param 1 is identical read failed + writeNotification("Horizon OC\nSecmon read failed!\n This may be a hardware issue!"); + return false; + } else + return args.X[1] == 0x00002000 ? true : false; +} \ No newline at end of file diff --git a/Source/sys-clk/sysmodule/src/board.h b/Source/sys-clk/sysmodule/src/board.h index 4fbf1bfe..c152dda8 100644 --- a/Source/sys-clk/sysmodule/src/board.h +++ b/Source/sys-clk/sysmodule/src/board.h @@ -34,9 +34,8 @@ class Board { public: static void fuseReadSpeedos(); - static u16 getCPUSpeedo(); - static u16 getGPUSpeedo(); - static u16 getSOCSpeedo(); + static u16 getSpeedo(HorizonOCSpeedo speedoType); + static u16 getIDDQ(HorizonOCSpeedo speedoType); static const char* GetProfileName(SysClkProfile profile, bool pretty); static const char* GetModuleName(SysClkModule module, bool pretty); static const char* GetThermalSensorName(SysClkThermalSensor sensor, bool pretty); @@ -63,6 +62,7 @@ class Board static u8 GetFanRotationLevel(); static u8 GetDramID(); static void UpdateShadowRegs(u32 tRCD_i, u32 tRP_i, u32 tRAS_i, u32 tRRD_i, u32 tRFC_i, u32 tRTW_i, u32 tWTR_i, u32 tREFpb_i, u32 ramFreq, u32 rlAdd, u32 wlAdd, bool hpMode); + static bool IsDram8GB(); protected: static void FetchHardwareInfos(); static PcvModule GetPcvModule(SysClkModule sysclkModule); diff --git a/Source/sys-clk/sysmodule/src/clock_manager.cpp b/Source/sys-clk/sysmodule/src/clock_manager.cpp index 37735420..14cea3f9 100644 --- a/Source/sys-clk/sysmodule/src/clock_manager.cpp +++ b/Source/sys-clk/sysmodule/src/clock_manager.cpp @@ -102,12 +102,14 @@ ClockManager::ClockManager() ); threadStart(&governorTHREAD); - - this->context->speedos[HorizonOCSpeedo_CPU] = Board::getCPUSpeedo(); - this->context->speedos[HorizonOCSpeedo_GPU] = Board::getGPUSpeedo(); - this->context->speedos[HorizonOCSpeedo_SOC] = Board::getSOCSpeedo(); + + for(int i = 0; i < HorizonOCSpeedo_EnumMax; i++) { + this->context->speedos[i] = Board::getSpeedo((HorizonOCSpeedo)i); + this->context->iddq[i] = Board::getIDDQ((HorizonOCSpeedo)i); + } this->context->dramID = Board::GetDramID(); + this->context->isDram8GB = Board::IsDram8GB(); } void ClockManager::FixCpuBug() { @@ -666,7 +668,7 @@ bool ClockManager::RefreshContext() // ram load do not and should not force a refresh, hasChanged untouched for (unsigned int loadSource = 0; loadSource < SysClkPartLoad_EnumMax; loadSource++) { - this->context->PartLoad[loadSource] = Board::GetPartLoad((SysClkPartLoad)loadSource); + this->context->partLoad[loadSource] = Board::GetPartLoad((SysClkPartLoad)loadSource); } for (unsigned int voltageSource = 0; voltageSource < HocClkVoltage_EnumMax; voltageSource++) @@ -1037,7 +1039,7 @@ void ClockManager::calculateGpuVmin (void) SysClkConfigValueList configValues; this->config->GetConfigValues(&configValues); - int speedo = Board::getGPUSpeedo(), freq = this->config->GetConfigValue(KipConfigValue_marikoEmcMaxClock); + int speedo = Board::getSpeedo(HorizonOCSpeedo_CPU), freq = this->config->GetConfigValue(KipConfigValue_marikoEmcMaxClock); configValues.values[KipConfigValue_marikoGpuVmin] = GetGpuVoltage(freq, speedo); this->config->SetConfigValues(&configValues, true); } diff --git a/dist/README.md b/dist/README.md index 78eeacdd..62b85423 100644 --- a/dist/README.md +++ b/dist/README.md @@ -66,11 +66,10 @@ It enables advanced CPU, GPU, and RAM tuning with user-friendly configuration to ## Configuration -1. Download the latest **Configurator** on your computer. -2. Run the executable. -3. Select your SD card or UMS drive. -4. Adjust overclocking settings as desired. -5. Click **Save** to apply your configuration. +1. Open the Horizon OC Overlay +2. Open the settings menu +3. Adjust your overclocking settings as desired. +4. Click **Save KIP Settings** to apply your configuration. --- @@ -81,16 +80,18 @@ Refer to COMPILATION.md --- ## Credits - -* **Lightos** – loader patches development * **Lightos's Cat** - Cat + +* **Souldbminer** – hoc-clk and loader development +* **Lightos** – loader patches development * **SciresM** - Atmosphere CFW * **KazushiMe** – Switch OC Suite -* **hanai3bi** – Switch OC Suite, EOS, sys-clk-eos +* **hanai3bi (meha)** – Switch OC Suite, EOS, sys-clk-eos * **NaGaa95** – L4T-OC-kernel * **B3711 (halop)** – EOS -* **sys-clk team** – sys-clk +* **sys-clk team (m4xw, p-sam, nautalis)** – sys-clk * **b0rd2death** – Ultrahand sys-clk & Status Monitor fork * **MasaGratoR and ZachyCatGames** - General help * **MasaGratoR** - Status Monitor & Display Refresh Rate Driver * **Dom, Samybigio, Arcdelta, Miki, Happy, Flopsider, Winnerboi77, Blaise, Alvise, TDRR, agjeococh and Xenshen** - Testing +* **Samybigio2011** - Italian translations diff --git a/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index a3eb3635..f9546753 100644 Binary files a/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp and b/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp differ