8 Commits
2.0.0 ... 2.0.2

Author SHA1 Message Date
souldbminersmwc
7d30c4d384 bump version 2026-04-21 19:38:32 -04:00
souldbminersmwc
883b4fc3f4 hocclk: fix pointer dereference 2026-04-21 19:35:05 -04:00
Lightos1
530588a818 bump version 2026-04-21 21:29:18 +02:00
Lightos1
a6402bd5d5 update startPtr AFTER PrepareMtcMemoryRegion 2026-04-21 21:28:18 +02:00
Lightos1
cd3d29ce88 I'm a fucking idiot... remove debug code 2026-04-21 09:58:11 +02:00
souldbminersmwc
192b70dae4 Merge branch 'main' of https://github.com/Horizon-OC/Horizon-OC 2026-04-20 19:19:44 -04:00
souldbminersmwc
aaa9f90794 hocclk: console specific changes 2026-04-20 19:19:40 -04:00
Lightos1
d5e38b0eb3 Update SECURITY.md 2026-04-20 21:44:44 +02:00
11 changed files with 125 additions and 117 deletions

View File

@@ -4,8 +4,9 @@
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 1.x | :white_check_mark: | | 2.x.x | :white_check_mark: |
| 0.x | Not supported | | 1.x.x | Not supported |
| 0.x.x | Not supported |
## Reporting a Vulnerability ## Reporting a Vulnerability

View File

