diff --git a/sphaira/include/app.hpp b/sphaira/include/app.hpp index 36e2985..db21651 100644 --- a/sphaira/include/app.hpp +++ b/sphaira/include/app.hpp @@ -189,6 +189,7 @@ public: option::OptionBool m_install{INI_SECTION, "install", false}; option::OptionBool m_install_sd{INI_SECTION, "install_sd", true}; option::OptionLong m_install_prompt{INI_SECTION, "install_prompt", true}; + option::OptionLong m_boost_mode{INI_SECTION, "boost_mode", false}; option::OptionBool m_allow_downgrade{INI_SECTION, "allow_downgrade", false}; option::OptionBool m_skip_if_already_installed{INI_SECTION, "skip_if_already_installed", true}; option::OptionBool m_ticket_only{INI_SECTION, "ticket_only", false}; diff --git a/sphaira/include/yati/yati.hpp b/sphaira/include/yati/yati.hpp index c582d8a..3fccc29 100644 --- a/sphaira/include/yati/yati.hpp +++ b/sphaira/include/yati/yati.hpp @@ -71,6 +71,10 @@ enum : Result { struct Config { bool sd_card_install{}; + // sets the performance mode to FastLoad which boosts the CPU clock + // and lowers the GPU clock. + bool boost_mode{}; + // enables downgrading patch / data patch (dlc) version. bool allow_downgrade{}; diff --git a/sphaira/source/app.cpp b/sphaira/source/app.cpp index 0916588..4fa2c18 100644 --- a/sphaira/source/app.cpp +++ b/sphaira/source/app.cpp @@ -1540,18 +1540,22 @@ void App::DisplayInstallOptions(bool left_side) { install_items.push_back("System memory"_i18n); install_items.push_back("microSD card"_i18n); - options->Add(std::make_shared("Enable"_i18n, App::GetInstallEnable(), [](bool& enable){ - App::SetInstallEnable(enable); + options->Add(std::make_shared("Enable"_i18n, App::GetApp()->m_install.Get(), [](bool& enable){ + App::GetApp()->m_install.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); - options->Add(std::make_shared("Show install warning"_i18n, App::GetInstallPrompt(), [](bool& enable){ - App::SetInstallPrompt(enable); + options->Add(std::make_shared("Show install warning"_i18n, App::GetApp()->m_install_prompt.Get(), [](bool& enable){ + App::GetApp()->m_install_prompt.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); options->Add(std::make_shared("Install location"_i18n, install_items, [](s64& index_out){ App::SetInstallSdEnable(index_out); }, (s64)App::GetInstallSdEnable())); + options->Add(std::make_shared("Boost CPU clock"_i18n, App::GetApp()->m_boost_mode.Get(), [](bool& enable){ + App::GetApp()->m_boost_mode.Set(enable); + }, "Enabled"_i18n, "Disabled"_i18n)); + options->Add(std::make_shared("Allow downgrade"_i18n, App::GetApp()->m_allow_downgrade.Get(), [](bool& enable){ App::GetApp()->m_allow_downgrade.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); @@ -1568,11 +1572,11 @@ void App::DisplayInstallOptions(bool left_side) { App::GetApp()->m_skip_base.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); - options->Add(std::make_shared("Skip Patch"_i18n, App::GetApp()->m_skip_patch.Get(), [](bool& enable){ + options->Add(std::make_shared("Skip patch"_i18n, App::GetApp()->m_skip_patch.Get(), [](bool& enable){ App::GetApp()->m_skip_patch.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); - options->Add(std::make_shared("Skip addon"_i18n, App::GetApp()->m_skip_addon.Get(), [](bool& enable){ + options->Add(std::make_shared("Skip dlc"_i18n, App::GetApp()->m_skip_addon.Get(), [](bool& enable){ App::GetApp()->m_skip_addon.Set(enable); }, "Enabled"_i18n, "Disabled"_i18n)); diff --git a/sphaira/source/yati/yati.cpp b/sphaira/source/yati/yati.cpp index 6242778..3ddb47b 100644 --- a/sphaira/source/yati/yati.cpp +++ b/sphaira/source/yati/yati.cpp @@ -764,10 +764,15 @@ Yati::~Yati() { serviceClose(std::addressof(es)); appletSetMediaPlaybackState(false); + + if (config.boost_mode) { + appletSetCpuBoostMode(ApmCpuBoostMode_Normal); + } } Result Yati::Setup(const ConfigOverride& override) { config.sd_card_install = override.sd_card_install.value_or(App::GetApp()->m_install_sd.Get()); + config.boost_mode = App::GetApp()->m_boost_mode.Get(); config.allow_downgrade = App::GetApp()->m_allow_downgrade.Get(); config.skip_if_already_installed = App::GetApp()->m_skip_if_already_installed.Get(); config.ticket_only = App::GetApp()->m_ticket_only.Get(); @@ -785,6 +790,10 @@ Result Yati::Setup(const ConfigOverride& override) { config.lower_system_version = override.lower_system_version.value_or(App::GetApp()->m_lower_system_version.Get()); storage_id = config.sd_card_install ? NcmStorageId_SdCard : NcmStorageId_BuiltInUser; + if (config.boost_mode) { + appletSetCpuBoostMode(ApmCpuBoostMode_FastLoad); + } + R_TRY(source->GetOpenResult()); R_TRY(splCryptoInitialize()); R_TRY(nsInitialize());