diff --git a/src/citra_qt/configuration/configure_system.cpp b/src/citra_qt/configuration/configure_system.cpp index 25a18ce6ff..bf2b46ce91 100644 --- a/src/citra_qt/configuration/configure_system.cpp +++ b/src/citra_qt/configuration/configure_system.cpp @@ -247,9 +247,10 @@ ConfigureSystem::ConfigureSystem(QWidget* parent) ui->combo_download_set->setCurrentIndex(0); // set to Minimal ui->combo_download_region->setCurrentIndex(0); // set to the base region - bool keys_available = true; HW::AES::InitKeys(true); - for (u8 i = 0; i < HW::AES::MaxCommonKeySlot; i++) { + bool keys_available = HW::AES::IsKeyXAvailable(HW::AES::KeySlotID::NCCHSecure1) && + HW::AES::IsKeyXAvailable(HW::AES::KeySlotID::NCCHSecure2); + for (u8 i = 0; i < HW::AES::MaxCommonKeySlot && keys_available; i++) { HW::AES::SelectCommonKeyIndex(i); if (!HW::AES::IsNormalKeyAvailable(HW::AES::KeySlotID::TicketCommonKey)) { keys_available = false; diff --git a/src/core/hw/aes/key.cpp b/src/core/hw/aes/key.cpp index 5cd5d82147..991fa5a5e9 100644 --- a/src/core/hw/aes/key.cpp +++ b/src/core/hw/aes/key.cpp @@ -573,6 +573,10 @@ void SetNormalKey(std::size_t slot_id, const AESKey& key) { key_slots.at(slot_id).SetNormalKey(key); } +bool IsKeyXAvailable(std::size_t slot_id) { + return key_slots.at(slot_id).x.has_value(); +} + bool IsNormalKeyAvailable(std::size_t slot_id) { return key_slots.at(slot_id).normal.has_value(); } diff --git a/src/core/hw/aes/key.h b/src/core/hw/aes/key.h index 33232dceb5..5131882d7f 100644 --- a/src/core/hw/aes/key.h +++ b/src/core/hw/aes/key.h @@ -76,6 +76,7 @@ void SetKeyX(std::size_t slot_id, const AESKey& key); void SetKeyY(std::size_t slot_id, const AESKey& key); void SetNormalKey(std::size_t slot_id, const AESKey& key); +bool IsKeyXAvailable(std::size_t slot_id); bool IsNormalKeyAvailable(std::size_t slot_id); AESKey GetNormalKey(std::size_t slot_id);