From a9862b539547a3770d2abea897ce7c8d886d17c9 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 6 Mar 2021 18:58:19 +0100 Subject: [PATCH] NetPlay: Sync more settings --- .../Core/ConfigLoaders/NetPlayConfigLoader.cpp | 18 ++++++++++++++++-- Source/Core/Core/NetPlayClient.cpp | 14 ++++++++++++-- Source/Core/Core/NetPlayProto.h | 15 +++++++++++++-- Source/Core/Core/NetPlayServer.cpp | 8 ++++++-- .../Core/DolphinQt/NetPlay/NetPlayDialog.cpp | 16 ++++++++++++++-- 5 files changed, 61 insertions(+), 10 deletions(-) diff --git a/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp index 2cc63eb146..76a88b9c76 100644 --- a/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp @@ -39,9 +39,21 @@ public: layer->Set(Config::MAIN_SLOT_B, static_cast(m_settings.m_EXIDevice[1])); layer->Set(Config::MAIN_SERIAL_PORT_1, static_cast(m_settings.m_EXIDevice[2])); layer->Set(Config::MAIN_WII_SD_CARD_WRITABLE, m_settings.m_WriteToMemcard); + layer->Set(Config::MAIN_MEM1_SIZE, m_settings.m_Mem1Size); + layer->Set(Config::MAIN_MEM2_SIZE, m_settings.m_Mem2Size); + layer->Set(Config::MAIN_FALLBACK_REGION, m_settings.m_FallbackRegion); layer->Set(Config::MAIN_DSP_JIT, m_settings.m_DSPEnableJIT); - layer->Set(Config::SYSCONF_PROGRESSIVE_SCAN, m_settings.m_ProgressiveScan); - layer->Set(Config::SYSCONF_PAL60, m_settings.m_PAL60); + + for (size_t i = 0; i < Config::SYSCONF_SETTINGS.size(); ++i) + { + std::visit( + [&](auto* info) { + layer->Set(*info, static_castGetDefaultValue())>( + m_settings.m_SYSCONFSettings[i])); + }, + Config::SYSCONF_SETTINGS[i].config_info); + } + layer->Set(Config::GFX_HACK_EFB_ACCESS_ENABLE, m_settings.m_EFBAccessEnable); layer->Set(Config::GFX_HACK_BBOX_ENABLE, m_settings.m_BBoxEnable); layer->Set(Config::GFX_HACK_FORCE_PROGRESSIVE, m_settings.m_ForceProgressive); @@ -60,12 +72,14 @@ public: layer->Set(Config::MAIN_SYNC_GPU_MAX_DISTANCE, m_settings.m_SyncGpuMaxDistance); layer->Set(Config::MAIN_SYNC_GPU_MIN_DISTANCE, m_settings.m_SyncGpuMinDistance); layer->Set(Config::MAIN_SYNC_GPU_OVERCLOCK, m_settings.m_SyncGpuOverclock); + layer->Set(Config::MAIN_JIT_FOLLOW_BRANCH, m_settings.m_JITFollowBranch); layer->Set(Config::MAIN_FAST_DISC_SPEED, m_settings.m_FastDiscSpeed); layer->Set(Config::MAIN_MMU, m_settings.m_MMU); layer->Set(Config::MAIN_FASTMEM, m_settings.m_Fastmem); layer->Set(Config::MAIN_SKIP_IPL, m_settings.m_SkipIPL); layer->Set(Config::MAIN_LOAD_IPL_DUMP, m_settings.m_LoadIPLDump); + layer->Set(Config::GFX_HACK_DEFER_EFB_COPIES, m_settings.m_DeferEFBCopies); layer->Set(Config::GFX_HACK_EFB_ACCESS_TILE_SIZE, m_settings.m_EFBAccessTileSize); layer->Set(Config::GFX_HACK_EFB_DEFER_INVALIDATION, m_settings.m_EFBAccessDeferInvalidation); diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index 3a16332b89..ea8a3a66df 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -654,11 +654,18 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet) packet >> m_net_settings.m_EnableCheats; packet >> m_net_settings.m_SelectedLanguage; packet >> m_net_settings.m_OverrideRegionSettings; - packet >> m_net_settings.m_ProgressiveScan; - packet >> m_net_settings.m_PAL60; packet >> m_net_settings.m_DSPEnableJIT; packet >> m_net_settings.m_DSPHLE; packet >> m_net_settings.m_WriteToMemcard; + packet >> m_net_settings.m_Mem1Size; + packet >> m_net_settings.m_Mem2Size; + + { + std::underlying_type_t tmp; + packet >> tmp; + m_net_settings.m_FallbackRegion = static_cast(tmp); + } + packet >> m_net_settings.m_CopyWiiSave; packet >> m_net_settings.m_OCEnable; packet >> m_net_settings.m_OCFactor; @@ -670,6 +677,9 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet) device = static_cast(tmp); } + for (u32& value : m_net_settings.m_SYSCONFSettings) + packet >> value; + packet >> m_net_settings.m_EFBAccessEnable; packet >> m_net_settings.m_BBoxEnable; packet >> m_net_settings.m_ForceProgressive; diff --git a/Source/Core/Core/NetPlayProto.h b/Source/Core/Core/NetPlayProto.h index 092344fcc7..e22d0eab6e 100644 --- a/Source/Core/Core/NetPlayProto.h +++ b/Source/Core/Core/NetPlayProto.h @@ -6,9 +6,15 @@ #include #include + #include "Common/CommonTypes.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/HW/EXI/EXI_Device.h" +namespace DiscIO +{ +enum class Region; +} namespace IOS::HLE::FS { class FileSystem; @@ -27,15 +33,19 @@ struct NetSettings bool m_EnableCheats; int m_SelectedLanguage; bool m_OverrideRegionSettings; - bool m_ProgressiveScan; - bool m_PAL60; bool m_DSPHLE; bool m_DSPEnableJIT; bool m_WriteToMemcard; + u32 m_Mem1Size; + u32 m_Mem2Size; + DiscIO::Region m_FallbackRegion; bool m_CopyWiiSave; bool m_OCEnable; float m_OCFactor; std::array m_EXIDevice; + + std::array m_SYSCONFSettings; + bool m_EFBAccessEnable; bool m_BBoxEnable; bool m_ForceProgressive; @@ -76,6 +86,7 @@ struct NetSettings bool m_DeferEFBCopies; bool m_EFBAccessTileSize; bool m_EFBAccessDeferInvalidation; + bool m_StrictSettingsSync; bool m_SyncSaveData; bool m_SyncCodes; diff --git a/Source/Core/Core/NetPlayServer.cpp b/Source/Core/Core/NetPlayServer.cpp index 0fa0088c9a..5afb62b86f 100644 --- a/Source/Core/Core/NetPlayServer.cpp +++ b/Source/Core/Core/NetPlayServer.cpp @@ -1303,11 +1303,12 @@ bool NetPlayServer::StartGame() spac << m_settings.m_EnableCheats; spac << m_settings.m_SelectedLanguage; spac << m_settings.m_OverrideRegionSettings; - spac << m_settings.m_ProgressiveScan; - spac << m_settings.m_PAL60; spac << m_settings.m_DSPEnableJIT; spac << m_settings.m_DSPHLE; spac << m_settings.m_WriteToMemcard; + spac << m_settings.m_Mem1Size; + spac << m_settings.m_Mem2Size; + spac << static_cast>(m_settings.m_FallbackRegion); spac << m_settings.m_CopyWiiSave; spac << m_settings.m_OCEnable; spac << m_settings.m_OCFactor; @@ -1315,6 +1316,9 @@ bool NetPlayServer::StartGame() for (auto& device : m_settings.m_EXIDevice) spac << device; + for (u32 value : m_settings.m_SYSCONFSettings) + spac << value; + spac << m_settings.m_EFBAccessEnable; spac << m_settings.m_BBoxEnable; spac << m_settings.m_ForceProgressive; diff --git a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp index c0e2d68e33..32bcfc8509 100644 --- a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp +++ b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp @@ -446,11 +446,12 @@ void NetPlayDialog::OnStart() settings.m_EnableCheats = Config::Get(Config::MAIN_ENABLE_CHEATS); settings.m_SelectedLanguage = Config::Get(Config::MAIN_GC_LANGUAGE); settings.m_OverrideRegionSettings = Config::Get(Config::MAIN_OVERRIDE_REGION_SETTINGS); - settings.m_ProgressiveScan = Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN); - settings.m_PAL60 = Config::Get(Config::SYSCONF_PAL60); settings.m_DSPHLE = Config::Get(Config::MAIN_DSP_HLE); settings.m_DSPEnableJIT = Config::Get(Config::MAIN_DSP_JIT); settings.m_WriteToMemcard = m_save_sd_action->isChecked(); + settings.m_Mem1Size = Config::Get(Config::MAIN_MEM1_SIZE); + settings.m_Mem2Size = Config::Get(Config::MAIN_MEM2_SIZE); + settings.m_FallbackRegion = Config::Get(Config::MAIN_FALLBACK_REGION); settings.m_CopyWiiSave = m_load_wii_action->isChecked(); settings.m_OCEnable = Config::Get(Config::MAIN_OVERCLOCK_ENABLE); settings.m_OCFactor = Config::Get(Config::MAIN_OVERCLOCK); @@ -460,6 +461,17 @@ void NetPlayDialog::OnStart() static_cast(Config::Get(Config::MAIN_SLOT_B)); // There's no way the BBA is going to sync, disable it settings.m_EXIDevice[2] = ExpansionInterface::EXIDEVICE_NONE; + + for (size_t i = 0; i < Config::SYSCONF_SETTINGS.size(); ++i) + { + std::visit( + [&](auto* info) { + static_assert(sizeof(info->GetDefaultValue()) <= sizeof(u32)); + settings.m_SYSCONFSettings[i] = static_cast(Config::Get(*info)); + }, + Config::SYSCONF_SETTINGS[i].config_info); + } + settings.m_EFBAccessEnable = Config::Get(Config::GFX_HACK_EFB_ACCESS_ENABLE); settings.m_BBoxEnable = Config::Get(Config::GFX_HACK_BBOX_ENABLE); settings.m_ForceProgressive = Config::Get(Config::GFX_HACK_FORCE_PROGRESSIVE);