From 5ff49a78ebbf4d021e99a4f96166cade020a0200 Mon Sep 17 00:00:00 2001 From: TheLastRar Date: Mon, 7 Feb 2022 23:38:50 +0000 Subject: [PATCH] Config: Add DEV9 options to global struct Additionally switch to using std::string in various locations in DEV9 --- pcsx2/CMakeLists.txt | 8 - pcsx2/Config.h | 75 +++++++ pcsx2/DEV9/ATA/ATA.h | 2 +- pcsx2/DEV9/ATA/ATA_Info.cpp | 6 +- pcsx2/DEV9/ATA/ATA_State.cpp | 6 +- pcsx2/DEV9/ATA/Commands/ATA_CmdPIOData.cpp | 2 +- pcsx2/DEV9/ATA/HddCreate.cpp | 38 +++- pcsx2/DEV9/ATA/HddCreate.h | 4 +- pcsx2/DEV9/ConfigUI.cpp | 81 ++++--- pcsx2/DEV9/DEV9.cpp | 70 +++--- pcsx2/DEV9/DEV9.h | 24 +-- pcsx2/DEV9/DEV9Config.cpp | 4 +- pcsx2/DEV9/DEV9Config.h | 3 - pcsx2/DEV9/InternalServers/DHCP_Server.cpp | 20 +- pcsx2/DEV9/Linux/Config.cpp | 240 --------------------- pcsx2/DEV9/Win32/DEV9WinConfig.cpp | 136 ------------ pcsx2/DEV9/Win32/tap-win32.cpp | 23 +- pcsx2/DEV9/net.cpp | 47 ++-- pcsx2/DEV9/net.h | 14 +- pcsx2/DEV9/pcap_io.cpp | 43 ++-- pcsx2/Pcsx2Config.cpp | 75 +++++++ pcsx2/System/SysCoreThread.cpp | 5 + pcsx2/VMManager.cpp | 11 + pcsx2/pcsx2.vcxproj | 1 - pcsx2/pcsx2.vcxproj.filters | 3 - pcsx2/pcsx2core.vcxproj | 1 - pcsx2/pcsx2core.vcxproj.filters | 3 - 27 files changed, 334 insertions(+), 611 deletions(-) delete mode 100644 pcsx2/DEV9/Linux/Config.cpp delete mode 100644 pcsx2/DEV9/Win32/DEV9WinConfig.cpp diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index 13aa00320f..ceb5b2af82 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -784,9 +784,6 @@ if(PCSX2_CORE) list(APPEND pcsx2SPU2Headers SPU2/WavFile.cpp ) - list(APPEND pcsx2DEV9Sources - DEV9/Linux/Config.cpp - ) endif() elseif(WIN32) list(APPEND pcsx2SPU2Sources @@ -807,7 +804,6 @@ elseif(WIN32) ) list(APPEND pcsx2DEV9Sources - DEV9/Win32/DEV9WinConfig.cpp DEV9/Win32/pcap_io_win32.cpp DEV9/Win32/tap-win32.cpp ) @@ -878,10 +874,6 @@ else() SPU2/wx/wxConfig.h ) - list(APPEND pcsx2DEV9Sources - DEV9/Linux/Config.cpp - ) - list(APPEND pcsx2USBSources USB/icon_buzz_24.cpp USB/linux/config-gtk.cpp diff --git a/pcsx2/Config.h b/pcsx2/Config.h index 64b97de5a4..e3451600b0 100644 --- a/pcsx2/Config.h +++ b/pcsx2/Config.h @@ -633,6 +633,80 @@ struct Pcsx2Config } }; + struct DEV9Options + { + enum struct NetApi : int + { + Unset = 0, + PCAP_Bridged = 1, + PCAP_Switched = 2, + TAP = 3, + }; + + static const char* NetApiNames[]; + + bool EthEnable{false}; + NetApi EthApi{NetApi::Unset}; + std::string EthDevice; + bool EthLogDNS{false}; + + bool InterceptDHCP{false}; + u8 PS2IP[4]{}; + u8 Mask[4]{}; + u8 Gateway[4]{}; + u8 DNS1[4]{}; + u8 DNS2[4]{}; + bool AutoMask{true}; + bool AutoGateway{true}; + bool AutoDNS1{true}; + bool AutoDNS2{true}; + + bool HddEnable{false}; + std::string HddFile; + + /* The PS2's HDD max size is 2TB + * which is 2^32 * 512 byte sectors + * Note that we don't yet support + * 48bit LBA, so our limit is lower */ + uint HddSizeSectors{0}; + + DEV9Options(); + + void LoadSave(SettingsWrapper& wrap); + + bool operator==(const DEV9Options& right) const + { + return OpEqu(EthEnable) && + OpEqu(EthApi) && + OpEqu(EthDevice) && + OpEqu(EthLogDNS) && + + OpEqu(InterceptDHCP) && + (*(int*)PS2IP == *(int*)right.PS2IP) && + (*(int*)Gateway == *(int*)right.Gateway) && + (*(int*)DNS1 == *(int*)right.DNS1) && + (*(int*)DNS2 == *(int*)right.DNS2) && + + OpEqu(AutoMask) && + OpEqu(AutoGateway) && + OpEqu(AutoDNS1) && + OpEqu(AutoDNS2) && + + OpEqu(HddEnable) && + OpEqu(HddFile) && + OpEqu(HddSizeSectors); + } + + bool operator!=(const DEV9Options& right) const + { + return !this->operator==(right); + } + + protected: + static void LoadIPHelper(u8* field, const std::string& setting); + static std::string SaveIPHelper(u8* field); + }; + // ------------------------------------------------------------------------ // NOTE: The GUI's GameFixes panel is dependent on the order of bits in this structure. struct GamefixOptions @@ -833,6 +907,7 @@ struct Pcsx2Config DebugOptions Debugger; FramerateOptions Framerate; SPU2Options SPU2; + DEV9Options DEV9; TraceLogFilters Trace; diff --git a/pcsx2/DEV9/ATA/ATA.h b/pcsx2/DEV9/ATA/ATA.h index eb1f39d002..98561fb8be 100644 --- a/pcsx2/DEV9/ATA/ATA.h +++ b/pcsx2/DEV9/ATA/ATA.h @@ -171,7 +171,7 @@ public: private: //Info - void CreateHDDinfo(int sizeMb); + void CreateHDDinfo(u64 sizeSectors); void CreateHDDinfoCsum(); //State diff --git a/pcsx2/DEV9/ATA/ATA_Info.cpp b/pcsx2/DEV9/ATA/ATA_Info.cpp index a62ab3c36a..0d7c025041 100644 --- a/pcsx2/DEV9/ATA/ATA_Info.cpp +++ b/pcsx2/DEV9/ATA/ATA_Info.cpp @@ -44,11 +44,11 @@ void ATA::WritePaddedString(u8* data, int* index, std::string value, u32 len) *index += len; } -void ATA::CreateHDDinfo(int sizeMb) +void ATA::CreateHDDinfo(u64 sizeSectors) { const u16 sectorSize = 512; - DevCon.WriteLn("DEV9: HddSize : %i", config.HddSize); - const u64 nbSectors = ((u64)(sizeMb / sectorSize) * 1024 * 1024); + DevCon.WriteLn("DEV9: HddSize : %i", sizeSectors * sectorSize / (1024 * 1024)); + const u64 nbSectors = sizeSectors; DevCon.WriteLn("DEV9: nbSectors : %i", nbSectors); memset(&identifyData, 0, sizeof(identifyData)); diff --git a/pcsx2/DEV9/ATA/ATA_State.cpp b/pcsx2/DEV9/ATA/ATA_State.cpp index 306388a05d..cbffdbde51 100644 --- a/pcsx2/DEV9/ATA/ATA_State.cpp +++ b/pcsx2/DEV9/ATA/ATA_State.cpp @@ -31,14 +31,14 @@ int ATA::Open(fs::path hddPath) readBufferLen = 256 * 512; readBuffer = new u8[readBufferLen]; - CreateHDDinfo(config.HddSize); + CreateHDDinfo(EmuConfig.DEV9.HddSizeSectors); //Open File if (!fs::exists(hddPath)) { HddCreate hddCreator; hddCreator.filePath = hddPath; - hddCreator.neededSize = config.HddSize; + hddCreator.neededSize = ((u64)EmuConfig.DEV9.HddSizeSectors) * 512; hddCreator.Start(); if (hddCreator.errored) @@ -396,7 +396,7 @@ bool ATA::HDD_CanAccess(int* sectors) s64 posEnd; s64 maxLBA; - maxLBA = std::min((s64)config.HddSize * 1024 * 1024 / 512, hddImageSize) - 1; + maxLBA = std::min(EmuConfig.DEV9.HddSizeSectors, hddImageSize / 512) - 1; if ((regSelect & 0x40) == 0) //CHS mode maxLBA = std::min(maxLBA, curCylinders * curHeads * curSectors); diff --git a/pcsx2/DEV9/ATA/Commands/ATA_CmdPIOData.cpp b/pcsx2/DEV9/ATA/Commands/ATA_CmdPIOData.cpp index 6901ea4af8..ea4c7aba3f 100644 --- a/pcsx2/DEV9/ATA/Commands/ATA_CmdPIOData.cpp +++ b/pcsx2/DEV9/ATA/Commands/ATA_CmdPIOData.cpp @@ -73,7 +73,7 @@ void ATA::HDD_IdentifyDevice() DevCon.WriteLn("DEV9: HddidentifyDevice"); //IDE transfer start - CreateHDDinfo(config.HddSize); + CreateHDDinfo(EmuConfig.DEV9.HddSizeSectors); pioDRQEndTransferFunc = nullptr; DRQCmdPIODataToHost(identifyData, 256 * 2, 0, 256 * 2, true); diff --git a/pcsx2/DEV9/ATA/HddCreate.cpp b/pcsx2/DEV9/ATA/HddCreate.cpp index 18d5709e7b..cbf22045c5 100644 --- a/pcsx2/DEV9/ATA/HddCreate.cpp +++ b/pcsx2/DEV9/ATA/HddCreate.cpp @@ -32,8 +32,13 @@ void HddCreate::Start() return; } +#endif + + int reqMiB = (neededSize + ((1024 * 1024) - 1)) / (1024 * 1024); + +#ifndef PCSX2_CORE //This creates a modeless dialog - progressDialog = new wxProgressDialog(_("Creating HDD file"), _("Creating HDD file"), neededSize, nullptr, wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); + progressDialog = new wxProgressDialog(_("Creating HDD file"), _("Creating HDD file"), reqMiB, nullptr, wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); #endif fileThread = std::thread(&HddCreate::WriteImage, this, filePath, neededSize); @@ -45,9 +50,9 @@ void HddCreate::Start() //Instead, loop here to update UI wxString msg; int currentSize; - while ((currentSize = written.load()) != neededSize && !errored.load()) + while ((currentSize = written.load()) != reqMiB && !errored.load()) { - msg.Printf(_("%i / %i MiB"), written.load(), neededSize); + msg.Printf(_("%i / %i MiB"), written.load(), reqMiB); #ifndef PCSX2_CORE if (!progressDialog->Update(currentSize, msg)) @@ -78,7 +83,7 @@ void HddCreate::Start() completedCV.notify_all(); } -void HddCreate::WriteImage(fs::path hddPath, int reqSizeMiB) +void HddCreate::WriteImage(fs::path hddPath, u64 reqSizeBytes) { constexpr int buffsize = 4 * 1024; u8 buff[buffsize] = {0}; //4kb @@ -98,7 +103,7 @@ void HddCreate::WriteImage(fs::path hddPath, int reqSizeMiB) } //Size file - newImage.seekp(((u64)reqSizeMiB) * 1024 * 1024 - 1, std::ios::beg); + newImage.seekp(reqSizeBytes - 1, std::ios::beg); const char zero = 0; newImage.write(&zero, 1); @@ -114,9 +119,13 @@ void HddCreate::WriteImage(fs::path hddPath, int reqSizeMiB) newImage.seekp(0, std::ios::beg); - for (int iMiB = 0; iMiB < reqSizeMiB; iMiB++) + //Round up + const s32 reqMiB = (reqSizeBytes + ((1024 * 1024) - 1)) / (1024 * 1024); + for (s32 iMiB = 0; iMiB < reqMiB; iMiB++) { - for (int i4kb = 0; i4kb < 256; i4kb++) + //Round down + const s32 req4Kib = std::min(1024, (reqSizeBytes / 1024) - (u64)iMiB * 1024) / 4; + for (s32 i4kb = 0; i4kb < req4Kib; i4kb++) { newImage.write((char*)buff, buffsize); if (newImage.fail()) @@ -128,8 +137,21 @@ void HddCreate::WriteImage(fs::path hddPath, int reqSizeMiB) } } + if (req4Kib != 256) + { + const s32 remainingBytes = reqSizeBytes - (((u64)iMiB) * (1024 * 1024) + req4Kib * 4096); + newImage.write((char*)buff, remainingBytes); + if (newImage.fail()) + { + newImage.close(); + fs::remove(filePath); + SetError(); + return; + } + } + const std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now(); - if (std::chrono::duration_cast(now - lastUpdate).count() >= 100 || (iMiB + 1) == neededSize) + if (std::chrono::duration_cast(now - lastUpdate).count() >= 100 || (iMiB + 1) == reqMiB) { lastUpdate = now; SetFileProgress(iMiB + 1); diff --git a/pcsx2/DEV9/ATA/HddCreate.h b/pcsx2/DEV9/ATA/HddCreate.h index ef27a43d30..449827b7de 100644 --- a/pcsx2/DEV9/ATA/HddCreate.h +++ b/pcsx2/DEV9/ATA/HddCreate.h @@ -29,7 +29,7 @@ class HddCreate { public: fs::path filePath; - int neededSize; + u64 neededSize; std::atomic_bool errored{false}; @@ -55,5 +55,5 @@ public: private: void SetFileProgress(int currentSize); void SetError(); - void WriteImage(fs::path hddPath, int reqSizeMB); + void WriteImage(fs::path hddPath, u64 reqSizeBytes); }; diff --git a/pcsx2/DEV9/ConfigUI.cpp b/pcsx2/DEV9/ConfigUI.cpp index 553499b4b4..d473b6f23c 100644 --- a/pcsx2/DEV9/ConfigUI.cpp +++ b/pcsx2/DEV9/ConfigUI.cpp @@ -28,7 +28,7 @@ #include "common/StringUtil.h" -#include "DEV9Config.h" +#include "Config.h" #include "DEV9.h" #include "pcap_io.h" #include "net.h" @@ -81,7 +81,7 @@ class DEV9Dialog : public wxDialog IPControl_SetValue(m_ip, ip); m_auto->SetValue(is_auto); } - void save(IP_Address& ip, int& is_auto) + void save(IP_Address& ip, bool& is_auto) { ip = IPControl_GetValue(m_ip); is_auto = m_auto->GetValue(); @@ -90,7 +90,7 @@ class DEV9Dialog : public wxDialog wxCheckBox* m_eth_enable; wxChoice* m_eth_adapter_api; wxChoice* m_eth_adapter; - std::vector m_api_list; + std::vector m_api_list; std::vector> m_adapter_list; wxCheckBox* m_intercept_dhcp; wxTextCtrl* m_ps2_address; @@ -143,8 +143,8 @@ public: std::sort(list.begin(), list.end(), [](const AdapterEntry& a, AdapterEntry& b){ return a.name < b.name; }); wxArrayString adapter_api_name_list; adapter_api_name_list.Add(""); - for (const NetApi& type : m_api_list) - adapter_api_name_list.Add(NetApiToWxString(type)); + for (const Pcsx2Config::DEV9Options::NetApi& type : m_api_list) + adapter_api_name_list.Add(Pcsx2Config::DEV9Options::NetApiNames[(int)type]); auto* eth_adapter_api_label = new wxStaticText(this, wxID_ANY, _("Ethernet Device Type:")); auto* eth_adapter_label = new wxStaticText(this, wxID_ANY, _("Ethernet Device:")); @@ -218,9 +218,9 @@ public: Bind(wxEVT_BUTTON, &DEV9Dialog::OnOK, this, wxID_OK); } - void Load(const ConfigDEV9& config) + void Load(const Pcsx2Config::DEV9Options& config) { - m_eth_enable->SetValue(config.ethEnable); + m_eth_enable->SetValue(config.EthEnable); m_eth_adapter_api->SetSelection(0); for (size_t i = 0; i < m_api_list.size(); i++) { @@ -234,7 +234,7 @@ public: const auto& list = m_adapter_list[static_cast(config.EthApi)]; for (size_t i = 0; i < list.size(); i++) { - if (list[i].guid == config.Eth) + if (list[i].guid == config.EthDevice) { m_eth_adapter->SetSelection(i + 1); break; @@ -242,47 +242,48 @@ public: } } m_intercept_dhcp->SetValue(config.InterceptDHCP); - IPControl_SetValue(m_ps2_address, config.PS2IP); - m_subnet_mask .load(config.Mask, config.AutoMask); - m_gateway_address.load(config.Gateway, config.AutoGateway); - m_dns1_address .load(config.DNS1, config.AutoDNS1); - m_dns2_address .load(config.DNS2, config.AutoDNS2); + IPControl_SetValue(m_ps2_address, *(IP_Address*)config.PS2IP); + m_subnet_mask .load(*(IP_Address*)config.Mask, config.AutoMask); + m_gateway_address.load(*(IP_Address*)config.Gateway, config.AutoGateway); + m_dns1_address .load(*(IP_Address*)config.DNS1, config.AutoDNS1); + m_dns2_address .load(*(IP_Address*)config.DNS2, config.AutoDNS2); - m_hdd_enable->SetValue(config.hddEnable); - m_hdd_file->SetInitialDirectory(config.Hdd); - m_hdd_file->SetPath(config.Hdd); - m_hdd_size_spin->SetValue(config.HddSize / 1024); - m_hdd_size_slider->SetValue(config.HddSize / 1024); + m_hdd_enable->SetValue(config.HddEnable); + wxString wxHddFile = StringUtil::UTF8StringToWxString(config.HddFile); + m_hdd_file->SetInitialDirectory(wxHddFile); + m_hdd_file->SetPath(wxHddFile); + m_hdd_size_spin->SetValue((u64)config.HddSizeSectors * 512 / (1024 * 1024 * 1024)); + m_hdd_size_slider->SetValue((u64)config.HddSizeSectors * 512 / (1024 * 1024 * 1024)); UpdateEnable(); } - void Save(ConfigDEV9& config) + void Save(Pcsx2Config::DEV9Options& config) { - config.ethEnable = m_eth_enable->GetValue(); + config.EthEnable = m_eth_enable->GetValue(); int api = m_eth_adapter_api->GetSelection(); int eth = m_eth_adapter->GetSelection(); if (api && eth) { const AdapterEntry& adapter = m_adapter_list[static_cast(m_api_list[api - 1])][eth - 1]; - wxStrncpy(config.Eth, adapter.guid, std::size(config.Eth) - 1); + config.EthDevice = adapter.guid; config.EthApi = adapter.type; } else { - config.Eth[0] = 0; - config.EthApi = NetApi::Unset; + config.EthDevice = ""; + config.EthApi = Pcsx2Config::DEV9Options::NetApi::Unset; } config.InterceptDHCP = m_intercept_dhcp->GetValue(); - config.PS2IP = IPControl_GetValue(m_ps2_address); - m_subnet_mask .save(config.Mask, config.AutoMask); - m_gateway_address.save(config.Gateway, config.AutoGateway); - m_dns1_address .save(config.DNS1, config.AutoDNS1); - m_dns2_address .save(config.DNS2, config.AutoDNS2); + *(IP_Address*)&config.PS2IP = IPControl_GetValue(m_ps2_address); + m_subnet_mask .save(*(IP_Address*)config.Mask, config.AutoMask); + m_gateway_address.save(*(IP_Address*)config.Gateway, config.AutoGateway); + m_dns1_address .save(*(IP_Address*)config.DNS1, config.AutoDNS1); + m_dns2_address .save(*(IP_Address*)config.DNS2, config.AutoDNS2); - config.hddEnable = m_hdd_enable->GetValue(); - wxStrncpy(config.Hdd, m_hdd_file->GetPath(), std::size(config.Hdd) - 1); - config.HddSize = m_hdd_size_spin->GetValue() * 1024; + config.HddEnable = m_hdd_enable->GetValue(); + config.HddFile = StringUtil::wxStringToUTF8String(m_hdd_file->GetPath()); + config.HddSizeSectors = (u64)m_hdd_size_spin->GetValue() * 1024 * 1024 * 1024 / 512; } void UpdateEnable() @@ -317,7 +318,7 @@ public: if (m_eth_adapter->GetCount()) current = m_eth_adapter->GetString(m_eth_adapter->GetSelection()); if (current.empty()) - current = config.Eth; + current = StringUtil::UTF8StringToWxString(g_Conf->EmuOptions.DEV9.EthDevice); for (size_t i = 0; i < list.size(); i++) { wxString wxAdapterName = StringUtil::UTF8StringToWxString(list[i].name); @@ -375,14 +376,12 @@ void DEV9configure() ScopedCoreThreadPause paused_core; DEV9Dialog dialog; - LoadConf(); - dialog.Load(config); + dialog.Load(g_Conf->EmuOptions.DEV9); if (dialog.ShowModal() == wxID_OK) { - ConfigDEV9 oldConfig = config; - dialog.Save(config); + dialog.Save(g_Conf->EmuOptions.DEV9); - fs::path hddPath(config.Hdd); + fs::path hddPath(g_Conf->EmuOptions.DEV9.HddFile); if (hddPath.is_relative()) { @@ -391,17 +390,15 @@ void DEV9configure() hddPath = path / hddPath; } - if (config.hddEnable && !fs::exists(hddPath)) + if (g_Conf->EmuOptions.DEV9.HddEnable && !fs::exists(hddPath)) { HddCreate hddCreator; hddCreator.filePath = hddPath; - hddCreator.neededSize = config.HddSize; + hddCreator.neededSize = ((u64)g_Conf->EmuOptions.DEV9.HddSizeSectors) * 512; hddCreator.Start(); } - SaveConf(); - - ApplyConfigIfRunning(oldConfig); + AppSaveSettings(); } paused_core.AllowResume(); diff --git a/pcsx2/DEV9/DEV9.cpp b/pcsx2/DEV9/DEV9.cpp index 510ce85d1f..563f48d48e 100644 --- a/pcsx2/DEV9/DEV9.cpp +++ b/pcsx2/DEV9/DEV9.cpp @@ -33,6 +33,7 @@ #define EXTERN #include "DEV9.h" #undef EXTERN +#include "Config.h" #include "DEV9Config.h" #include "smap.h" @@ -94,10 +95,10 @@ bool isRunning = false; fs::path GetHDDPath() { //GHC uses UTF8 on all platforms - fs::path hddPath(config.Hdd); + fs::path hddPath(EmuConfig.DEV9.HddFile); if (hddPath.empty()) - config.hddEnable = false; + EmuConfig.DEV9.HddEnable = false; if (hddPath.is_relative()) { @@ -198,25 +199,18 @@ void DEV9shutdown() s32 DEV9open() { DevCon.WriteLn("DEV9: DEV9open"); - LoadConf(); -#ifdef _WIN32 - //Convert to utf8 - char mbHdd[sizeof(config.Hdd)] = {0}; - WideCharToMultiByte(CP_UTF8, 0, config.Hdd, -1, mbHdd, sizeof(mbHdd) - 1, nullptr, nullptr); - DevCon.WriteLn("DEV9: open r+: %s", mbHdd); -#else - DevCon.WriteLn("DEV9: open r+: %s", config.Hdd); -#endif + LoadDnsHosts(); + DevCon.WriteLn("DEV9: open r+: %s", EmuConfig.DEV9.HddFile.c_str()); fs::path hddPath = GetHDDPath(); - if (config.hddEnable) + if (EmuConfig.DEV9.HddEnable) { if (dev9.ata->Open(hddPath) != 0) - config.hddEnable = false; + EmuConfig.DEV9.HddEnable = false; } - if (config.ethEnable) + if (EmuConfig.DEV9.EthEnable) InitNet(); isRunning = true; @@ -316,7 +310,7 @@ void FIFOIntr() u8 DEV9read8(u32 addr) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return 0; u8 hard; @@ -382,7 +376,7 @@ u8 DEV9read8(u32 addr) u16 DEV9read16(u32 addr) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return 0; u16 hard; @@ -458,9 +452,9 @@ u16 DEV9read16(u32 addr) case SPD_R_REV_3: hard = 0; - if (config.hddEnable) + if (EmuConfig.DEV9.HddEnable) hard |= SPD_CAPS_ATA; - if (config.ethEnable) + if (EmuConfig.DEV9.EthEnable) hard |= SPD_CAPS_SMAP; hard |= SPD_CAPS_FLASH; //DevCon.WriteLn("DEV9: SPD_R_REV_3 16bit read %x", hard); @@ -522,7 +516,7 @@ u16 DEV9read16(u32 addr) u32 DEV9read32(u32 addr) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return 0; u32 hard; @@ -548,7 +542,7 @@ u32 DEV9read32(u32 addr) void DEV9write8(u32 addr, u8 value) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return; if (addr >= ATA_DEV9_HDD_BASE && addr < ATA_DEV9_HDD_END) @@ -660,7 +654,7 @@ void DEV9write8(u32 addr, u8 value) void DEV9write16(u32 addr, u16 value) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return; if (addr >= ATA_DEV9_HDD_BASE && addr < ATA_DEV9_HDD_END) @@ -970,7 +964,7 @@ void DEV9write16(u32 addr, u16 value) void DEV9write32(u32 addr, u32 value) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return; if (addr >= ATA_DEV9_HDD_BASE && addr < ATA_DEV9_HDD_END) @@ -1006,7 +1000,7 @@ void DEV9write32(u32 addr, u32 value) void DEV9readDMA8Mem(u32* pMem, int size) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return; size >>= 1; @@ -1032,7 +1026,7 @@ void DEV9readDMA8Mem(u32* pMem, int size) void DEV9writeDMA8Mem(u32* pMem, int size) { - if (!config.ethEnable & !config.hddEnable) + if (!EmuConfig.DEV9.EthEnable && !EmuConfig.DEV9.HddEnable) return; size >>= 1; @@ -1062,44 +1056,36 @@ void DEV9async(u32 cycles) dev9.ata->Async(cycles); } -void ApplyConfigIfRunning(ConfigDEV9 oldConfig) +void DEV9CheckChanges(const Pcsx2Config& old_config) { if (!isRunning) return; //Eth - ReconfigureLiveNet(&oldConfig); + ReconfigureLiveNet(old_config); //Hdd //Hdd Validate Path fs::path hddPath = GetHDDPath(); //Hdd Compare with old config - if (config.hddEnable) + if (EmuConfig.DEV9.HddEnable) { - if (oldConfig.hddEnable) + if (old_config.DEV9.HddEnable) { //ATA::Open/Close dosn't set any regs //So we can close/open to apply settings -#ifdef _WIN32 - if (wcscmp(config.Hdd, oldConfig.Hdd)) -#else - if (strcmp(config.Hdd, oldConfig.Hdd)) -#endif + if (EmuConfig.DEV9.HddFile != old_config.DEV9.HddFile || + EmuConfig.DEV9.HddSizeSectors != old_config.DEV9.HddSizeSectors) { dev9.ata->Close(); if (dev9.ata->Open(hddPath) != 0) - config.hddEnable = false; - } - - if (config.HddSize != oldConfig.HddSize) - { - dev9.ata->Close(); - if (dev9.ata->Open(hddPath) != 0) - config.hddEnable = false; + EmuConfig.DEV9.HddEnable = false; } } + else if (dev9.ata->Open(hddPath) != 0) + EmuConfig.DEV9.HddEnable = false; } - else if (oldConfig.hddEnable) + else if (old_config.DEV9.HddEnable) dev9.ata->Close(); } diff --git a/pcsx2/DEV9/DEV9.h b/pcsx2/DEV9/DEV9.h index 1150ac1193..e806000734 100644 --- a/pcsx2/DEV9/DEV9.h +++ b/pcsx2/DEV9/DEV9.h @@ -65,29 +65,7 @@ struct ConfigHost struct ConfigDEV9 { - char Eth[256]; - NetApi EthApi; - bool InterceptDHCP; - PacketReader::IP::IP_Address PS2IP; - PacketReader::IP::IP_Address Mask; - PacketReader::IP::IP_Address Gateway; - PacketReader::IP::IP_Address DNS1; - PacketReader::IP::IP_Address DNS2; - int AutoMask; - int AutoGateway; - int AutoDNS1; - int AutoDNS2; - int EthLogDNS; std::vector EthHosts; -#ifdef _WIN32 - wchar_t Hdd[256]; -#else - char Hdd[256]; -#endif - int HddSize; - - int hddEnable; - int ethEnable; }; @@ -738,7 +716,7 @@ u32 DEV9read32(u32 addr); void DEV9write8(u32 addr, u8 value); void DEV9write16(u32 addr, u16 value); void DEV9write32(u32 addr, u32 value); -void ApplyConfigIfRunning(ConfigDEV9 oldConfig); +void DEV9CheckChanges(const Pcsx2Config& old_config); #ifdef _WIN32 #pragma warning(error : 4013) diff --git a/pcsx2/DEV9/DEV9Config.cpp b/pcsx2/DEV9/DEV9Config.cpp index 2649a430b4..872c167ce9 100644 --- a/pcsx2/DEV9/DEV9Config.cpp +++ b/pcsx2/DEV9/DEV9Config.cpp @@ -70,7 +70,7 @@ void LoadDnsHosts() { wxFileName iniPath = EmuFolders::Settings.Combine(wxString("DEV9Hosts.ini")); config.EthHosts.clear(); - //If no file exists, create one to provice an example config + //If no file exists, create one to provide an example config if (!iniPath.FileExists()) { //Load Default settings @@ -120,7 +120,7 @@ void LoadDnsHosts() else ini.Entry(L"Enabled", entry.Enabled, false); - if (config.EthLogDNS && entry.Enabled) + if (EmuConfig.DEV9.EthLogDNS && entry.Enabled) Console.WriteLn("DEV9: Host entry %i: url %s mapped to %s", i, entry.Url.c_str(), tmp.ToStdString().c_str()); config.EthHosts.push_back(entry); diff --git a/pcsx2/DEV9/DEV9Config.h b/pcsx2/DEV9/DEV9Config.h index e649886e37..041bceea70 100644 --- a/pcsx2/DEV9/DEV9Config.h +++ b/pcsx2/DEV9/DEV9Config.h @@ -13,8 +13,5 @@ * If not, see . */ -void SaveConf(); -void LoadConf(); - void SaveDnsHosts(); void LoadDnsHosts(); diff --git a/pcsx2/DEV9/InternalServers/DHCP_Server.cpp b/pcsx2/DEV9/InternalServers/DHCP_Server.cpp index 6800e0d04b..7c94ff98d5 100644 --- a/pcsx2/DEV9/InternalServers/DHCP_Server.cpp +++ b/pcsx2/DEV9/InternalServers/DHCP_Server.cpp @@ -52,30 +52,30 @@ namespace InternalServers void DHCP_Server::Init(ifaddrs* adapter) #endif { - ps2IP = config.PS2IP; + ps2IP = *(IP_Address*)&EmuConfig.DEV9.PS2IP; netmask = {0}; gateway = {0}; dns1 = {0}; dns2 = {0}; broadcastIP = {0}; - if (config.AutoMask) + if (EmuConfig.DEV9.AutoMask) AutoNetmask(adapter); else - netmask = config.Mask; + netmask = *(IP_Address*)EmuConfig.DEV9.Mask; - if (config.AutoGateway) + if (EmuConfig.DEV9.AutoGateway) AutoGateway(adapter); else - gateway = config.Gateway; + gateway = *(IP_Address*)EmuConfig.DEV9.Gateway; - if (!config.AutoDNS1) - dns1 = config.DNS1; + if (!EmuConfig.DEV9.AutoDNS1) + dns1 = *(IP_Address*)EmuConfig.DEV9.DNS1; - if (!config.AutoDNS2) - dns2 = config.DNS2; + if (!EmuConfig.DEV9.AutoDNS2) + dns2 = *(IP_Address*)EmuConfig.DEV9.DNS2; - AutoDNS(adapter, config.AutoDNS1, config.AutoDNS2); + AutoDNS(adapter, EmuConfig.DEV9.AutoDNS1, EmuConfig.DEV9.AutoDNS2); AutoBroadcast(ps2IP, netmask); } diff --git a/pcsx2/DEV9/Linux/Config.cpp b/pcsx2/DEV9/Linux/Config.cpp deleted file mode 100644 index 90264a02fa..0000000000 --- a/pcsx2/DEV9/Linux/Config.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2020 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with PCSX2. - * If not, see . - */ - -#include "PrecompiledHeader.h" - -#include -#include - -#include "DEV9/DEV9.h" -#include "DEV9/Config.h" -#include "Config.h" - -#include -#include -#include -#include - -#include -#include - -#if defined(__FreeBSD__) -#include -#endif - -void SaveConf() -{ - xmlDocPtr doc = NULL; /* document pointer */ - xmlNodePtr root_node = NULL; - char buff[256]; - - /* - * Creates a new document, a node and set it as a root node - */ - doc = xmlNewDoc(BAD_CAST "1.0"); - root_node = xmlNewNode(NULL, BAD_CAST "dev9"); - xmlDocSetRootElement(doc, root_node); - - xmlNewChild(root_node, NULL, BAD_CAST "Eth", - BAD_CAST config.Eth); - - sprintf(buff, "%d", (int)config.EthApi); - xmlNewChild(root_node, NULL, BAD_CAST "EthApi", - BAD_CAST buff); - - sprintf(buff, "%d", config.InterceptDHCP); - xmlNewChild(root_node, NULL, BAD_CAST "InterceptDHCP", - BAD_CAST buff); - - inet_ntop(AF_INET, &config.PS2IP, buff, 256); - xmlNewChild(root_node, NULL, BAD_CAST "PS2IP", - BAD_CAST buff); - - inet_ntop(AF_INET, &config.Mask, buff, 256); - xmlNewChild(root_node, NULL, BAD_CAST "Subnet", - BAD_CAST buff); - - sprintf(buff, "%d", config.AutoMask); - xmlNewChild(root_node, NULL, BAD_CAST "AutoSubnet", - BAD_CAST buff); - - inet_ntop(AF_INET, &config.Gateway, buff, 256); - xmlNewChild(root_node, NULL, BAD_CAST "Gateway", - BAD_CAST buff); - - sprintf(buff, "%d", config.AutoGateway); - xmlNewChild(root_node, NULL, BAD_CAST "AutoGateway", - BAD_CAST buff); - - inet_ntop(AF_INET, &config.DNS1, buff, 256); - xmlNewChild(root_node, NULL, BAD_CAST "DNS1", - BAD_CAST buff); - - sprintf(buff, "%d", config.AutoDNS1); - xmlNewChild(root_node, NULL, BAD_CAST "AutoDNS1", - BAD_CAST buff); - - inet_ntop(AF_INET, &config.DNS2, buff, 256); - xmlNewChild(root_node, NULL, BAD_CAST "DNS2", - BAD_CAST buff); - - sprintf(buff, "%d", config.AutoDNS2); - xmlNewChild(root_node, NULL, BAD_CAST "AutoDNS2", - BAD_CAST buff); - - sprintf(buff, "%d", config.EthLogDNS); - xmlNewChild(root_node, NULL, BAD_CAST "EthLogDNS", - BAD_CAST buff); - - xmlNewChild(root_node, NULL, BAD_CAST "Hdd", - BAD_CAST config.Hdd); - - sprintf(buff, "%d", config.HddSize); - xmlNewChild(root_node, NULL, BAD_CAST "HddSize", - BAD_CAST buff); - - sprintf(buff, "%d", config.ethEnable); - xmlNewChild(root_node, NULL, BAD_CAST "ethEnable", - BAD_CAST buff); - - sprintf(buff, "%d", config.hddEnable); - xmlNewChild(root_node, NULL, BAD_CAST "hddEnable", - BAD_CAST buff); - /* - * Dumping document to stdio or file - */ - - - const std::string file(EmuFolders::Settings.Combine(wxString("DEV9.cfg")).GetFullPath()); - - Console.WriteLn("DEV9: CONF: %s", file.c_str()); - - xmlSaveFormatFileEnc(file.c_str(), doc, "UTF-8", 1); - // free(configFile); - - /*free the document */ - xmlFreeDoc(doc); - - /* - *Free the global variables that may - *have been allocated by the parser. - */ - xmlCleanupParser(); - - SaveDnsHosts(); -} - -void LoadConf() -{ - const std::string file(EmuFolders::Settings.Combine(wxString("DEV9.cfg")).GetFullPath()); - if (-1 == access(file.c_str(), F_OK)) - return; - - memset(&config, 0, sizeof(config)); - config.EthApi = NetApi::PCAP_Switched; - - // Read the files - xmlDoc* doc = NULL; - xmlNode* cur_node = NULL; - - doc = xmlReadFile(file.c_str(), NULL, 0); - - if (doc == NULL) - { - Console.Error("Unable to parse configuration file! Suggest deleting it and starting over."); - } - - for (cur_node = xmlDocGetRootElement(doc)->children; cur_node; cur_node = cur_node->next) - { - if (cur_node->type == XML_ELEMENT_NODE) - { - // printf("node type: Element, name: %s\n", cur_node->name); - if (0 == strcmp((const char*)cur_node->name, "Eth")) - { - strcpy(config.Eth, (const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "EthApi")) - { - config.EthApi = (NetApi)atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "InterceptDHCP")) - { - config.InterceptDHCP = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "PS2IP")) - { - inet_pton(AF_INET, (const char*)xmlNodeGetContent(cur_node), &config.PS2IP); - } - if (0 == strcmp((const char*)cur_node->name, "Subnet")) - { - inet_pton(AF_INET, (const char*)xmlNodeGetContent(cur_node), &config.Mask); - } - if (0 == strcmp((const char*)cur_node->name, "AutoSubnet")) - { - config.AutoMask = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "Gateway")) - { - inet_pton(AF_INET, (const char*)xmlNodeGetContent(cur_node), &config.Gateway); - } - if (0 == strcmp((const char*)cur_node->name, "AutoGateway")) - { - config.AutoGateway = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "DNS1")) - { - inet_pton(AF_INET, (const char*)xmlNodeGetContent(cur_node), &config.DNS1); - } - if (0 == strcmp((const char*)cur_node->name, "AutoDNS1")) - { - config.AutoDNS1 = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "DNS2")) - { - inet_pton(AF_INET, (const char*)xmlNodeGetContent(cur_node), &config.DNS2); - } - if (0 == strcmp((const char*)cur_node->name, "AutoDNS2")) - { - config.AutoDNS2 = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "EthLogDNS")) - { - config.EthLogDNS = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "Hdd")) - { - strcpy(config.Hdd, (const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "HddSize")) - { - config.HddSize = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "ethEnable")) - { - config.ethEnable = atoi((const char*)xmlNodeGetContent(cur_node)); - } - if (0 == strcmp((const char*)cur_node->name, "hddEnable")) - { - config.hddEnable = atoi((const char*)xmlNodeGetContent(cur_node)); - } - } - } - - // free(configFile); - xmlFreeDoc(doc); - xmlCleanupParser(); - - LoadDnsHosts(); -} diff --git a/pcsx2/DEV9/Win32/DEV9WinConfig.cpp b/pcsx2/DEV9/Win32/DEV9WinConfig.cpp deleted file mode 100644 index e94abb7ce5..0000000000 --- a/pcsx2/DEV9/Win32/DEV9WinConfig.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* PCSX2 - PS2 Emulator for PCs - * Copyright (C) 2002-2020 PCSX2 Dev Team - * - * PCSX2 is free software: you can redistribute it and/or modify it under the terms - * of the GNU Lesser General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with PCSX2. - * If not, see . - */ - - -#include "PrecompiledHeader.h" -#include - -#include - -#include "DEV9/DEV9.h" -#include "DEV9/DEV9Config.h" -#include "Config.h" - -#include "ws2tcpip.h" - -BOOL WritePrivateProfileInt(LPCWSTR lpAppName, LPCWSTR lpKeyName, int intvar, LPCWSTR lpFileName) -{ - return WritePrivateProfileString(lpAppName, lpKeyName, std::to_wstring(intvar).c_str(), lpFileName); -} -bool FileExists(std::wstring szPath) -{ - DWORD dwAttrib = GetFileAttributes(szPath.c_str()); - return (dwAttrib != INVALID_FILE_ATTRIBUTES && - !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)); -} - -void SaveConf() -{ - const std::wstring file(EmuFolders::Settings.Combine(wxString("DEV9.cfg")).GetFullPath()); - DeleteFile(file.c_str()); - - //Create file with UT16 BOM to allow PrivateProfile to save unicode data - int bom = 0xFEFF; - std::fstream nfile = std::fstream(file, std::ios::out | std::ios::binary); - nfile.write((char*)&bom, 2); - //Write header to avoid empty line - nfile.write((char*)L"[DEV9]", 14); - nfile.close(); - - wchar_t addrBuff[INET_ADDRSTRLEN] = {0}; - wchar_t wEth[sizeof(config.Eth)] = {0}; - mbstowcs(wEth, config.Eth, sizeof(config.Eth) - 1); - WritePrivateProfileString(L"DEV9", L"Eth", wEth, file.c_str()); - - WritePrivateProfileInt(L"DEV9", L"EthApi", (int)config.EthApi, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"InterceptDHCP", config.InterceptDHCP, file.c_str()); - - InetNtop(AF_INET, &config.PS2IP, addrBuff, INET_ADDRSTRLEN); - WritePrivateProfileString(L"DEV9", L"PS2IP", addrBuff, file.c_str()); - - InetNtop(AF_INET, &config.Mask, addrBuff, INET_ADDRSTRLEN); - WritePrivateProfileString(L"DEV9", L"Subnet", addrBuff, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"AutoSubnet", config.AutoMask, file.c_str()); - - InetNtop(AF_INET, &config.Gateway, addrBuff, INET_ADDRSTRLEN); - WritePrivateProfileString(L"DEV9", L"Gateway", addrBuff, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"AutoGateway", config.AutoGateway, file.c_str()); - - InetNtop(AF_INET, &config.DNS1, addrBuff, INET_ADDRSTRLEN); - WritePrivateProfileString(L"DEV9", L"DNS1", addrBuff, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"AutoDNS1", config.AutoDNS1, file.c_str()); - - InetNtop(AF_INET, &config.DNS2, addrBuff, INET_ADDRSTRLEN); - WritePrivateProfileString(L"DEV9", L"DNS2", addrBuff, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"AutoDNS2", config.AutoDNS2, file.c_str()); - - WritePrivateProfileInt(L"DEV9", L"EthLogDNS", config.EthLogDNS, file.c_str()); - - WritePrivateProfileString(L"DEV9", L"Hdd", config.Hdd, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"HddSize", config.HddSize, file.c_str()); - - WritePrivateProfileInt(L"DEV9", L"ethEnable", config.ethEnable, file.c_str()); - WritePrivateProfileInt(L"DEV9", L"hddEnable", config.hddEnable, file.c_str()); - - SaveDnsHosts(); -} - -void LoadConf() -{ - const std::wstring file(EmuFolders::Settings.Combine(wxString("DEV9.cfg")).GetFullPath()); - if (FileExists(file.c_str()) == false) - { - LoadDnsHosts(); - return; - } - - wchar_t addrBuff[INET_ADDRSTRLEN] = {0}; - wchar_t wEth[sizeof(config.Eth)] = {0}; - mbstowcs(wEth, ETH_DEF, sizeof(config.Eth) - 1); - GetPrivateProfileString(L"DEV9", L"Eth", wEth, wEth, sizeof(config.Eth), file.c_str()); - wcstombs(config.Eth, wEth, sizeof(config.Eth) - 1); - - config.EthApi = (NetApi)GetPrivateProfileInt(L"DEV9", L"EthApi", (int)NetApi::TAP, file.c_str()); - config.InterceptDHCP = GetPrivateProfileInt(L"DEV9", L"InterceptDHCP", config.InterceptDHCP, file.c_str()); - - GetPrivateProfileString(L"DEV9", L"PS2IP", L"0.0.0.0", addrBuff, INET_ADDRSTRLEN, file.c_str()); - InetPton(AF_INET, addrBuff, &config.PS2IP); - - GetPrivateProfileString(L"DEV9", L"Subnet", L"0.0.0.0", addrBuff, INET_ADDRSTRLEN, file.c_str()); - InetPton(AF_INET, addrBuff, &config.Mask); - config.AutoMask = GetPrivateProfileInt(L"DEV9", L"AutoSubnet", config.AutoMask, file.c_str()); - - GetPrivateProfileString(L"DEV9", L"Gateway", L"0.0.0.0", addrBuff, INET_ADDRSTRLEN, file.c_str()); - InetPton(AF_INET, addrBuff, &config.Gateway); - config.AutoGateway = GetPrivateProfileInt(L"DEV9", L"AutoGateway", config.AutoGateway, file.c_str()); - - GetPrivateProfileString(L"DEV9", L"DNS1", L"0.0.0.0", addrBuff, INET_ADDRSTRLEN, file.c_str()); - InetPton(AF_INET, addrBuff, &config.DNS1); - config.AutoDNS1 = GetPrivateProfileInt(L"DEV9", L"AutoDNS1", config.AutoDNS1, file.c_str()); - - GetPrivateProfileString(L"DEV9", L"DNS2", L"0.0.0.0", addrBuff, INET_ADDRSTRLEN, file.c_str()); - InetPton(AF_INET, addrBuff, &config.DNS2); - config.AutoDNS2 = GetPrivateProfileInt(L"DEV9", L"AutoDNS2", config.AutoDNS2, file.c_str()); - - config.EthLogDNS = GetPrivateProfileInt(L"DEV9", L"EthLogDNS", config.EthLogDNS, file.c_str()); - - GetPrivateProfileString(L"DEV9", L"Hdd", HDD_DEF, config.Hdd, sizeof(config.Hdd), file.c_str()); - config.HddSize = GetPrivateProfileInt(L"DEV9", L"HddSize", config.HddSize, file.c_str()); - - config.ethEnable = GetPrivateProfileInt(L"DEV9", L"ethEnable", config.ethEnable, file.c_str()); - config.hddEnable = GetPrivateProfileInt(L"DEV9", L"hddEnable", config.hddEnable, file.c_str()); - - LoadDnsHosts(); -} diff --git a/pcsx2/DEV9/Win32/tap-win32.cpp b/pcsx2/DEV9/Win32/tap-win32.cpp index 42e8e71de3..f2e90a99d7 100644 --- a/pcsx2/DEV9/Win32/tap-win32.cpp +++ b/pcsx2/DEV9/Win32/tap-win32.cpp @@ -218,10 +218,8 @@ static int TAPSetStatus(HANDLE handle, int status) &status, sizeof(status), &len, NULL); } //Open the TAP adapter and set the connection to enabled :) -HANDLE TAPOpen(const char* device_guid) +HANDLE TAPOpen(const std::string& device_guid) { - char device_path[256]; - struct { unsigned long major; @@ -230,13 +228,10 @@ HANDLE TAPOpen(const char* device_guid) } version; LONG version_len; - sprintf_s(device_path, "%s%s%s", - USERMODEDEVICEDIR, - device_guid, - TAPSUFFIX); + std::string device_path = USERMODEDEVICEDIR + device_guid + TAPSUFFIX; wil::unique_hfile handle(CreateFileA( - device_path, + device_path.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, @@ -282,7 +277,7 @@ PIP_ADAPTER_ADDRESSES FindAdapterViaIndex(PIP_ADAPTER_ADDRESSES adapterList, int //IP_ADAPTER_ADDRESSES is a structure that contains ptrs to data in other regions //of the buffer, se we need to return both so the caller can free the buffer //after it's finished reading the needed data from IP_ADAPTER_ADDRESSES -bool TAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::unique_ptr* buffer) +bool TAPGetWin32Adapter(const std::string& name, PIP_ADAPTER_ADDRESSES adapter, std::unique_ptr* buffer) { int neededSize = 256; std::unique_ptr AdapterInfo = std::make_unique(neededSize); @@ -322,7 +317,7 @@ bool TAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::un do { - if (0 == strcmp(pAdapterInfo->AdapterName, name)) + if (0 == strcmp(pAdapterInfo->AdapterName, name.c_str())) break; pAdapterInfo = pAdapterInfo->Next; @@ -535,9 +530,9 @@ bool TAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::un TAPAdapter::TAPAdapter() : NetAdapter() { - if (config.ethEnable == 0) + if (!EmuConfig.DEV9.EthEnable) return; - htap = TAPOpen(config.Eth); + htap = TAPOpen(EmuConfig.DEV9.EthDevice); read.Offset = 0; read.OffsetHigh = 0; @@ -563,7 +558,7 @@ TAPAdapter::TAPAdapter() IP_ADAPTER_ADDRESSES adapter; std::unique_ptr buffer; - if (TAPGetWin32Adapter(config.Eth, &adapter, &buffer)) + if (TAPGetWin32Adapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) InitInternalServer(&adapter); else { @@ -658,7 +653,7 @@ void TAPAdapter::reloadSettings() { IP_ADAPTER_ADDRESSES adapter; std::unique_ptr buffer; - if (TAPGetWin32Adapter(config.Eth, &adapter, &buffer)) + if (TAPGetWin32Adapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) ReloadInternalServer(&adapter); else ReloadInternalServer(nullptr); diff --git a/pcsx2/DEV9/net.cpp b/pcsx2/DEV9/net.cpp index 33fca42bbc..71c44b0c54 100644 --- a/pcsx2/DEV9/net.cpp +++ b/pcsx2/DEV9/net.cpp @@ -71,15 +71,15 @@ NetAdapter* GetNetAdapter() { NetAdapter* na = nullptr; - switch (config.EthApi) + switch (EmuConfig.DEV9.EthApi) { #ifdef _WIN32 - case NetApi::TAP: + case Pcsx2Config::DEV9Options::NetApi::TAP: na = static_cast(new TAPAdapter()); break; #endif - case NetApi::PCAP_Bridged: - case NetApi::PCAP_Switched: + case Pcsx2Config::DEV9Options::NetApi::PCAP_Bridged: + case Pcsx2Config::DEV9Options::NetApi::PCAP_Switched: na = static_cast(new PCAPAdapter()); break; default: @@ -101,7 +101,7 @@ void InitNet() if (!na) { Console.Error("DEV9: Failed to GetNetAdapter()"); - config.ethEnable = false; + EmuConfig.DEV9.EthEnable = false; return; } @@ -123,16 +123,16 @@ void InitNet() #endif } -void ReconfigureLiveNet(ConfigDEV9* oldConfig) +void ReconfigureLiveNet(const Pcsx2Config& old_config) { //Eth - if (config.ethEnable) + if (EmuConfig.DEV9.EthEnable) { - if (oldConfig->ethEnable) + if (old_config.DEV9.EthEnable) { //Reload Net if adapter changed - if (strcmp(oldConfig->Eth, config.Eth) != 0 || - oldConfig->EthApi != config.EthApi) + if (EmuConfig.DEV9.EthDevice != old_config.DEV9.EthDevice || + EmuConfig.DEV9.EthApi != old_config.DEV9.EthApi) { TermNet(); InitNet(); @@ -144,7 +144,7 @@ void ReconfigureLiveNet(ConfigDEV9* oldConfig) else InitNet(); } - else if (oldConfig->ethEnable) + else if (old_config.DEV9.EthEnable) TermNet(); } @@ -163,21 +163,6 @@ void TermNet() } } -const wxChar* NetApiToWxString(NetApi api) -{ - switch (api) - { - case NetApi::PCAP_Bridged: - return _("PCAP Bridged"); - case NetApi::PCAP_Switched: - return _("PCAP Switched"); - case NetApi::TAP: - return _("TAP"); - default: - return _("UNK"); - } -} - using namespace PacketReader; using namespace PacketReader::IP; using namespace PacketReader::IP::UDP; @@ -224,7 +209,7 @@ NetAdapter::~NetAdapter() void NetAdapter::InspectSend(NetPacket* pkt) { - if (config.EthLogDNS) + if (EmuConfig.DEV9.EthLogDNS) { EthernetFrame frame(pkt); if (frame.protocol == (u16)EtherType::IPv4) @@ -249,7 +234,7 @@ void NetAdapter::InspectSend(NetPacket* pkt) } void NetAdapter::InspectRecv(NetPacket* pkt) { - if (config.EthLogDNS) + if (EmuConfig.DEV9.EthLogDNS) { EthernetFrame frame(pkt); if (frame.protocol == (u16)EtherType::IPv4) @@ -313,7 +298,7 @@ void NetAdapter::InitInternalServer(ifaddrs* adapter) if (adapter == nullptr) Console.Error("DEV9: InitInternalServer() got nullptr for adapter"); - if (config.InterceptDHCP) + if (EmuConfig.DEV9.InterceptDHCP) dhcpServer.Init(adapter); dnsServer.Init(adapter); @@ -334,7 +319,7 @@ void NetAdapter::ReloadInternalServer(ifaddrs* adapter) if (adapter == nullptr) Console.Error("DEV9: ReloadInternalServer() got nullptr for adapter"); - if (config.InterceptDHCP) + if (EmuConfig.DEV9.InterceptDHCP) dhcpServer.Init(adapter); dnsServer.Init(adapter); @@ -391,7 +376,7 @@ bool NetAdapter::InternalServerSend(NetPacket* pkt) if (udppkt.destinationPort == 67) { //Send DHCP - if (config.InterceptDHCP) + if (EmuConfig.DEV9.InterceptDHCP) return dhcpServer.Send(&udppkt); } } diff --git a/pcsx2/DEV9/net.h b/pcsx2/DEV9/net.h index c442a9aef7..a22bb5262d 100644 --- a/pcsx2/DEV9/net.h +++ b/pcsx2/DEV9/net.h @@ -58,17 +58,9 @@ extern mtfifo rx_fifo; extern mtfifo tx_fifo; */ -enum struct NetApi : int -{ - Unset = 0, - PCAP_Bridged = 1, - PCAP_Switched = 2, - TAP = 3, -}; - struct AdapterEntry { - NetApi type; + Pcsx2Config::DEV9Options::NetApi type; //UTF8 std::string name; std::string guid; @@ -133,7 +125,5 @@ private: void tx_put(NetPacket* ptr); void InitNet(); -void ReconfigureLiveNet(ConfigDEV9* oldConfig); +void ReconfigureLiveNet(const Pcsx2Config& old_config); void TermNet(); - -const wxChar* NetApiToWxString(NetApi api); diff --git a/pcsx2/DEV9/pcap_io.cpp b/pcsx2/DEV9/pcap_io.cpp index d78d0a3b10..6be196ef3c 100644 --- a/pcsx2/DEV9/pcap_io.cpp +++ b/pcsx2/DEV9/pcap_io.cpp @@ -60,7 +60,7 @@ mac_address host_mac; //IP_ADAPTER_ADDRESSES is a structure that contains ptrs to data in other regions //of the buffer, se we need to return both so the caller can free the buffer //after it's finished reading the needed data from IP_ADAPTER_ADDRESSES -bool PCAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::unique_ptr* buffer) +bool PCAPGetWin32Adapter(const std::string& name, PIP_ADAPTER_ADDRESSES adapter, std::unique_ptr* buffer) { const int guidindex = strlen("\\Device\\NPF_"); @@ -99,7 +99,7 @@ bool PCAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::u do { - if (0 == strcmp(pAdapterInfo->AdapterName, &name[guidindex])) + if (0 == strcmp(pAdapterInfo->AdapterName, &name.c_str()[guidindex])) { *adapter = *pAdapterInfo; buffer->swap(AdapterInfo); @@ -112,7 +112,7 @@ bool PCAPGetWin32Adapter(const char* name, PIP_ADAPTER_ADDRESSES adapter, std::u } #elif defined(__POSIX__) //getifaddrs is not POSIX, but is supported on MAC & Linux -bool PCAPGetIfAdapter(char* name, ifaddrs* adapter, ifaddrs** buffer) +bool PCAPGetIfAdapter(const std::string& name, ifaddrs* adapter, ifaddrs** buffer) { //Note, we don't support "any" adapter, but that also fails in pcap_io_init() ifaddrs* adapterInfo; @@ -126,7 +126,7 @@ bool PCAPGetIfAdapter(char* name, ifaddrs* adapter, ifaddrs** buffer) do { - if (pAdapter->ifa_addr != nullptr && pAdapter->ifa_addr->sa_family == AF_INET && strcmp(pAdapter->ifa_name, name) == 0) + if (pAdapter->ifa_addr != nullptr && pAdapter->ifa_addr->sa_family == AF_INET && strcmp(pAdapter->ifa_name, name.c_str()) == 0) break; pAdapter = pAdapter->ifa_next; @@ -145,7 +145,7 @@ bool PCAPGetIfAdapter(char* name, ifaddrs* adapter, ifaddrs** buffer) #endif // Fetches the MAC address and prints it -int GetMACAddress(char* adapter, mac_address* addr) +int GetMACAddress(const std::string& adapter, mac_address* addr) { int retval = 0; #ifdef _WIN32 @@ -161,7 +161,7 @@ int GetMACAddress(char* adapter, mac_address* addr) #elif defined(__linux__) struct ifreq ifr; int fd = socket(AF_INET, SOCK_DGRAM, 0); - strcpy(ifr.ifr_name, adapter); + strcpy(ifr.ifr_name, adapter.c_str()); if (0 == ioctl(fd, SIOCGIFHWADDR, &ifr)) { retval = 1; @@ -169,7 +169,7 @@ int GetMACAddress(char* adapter, mac_address* addr) } else { - Console.Error("Could not get MAC address for adapter: %s", adapter); + Console.Error("Could not get MAC address for adapter: %s", adapter.c_str()); } close(fd); #else @@ -178,18 +178,18 @@ int GetMACAddress(char* adapter, mac_address* addr) return retval; } -int pcap_io_init(char* adapter, bool switched, mac_address virtual_mac) +int pcap_io_init(const std::string& adapter, bool switched, mac_address virtual_mac) { struct bpf_program fp; char filter[1024] = "ether broadcast or ether dst "; int dlt; char* dlt_name; - Console.WriteLn("DEV9: Opening adapter '%s'...", adapter); + Console.WriteLn("DEV9: Opening adapter '%s'...", adapter.c_str()); pcap_io_switched = switched; /* Open the adapter */ - if ((adhandle = pcap_open_live(adapter, // name of the device + if ((adhandle = pcap_open_live(adapter.c_str(), // name of the device 65536, // portion of the packet to capture. // 65536 grants that the whole packet will be captured on all the MACs. switched ? 1 : 0, @@ -198,7 +198,7 @@ int pcap_io_init(char* adapter, bool switched, mac_address virtual_mac) )) == NULL) { Console.Error("DEV9: %s", errbuf); - Console.Error("DEV9: Unable to open the adapter. %s is not supported by pcap", adapter); + Console.Error("DEV9: Unable to open the adapter. %s is not supported by pcap", adapter.c_str()); return -1; } if (switched) @@ -358,9 +358,8 @@ void pcap_io_close() PCAPAdapter::PCAPAdapter() : NetAdapter() { - if (config.ethEnable == 0) + if (!EmuConfig.DEV9.EthEnable) return; - #ifdef _WIN32 if (!load_pcap()) return; @@ -369,7 +368,7 @@ PCAPAdapter::PCAPAdapter() mac_address hostMAC; mac_address newMAC; - GetMACAddress(config.Eth, &hostMAC); + GetMACAddress(EmuConfig.DEV9.EthDevice, &hostMAC); memcpy(&newMAC, ps2MAC, 6); //Lets take the hosts last 2 bytes to make it unique on Xlink @@ -380,16 +379,16 @@ PCAPAdapter::PCAPAdapter() host_mac = hostMAC; ps2_mac = newMAC; //Needed outside of this class - if (pcap_io_init(config.Eth, config.EthApi == NetApi::PCAP_Switched, newMAC) == -1) + if (pcap_io_init(EmuConfig.DEV9.EthDevice, EmuConfig.DEV9.EthApi == Pcsx2Config::DEV9Options::NetApi::PCAP_Switched, newMAC) == -1) { - Console.Error("DEV9: Can't open Device '%s'", config.Eth); + Console.Error("DEV9: Can't open Device '%s'", EmuConfig.DEV9.EthDevice.c_str()); return; } #ifdef _WIN32 IP_ADAPTER_ADDRESSES adapter; std::unique_ptr buffer; - if (PCAPGetWin32Adapter(config.Eth, &adapter, &buffer)) + if (PCAPGetWin32Adapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) InitInternalServer(&adapter); else { @@ -399,7 +398,7 @@ PCAPAdapter::PCAPAdapter() #elif defined(__POSIX__) ifaddrs adapter; ifaddrs* buffer; - if (PCAPGetIfAdapter(config.Eth, &adapter, &buffer)) + if (PCAPGetIfAdapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) { InitInternalServer(&adapter); freeifaddrs(buffer); @@ -457,14 +456,14 @@ void PCAPAdapter::reloadSettings() #ifdef _WIN32 IP_ADAPTER_ADDRESSES adapter; std::unique_ptr buffer; - if (PCAPGetWin32Adapter(config.Eth, &adapter, &buffer)) + if (PCAPGetWin32Adapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) ReloadInternalServer(&adapter); else ReloadInternalServer(nullptr); #elif defined(__POSIX__) ifaddrs adapter; ifaddrs* buffer; - if (PCAPGetIfAdapter(config.Eth, &adapter, &buffer)) + if (PCAPGetIfAdapter(EmuConfig.DEV9.EthDevice, &adapter, &buffer)) { ReloadInternalServer(&adapter); freeifaddrs(buffer); @@ -500,7 +499,7 @@ std::vector PCAPAdapter::GetAdapters() while (d != NULL) { AdapterEntry entry; - entry.type = NetApi::PCAP_Switched; + entry.type = Pcsx2Config::DEV9Options::NetApi::PCAP_Switched; #ifdef _WIN32 //guid entry.guid = std::string(d->name); @@ -531,7 +530,7 @@ std::vector PCAPAdapter::GetAdapters() #endif nic.push_back(entry); - entry.type = NetApi::PCAP_Bridged; + entry.type = Pcsx2Config::DEV9Options::NetApi::PCAP_Bridged; nic.push_back(entry); d = d->next; } diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 8431bf760a..2c65f84889 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -651,6 +651,78 @@ void Pcsx2Config::SPU2Options::LoadSave(SettingsWrapper& wrap) } } +const char* Pcsx2Config::DEV9Options::NetApiNames[] = { + "Unset", + "PCAP Bridged", + "PCAP Switched", + "TAP", + nullptr}; + +Pcsx2Config::DEV9Options::DEV9Options() +{ + HddFile = "DEV9hdd.raw"; +} + +void Pcsx2Config::DEV9Options::LoadSave(SettingsWrapper& wrap) +{ + { + SettingsWrapSection("DEV9/Eth"); + SettingsWrapEntry(EthEnable); + SettingsWrapEnumEx(EthApi, "EthApi", NetApiNames); + SettingsWrapEntry(EthDevice); + SettingsWrapEntry(EthLogDNS); + + SettingsWrapEntry(InterceptDHCP); + + std::string ps2IPStr = "0.0.0.0"; + std::string gatewayStr = "0.0.0.0"; + std::string dns1Str = "0.0.0.0"; + std::string dns2Str = "0.0.0.0"; + if (wrap.IsSaving()) + { + ps2IPStr = SaveIPHelper(PS2IP); + gatewayStr = SaveIPHelper(Gateway); + dns1Str = SaveIPHelper(DNS1); + dns2Str = SaveIPHelper(DNS2); + } + SettingsWrapEntryEx(ps2IPStr, "PS2IP"); + SettingsWrapEntryEx(gatewayStr, "Gateway"); + SettingsWrapEntryEx(dns1Str, "DNS1"); + SettingsWrapEntryEx(dns2Str, "DNS2"); + if (wrap.IsLoading()) + { + LoadIPHelper(PS2IP, ps2IPStr); + LoadIPHelper(Gateway, gatewayStr); + LoadIPHelper(DNS1, dns1Str); + LoadIPHelper(DNS1, dns1Str); + } + + SettingsWrapEntry(AutoMask); + SettingsWrapEntry(AutoGateway); + SettingsWrapEntry(AutoDNS1); + SettingsWrapEntry(AutoDNS2); + } + + { + SettingsWrapSection("DEV9/Hdd"); + SettingsWrapEntry(HddEnable); + SettingsWrapEntry(HddFile); + SettingsWrapEntry(HddSizeSectors); + } +} + +void Pcsx2Config::DEV9Options::LoadIPHelper(u8* field, const std::string& setting) +{ + if (4 == sscanf(setting.c_str(), "%hhu.%hhu.%hhu.%hhu", &field[0], &field[1], &field[2], &field[3])) + return; + Console.Error("Invalid IP address in settings file"); + std::fill(field, field + 4, 0); +} +std::string Pcsx2Config::DEV9Options::SaveIPHelper(u8* field) +{ + return StringUtil::StdStringFromFormat("%u.%u.%u.%u", field[0], field[1], field[2], field[3]); +} + static const char* const tbl_GamefixNames[] = { "FpuMul", @@ -947,6 +1019,7 @@ void Pcsx2Config::LoadSave(SettingsWrapper& wrap) // SPU2 is in a separate ini in wx. SPU2.LoadSave(wrap); #endif + DEV9.LoadSave(wrap); Gamefixes.LoadSave(wrap); Profiler.LoadSave(wrap); @@ -1021,6 +1094,7 @@ bool Pcsx2Config::operator==(const Pcsx2Config& right) const OpEqu(bitset) && OpEqu(Cpu) && OpEqu(GS) && + OpEqu(DEV9) && OpEqu(Speedhacks) && OpEqu(Gamefixes) && OpEqu(Profiler) && @@ -1042,6 +1116,7 @@ void Pcsx2Config::CopyConfig(const Pcsx2Config& cfg) { Cpu = cfg.Cpu; GS = cfg.GS; + DEV9 = cfg.DEV9; Speedhacks = cfg.Speedhacks; Gamefixes = cfg.Gamefixes; Profiler = cfg.Profiler; diff --git a/pcsx2/System/SysCoreThread.cpp b/pcsx2/System/SysCoreThread.cpp index c417dfdfcf..0269620ddd 100644 --- a/pcsx2/System/SysCoreThread.cpp +++ b/pcsx2/System/SysCoreThread.cpp @@ -187,8 +187,13 @@ void SysCoreThread::ApplySettings(const Pcsx2Config& src) const bool gs_settings_changed = !src.GS.OptionsAreEqual(EmuConfig.GS); + Pcsx2Config old_config; + old_config.CopyConfig(EmuConfig); EmuConfig.CopyConfig(src); + // handle DEV9 setting changes + DEV9CheckChanges(old_config); + // handle GS setting changes if (GetMTGS().IsOpen() && gs_settings_changed) { diff --git a/pcsx2/VMManager.cpp b/pcsx2/VMManager.cpp index 627b619dd1..617dd8634b 100644 --- a/pcsx2/VMManager.cpp +++ b/pcsx2/VMManager.cpp @@ -44,6 +44,7 @@ #include "PerformanceMetrics.h" #include "R5900.h" #include "SPU2/spu2.h" +#include "DEV9/DEV9.h" #include "System/SysThreads.h" #include "USB/USB.h" #include "PAD/Host/PAD.h" @@ -71,6 +72,7 @@ namespace VMManager static void CheckForFramerateConfigChanges(const Pcsx2Config& old_config); static void CheckForPatchConfigChanges(const Pcsx2Config& old_config); static void CheckForSPU2ConfigChanges(const Pcsx2Config& old_config); + static void CheckForDEV9ConfigChanges(const Pcsx2Config& old_config); static void CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config); static void UpdateRunningGame(bool force); @@ -1074,6 +1076,14 @@ void VMManager::CheckForSPU2ConfigChanges(const Pcsx2Config& old_config) } } +void VMManager::CheckForDEV9ConfigChanges(const Pcsx2Config& old_config) +{ + if (EmuConfig.DEV9 == old_config.DEV9) + return; + + DEV9CheckChanges(old_config); +} + void VMManager::CheckForMemoryCardConfigChanges(const Pcsx2Config& old_config) { bool changed = false; @@ -1118,6 +1128,7 @@ void VMManager::CheckForConfigChanges(const Pcsx2Config& old_config) CheckForFramerateConfigChanges(old_config); CheckForPatchConfigChanges(old_config); CheckForSPU2ConfigChanges(old_config); + CheckForDEV9ConfigChanges(old_config); CheckForMemoryCardConfigChanges(old_config); if (EmuConfig.EnableCheats != old_config.EnableCheats || EmuConfig.EnableWideScreenPatches != old_config.EnableWideScreenPatches) diff --git a/pcsx2/pcsx2.vcxproj b/pcsx2/pcsx2.vcxproj index 20ead33c0d..9606096ee4 100644 --- a/pcsx2/pcsx2.vcxproj +++ b/pcsx2/pcsx2.vcxproj @@ -304,7 +304,6 @@ - diff --git a/pcsx2/pcsx2.vcxproj.filters b/pcsx2/pcsx2.vcxproj.filters index 3622ff187b..7cc03f15bf 100644 --- a/pcsx2/pcsx2.vcxproj.filters +++ b/pcsx2/pcsx2.vcxproj.filters @@ -1262,9 +1262,6 @@ System\Ps2\DEV9 - - System\Ps2\DEV9 - System\Ps2\USB diff --git a/pcsx2/pcsx2core.vcxproj b/pcsx2/pcsx2core.vcxproj index 94c8a71a08..2e50c834c1 100644 --- a/pcsx2/pcsx2core.vcxproj +++ b/pcsx2/pcsx2core.vcxproj @@ -169,7 +169,6 @@ - diff --git a/pcsx2/pcsx2core.vcxproj.filters b/pcsx2/pcsx2core.vcxproj.filters index 502b30faec..de2b928ec0 100644 --- a/pcsx2/pcsx2core.vcxproj.filters +++ b/pcsx2/pcsx2core.vcxproj.filters @@ -923,9 +923,6 @@ System\Ps2\DEV9 - - System\Ps2\DEV9 - System\Ps2\GS