diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index e7b7c4476..d37fbb242 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -40,6 +40,7 @@ void Module::serialize(Archive& ar, const unsigned int) { ar& cfg_config_file_buffer; ar& cfg_system_save_data_archive; ar& preferred_region_code; + ar& preferred_region_chosen; } SERIALIZE_IMPL(Module) @@ -656,9 +657,10 @@ static std::tuple AdjustLanguageInfoBlock( } void Module::UpdatePreferredRegionCode() { - if (!system.IsPoweredOn()) { + if (preferred_region_chosen || !system.IsPoweredOn()) { return; } + preferred_region_chosen = true; const auto preferred_regions = system.GetAppLoader().GetPreferredRegions(); if (preferred_regions.empty()) { diff --git a/src/core/hle/service/cfg/cfg.h b/src/core/hle/service/cfg/cfg.h index 4ac9b3e14..16edf7746 100644 --- a/src/core/hle/service/cfg/cfg.h +++ b/src/core/hle/service/cfg/cfg.h @@ -591,6 +591,7 @@ private: std::array cfg_config_file_buffer; std::unique_ptr cfg_system_save_data_archive; u32 preferred_region_code = 0; + bool preferred_region_chosen = false; MCUData mcu_data{}; template