hocclk: add info to hocclk
This commit is contained in:
@@ -21,7 +21,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define CUST_REV 3
|
#define CUST_REV 3
|
||||||
#define KIP_VERSION 230
|
#define KIP_VERSION 231
|
||||||
|
|
||||||
#include "oc_common.hpp"
|
#include "oc_common.hpp"
|
||||||
#include "pcv/pcv_common.hpp"
|
#include "pcv/pcv_common.hpp"
|
||||||
|
|||||||
@@ -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 := 2.3.0 # ensure to set KIP_VERSION and CUST_REV in sysmodule Makefile when updating this
|
APP_VERSION := 2.3.1 # ensure to set KIP_VERSION and CUST_REV in sysmodule Makefile when updating this
|
||||||
TARGET_VERSION := $(APP_VERSION)
|
TARGET_VERSION := $(APP_VERSION)
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|||||||
570
Source/hoc-clk/overlay/src/ui/gui/config_info_strings.cpp
Normal file
570
Source/hoc-clk/overlay/src/ui/gui/config_info_strings.cpp
Normal file
@@ -0,0 +1,570 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) Souldbminer, Lightos_ 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config_info_strings.h"
|
||||||
|
|
||||||
|
std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko, bool isHoag)
|
||||||
|
{
|
||||||
|
switch (val)
|
||||||
|
{
|
||||||
|
case HocClkConfigValue_PollingIntervalMs:
|
||||||
|
return {
|
||||||
|
"The interval (in miliseconds) where clocks are applied, tempratures and voltages are polled and logs are written (if enabled).",
|
||||||
|
"Higher values may cause more delay between changing a setting and it taking effect, and lower values may increase sysmodule memory usage",
|
||||||
|
"Default: 300ms"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_RamDisplayUnit:
|
||||||
|
return {
|
||||||
|
"The unit used when displaying RAM frequency values.",
|
||||||
|
"Options:",
|
||||||
|
"- MHz: Megahertz (e.g. 1600 MHz)",
|
||||||
|
"- MT/s: MegaTransfers per second (e.g. 3200 MT/s)",
|
||||||
|
"Default: MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_RAMVoltDisplayMode:
|
||||||
|
return {
|
||||||
|
"The method used to display RAM voltage values.",
|
||||||
|
"Options:",
|
||||||
|
"- VDD2 - Display VDD2 voltage",
|
||||||
|
"- VDDQ - Display VDDQ voltage",
|
||||||
|
"Default: VDD2"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_EnableExperimentalSettings:
|
||||||
|
return {
|
||||||
|
"When enabled, shows settings that are still being tested and may be unstable or not work at all.",
|
||||||
|
"Use with caution and report any issues to the developers."
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_MarikoMiddleFreqs:
|
||||||
|
return {
|
||||||
|
"Allows usage of frequencies stepped by 38.4MHz instead of 76.8MHz below 1228MHz GPU clock",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_LiveCpuUv:
|
||||||
|
return {
|
||||||
|
"Allows changing CPU undervolt settings without a reboot",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_GPUSchedulingMethod:
|
||||||
|
return {
|
||||||
|
"Method used for GPU scheduling override",
|
||||||
|
"Options:",
|
||||||
|
"- INI: override via system_settings.ini",
|
||||||
|
"- NV Service: override via nvservices sysmodule (experimental)",
|
||||||
|
"Default: INI"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_MemoryFrequencyMeasurementMode:
|
||||||
|
return {
|
||||||
|
"How the RAM real frequency is measured",
|
||||||
|
"Options:",
|
||||||
|
"- PLL: Measure from PLLMB and PLLM (more accurate)",
|
||||||
|
"- Actmon: Measure from Actmon (less accurate)",
|
||||||
|
"Default: PLL"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_BatteryChargeCurrent:
|
||||||
|
return {
|
||||||
|
"Overrides the charge current to the battery. Use with caution!",
|
||||||
|
isHoag ? "Default: 1664 mA" : "2048 mA"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_AulaDisplayColorPreset:
|
||||||
|
return {
|
||||||
|
"Current display color preset. Default is Basic",
|
||||||
|
"Options:",
|
||||||
|
"- Saturated: Based on Vivid but over-saturated.",
|
||||||
|
"- Washed: Washed out colors.",
|
||||||
|
"- Basic: Real natural profile.",
|
||||||
|
"- Natural: Not actually natural.. Extra saturation.",
|
||||||
|
"- Vivid: Saturated.",
|
||||||
|
"Default: Do not override"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_CpuGovernorMinimumFreq:
|
||||||
|
return {
|
||||||
|
"The minimum frequency that the CPU governor will allow.",
|
||||||
|
"Default: 612MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_OverwriteRefreshRate:
|
||||||
|
return {
|
||||||
|
"Conrols the avaiability of display refresh rate features.",
|
||||||
|
"When enabled, allows changing the display refresh rate and using display refresh rate related features."
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_MaxDisplayClockH:
|
||||||
|
return {
|
||||||
|
"The maximum display clock frequency in handheld mode (in Hz).",
|
||||||
|
"Warning: Changing this value may cause instability or display damage.",
|
||||||
|
"Default: 60 Hz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_DisplayVoltage:
|
||||||
|
return {
|
||||||
|
"The voltage supplied to the display panel (in mV).",
|
||||||
|
"Warning: Changing this value may cause instability.",
|
||||||
|
"Default: 1200mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_UncappedClocks:
|
||||||
|
if(isMariko) {
|
||||||
|
return {
|
||||||
|
"When enabled, disables clock cappings",
|
||||||
|
"Warning: Enabling this may cause damage to your device without a proper undervolt. Use with caution!",
|
||||||
|
"Clock cappings:",
|
||||||
|
"- Handheld:",
|
||||||
|
" - GPU (HiOPT): 614 MHz",
|
||||||
|
" - GPU (HiOPT - 15mV): 691 MHz",
|
||||||
|
" - GPU (High UV): 768 MHz",
|
||||||
|
"- USB Charger",
|
||||||
|
" - GPU (HiOPT): 844 MHz",
|
||||||
|
" - GPU (HiOPT - 15mV): 921 MHz",
|
||||||
|
" - GPU (High UV): 998 MHz",
|
||||||
|
"- PD Charger / Docked:",
|
||||||
|
" - No capping applied",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
"When enabled, disables clock cappings",
|
||||||
|
"Warning: Enabling this may cause damage to your device without a proper undervolt. Use with caution!",
|
||||||
|
"Clock cappings:",
|
||||||
|
"- Handheld:",
|
||||||
|
" - GPU: 460 MHz",
|
||||||
|
" - CPU: 1581 MHz",
|
||||||
|
"- USB Charger",
|
||||||
|
" - GPU: 768 MHz",
|
||||||
|
"- PD Charger / Docked:",
|
||||||
|
" - No capping applied",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
case HocClkConfigValue_ThermalThrottle:
|
||||||
|
return {
|
||||||
|
"If enabled, Resets to stock clocks after the threshold is applied",
|
||||||
|
"Default: ON",
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_HandheldTDP:
|
||||||
|
return {
|
||||||
|
"If enabled, Resets to stock clocks when power consumption is above the threshold in handheld mode",
|
||||||
|
"Default: ON",
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_HandheldTDPLimit:
|
||||||
|
case HocClkConfigValue_LiteTDPLimit:
|
||||||
|
return {
|
||||||
|
"The power consumption threshold (in mW) for resetting to stock clocks in handheld mode when Handheld TDP is enabled.",
|
||||||
|
isHoag ? "Default: 6400mW" : "Default: 9600mW"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_ThermalThrottleThreshold:
|
||||||
|
return {
|
||||||
|
"The temperature threshold (in °C) for resetting to stock clocks when Thermal Throttle is enabled.",
|
||||||
|
"Default: 70°C"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_emcDvbShift:
|
||||||
|
return {
|
||||||
|
"Each level adds/removes 25mV from the SOC Voltage table",
|
||||||
|
"Consoles are bracketed by SoC Speedo. The brackets are as follows:",
|
||||||
|
" - Speedo 1487-1598: Bracket 0",
|
||||||
|
" - Speedo 1598-1709: Bracket 1",
|
||||||
|
" - Speedo 1709-1820: Bracket 2",
|
||||||
|
"SOC Volt Table:",
|
||||||
|
" - 1331/1600MHz tables are not modified",
|
||||||
|
" - 1633-1866MHz:",
|
||||||
|
" - Bracket 0: 700mV",
|
||||||
|
" - Bracket 1: 675mV",
|
||||||
|
" - Bracket 2: 650mV",
|
||||||
|
" - 1900-2133MHz:",
|
||||||
|
" - Bracket 0: 725mV",
|
||||||
|
" - Bracket 1: 700mV",
|
||||||
|
" - Bracket 2: 675mV",
|
||||||
|
" - 2166-2400MHz:",
|
||||||
|
" - Bracket 0: 750mV",
|
||||||
|
" - Bracket 1: 725mV",
|
||||||
|
" - Bracket 2: 700mV",
|
||||||
|
" - 2433-2666MHz:",
|
||||||
|
" - Bracket 0: 850mV",
|
||||||
|
" - Bracket 1: 825mV",
|
||||||
|
" - Bracket 2: 800mV",
|
||||||
|
" - 2700-2933MHz:",
|
||||||
|
" - Bracket 0: 950mV",
|
||||||
|
" - Bracket 1: 925mV",
|
||||||
|
" - Bracket 2: 900mV",
|
||||||
|
" - 2966-3200MHz:",
|
||||||
|
" - Bracket 0: 1050mV",
|
||||||
|
" - Bracket 1: 1025mV",
|
||||||
|
" - Bracket 2: 1000mV",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoSocVmax:
|
||||||
|
return {
|
||||||
|
"The maximum available SOC Voltage that the DVB-adjusted table can use",
|
||||||
|
"Default: Do not override"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_hpMode:
|
||||||
|
return {
|
||||||
|
"When enabled, disables RAM powerdown. Helps with latency significantly",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_commonEmcMemVolt:
|
||||||
|
return {
|
||||||
|
"RAM VDD2 voltage",
|
||||||
|
"Increasing this WILL NOT increase your maximum frequency, but may help with timing reduction.",
|
||||||
|
"Undervolting RAM is pointless and may hurt performance and stability",
|
||||||
|
"Default: 1175 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoEmcVddqVolt:
|
||||||
|
return {
|
||||||
|
"RAM VDDQ voltage",
|
||||||
|
"Increasing this may help, but the default value is usually good enough.",
|
||||||
|
"Undervolting RAM is pointless and may hurt performance and stability",
|
||||||
|
"Default: 600 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_stepMode:
|
||||||
|
return {
|
||||||
|
"The step that RAM clocks take.",
|
||||||
|
"Options (with examples):",
|
||||||
|
" - 66MHz - 66 MHz step (ex. 1600, 1666, 1733, etc.)",
|
||||||
|
" - 100MHz - 100 MHz step (ex. 1600, 1700, 1800, etc.)",
|
||||||
|
" - 133MHz - 66 MHz step (ex. 1600, 1733, 1866, etc.)",
|
||||||
|
" - JEDEC:",
|
||||||
|
" - 1600, 1866, 1996, 2133, 2400, 2666, 2933 and 3200 MHz are used",
|
||||||
|
"The RAM max clock will always be available regardless of the step mode, but the intermediate frequencies will be limited by the selected step mode.",
|
||||||
|
"This setting does not affect performance and the option you choose mostly is based on your personal taste",
|
||||||
|
"33 MHz step mode is not possible due to certian limitations of Horizon OS",
|
||||||
|
"Default: 66 MHz",
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoEmcMaxClock:
|
||||||
|
return {
|
||||||
|
"The maximum RAM frequency available.",
|
||||||
|
"Higher frequencies may cause instability, so increase this gradually and test for stability.",
|
||||||
|
"Default: 2133 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaEmcMaxClock:
|
||||||
|
case KipConfigValue_eristaEmcMaxClock1:
|
||||||
|
case KipConfigValue_eristaEmcMaxClock2:
|
||||||
|
return {
|
||||||
|
"The RAM frequency used in the particular slot. Higher frequencies may cause instability, so increase this gradually and test for stability.",
|
||||||
|
"Default: Disabled (1600 MHz)"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t1_tRCD:
|
||||||
|
return {
|
||||||
|
"RAS-to-CAS delay",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t2_tRP:
|
||||||
|
return {
|
||||||
|
"Row precharge time",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t3_tRAS:
|
||||||
|
return {
|
||||||
|
"Row active time",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t4_tRRD:
|
||||||
|
return {
|
||||||
|
"Row refresh time",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t5_tRFC:
|
||||||
|
return {
|
||||||
|
"Refresh Cycle Time",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t6_tRTW:
|
||||||
|
return {
|
||||||
|
"Read To Write (High bracket)",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t7_tWTR:
|
||||||
|
return {
|
||||||
|
"Write To Read (High bracket)",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t8_tREFI:
|
||||||
|
return {
|
||||||
|
"Refresh command interval",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_timingEmcTbreak:
|
||||||
|
return {
|
||||||
|
"Frequency where t6 and t7 break between the low and high brackets",
|
||||||
|
"Example:",
|
||||||
|
"Tbreak is set to 1866 MHz, and t6Low is set to 4 and t6High is set to 2. At frequencies below 1866 MHz, t6 will be 4, and at frequencies above 1866 MHz, t6 will be 2.",
|
||||||
|
"Default: Disabled"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_low_t6_tRTW:
|
||||||
|
return {
|
||||||
|
"Read To Write (Low bracket)",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_low_t7_tWTR:
|
||||||
|
return {
|
||||||
|
"Write To Read (Low bracket)",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
case KipConfigValue_t2_tRP_cap:
|
||||||
|
return {
|
||||||
|
"Cap for t2 when 1333WL is used.",
|
||||||
|
"The default value is sufficient for most RAMs but some may need a lower value",
|
||||||
|
"Default: 2"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t6_tRTW_fine_tune:
|
||||||
|
return {
|
||||||
|
"Finetunes the raw calculation of t6",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_t7_tWTR_fine_tune:
|
||||||
|
return {
|
||||||
|
"Finetunes the raw calculation of t6",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_write_latency_1333:
|
||||||
|
case KipConfigValue_write_latency_1600:
|
||||||
|
case KipConfigValue_write_latency_1866:
|
||||||
|
case KipConfigValue_write_latency_2133:
|
||||||
|
case KipConfigValue_read_latency_1333:
|
||||||
|
case KipConfigValue_read_latency_1600:
|
||||||
|
case KipConfigValue_read_latency_1866:
|
||||||
|
case KipConfigValue_read_latency_2133:
|
||||||
|
return {
|
||||||
|
"Latency bracket settings",
|
||||||
|
"Example:",
|
||||||
|
"If 1333 is set to 2000 MHz, 1600 set to 2500 MHz, 1866 set to 2766 MHz and 2133 set to 2933 MHz:",
|
||||||
|
"Frequencies below 2000 MHz use 1333, 2033-2500 MHz use 1600, 2533-2766 MHz use 1866 and 2800-2933 MHz use 2133. ",
|
||||||
|
"Either of these can be ommited and it will work (say you set 1333 to -, then <2000 MHz will use 1600 latency)",
|
||||||
|
"If all of these parameters are ommited the latency will automatically be calculated as follows:",
|
||||||
|
"1633-1866 MHz - 1866 WRL",
|
||||||
|
"1900+ MHz - 2133 WRL",
|
||||||
|
"These properties apply for both write and read latencies, and you can mix-and-match the brackets if nessesary",
|
||||||
|
"Default: -"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_mem_burst_read_latency:
|
||||||
|
return {
|
||||||
|
"The read latency for the ram",
|
||||||
|
"Default: 1600 RL"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_mem_burst_write_latency:
|
||||||
|
return {
|
||||||
|
"The write latency for the ram",
|
||||||
|
"Default: 1600 WL"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuUVLow:
|
||||||
|
return {
|
||||||
|
"The CPU UV level used before tBreak",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuUVHigh:
|
||||||
|
return {
|
||||||
|
"The CPU UV level used after tBreak",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_tableConf:
|
||||||
|
return {
|
||||||
|
"The current UV table used. The tbreaks are as follows:",
|
||||||
|
"1581 MHz tBreak and 1683 MHz tBreak use their respective tBreaks",
|
||||||
|
"The other tables use 1581 MHz as tBreak",
|
||||||
|
"The \"Default\" table does not contain frequencies past 1963 MHz and may not undervolt correctly"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuLowVmin:
|
||||||
|
return {
|
||||||
|
"The CPU vmin used before tBreak",
|
||||||
|
"Default: 620 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuHighVmin:
|
||||||
|
return {
|
||||||
|
"The CPU vmin used after tBreak",
|
||||||
|
"Default: 750 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuMaxVolt:
|
||||||
|
return {
|
||||||
|
"The maximum voltage that the CPU can use",
|
||||||
|
"Change this setting with caution!",
|
||||||
|
"Default: 1120 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuMaxClock:
|
||||||
|
return {
|
||||||
|
"The maximum available CPU clock",
|
||||||
|
"Default: 1963 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoCpuBoostClock:
|
||||||
|
return {
|
||||||
|
"The clock used for the CPU in \"boost mode\"",
|
||||||
|
"Default: 1963 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaCpuUV:
|
||||||
|
return {
|
||||||
|
"CPU undervolt level",
|
||||||
|
"Default: 0"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaCpuUnlock:
|
||||||
|
return {
|
||||||
|
"Unlock unsafe CPU clocks",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaCpuVmin:
|
||||||
|
return {
|
||||||
|
"Minimum CPU voltage",
|
||||||
|
"Default: 825 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaCpuMaxVolt:
|
||||||
|
return {
|
||||||
|
"Maximum CPU voltage",
|
||||||
|
"Default: 1235 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_EristaMaxCpuClock:
|
||||||
|
return {
|
||||||
|
"The maximum available CPU clock",
|
||||||
|
"Default: 1785 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaCpuBoostClock:
|
||||||
|
return {
|
||||||
|
"The clock used for the CPU in \"boost mode\"",
|
||||||
|
"Default: 1785 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_OverwriteBoostMode:
|
||||||
|
return {
|
||||||
|
"If enabled, profiles can override the boost mode setting",
|
||||||
|
"Default: OFF"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoGpuUV:
|
||||||
|
return {
|
||||||
|
"GPU undervolt level",
|
||||||
|
"Options:",
|
||||||
|
" - HiOPT: L4T Custom HiOPT table",
|
||||||
|
" - HiOPT - 15mV: L4T Custom HiOPT table with a 15mV offset",
|
||||||
|
" - High UV: The highest undervolt table, reccomended",
|
||||||
|
"Default: HiOPT"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoGpuVmin:
|
||||||
|
return {
|
||||||
|
"Minimum GPU voltage",
|
||||||
|
"Note: DVFS may change this value when the RAM clock is changed if the DVFS mode is set to PCV Hijack",
|
||||||
|
"Default: 610 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_marikoGpuVmax:
|
||||||
|
return {
|
||||||
|
"Maximum GPU voltage",
|
||||||
|
"Default: 800 mV"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_DVFSMode:
|
||||||
|
return {
|
||||||
|
"The mode used for GPU DVFS",
|
||||||
|
"Adjusts GPU vmin when RAM clock is changed due to a higher requirement",
|
||||||
|
"Options:",
|
||||||
|
"- Disabled: disabled...",
|
||||||
|
"- PCV Hijack: hijack PCV for override",
|
||||||
|
"Default: PCV Hijack"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_DVFSOffset:
|
||||||
|
return {
|
||||||
|
"The offset added/subtracted to the GPU vmin when the RAM clock is changed due to a higher requirement in PCV Hijack mode",
|
||||||
|
"Default: 0 mV (Disabled)"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaGpuUV:
|
||||||
|
return {
|
||||||
|
"GPU undervolt level",
|
||||||
|
"Options:",
|
||||||
|
" - HiOPT: L4T Custom HiOPT table",
|
||||||
|
" - HiOPT - 15mV: L4T Custom HiOPT table with a 15mV offset",
|
||||||
|
" - High UV: The highest undervolt table, reccomended",
|
||||||
|
"Default: HiOPT"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_eristaGpuVmin:
|
||||||
|
return {
|
||||||
|
"Minimum GPU voltage",
|
||||||
|
"Default: 810 mV (812mV as erista is stepped my 6.5mV instead of 5mV)"
|
||||||
|
};
|
||||||
|
|
||||||
|
case KipConfigValue_commonGpuVoltOffset:
|
||||||
|
return {
|
||||||
|
"The offset added/subtracted to all AUTO GPU voltages",
|
||||||
|
"Default: 0 mV (Disabled)"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_GPUScheduling:
|
||||||
|
return {
|
||||||
|
"The scheduling method used for GPU clocks",
|
||||||
|
"Options:",
|
||||||
|
"- Do Not Override: Do not override existing scheduling mode",
|
||||||
|
"- Disabled: Disables GPU scheduling, 99.7% GPU max load",
|
||||||
|
"- Enabled: Enables GPU scheduling, 96.5% GPU max load",
|
||||||
|
"Default: Do not override"
|
||||||
|
};
|
||||||
|
|
||||||
|
default:
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Source/hoc-clk/overlay/src/ui/gui/config_info_strings.h
Normal file
23
Source/hoc-clk/overlay/src/ui/gui/config_info_strings.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) Souldbminer, Lightos_ 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include "misc_gui.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko, bool isHoag);
|
||||||
88
Source/hoc-clk/overlay/src/ui/gui/info_gui.cpp
Normal file
88
Source/hoc-clk/overlay/src/ui/gui/info_gui.cpp
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) Souldbminer, Lightos_ 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "info_gui.h"
|
||||||
|
#include "ult_ext.h"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
InfoGui::InfoGui(std::string title, std::vector<std::string> strings)
|
||||||
|
: m_title(std::move(title)), m_strings(std::move(strings)) {}
|
||||||
|
|
||||||
|
static constexpr s32 TEXT_SIZE = 16;
|
||||||
|
static constexpr s32 LINE_H = 22;
|
||||||
|
static constexpr s32 PARA_GAP = 10;
|
||||||
|
static constexpr s32 MARGIN_L = 20;
|
||||||
|
static constexpr s32 MARGIN_R = 35;
|
||||||
|
|
||||||
|
static std::vector<std::string> wrapText(const std::string& text, s32 maxWidth)
|
||||||
|
{
|
||||||
|
constexpr float CHAR_W = 10.0f;
|
||||||
|
|
||||||
|
// Preserve leading whitespace as an indent prefix for wrapped continuation lines.
|
||||||
|
std::string indent;
|
||||||
|
for (char c : text) {
|
||||||
|
if (c == ' ') indent += ' ';
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> lines;
|
||||||
|
std::istringstream ss(text);
|
||||||
|
std::string word, line = indent; // seed with indent so first word inherits it
|
||||||
|
bool first = true;
|
||||||
|
while (ss >> word) {
|
||||||
|
std::string candidate = (first && !indent.empty()) ? indent + word
|
||||||
|
: line.empty() ? word
|
||||||
|
: line + " " + word;
|
||||||
|
first = false;
|
||||||
|
if (static_cast<s32>(candidate.size() * CHAR_W) <= maxWidth)
|
||||||
|
line = std::move(candidate);
|
||||||
|
else {
|
||||||
|
if (!line.empty() && line != indent) lines.push_back(line);
|
||||||
|
line = indent + word;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!line.empty() && line != indent) lines.push_back(line);
|
||||||
|
if (lines.empty()) lines.emplace_back("");
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InfoGui::listUI()
|
||||||
|
{
|
||||||
|
this->listElement->addItem(new tsl::elm::CategoryHeader(m_title));
|
||||||
|
|
||||||
|
const s32 maxWidth = tsl::cfg::FramebufferWidth - MARGIN_L - MARGIN_R;
|
||||||
|
|
||||||
|
for (const auto& para : m_strings) {
|
||||||
|
for (const auto& lineText : wrapText(para, maxWidth)) {
|
||||||
|
auto* d = new FocusableDrawer(
|
||||||
|
[lineText](tsl::gfx::Renderer* r, s32 x, s32 y, s32 w, s32 h) {
|
||||||
|
r->drawString((lineText + "\n").c_str(), false,
|
||||||
|
x + MARGIN_L, y + LINE_H - 5,
|
||||||
|
TEXT_SIZE, tsl::style::color::ColorText);
|
||||||
|
});
|
||||||
|
d->setBoundaries(0, 0, tsl::cfg::FramebufferWidth, LINE_H);
|
||||||
|
this->listElement->addItem(d, LINE_H);
|
||||||
|
}
|
||||||
|
|
||||||
|
// paragraph gap
|
||||||
|
auto* gap = new tsl::elm::CustomDrawer(
|
||||||
|
[](tsl::gfx::Renderer*, s32, s32, s32, s32) {});
|
||||||
|
gap->setBoundaries(0, 0, tsl::cfg::FramebufferWidth, PARA_GAP);
|
||||||
|
this->listElement->addItem(gap, PARA_GAP);
|
||||||
|
}
|
||||||
|
}
|
||||||
33
Source/hoc-clk/overlay/src/ui/gui/info_gui.h
Normal file
33
Source/hoc-clk/overlay/src/ui/gui/info_gui.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) Souldbminer, Lightos_ 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include "base_menu_gui.h"
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class InfoGui : public BaseMenuGui
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InfoGui(std::string title, std::vector<std::string> strings);
|
||||||
|
~InfoGui() = default;
|
||||||
|
void listUI() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_title;
|
||||||
|
std::vector<std::string> m_strings;
|
||||||
|
};
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "misc_gui.h"
|
#include "misc_gui.h"
|
||||||
#include "fatal_gui.h"
|
#include "fatal_gui.h"
|
||||||
|
#include "config_info_strings.h"
|
||||||
#include "../format.h"
|
#include "../format.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
@@ -88,7 +89,24 @@ MiscGui::~MiscGui()
|
|||||||
|
|
||||||
void MiscGui::addConfigToggle(HocClkConfigValue configVal, const char* altName, bool kip) {
|
void MiscGui::addConfigToggle(HocClkConfigValue configVal, const char* altName, bool kip) {
|
||||||
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
tsl::elm::ToggleListItem* toggle = new tsl::elm::ToggleListItem(configName, this->configList->values[configVal]);
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
|
|
||||||
|
struct YAwareToggle : tsl::elm::ToggleListItem {
|
||||||
|
std::vector<std::string> m_info;
|
||||||
|
std::string m_title;
|
||||||
|
YAwareToggle(const char* text, bool state, std::string title, std::vector<std::string> info)
|
||||||
|
: tsl::elm::ToggleListItem(text, state), m_info(std::move(info)), m_title(std::move(title)) {}
|
||||||
|
bool onClick(u64 keys) override {
|
||||||
|
if (!m_info.empty() && (keys & HidNpadButton_Y) && !(keys & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(m_title, m_info);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return tsl::elm::ToggleListItem::onClick(keys);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
auto* toggle = new YAwareToggle(configName, this->configList->values[configVal],
|
||||||
|
configName, std::move(infoStrings));
|
||||||
if (!kip)
|
if (!kip)
|
||||||
toggle->setTextColor(tsl::Color(120, 235, 255, 255));
|
toggle->setTextColor(tsl::Color(120, 235, 255, 255));
|
||||||
toggle->setStateChangedListener([this, configVal, kip](bool state) {
|
toggle->setStateChangedListener([this, configVal, kip](bool state) {
|
||||||
@@ -106,9 +124,13 @@ void MiscGui::addConfigToggle(HocClkConfigValue configVal, const char* altName,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MiscGui::addConfigTrackbar(HocClkConfigValue configVal, const char* altName, const ValueRange& range, bool kip) {
|
void MiscGui::addConfigTrackbar(HocClkConfigValue configVal, const char* altName, const ValueRange& range, bool kip) {
|
||||||
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
struct IndexedBar : tsl::elm::NamedStepTrackBar {
|
struct IndexedBar : tsl::elm::NamedStepTrackBar {
|
||||||
IndexedBar(const char* label, const ValueRange& r)
|
std::vector<std::string> m_info;
|
||||||
: tsl::elm::NamedStepTrackBar("", {""}, true, label) {
|
std::string m_title;
|
||||||
|
IndexedBar(const char* label, const ValueRange& r, std::string title, std::vector<std::string> info)
|
||||||
|
: tsl::elm::NamedStepTrackBar("", {""}, true, label),
|
||||||
|
m_info(std::move(info)), m_title(std::move(title)) {
|
||||||
m_stepDescriptions.clear();
|
m_stepDescriptions.clear();
|
||||||
u32 numSteps = (r.max - r.min) / r.step + 1;
|
u32 numSteps = (r.max - r.min) / r.step + 1;
|
||||||
for (u32 i = 0; i < numSteps; i++) {
|
for (u32 i = 0; i < numSteps; i++) {
|
||||||
@@ -120,9 +142,17 @@ void MiscGui::addConfigTrackbar(HocClkConfigValue configVal, const char* altName
|
|||||||
m_numSteps = (u8)m_stepDescriptions.size();
|
m_numSteps = (u8)m_stepDescriptions.size();
|
||||||
m_selection = m_stepDescriptions[0];
|
m_selection = m_stepDescriptions[0];
|
||||||
}
|
}
|
||||||
|
bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState& touchPos,
|
||||||
|
HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override {
|
||||||
|
if (!m_info.empty() && (keysDown & HidNpadButton_Y) && !(keysDown & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(m_title, m_info);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return tsl::elm::NamedStepTrackBar::handleInput(keysDown, keysHeld, touchPos, leftJoyStick, rightJoyStick);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
const char* name = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
const char* name = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
auto* bar = new IndexedBar(name, range);
|
auto* bar = new IndexedBar(name, range, name, std::move(infoStrings));
|
||||||
u32 cur = (u32)this->configList->values[configVal];
|
u32 cur = (u32)this->configList->values[configVal];
|
||||||
u16 curStep = 0;
|
u16 curStep = 0;
|
||||||
if (cur >= range.min && cur <= range.max && range.step > 0 && (cur - range.min) % range.step == 0)
|
if (cur >= range.min && cur <= range.max && range.step > 0 && (cur - range.min) % range.step == 0)
|
||||||
@@ -141,7 +171,25 @@ void MiscGui::addMappedConfigTrackbar(HocClkConfigValue configVal, const char* a
|
|||||||
std::vector<u32> vals,
|
std::vector<u32> vals,
|
||||||
std::initializer_list<std::string> names, bool kip) {
|
std::initializer_list<std::string> names, bool kip) {
|
||||||
const char* name = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
const char* name = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
auto* bar = new tsl::elm::NamedStepTrackBar("", names, true, name);
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
|
|
||||||
|
struct YAwareTrackBar : tsl::elm::NamedStepTrackBar {
|
||||||
|
std::vector<std::string> m_info;
|
||||||
|
std::string m_title;
|
||||||
|
YAwareTrackBar(const char* label, std::initializer_list<std::string> steps, std::string title, std::vector<std::string> info)
|
||||||
|
: tsl::elm::NamedStepTrackBar("", steps, true, label),
|
||||||
|
m_info(std::move(info)), m_title(std::move(title)) {}
|
||||||
|
bool handleInput(u64 keysDown, u64 keysHeld, const HidTouchState& touchPos,
|
||||||
|
HidAnalogStickState leftJoyStick, HidAnalogStickState rightJoyStick) override {
|
||||||
|
if (!m_info.empty() && (keysDown & HidNpadButton_Y) && !(keysDown & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(m_title, m_info);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return tsl::elm::NamedStepTrackBar::handleInput(keysDown, keysHeld, touchPos, leftJoyStick, rightJoyStick);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
auto* bar = new YAwareTrackBar(name, names, name, std::move(infoStrings));
|
||||||
u32 cur = (u32)this->configList->values[configVal];
|
u32 cur = (u32)this->configList->values[configVal];
|
||||||
u16 curIdx = 0;
|
u16 curIdx = 0;
|
||||||
for (u16 i = 0; i < (u16)vals.size(); i++) {
|
for (u16 i = 0; i < (u16)vals.size(); i++) {
|
||||||
@@ -170,6 +218,7 @@ void MiscGui::addConfigButton(HocClkConfigValue configVal,
|
|||||||
bool kip)
|
bool kip)
|
||||||
{
|
{
|
||||||
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
|
|
||||||
tsl::elm::ListItem* listItem = new tsl::elm::ListItem(configName);
|
tsl::elm::ListItem* listItem = new tsl::elm::ListItem(configName);
|
||||||
if (!kip)
|
if (!kip)
|
||||||
@@ -203,8 +252,14 @@ void MiscGui::addConfigButton(HocClkConfigValue configVal,
|
|||||||
ValueThresholds thresholdsCopy = (thresholds ? *thresholds : ValueThresholds{});
|
ValueThresholds thresholdsCopy = (thresholds ? *thresholds : ValueThresholds{});
|
||||||
|
|
||||||
listItem->setClickListener(
|
listItem->setClickListener(
|
||||||
[this, configVal, range, categoryName, thresholdsCopy, labels, showDefaultValue, kip](u64 keys)
|
[this, configVal, range, categoryName, thresholdsCopy, labels, showDefaultValue, kip,
|
||||||
|
infoStrings = std::move(infoStrings), configName = std::string(configName)](u64 keys)
|
||||||
{
|
{
|
||||||
|
if (!infoStrings.empty() && (keys & HidNpadButton_Y) && !(keys & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(configName, infoStrings);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ((keys & HidNpadButton_A) == 0)
|
if ((keys & HidNpadButton_A) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -287,6 +342,8 @@ void MiscGui::addConfigButtonS(HocClkConfigValue configVal,
|
|||||||
const char* subText,
|
const char* subText,
|
||||||
bool kip)
|
bool kip)
|
||||||
{
|
{
|
||||||
|
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
tsl::elm::ListItem* listItem = new tsl::elm::ListItem("");
|
tsl::elm::ListItem* listItem = new tsl::elm::ListItem("");
|
||||||
if (!kip)
|
if (!kip)
|
||||||
listItem->setTextColor(tsl::Color(120, 235, 255, 255));
|
listItem->setTextColor(tsl::Color(120, 235, 255, 255));
|
||||||
@@ -321,8 +378,14 @@ void MiscGui::addConfigButtonS(HocClkConfigValue configVal,
|
|||||||
ValueThresholds thresholdsCopy = (thresholds ? *thresholds : ValueThresholds{});
|
ValueThresholds thresholdsCopy = (thresholds ? *thresholds : ValueThresholds{});
|
||||||
|
|
||||||
listItem->setClickListener(
|
listItem->setClickListener(
|
||||||
[this, configVal, range, categoryName, thresholdsCopy, labels, showDefaultValue, kip](u64 keys)
|
[this, configVal, range, categoryName, thresholdsCopy, labels, showDefaultValue, kip,
|
||||||
|
infoStrings = std::move(infoStrings), configName = std::string(configName)](u64 keys)
|
||||||
{
|
{
|
||||||
|
if (!infoStrings.empty() && (keys & HidNpadButton_Y) && !(keys & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(configName, infoStrings);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ((keys & HidNpadButton_A) == 0)
|
if ((keys & HidNpadButton_A) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -410,6 +473,7 @@ void MiscGui::addFreqButton(HocClkConfigValue configVal,
|
|||||||
const std::map<uint32_t, std::string>& labels)
|
const std::map<uint32_t, std::string>& labels)
|
||||||
{
|
{
|
||||||
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
const char* configName = altName ? altName : hocclkFormatConfigValue(configVal, true);
|
||||||
|
auto infoStrings = ConfigInfoStrings(configVal, IsMariko(), IsHoag());
|
||||||
|
|
||||||
tsl::elm::ListItem* listItem = new tsl::elm::ListItem(configName);
|
tsl::elm::ListItem* listItem = new tsl::elm::ListItem(configName);
|
||||||
|
|
||||||
@@ -419,8 +483,14 @@ void MiscGui::addFreqButton(HocClkConfigValue configVal,
|
|||||||
listItem->setValue(valueText);
|
listItem->setValue(valueText);
|
||||||
|
|
||||||
listItem->setClickListener(
|
listItem->setClickListener(
|
||||||
[this, configVal, module, labels](u64 keys)
|
[this, configVal, module, labels,
|
||||||
|
infoStrings = std::move(infoStrings), configName = std::string(configName)](u64 keys)
|
||||||
{
|
{
|
||||||
|
if (!infoStrings.empty() && (keys & HidNpadButton_Y) && !(keys & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(configName, infoStrings);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ((keys & HidNpadButton_A) == 0)
|
if ((keys & HidNpadButton_A) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -1350,7 +1420,12 @@ protected:
|
|||||||
tsl::elm::ListItem* item = new tsl::elm::ListItem(label);
|
tsl::elm::ListItem* item = new tsl::elm::ListItem(label);
|
||||||
item->setValue(makeValueText(currentVal));
|
item->setValue(makeValueText(currentVal));
|
||||||
|
|
||||||
item->setClickListener([this, tierIdx, thisKey, keysArr](u64 keys) -> bool {
|
item->setClickListener([this, tierIdx, thisKey, keysArr, label](u64 keys) -> bool {
|
||||||
|
auto infoStrings = ConfigInfoStrings(thisKey, IsMariko(), IsHoag());
|
||||||
|
if (!infoStrings.empty() && (keys & HidNpadButton_Y) && !(keys & ~HidNpadButton_Y)) {
|
||||||
|
tsl::changeTo<InfoGui>(std::string(label), infoStrings);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if ((keys & HidNpadButton_A) == 0)
|
if ((keys & HidNpadButton_A) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include "freq_choice_gui.h"
|
#include "freq_choice_gui.h"
|
||||||
#include "value_choice_gui.h"
|
#include "value_choice_gui.h"
|
||||||
|
#include "info_gui.h"
|
||||||
class MiscGui : public BaseMenuGui
|
class MiscGui : public BaseMenuGui
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -32,7 +33,7 @@ public:
|
|||||||
~MiscGui();
|
~MiscGui();
|
||||||
void listUI() override;
|
void listUI() override;
|
||||||
void refresh() override;
|
void refresh() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HocClkConfigValueList* configList;
|
HocClkConfigValueList* configList;
|
||||||
std::map<HocClkConfigValue, tsl::elm::ListItem*> configButtons;
|
std::map<HocClkConfigValue, tsl::elm::ListItem*> configButtons;
|
||||||
@@ -43,7 +44,7 @@ protected:
|
|||||||
std::set<HocClkConfigValue> configButtonSKeys;
|
std::set<HocClkConfigValue> configButtonSKeys;
|
||||||
std::map<HocClkConfigValue, std::string> configButtonSSubtext;
|
std::map<HocClkConfigValue, std::string> configButtonSSubtext;
|
||||||
std::set<HocClkConfigValue> emcClockConfigs;
|
std::set<HocClkConfigValue> emcClockConfigs;
|
||||||
|
|
||||||
void addConfigToggle(HocClkConfigValue configVal, const char* altName, bool kip = false);
|
void addConfigToggle(HocClkConfigValue configVal, const char* altName, bool kip = false);
|
||||||
void addConfigTrackbar(HocClkConfigValue configVal, const char* altName, const ValueRange& range, bool kip = true);
|
void addConfigTrackbar(HocClkConfigValue configVal, const char* altName, const ValueRange& range, bool kip = true);
|
||||||
void addMappedConfigTrackbar(HocClkConfigValue configVal, const char* altName,
|
void addMappedConfigTrackbar(HocClkConfigValue configVal, const char* altName,
|
||||||
@@ -74,8 +75,8 @@ protected:
|
|||||||
HocClkModule module,
|
HocClkModule module,
|
||||||
const std::map<uint32_t, std::string>& labels = {});
|
const std::map<uint32_t, std::string>& labels = {});
|
||||||
void updateConfigToggles();
|
void updateConfigToggles();
|
||||||
|
|
||||||
tsl::elm::ToggleListItem* enabledToggle;
|
tsl::elm::ToggleListItem* enabledToggle;
|
||||||
u8 frameCounter = 60;
|
u8 frameCounter = 60;
|
||||||
bool shouldSaveKip = false;
|
bool shouldSaveKip = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -95,6 +95,18 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FocusableDrawer : public tsl::elm::CustomDrawer {
|
||||||
|
public:
|
||||||
|
template<typename... Args>
|
||||||
|
FocusableDrawer(Args&&... args) : tsl::elm::CustomDrawer(std::forward<Args>(args)...) {
|
||||||
|
m_isItem = true;
|
||||||
|
}
|
||||||
|
Element* requestFocus(Element*, tsl::FocusDirection) override {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
void drawHighlight(tsl::gfx::Renderer*) override {}
|
||||||
|
};
|
||||||
|
|
||||||
class HideableCustomDrawer : public tsl::elm::Element {
|
class HideableCustomDrawer : public tsl::elm::Element {
|
||||||
private:
|
private:
|
||||||
bool visible;
|
bool visible;
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ INCLUDES := ../common/include src/hos src/soc src/i2c src/util src/pwr src/ipc
|
|||||||
EXEFS_SRC := exefs_src
|
EXEFS_SRC := exefs_src
|
||||||
LIBNAMES := minIni
|
LIBNAMES := minIni
|
||||||
# major minor patch
|
# major minor patch
|
||||||
TARGET_VERSION := 2.3.0
|
TARGET_VERSION := 2.3.1
|
||||||
KIP_VERSION := 230
|
KIP_VERSION := 231
|
||||||
CUST_REV := 3
|
CUST_REV := 3
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user