From c71474a6682d035fb4c464e8272a191e9e2e7387 Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Thu, 31 Mar 2022 01:16:02 +0100 Subject: [PATCH] Fix #1737 (screen filters CCT was OOB) --- arm9/source/config.c | 30 ++++++++++++++++++------------ sysmodules/rosalina/source/menu.c | 2 ++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/arm9/source/config.c b/arm9/source/config.c index 5d6770a..df78b8d 100644 --- a/arm9/source/config.c +++ b/arm9/source/config.c @@ -488,6 +488,7 @@ static bool readConfigMcu(void) if (checksum != configDataMcu.checksum || configDataMcu.lumaVersion < MAKE_LUMA_VERSION_MCU(10, 3, 0)) { // Invalid data stored in MCU... + memset(&configDataMcu, 0, sizeof(CfgDataMcu)); configData.bootConfig = 0; // Perform upgrade process (ignoring failures) doLumaUpgradeProcess(); @@ -508,14 +509,11 @@ static bool readConfigMcu(void) bool readConfig(void) { - bool ret; - - ret = readConfigMcu(); - if (!ret) - return false; + bool retMcu, ret; + retMcu = readConfigMcu(); ret = readLumaIniConfig(); - if(!ret || + if(!retMcu || !ret || configData.formatVersionMajor != CONFIG_VERSIONMAJOR || configData.formatVersionMinor != CONFIG_VERSIONMINOR) { @@ -540,16 +538,24 @@ bool readConfig(void) void writeConfig(bool isConfigOptions) { - //If the configuration is different from previously, overwrite it. - if(needConfig != CREATE_CONFIGURATION && ((isConfigOptions && configData.config == oldConfig.config && configData.multiConfig == oldConfig.multiConfig) || - (!isConfigOptions && configData.bootConfig == oldConfig.bootConfig))) return; + bool updateMcu, updateIni; - if(needConfig == CREATE_CONFIGURATION) + if (needConfig == CREATE_CONFIGURATION) + { + updateMcu = !isConfigOptions; // We've already committed it once (if it wasn't initialized) + updateIni = isConfigOptions; needConfig = MODIFY_CONFIGURATION; + } + else + { + updateMcu = !isConfigOptions && configData.bootConfig != oldConfig.bootConfig; + updateIni = isConfigOptions && (configData.config != oldConfig.config || configData.multiConfig != oldConfig.multiConfig); + } - if (!isConfigOptions) + if (updateMcu) writeConfigMcu(); - else if(!writeLumaIniConfig()) + + if(updateIni && !writeLumaIniConfig()) error("Error writing the configuration file"); } diff --git a/sysmodules/rosalina/source/menu.c b/sysmodules/rosalina/source/menu.c index 58e36f3..66dcfbe 100644 --- a/sysmodules/rosalina/source/menu.c +++ b/sysmodules/rosalina/source/menu.c @@ -234,6 +234,8 @@ void menuThreadMain(void) s64 out; svcGetSystemInfo(&out, 0x10000, 0x102); screenFiltersCurrentTemperature = (int)(u32)out; + if (screenFiltersCurrentTemperature < 1000 || screenFiltersCurrentTemperature > 25100) + screenFiltersCurrentTemperature = 6500; // Careful about race conditions here if (screenFiltersCurrentTemperature != 6500)