diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp index 44680a6c61..26e0467cfe 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp @@ -277,6 +277,33 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress) case IOCTLV_NCD_GETWIRELESSMACADDRESS: INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETWIRELESSMACADDRESS"); + + if (!SConfig::GetInstance().m_WirelessMac.empty()) + { + int x = 0; + int tmpaddress[6]; + for (int i = 0; i < SConfig::GetInstance().m_WirelessMac.length() && x < 6; i++) + { + if (SConfig::GetInstance().m_WirelessMac[i] == ':' || SConfig::GetInstance().m_WirelessMac[i] == '-') + continue; + + std::stringstream ss; + ss << std::hex << SConfig::GetInstance().m_WirelessMac[i]; + if (SConfig::GetInstance().m_WirelessMac[i+1] != ':' && SConfig::GetInstance().m_WirelessMac[i+1] != '-') + { + ss << std::hex << SConfig::GetInstance().m_WirelessMac[i+1]; + i++; + } + ss >> tmpaddress[x]; + x++; + } + u8 address[6]; + for (int i = 0; i < 6;i++) + address[i] = tmpaddress[i]; + Memory::WriteBigEData(address, CommandBuffer.PayloadBuffer.at(1).m_Address, 4); + break; + } + Memory::WriteBigEData(default_address, CommandBuffer.PayloadBuffer.at(1).m_Address, sizeof(default_address)); break;