@@ -726,7 +726,6 @@ namespace ams::ldr::hoc::pcv::mariko {
static const DramId dramId = [] { static const DramId dramId = [] {
DramId id = GetDramId(); DramId id = GetDramId();
id = IOWA_4GB_SAMSUNG_K4U6E3S4AA_MGCL;
return id; return id;
}(); }();
@@ -748,9 +747,9 @@ namespace ams::ldr::hoc::pcv::mariko {
MarikoMtcTable *table = reinterpret_cast<MarikoMtcTable *>(startPtr + mtcOffset); MarikoMtcTable *table = reinterpret_cast<MarikoMtcTable *>(startPtr + mtcOffset);
R_UNLESS(R_SUCCEEDED(MtcValidateAllTables(table, EmcListDefault, EmcListSizeDefault)), ldr::ResultInvalidMtcTable()); R_UNLESS(R_SUCCEEDED(MtcValidateAllTables(table, EmcListDefault, EmcListSizeDefault)), ldr::ResultInvalidMtcTable());
PrepareMtcMemoryRegion(startPtr, table);
table = reinterpret_cast<MarikoMtcTable *>(startPtr); table = reinterpret_cast<MarikoMtcTable *>(startPtr);
PrepareMtcMemoryRegion(startPtr, table);
if (R_FAILED(MtcValidateAllTables(table, EmcListDefault, EmcListSizeDefault))) { if (R_FAILED(MtcValidateAllTables(table, EmcListDefault, EmcListSizeDefault))) {
panic::SmcError(panic::Emc); panic::SmcError(panic::Emc);
} }

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 := 2.0.0 APP_VERSION := 2.0.2
TARGET_VERSION := $(APP_VERSION) TARGET_VERSION := $(APP_VERSION)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -290,6 +290,9 @@ public:
: applicationId(appId), profileList(pList), profile(prof) {} : applicationId(appId), profileList(pList), profile(prof) {}
void listUI() override { void listUI() override {
BaseMenuGui::refresh(); // get latest context
if(!this->context)
return;
Result rc = hocclkIpcGetConfigValues(&configList); Result rc = hocclkIpcGetConfigValues(&configList);
if (R_FAILED(rc)) [[unlikely]] { if (R_FAILED(rc)) [[unlikely]] {
FatalGui::openWithResultCode("hocclkIpcGetConfigValues", rc); FatalGui::openWithResultCode("hocclkIpcGetConfigValues", rc);
@@ -300,7 +303,7 @@ public:
static constexpr struct { const char* label; int shift; } kAll[] = { static constexpr struct { const char* label; int shift; } kAll[] = {
{"CPU", 0}, {"GPU", 8}, {"VRR", 16} {"CPU", 0}, {"GPU", 8}, {"VRR", 16}
}; };
int count = configList.values[HocClkConfigValue_OverwriteRefreshRate] ? 3 : 2; int count = configList.values[HocClkConfigValue_OverwriteRefreshRate] || this->context->isUsingRetroSuper ? 3 : 2;
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
u8 cur = (this->profileList->mhzMap[this->profile][HocClkModule_Governor] >> kAll[i].shift) & 0xFF; u8 cur = (this->profileList->mhzMap[this->profile][HocClkModule_Governor] >> kAll[i].shift) & 0xFF;

View File

@@ -301,6 +301,9 @@ public:
GovernorOverrideSubMenuGui(u32 initialPacked) : packed(initialPacked) {} GovernorOverrideSubMenuGui(u32 initialPacked) : packed(initialPacked) {}
void listUI() override { void listUI() override {
BaseMenuGui::refresh(); // get latest context
if(!this->context)
return;
Result rc = hocclkIpcGetConfigValues(&configList); // idk why this is needed, probably some refreshing issue Result rc = hocclkIpcGetConfigValues(&configList); // idk why this is needed, probably some refreshing issue
if (R_FAILED(rc)) [[unlikely]] { if (R_FAILED(rc)) [[unlikely]] {
FatalGui::openWithResultCode("hocclkIpcGetConfigValues", rc); FatalGui::openWithResultCode("hocclkIpcGetConfigValues", rc);
@@ -311,7 +314,7 @@ public:
static constexpr struct { const char* label; int shift; } kAll[] = { static constexpr struct { const char* label; int shift; } kAll[] = {
{"CPU", 0}, {"GPU", 8}, {"VRR", 16} {"CPU", 0}, {"GPU", 8}, {"VRR", 16}
}; };
int count = configList.values[HocClkConfigValue_OverwriteRefreshRate] ? 3 : 2; int count = configList.values[HocClkConfigValue_OverwriteRefreshRate] || this->context->isUsingRetroSuper ? 3 : 2;
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
u8 cur = (this->packed >> kAll[i].shift) & 0xFF; u8 cur = (this->packed >> kAll[i].shift) & 0xFF;

View File

@@ -743,7 +743,7 @@ protected:
ValueThresholds displayThresholds(60, 65); ValueThresholds displayThresholds(60, 65);
addConfigButton( addConfigButton(
HocClkConfigValue_MaxDisplayClockH, HocClkConfigValue_MaxDisplayClockH,
"Max Handheld Display", "Max Handheld Display Hz",
ValueRange(60, IsAula() ? 65 : 75, 1, " Hz", 1), ValueRange(60, IsAula() ? 65 : 75, 1, " Hz", 1),
"Display Clock", "Display Clock",
&displayThresholds, &displayThresholds,
@@ -752,16 +752,18 @@ protected:
false false
); );
} }
addConfigButton( if(!IsAula()) {
HocClkConfigValue_DisplayVoltage, addConfigButton(
"Display Voltage", HocClkConfigValue_DisplayVoltage,
ValueRange(800, 1200, 25, " mV", 1), "Display Voltage",
"Display Voltage", ValueRange(800, 1200, 25, " mV", 1),
&thresholdsDisabled, "Display Voltage",
{}, &thresholdsDisabled,
{}, {},
false {},
); false
);
}
} }
}; };

Binary file not shown.

View File

@@ -2,140 +2,140 @@
"Information": "Información", "Information": "Información",
"IDDQ:": "IDDQ:", "IDDQ:": "IDDQ:",
"Module: ": "Módulo:", "Module: ": "Módulo:",
"sys-dock status:": "estado del sys-dock:", "sys-dock status:": "Estado de sys-dock:",
"SaltyNX status:": "Estado de SaltyNX:", "SaltyNX status:": "Estado de SaltyNX:",
"RR Display status:": "Estado de visualización RR:", "RR Display status:": "Estado de pantalla RR:",
"Wafer Position:": "Posición de la oblea:", "Wafer Position:": "Posición del wafer:",
"Credits": "Créditos", "Credits": "Créditos",
"Developers": "Desarrolladores", "Developers": "Desarrolladores",
"Contributors": "Colaboradores", "Contributors": "Colaboradores",
"Testers": "Probadores", "Testers": "Testers",
"Special Thanks": "agradecimiento especial", "Special Thanks": "Agradecimientos especiales",
"Unknown": "Desconocido", "Unknown": "Desconocido",
"Installed": "Instalado", "Installed": "Instalado",
"Not Installed": "No instalado", "Not Installed": "No instalado",
"X: %u Y: %u": "X: %u Y: %u", "X: %u Y: %u": "X: %u Y: %u",
"THE BEER-WARE LICENSE": "LA LICENCIA DE CERVEZA", "THE BEER-WARE LICENSE": "LICENCIA BEER-WARE",
"Default": "Predeterminado", "Default": "Predeterminado",
"Do Not Override": "No anular", "Do Not Override": "No sobrescribir",
"Disabled": "Discapacitado", "Disabled": "Desactivado",
"Enabled": "Habilitado", "Enabled": "Activado",
" \\ue0e3 Reset": "\\ue0e3 Restablecer", " \\ue0e3 Reset": "\\ue0e3 Restablecer",
"Display": "Pantalla", "Display": "Pantalla",
"Application changed\\n\\n": "Aplicación modificada\\n\\n", "Application changed\\n\\n": "Aplicación cambiada\\n\\n",
"The running application changed\\n\\n": "La aplicación en ejecución cambió\\n\\n", "The running application changed\\n\\n": "La aplicación en ejecución ha cambiado\\n\\n",
"while editing was going on.": "mientras se realizaba la edición.", "while editing was going on.": "mientras se estaba editando.",
"Board": "tablero", "Board": "Placa",
"%u.%u%u mV": "%u.%u%u mV", "%u.%u%u mV": "%u.%u%u mV",
"Could not connect to hoc-clk sysmodule.\\n\\n": "No se pudo conectar al módulo del sistema hoc-clk.\\n\\n", "Could not connect to hoc-clk sysmodule.\\n\\n": "No se pudo conectar al sysmodule hoc-clk.\\n\\n",
"Please make sure everything is\\n\\n": "Por favor asegúrese de que todo esté\\n\\n", "Please make sure everything is\\n\\n": "Asegúrate de que todo esté\\n\\n",
"correctly installed and enabled.": "correctamente instalado y habilitado.", "correctly installed and enabled.": "correctamente instalado y activado.",
"Fatal error": "error fatal", "Fatal error": "Error fatal",
"Temporary Overrides ": "Anulaciones temporales", "Temporary Overrides ": "Ajustes temporales",
"Sleep Mode": "Modo de suspensión", "Sleep Mode": "Modo reposo",
"Stock": "Valores", "Stock": "Valores de fábrica",
"Dev OC": "Desarrollador OC", "Dev OC": "OC de desarrollo",
"Boost Mode": "Modo de impulso", "Boost Mode": "Modo boost",
"Safe Max": "Máximo seguro", "Safe Max": "Máximo seguro",
"Unsafe Max": "Máximo inseguro", "Unsafe Max": "Máximo no seguro",
"Absolute Max": "Máximo absoluto", "Absolute Max": "Máximo absoluto",
"Handheld Safe Max": "Caja fuerte de mano máx.", "Handheld Safe Max": "Máximo seguro en portátil",
"Enable": "Habilitar", "Enable": "Activar",
"Edit App Profile": "Editar perfil de aplicación", "Edit App Profile": "Editar perfil de aplicación",
"Edit Global Profile": "Editar perfil global", "Edit Global Profile": "Editar perfil global",
"Temporary Overrides": "Anulaciones temporales", "Temporary Overrides": "Ajustes temporales",
"Settings": "Configuración", "Settings": "Configuración",
"About": "Acerca de", "About": "Acerca de",
"Compiling with minimal features": "Compilando con características mínimas", "Compiling with minimal features": "Compilado con funciones mínimas",
"General Settings": "Configuraciones generales", "General Settings": "Configuración general",
"Governor Settings": "Configuración del gobernador", "Governor Settings": "Configuración del governor",
"Safety Settings": "Configuraciones de seguridad", "Safety Settings": "Configuración de seguridad",
"Save KIP Settings": "Guardar configuración de KIP", "Save KIP Settings": "Guardar configuración KIP",
"RAM Settings": "Configuración de RAM", "RAM Settings": "Configuración de RAM",
"CPU Settings": "Configuración de la CPU", "CPU Settings": "Configuración de CPU",
"GPU Settings": "Configuración de GPU", "GPU Settings": "Configuración de GPU",
"Display Settings": "Configuración de pantalla", "Display Settings": "Configuración de pantalla",
"Experimental": "Experimental", "Experimental": "Experimental",
"GPU Scheduling Override Method": "Método de anulación de programación de GPU", "GPU Scheduling Override Method": "Método de sobrescritura del scheduling de GPU",
"can be dangerous and may cause": "puede ser peligroso y puede causar", "can be dangerous and may cause": "puede ser peligroso y causar",
"damage to your battery or charger!": "¡Daños a su batería o cargador!", "damage to your battery or charger!": "daños a la batería o al cargador.",
"Charge Current Override": "Anulación de corriente de carga", "Charge Current Override": "Sobrescritura de corriente de carga",
"RAM Voltage Display Mode": "Modo de visualización de voltaje de RAM", "RAM Voltage Display Mode": "Modo de visualización de voltaje de RAM",
"Polling Interval": "Intervalo de sondeo", "Polling Interval": "Intervalo de sondeo",
"CPU Governor Minimum Frequency": "Frecuencia mínima del gobernador de CPU", "CPU Governor Minimum Frequency": "Frecuencia mínima del governor de CPU",
"refresh rates may cause stress": "Las frecuencias de actualización pueden causar estrés.", "refresh rates may cause stress": "las tasas de refresco pueden causar estrés",
"or damage to your display! ": "o daños a su pantalla!", "or damage to your display! ": "o dañar la pantalla.",
"Proceed at your own risk!": Continúe bajo su propio riesgo!", "Proceed at your own risk!": Úsalo bajo tu propio riesgo!",
"Max Handheld Display": "Pantalla portátil máxima", "Max Handheld Display": "Frecuencia máxima de pantalla en portátil",
"Display Clock": "Reloj de pantalla", "Display Clock": "Frecuencia de pantalla",
"Official Rating": "Calificación oficial", "Official Rating": "Valor oficial",
"TDP Threshold": "Umbral de TDP", "TDP Threshold": "Umbral de TDP",
"Power": "poder", "Power": "Potencia",
"Thermal Throttle Limit": "Límite del acelerador térmico", "Thermal Throttle Limit": "Límite de thermal throttling",
"HP Mode": "Modo HP", "HP Mode": "Modo alto rendimiento",
"Default (Mariko)": "Predeterminado (Mariko)", "Default (Mariko)": "Predeterminado (Mariko)",
"Default (Erista)": "Predeterminado (Erista)", "Default (Erista)": "Predeterminado (Erista)",
"Rating": "Calificación", "Rating": "Valor",
"Safe Max (Mariko)": "Max seguro (Mariko)", "Safe Max (Mariko)": "Máximo seguro (Mariko)",
"Safe Max (Erista)": "Safe Max (Erista)", "Safe Max (Erista)": "Máximo seguro (Erista)",
"RAM VDD2 Voltage": "Voltaje RAM VDD2", "RAM VDD2 Voltage": "Voltaje VDD2 de RAM",
"Voltage": "voltaje", "Voltage": "Voltaje",
"RAM VDDQ Voltage": "Voltaje RAM VDDQ", "RAM VDDQ Voltage": "Voltaje VDDQ de RAM",
"RAM Frequency Editor": "Editor de frecuencia RAM", "RAM Frequency Editor": "Editor de frecuencia de RAM",
"JEDEC.": "JEDEC.", "JEDEC.": "JEDEC",
"High speedo needed!": "¡Se necesita alta velocidad!", "High speedo needed!": "¡Se necesita alto speedo!",
"3333MHz (Needs extreme Speedo/PLL)": "3333MHz (Necesita Speedo/PLL extremo)", "3333MHz (Needs extreme Speedo/PLL)": "3333MHz (requiere Speedo/PLL extremo)",
"3366MHz (Needs extreme Speedo/PLL)": "3366MHz (Necesita Speedo/PLL extremo)", "3366MHz (Needs extreme Speedo/PLL)": "3366MHz (requiere Speedo/PLL extremo)",
"3400MHz (Needs extreme Speedo/PLL)": "3400MHz (Necesita Speedo/PLL extremo)", "3400MHz (Needs extreme Speedo/PLL)": "3400MHz (requiere Speedo/PLL extremo)",
"3433MHz (Needs ridiculous Speedo/PLL)": "3433MHz (Necesita Speedo/PLL ridículo)", "3433MHz (Needs ridiculous Speedo/PLL)": "3433MHz (requiere Speedo/PLL muy alto)",
"3466MHz (Needs ridiculous Speedo/PLL)": "3466MHz (Necesita Speedo/PLL ridículo)", "3466MHz (Needs ridiculous Speedo/PLL)": "3466MHz (requiere Speedo/PLL muy alto)",
"3500MHz (Needs ridiculous Speedo/PLL)": "3500MHz (Necesita Speedo/PLL ridículo)", "3500MHz (Needs ridiculous Speedo/PLL)": "3500MHz (requiere Speedo/PLL muy alto)",
"Ram Max Clock": "Ram Max Reloj", "Ram Max Clock": "Frecuencia máxima de RAM",
"RAM Latency Editor": "Editor de latencia de RAM", "RAM Latency Editor": "Editor de latencias de RAM",
"RAM Timing Reductions": "Reducciones de tiempo de RAM", "RAM Timing Reductions": "Reducción de timings de RAM",
"Memory Timings": "Tiempos de memoria", "Memory Timings": "Timings de memoria",
"Advanced": "Avanzado", "Advanced": "Avanzado",
"t6 tRTW Fine Tune": "t6 tRTW Ajuste fino", "t6 tRTW Fine Tune": "Ajuste fino t6 tRTW",
"tRTW Fine Tune": "Ajuste fino tRTW", "tRTW Fine Tune": "Ajuste fino tRTW",
"t7 tWTR Fine Tune": "t7 tWTR Ajuste fino", "t7 tWTR Fine Tune": "Ajuste fino t7 tWTR",
"tWTR Fine Tune": "Ajuste fino de tWTR", "tWTR Fine Tune": "Ajuste fino tWTR",
"Memory Latencies": "Latencias de la memoria", "Memory Latencies": "Latencias de memoria",
"Read Latency": "Leer latencia", "Read Latency": "Latencia de lectura",
"Write Latency": "Latencia de escritura", "Write Latency": "Latencia de escritura",
"CPU Boost Clock": "Reloj de aumento de CPU", "CPU Boost Clock": "Frecuencia boost de CPU",
"CPU UV": "procesador ultravioleta", "CPU UV": "Undervolt de CPU",
"CPU Unlock": "Desbloqueo de CPU", "CPU Unlock": "Desbloqueo de CPU",
"CPU VMIN": "CPU VMIN", "CPU VMIN": "VMIN de CPU",
"CPU Max Voltage": "Voltaje máximo de la CPU", "CPU Max Voltage": "Voltaje máximo de CPU",
"CPU Max Clock": "Reloj máximo de CPU", "CPU Max Clock": "Frecuencia máxima de CPU",
"Extreme UV Table": "Mesa UV extrema", "Extreme UV Table": "Tabla de undervolt extrema",
"CPU UV Table": "Tabla UV de CPU", "CPU UV Table": "Tabla de undervolt de CPU",
"CPU Low UV": "CPU baja radiación ultravioleta", "CPU Low UV": "Undervolt bajo de CPU",
"CPU High UV": "CPU alta UV", "CPU High UV": "Undervolt alto de CPU",
"CPU Low VMIN": "VMIN bajo de CPU", "CPU Low VMIN": "VMIN bajo de CPU",
"CPU High VMIN": "VMIN alto de CPU", "CPU High VMIN": "VMIN alto de CPU",
"No Undervolt": "Sin subvoltaje", "No Undervolt": "Sin undervolt",
"SLT Table": "Mesa TR", "SLT Table": "Tabla SLT",
"HiOPT Table": "Tabla HiOPT", "HiOPT Table": "Tabla HiOPT",
"GPU Undervolt Table": "Tabla de subvoltaje de GPU", "GPU Undervolt Table": "Tabla de undervolt de GPU",
"GPU Minimum Voltage": "Voltaje mínimo de GPU", "GPU Minimum Voltage": "Voltaje mínimo de GPU",
"Calculate GPU Vmin": "Calcular GPU Vmin", "Calculate GPU Vmin": "Calcular Vmin de GPU",
"GPU VMIN": "GPU VMIN", "GPU VMIN": "VMIN de GPU",
"GPU Maximum Voltage": "Voltaje máximo de GPU", "GPU Maximum Voltage": "Voltaje máximo de GPU",
"GPU Voltage Offset": "Compensación de voltaje de GPU", "GPU Voltage Offset": "Offset de voltaje de GPU",
"Do not override": "no anular", "Do not override": "No sobrescribir",
"Enabled (Default)": "Habilitado (predeterminado)", "Enabled (Default)": "Activado (predeterminado)",
"96.6% limit": "límite del 96,6%", "96.6% limit": "Límite 96,6%",
"99.7% limit": "límite del 99,7%", "99.7% limit": "Límite 99,7%",
"GPU Scheduling Override": "Anulación de programación de GPU", "GPU Scheduling Override": "Sobrescritura de scheduling de GPU",
"Official Service": "Servicio Oficial", "Official Service": "Servicio oficial",
"GPU DVFS Mode": "Modo GPU DVFS", "GPU DVFS Mode": "Modo DVFS de GPU",
"GPU DVFS Offset": "Compensación DVFS de GPU", "GPU DVFS Offset": "Offset DVFS de GPU",
"GPU Voltage Table": "Tabla de voltaje de GPU", "GPU Voltage Table": "Tabla de voltaje de GPU",
"GPU Custom Table (mV)": "Tabla personalizada de GPU (mV)", "GPU Custom Table (mV)": "Tabla personalizada de GPU (mV)",
"1075MHz without UV, 1152MHz on SLT": "1075MHz sin UV, 1152MHz en SLT", "1075MHz without UV, 1152MHz on SLT": "1075MHz sin undervolt, 1152MHz en SLT",
"or 1228MHz on HiOPT can cause ": "o 1228MHz en HiOPT pueden causar", "or 1228MHz on HiOPT can cause ": "o 1228MHz en HiOPT pueden causar ",
"permanent damage to your Switch!": Daño permanente a tu Switch!", "permanent damage to your Switch!": daño permanente a tu Switch!",
"921MHz without UV and 960MHz on": "921MHz sin UV y 960MHz encendido", "921MHz without UV and 960MHz on": "921MHz sin undervolt y 960MHz en",
"SLT or HiOPT can cause ": "SLT o HiOPT pueden causar" "SLT or HiOPT can cause ": "SLT o HiOPT pueden causar "
} }

Binary file not shown.

Binary file not shown.