diff --git a/src/citra_qt/configuration/configure_system.cpp b/src/citra_qt/configuration/configure_system.cpp index 32ea7b3f3..dc6ed2a1e 100644 --- a/src/citra_qt/configuration/configure_system.cpp +++ b/src/citra_qt/configuration/configure_system.cpp @@ -439,9 +439,7 @@ void ConfigureSystem::RefreshConsoleID() { return; } - u32 random_number; - u64 console_id; - cfg->GenerateConsoleUniqueId(random_number, console_id); + const auto [random_number, console_id] = cfg->GenerateConsoleUniqueId(); cfg->SetConsoleUniqueId(random_number, console_id); cfg->UpdateConfigNANDSavegame(); ui->label_console_id->setText( diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index bc37f733f..a7be7d277 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -465,9 +465,7 @@ ResultCode Module::FormatConfig() { if (!res.IsSuccess()) return res; - u32 random_number; - u64 console_id; - GenerateConsoleUniqueId(random_number, console_id); + const auto [random_number, console_id] = GenerateConsoleUniqueId(); u64_le console_id_le = console_id; res = CreateConfigInfoBlk(ConsoleUniqueID1BlockID, sizeof(console_id_le), 0xE, &console_id_le); @@ -727,13 +725,18 @@ u8 Module::GetCountryCode() { return block.country_code; } -void Module::GenerateConsoleUniqueId(u32& random_number, u64& console_id) { +std::pair Module::GenerateConsoleUniqueId() const { CryptoPP::AutoSeededRandomPool rng; - random_number = rng.GenerateWord32(0, 0xFFFF); + const u32 random_number = rng.GenerateWord32(0, 0xFFFF); + u64_le local_friend_code_seed; rng.GenerateBlock(reinterpret_cast(&local_friend_code_seed), sizeof(local_friend_code_seed)); - console_id = (local_friend_code_seed & 0x3FFFFFFFF) | (static_cast(random_number) << 48); + + const u64 console_id = + (local_friend_code_seed & 0x3FFFFFFFF) | (static_cast(random_number) << 48); + + return std::make_pair(random_number, console_id); } ResultCode Module::SetConsoleUniqueId(u32 random_number, u64 console_id) { diff --git a/src/core/hle/service/cfg/cfg.h b/src/core/hle/service/cfg/cfg.h index 58e914583..715cf68b5 100644 --- a/src/core/hle/service/cfg/cfg.h +++ b/src/core/hle/service/cfg/cfg.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "common/common_types.h" #include "core/hle/service/service.h" @@ -383,12 +384,13 @@ public: /** * Generates a new random console unique id. - * @param random_number a random generated 16bit number stored at 0x90002, used for generating - * the - * console_id - * @param console_id the randomly created console id + * + * @returns A pair containing a random number and a random console ID. + * + * @note The random number is a random generated 16bit number stored at 0x90002, used for + * generating the console ID. */ - void GenerateConsoleUniqueId(u32& random_number, u64& console_id); + std::pair GenerateConsoleUniqueId() const; /** * Sets the random_number and the console unique id in the config savegame.