diff --git a/Source/Core/Core/IOS/Network/KD/NWC24Config.cpp b/Source/Core/Core/IOS/Network/KD/NWC24Config.cpp index 4ff427907c..56b1d747cd 100644 --- a/Source/Core/Core/IOS/Network/KD/NWC24Config.cpp +++ b/Source/Core/Core/IOS/Network/KD/NWC24Config.cpp @@ -15,6 +15,7 @@ namespace IOS::HLE::NWC24 { constexpr const char CONFIG_PATH[] = "/" WII_WC24CONF_DIR "/nwc24msg.cfg"; +constexpr const char CBK_PATH[] = "/" WII_WC24CONF_DIR "/nwc24msg.cbk"; NWC24Config::NWC24Config(std::shared_ptr fs) : m_fs{std::move(fs)} { @@ -37,13 +38,23 @@ void NWC24Config::ReadConfig() ResetConfig(); } +void NWC24Config::WriteCBK() const +{ + WriteConfigToPath(CBK_PATH); +} + void NWC24Config::WriteConfig() const +{ + WriteConfigToPath(CONFIG_PATH); +} + +void NWC24Config::WriteConfigToPath(const std::string& path) const { constexpr FS::Modes public_modes{FS::Mode::ReadWrite, FS::Mode::ReadWrite, FS::Mode::ReadWrite}; - m_fs->CreateFullPath(PID_KD, PID_KD, CONFIG_PATH, 0, public_modes); - const auto file = m_fs->CreateAndOpenFile(PID_KD, PID_KD, CONFIG_PATH, public_modes); + m_fs->CreateFullPath(PID_KD, PID_KD, path, 0, public_modes); + const auto file = m_fs->CreateAndOpenFile(PID_KD, PID_KD, path, public_modes); if (!file || !file->Write(&m_data, 1)) - ERROR_LOG_FMT(IOS_WC24, "Failed to open or write WC24 config file"); + ERROR_LOG_FMT(IOS_WC24, "Failed to open or write WC24 config file at {}", path); } void NWC24Config::ResetConfig() diff --git a/Source/Core/Core/IOS/Network/KD/NWC24Config.h b/Source/Core/Core/IOS/Network/KD/NWC24Config.h index c5e0c3a17e..be8f4c9bc9 100644 --- a/Source/Core/Core/IOS/Network/KD/NWC24Config.h +++ b/Source/Core/Core/IOS/Network/KD/NWC24Config.h @@ -46,7 +46,9 @@ public: explicit NWC24Config(std::shared_ptr fs); void ReadConfig(); + void WriteCBK() const; void WriteConfig() const; + void WriteConfigToPath(const std::string& path) const; void ResetConfig(); u32 CalculateNwc24ConfigChecksum() const; diff --git a/Source/Core/Core/IOS/Network/KD/NetKDRequest.cpp b/Source/Core/Core/IOS/Network/KD/NetKDRequest.cpp index 8bedc0d9f0..1e8063a60d 100644 --- a/Source/Core/Core/IOS/Network/KD/NetKDRequest.cpp +++ b/Source/Core/Core/IOS/Network/KD/NetKDRequest.cpp @@ -397,7 +397,9 @@ std::optional NetKDRequestDevice::IOCtl(const IOCtlRequest& request) config.SetId(user_id); config.IncrementIdGen(); config.SetCreationStage(NWC24::NWC24CreationStage::Generated); + config.SetChecksum(config.CalculateNwc24ConfigChecksum()); config.WriteConfig(); + config.WriteCBK(); WriteReturnValue(ret, request.buffer_out); }