add kip version detection + version mismatch warning
This commit is contained in:
@@ -78,9 +78,11 @@ typedef struct {
|
|||||||
// FPS / Resolution
|
// FPS / Resolution
|
||||||
u8 fps;
|
u8 fps;
|
||||||
u16 resolutionHeight;
|
u16 resolutionHeight;
|
||||||
|
u8 custRev;
|
||||||
|
u16 kipVersion;
|
||||||
|
|
||||||
// Reserved for future use
|
// Reserved for future use
|
||||||
u8 reserved[0x368];
|
u8 reserved[0x363];
|
||||||
} HocClkContext;
|
} HocClkContext;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include "cat.h"
|
#include "cat.h"
|
||||||
#include "ult_ext.h"
|
#include "ult_ext.h"
|
||||||
|
|
||||||
|
// tsl::elm::ListItem* custRevItem = NULL;
|
||||||
|
tsl::elm::ListItem* kipVersionItem = NULL;
|
||||||
tsl::elm::ListItem* SpeedoItem = NULL;
|
tsl::elm::ListItem* SpeedoItem = NULL;
|
||||||
tsl::elm::ListItem* IddqItem = NULL;
|
tsl::elm::ListItem* IddqItem = NULL;
|
||||||
tsl::elm::ListItem* DramModule = NULL;
|
tsl::elm::ListItem* DramModule = NULL;
|
||||||
@@ -61,7 +63,7 @@ void AboutGui::listUI()
|
|||||||
|
|
||||||
ramVoltItem =
|
ramVoltItem =
|
||||||
new tsl::elm::ListItem("RAM Voltage:");
|
new tsl::elm::ListItem("RAM Voltage:");
|
||||||
|
|
||||||
if(IsMariko()) {
|
if(IsMariko()) {
|
||||||
this->listElement->addItem(ramVoltItem);
|
this->listElement->addItem(ramVoltItem);
|
||||||
}
|
}
|
||||||
@@ -98,11 +100,11 @@ void AboutGui::listUI()
|
|||||||
ramBWItemCpu =
|
ramBWItemCpu =
|
||||||
new tsl::elm::ListItem("RAM BW (CPU):");
|
new tsl::elm::ListItem("RAM BW (CPU):");
|
||||||
this->listElement->addItem(ramBWItemCpu);
|
this->listElement->addItem(ramBWItemCpu);
|
||||||
|
|
||||||
ramBWItemGpu =
|
ramBWItemGpu =
|
||||||
new tsl::elm::ListItem("RAM BW (GPU):");
|
new tsl::elm::ListItem("RAM BW (GPU):");
|
||||||
this->listElement->addItem(ramBWItemGpu);
|
this->listElement->addItem(ramBWItemGpu);
|
||||||
|
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
new tsl::elm::CategoryHeader("HW Info")
|
new tsl::elm::CategoryHeader("HW Info")
|
||||||
@@ -133,6 +135,12 @@ void AboutGui::listUI()
|
|||||||
new tsl::elm::CategoryHeader("Software Info")
|
new tsl::elm::CategoryHeader("Software Info")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// custRevItem = new tsl::elm::ListItem("CUST revision:");
|
||||||
|
// this->listElement->addItem(custRevItem);
|
||||||
|
|
||||||
|
kipVersionItem = new tsl::elm::ListItem("Kip version:");
|
||||||
|
this->listElement->addItem(kipVersionItem);
|
||||||
|
|
||||||
if(!IsHoag()) {
|
if(!IsHoag()) {
|
||||||
sysdockStatusItem =
|
sysdockStatusItem =
|
||||||
new tsl::elm::ListItem("sys-dock status:");
|
new tsl::elm::ListItem("sys-dock status:");
|
||||||
@@ -210,7 +218,7 @@ void AboutGui::listUI()
|
|||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
new tsl::elm::ListItem("Delta")
|
new tsl::elm::ListItem("arcdelta")
|
||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
@@ -255,7 +263,7 @@ void AboutGui::listUI()
|
|||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
new tsl::elm::ListItem("ScriesM - Atmosphere CFW")
|
new tsl::elm::ListItem("SciresM - Atmosphere CFW")
|
||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
@@ -263,7 +271,7 @@ void AboutGui::listUI()
|
|||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
new tsl::elm::ListItem("hanai3bi - Switch OC Suite & EOS")
|
new tsl::elm::ListItem("hanai3Bi - Switch OC Suite & EOS")
|
||||||
);
|
);
|
||||||
|
|
||||||
this->listElement->addItem(
|
this->listElement->addItem(
|
||||||
@@ -347,7 +355,7 @@ void AboutGui::update()
|
|||||||
void AboutGui::refresh()
|
void AboutGui::refresh()
|
||||||
{
|
{
|
||||||
BaseMenuGui::refresh();
|
BaseMenuGui::refresh();
|
||||||
|
|
||||||
if (!this->context)
|
if (!this->context)
|
||||||
return;
|
return;
|
||||||
// Format strings once per refresh
|
// Format strings once per refresh
|
||||||
@@ -357,11 +365,15 @@ void AboutGui::refresh()
|
|||||||
SpeedoItem->setValue(strings[0]);
|
SpeedoItem->setValue(strings[0]);
|
||||||
IddqItem->setValue(strings[1]);
|
IddqItem->setValue(strings[1]);
|
||||||
DramModule->setValue(formatRamModule());
|
DramModule->setValue(formatRamModule());
|
||||||
|
|
||||||
|
// custRevItem->setValue(std::to_string(this->context->custRev));
|
||||||
|
|
||||||
|
kipVersionItem->setValue(std::to_string((this->context->kipVersion / 100) % 10) + "." + std::to_string((this->context->kipVersion / 10) % 10) + "." + std::to_string( this->context->kipVersion % 10));
|
||||||
if(!IsHoag())
|
if(!IsHoag())
|
||||||
sysdockStatusItem->setValue(this->context->isSysDockInstalled ? "Installed" : "Not Installed");
|
sysdockStatusItem->setValue(this->context->isSysDockInstalled ? "Installed" : "Not Installed");
|
||||||
|
|
||||||
saltyNXStatusItem->setValue(this->context->isSaltyNXInstalled ? "Installed" : "Not Installed");
|
saltyNXStatusItem->setValue(this->context->isSaltyNXInstalled ? "Installed" : "Not Installed");
|
||||||
|
|
||||||
if(IsHoag())
|
if(IsHoag())
|
||||||
RETROStatusItem->setValue(this->context->isUsingRetroSuper ? "Installed" : "Not Installed");
|
RETROStatusItem->setValue(this->context->isUsingRetroSuper ? "Installed" : "Not Installed");
|
||||||
|
|
||||||
@@ -384,7 +396,7 @@ void AboutGui::refresh()
|
|||||||
|
|
||||||
sprintf(strings[4], "%u.%u / %u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U, context->voltages[HocClkVoltage_EMCVDDQ] / 1000);
|
sprintf(strings[4], "%u.%u / %u mV", context->voltages[HocClkVoltage_EMCVDD2] / 1000U, (context->voltages[HocClkVoltage_EMCVDD2] % 1000U) / 100U, context->voltages[HocClkVoltage_EMCVDDQ] / 1000);
|
||||||
ramVoltItem->setValue(strings[4]);
|
ramVoltItem->setValue(strings[4]);
|
||||||
|
|
||||||
sprintf(strings[5], "%u.%u mV", context->voltages[HocClkVoltage_Display] / 1000U, (context->voltages[HocClkVoltage_Display] % 1000U) / 100U);
|
sprintf(strings[5], "%u.%u mV", context->voltages[HocClkVoltage_Display] / 1000U, (context->voltages[HocClkVoltage_Display] % 1000U) / 100U);
|
||||||
dispVoltItem->setValue(strings[5]);
|
dispVoltItem->setValue(strings[5]);
|
||||||
|
|
||||||
@@ -401,19 +413,19 @@ void AboutGui::refresh()
|
|||||||
ramBWItemMax->setValue(strings[9]);
|
ramBWItemMax->setValue(strings[9]);
|
||||||
|
|
||||||
switch(context->temps[HocClkThermalSensor_BQ24193]) {
|
switch(context->temps[HocClkThermalSensor_BQ24193]) {
|
||||||
case BQ24193Temp_Normal:
|
case BQ24193Temp_Normal:
|
||||||
strcpy(strings[10], "Normal");
|
strcpy(strings[10], "Normal");
|
||||||
break;
|
break;
|
||||||
case BQ24193Temp_Warm:
|
case BQ24193Temp_Warm:
|
||||||
strcpy(strings[10], "Warm");
|
strcpy(strings[10], "Warm");
|
||||||
break;
|
break;
|
||||||
case BQ24193Temp_Hot:
|
case BQ24193Temp_Hot:
|
||||||
strcpy(strings[10], "Hot");
|
strcpy(strings[10], "Hot");
|
||||||
break;
|
break;
|
||||||
case BQ24193Temp_Overheat:
|
case BQ24193Temp_Overheat:
|
||||||
strcpy(strings[10], "Overheat");
|
strcpy(strings[10], "Overheat");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
strcpy(strings[10], "Unknown");
|
strcpy(strings[10], "Unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,11 @@
|
|||||||
#include "kip.hpp"
|
#include "kip.hpp"
|
||||||
#include "board/board.hpp"
|
#include "board/board.hpp"
|
||||||
#include "file_utils.hpp"
|
#include "file_utils.hpp"
|
||||||
|
#include "clock_manager.hpp"
|
||||||
|
|
||||||
#define CUST_REV 2
|
#define CUST_REV 2
|
||||||
|
#define KIP_VERSION 220
|
||||||
|
|
||||||
namespace kip {
|
namespace kip {
|
||||||
|
|
||||||
bool kipAvailable = false;
|
bool kipAvailable = false;
|
||||||
@@ -58,7 +61,6 @@ namespace kip {
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
CUST_WRITE_FIELD_BATCH(&table, custRev, config::GetConfigValue(KipConfigValue_custRev));
|
|
||||||
// CUST_WRITE_FIELD_BATCH(&table, mtcConf, config::GetConfigValue(KipConfigValue_mtcConf));
|
// CUST_WRITE_FIELD_BATCH(&table, mtcConf, config::GetConfigValue(KipConfigValue_mtcConf));
|
||||||
CUST_WRITE_FIELD_BATCH(&table, hpMode, config::GetConfigValue(KipConfigValue_hpMode));
|
CUST_WRITE_FIELD_BATCH(&table, hpMode, config::GetConfigValue(KipConfigValue_hpMode));
|
||||||
|
|
||||||
@@ -200,6 +202,14 @@ namespace kip {
|
|||||||
|
|
||||||
configValues.values[KipCrc32] = (u64)crc32::checksum_file("sdmc:/atmosphere/kips/hoc.kip"); // write checksum
|
configValues.values[KipCrc32] = (u64)crc32::checksum_file("sdmc:/atmosphere/kips/hoc.kip"); // write checksum
|
||||||
// configValues.values[KipConfigValue_mtcConf] = cust_get_mtc_conf(&table);
|
// configValues.values[KipConfigValue_mtcConf] = cust_get_mtc_conf(&table);
|
||||||
|
clockManager::gContext.custRev = cust_get_cust_rev(&table);
|
||||||
|
|
||||||
|
u16 kipVersion = cust_get_kip_version(&table);
|
||||||
|
if (kipVersion != KIP_VERSION) {
|
||||||
|
notification::writeNotification("Horizon OC\nKip version mismatch detected!");
|
||||||
|
}
|
||||||
|
|
||||||
|
clockManager::gContext.kipVersion = kipVersion;
|
||||||
configValues.values[KipConfigValue_hpMode] = cust_get_hp_mode(&table);
|
configValues.values[KipConfigValue_hpMode] = cust_get_hp_mode(&table);
|
||||||
|
|
||||||
configValues.values[KipConfigValue_commonEmcMemVolt] = cust_get_common_emc_volt(&table);
|
configValues.values[KipConfigValue_commonEmcMemVolt] = cust_get_common_emc_volt(&table);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace kip {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
u8 cust[4];
|
u8 cust[4];
|
||||||
u32 custRev;
|
u32 custRev;
|
||||||
u32 hocVersion;
|
u32 kipVersion;
|
||||||
u32 hpMode;
|
u32 hpMode;
|
||||||
u32 commonEmcMemVolt;
|
u32 commonEmcMemVolt;
|
||||||
u32 eristaEmcMaxClock;
|
u32 eristaEmcMaxClock;
|
||||||
@@ -206,7 +206,7 @@ namespace kip {
|
|||||||
return cust_write_table(path, &t); \
|
return cust_write_table(path, &t); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static inline bool cust_set_cust_rev(const char* p, u32 v) { CUST_WRITE_FIELD(p, custRev, v); }
|
// static inline bool cust_set_cust_rev(const char* p, u32 v) { CUST_WRITE_FIELD(p, custRev, v); }
|
||||||
// static inline bool cust_set_mtc_conf(const char* p, u32 v) { CUST_WRITE_FIELD(p, mtcConf, v); }
|
// static inline bool cust_set_mtc_conf(const char* p, u32 v) { CUST_WRITE_FIELD(p, mtcConf, v); }
|
||||||
static inline bool cust_set_hp_mode(const char* p, u32 v) { CUST_WRITE_FIELD(p, hpMode, v); }
|
static inline bool cust_set_hp_mode(const char* p, u32 v) { CUST_WRITE_FIELD(p, hpMode, v); }
|
||||||
|
|
||||||
@@ -295,6 +295,7 @@ namespace kip {
|
|||||||
#define CUST_GET_FIELD(table, field) ((table) ? (table)->field : 0)
|
#define CUST_GET_FIELD(table, field) ((table) ? (table)->field : 0)
|
||||||
|
|
||||||
static inline u32 cust_get_cust_rev(const CustomizeTable* t) { return CUST_GET_FIELD(t, custRev); }
|
static inline u32 cust_get_cust_rev(const CustomizeTable* t) { return CUST_GET_FIELD(t, custRev); }
|
||||||
|
static inline u32 cust_get_kip_version(const CustomizeTable* t) { return CUST_GET_FIELD(t, kipVersion); }
|
||||||
// static inline u32 cust_get_mtc_conf(const CustomizeTable* t) { return CUST_GET_FIELD(t, mtcConf); }
|
// static inline u32 cust_get_mtc_conf(const CustomizeTable* t) { return CUST_GET_FIELD(t, mtcConf); }
|
||||||
static inline u32 cust_get_hp_mode(const CustomizeTable* t) { return CUST_GET_FIELD(t, hpMode); }
|
static inline u32 cust_get_hp_mode(const CustomizeTable* t) { return CUST_GET_FIELD(t, hpMode); }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user