Add UPnP support.

Feedback is in logs as suggested by skid_au. The checkbox is still there, but
mostly for people who would like to opt out (unfortunately, I can not be sure
how this feature may behave for some routers - there's a hell of a lot of bad
UPnP implementations.)

The Visual Studio stuff is a little messy, so I apologize if anything is a bit
off. I tested most configurations and it worked.

I also tested CMake on Debian Wheezy, Ubuntu Saucy, and Mac OS X Mountain Lion.
All seemed to be OK.
This commit is contained in:
John Chadwick
2013-07-08 20:13:02 -04:00
parent 379a15ba3b
commit 16cd26d177
53 changed files with 9321 additions and 1336 deletions

File diff suppressed because it is too large Load Diff

View File

@ -192,6 +192,10 @@ public:
u64 CalculateMinimumBufferTime();
void AdjustPadBufferSize(unsigned int size);
#ifdef USE_UPNP
void TryPortmapping(u16 port);
#endif
private:
class Client : public Player
{
@ -215,6 +219,22 @@ private:
Common::Timer m_ping_timer;
u32 m_ping_key;
bool m_update_pings;
#ifdef USE_UPNP
static void mapPortThread(const u16 port);
static void unmapPortThread();
static bool initUPnP();
static bool UPnPMapPort(const std::string& addr, const u16 port);
static bool UPnPUnmapPort(const u16 port);
static struct UPNPUrls m_upnp_urls;
static struct IGDdatas m_upnp_data;
static u16 m_upnp_mapped;
static bool m_upnp_inited;
static bool m_upnp_error;
static std::thread m_upnp_thread;
#endif
};
class NetPlayClient : public NetPlay

View File

@ -11,7 +11,14 @@ NetPlayServer::~NetPlayServer()
{
m_do_loop = false;
m_thread.join();
}
}
#ifdef USE_UPNP
if (m_upnp_thread.joinable())
m_upnp_thread.join();
m_upnp_thread = std::thread(&NetPlayServer::unmapPortThread);
m_upnp_thread.join();
#endif
}
// called from ---GUI--- thread
@ -632,3 +639,161 @@ void NetPlayServer::SendToClients(sf::Packet& packet, const PlayerId skip_pid)
if (i->second.pid && (i->second.pid != skip_pid))
i->second.socket.Send(packet);
}
#ifdef USE_UPNP
#include <miniwget.h>
#include <miniupnpc.h>
#include <upnpcommands.h>
struct UPNPUrls NetPlayServer::m_upnp_urls;
struct IGDdatas NetPlayServer::m_upnp_data;
u16 NetPlayServer::m_upnp_mapped = 0;
bool NetPlayServer::m_upnp_inited = false;
bool NetPlayServer::m_upnp_error = false;
std::thread NetPlayServer::m_upnp_thread;
// called from ---GUI--- thread
void NetPlayServer::TryPortmapping(u16 port)
{
if (m_upnp_thread.joinable())
m_upnp_thread.join();
m_upnp_thread = std::thread(&NetPlayServer::mapPortThread, port);
}
// UPnP thread: try to map a port
void NetPlayServer::mapPortThread(const u16 port)
{
std::string ourIP = sf::IPAddress::GetLocalAddress().ToString();
if (!m_upnp_inited)
if (!initUPnP())
goto fail;
if (!UPnPMapPort(ourIP, port))
goto fail;
NOTICE_LOG(NETPLAY, "Successfully mapped port %d to %s.", port, ourIP.c_str());
return;
fail:
WARN_LOG(NETPLAY, "Failed to map port %d to %s.", port, ourIP.c_str());
return;
}
// UPnP thread: try to unmap a port
void NetPlayServer::unmapPortThread()
{
if (m_upnp_mapped > 0)
UPnPUnmapPort(m_upnp_mapped);
}
// called from ---UPnP--- thread
// discovers the IGD
bool NetPlayServer::initUPnP()
{
UPNPDev *devlist, *dev;
std::vector<UPNPDev *> igds;
int descXMLsize = 0, upnperror = 0;
char *descXML;
// Don't init if already inited
if (m_upnp_inited)
return true;
// Don't init if it failed before
if (m_upnp_error)
return false;
memset(&m_upnp_urls, 0, sizeof(UPNPUrls));
memset(&m_upnp_data, 0, sizeof(IGDdatas));
// Find all UPnP devices
devlist = upnpDiscover(2000, NULL, NULL, 0, 0, &upnperror);
if (!devlist)
{
WARN_LOG(NETPLAY, "An error occured trying to discover UPnP devices.");
m_upnp_error = true;
m_upnp_inited = false;
return false;
}
// Look for the IGD
dev = devlist;
while (dev)
{
if (strstr(dev->st, "InternetGatewayDevice"))
igds.push_back(dev);
dev = dev->pNext;
}
std::vector<UPNPDev *>::iterator i;
for (i = igds.begin(); i != igds.end(); i++)
{
dev = *i;
descXML = (char *) miniwget(dev->descURL, &descXMLsize, 0);
if (descXML)
{
parserootdesc(descXML, descXMLsize, &m_upnp_data);
free(descXML);
descXML = 0;
GetUPNPUrls(&m_upnp_urls, &m_upnp_data, dev->descURL, 0);
NOTICE_LOG(NETPLAY, "Got info from IGD at %s.", dev->descURL);
break;
}
else
{
WARN_LOG(NETPLAY, "Error getting info from IGD at %s.", dev->descURL);
}
}
freeUPNPDevlist(devlist);
return true;
}
// called from ---UPnP--- thread
// Attempt to portforward!
bool NetPlayServer::UPnPMapPort(const std::string& addr, const u16 port)
{
char port_str[6] = { 0 };
int result;
if (m_upnp_mapped > 0)
UPnPUnmapPort(m_upnp_mapped);
sprintf(port_str, "%d", port);
result = UPNP_AddPortMapping(m_upnp_urls.controlURL, m_upnp_data.first.servicetype,
port_str, port_str, addr.c_str(),
(std::string("dolphin-emu TCP on ") + addr).c_str(),
"TCP", NULL, NULL);
if(result != 0)
return false;
m_upnp_mapped = port;
return true;
}
// called from ---UPnP--- thread
// Attempt to stop portforwarding.
// --
// NOTE: It is important that this happens! A few very crappy routers
// apparently do not delete UPnP mappings on their own, so if you leave them
// hanging, the NVRAM will fill with portmappings, and eventually all UPnP
// requests will fail silently, with the only recourse being a factory reset.
// --
bool NetPlayServer::UPnPUnmapPort(const u16 port)
{
char port_str[6] = { 0 };
sprintf(port_str, "%d", port);
UPNP_DeletePortMapping(m_upnp_urls.controlURL, m_upnp_data.first.servicetype,
port_str, "TCP", NULL);
return true;
}
#endif

View File

@ -164,6 +164,10 @@ else()
set(DOLPHIN_EXE ${DOLPHIN_EXE_BASE}-nogui)
endif()
if(USE_UPNP)
set(LIBS ${LIBS} miniupnpc)
endif()
if(ANDROID)
add_library(${DOLPHIN_EXE} SHARED ${SRCS})
target_link_libraries(${DOLPHIN_EXE}

View File

@ -1,396 +1,399 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugFast|Win32">
<Configuration>DebugFast</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugFast|x64">
<Configuration>DebugFast</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{1B099EF8-6F87-47A2-A3E7-898A24584F49}</ProjectGuid>
<RootNamespace>Dolphin</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\CodeGen_Debug.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
<Import Project="..\..\VSProps\CodeGen_Debug.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_Release.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_DebugFast.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_Release.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_DebugFast.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugFast|Win32">
<Configuration>DebugFast</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugFast|x64">
<Configuration>DebugFast</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{1B099EF8-6F87-47A2-A3E7-898A24584F49}</ProjectGuid>
<RootNamespace>Dolphin</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\CodeGen_Debug.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
<Import Project="..\..\VSProps\CodeGen_Debug.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_Release.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_DebugFast.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.Win32.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_Release.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
<Import Project="..\..\VSProps\CodeGen_DebugFast.props" />
<Import Project="..\..\VSProps\PrecompiledHeader.props" />
<Import Project="..\..\VSProps\Dolphin.x64.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetName>$(ProjectName)D</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<TargetName>$(ProjectName)DF</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win32\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win64\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>
</OpenMPSupport>
</ClCompile>
<Link />
<PostBuildEvent>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>
</OpenMPSupport>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win32\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win32\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>
</OpenMPSupport>
</ClCompile>
<Link />
<PostBuildEvent>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>
</OpenMPSupport>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win64\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
<ResourceCompile>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
<ResourceCompile>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\Externals\GLew\include;..\Common\Src;..\VideoCommon\Src;..\AudioCommon\Src;..\Core\Src;..\Core\Src\PowerPC\JitCommon;..\DebuggerWX\Src;..\..\..\Externals\Bochs_disasm;..\InputCommon\Src;..\DiscIO\Src;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets3;..\..\..\Externals\wxWidgets3\include;..\..\..\Externals\CLRun\include;..\..\..\Externals\miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<PostBuildEvent>
<Command>xcopy "$(SolutionDir)..\Data" "$(TargetDir)" /e /s /y /d
echo Copying External .dlls
xcopy "$(SolutionDir)..\Externals\OpenAL\Win64\*.dll" "$(TargetDir)" /e /s /y /q /d
xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /s /y /q /d
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Src\AboutDolphin.cpp" />
<ClCompile Include="Src\ARCodeAddEdit.cpp" />
<ClCompile Include="Src\Debugger\BreakpointDlg.cpp" />
<ClCompile Include="Src\Debugger\BreakpointView.cpp" />
<ClCompile Include="Src\Debugger\BreakpointWindow.cpp" />
<ClCompile Include="Src\CheatsWindow.cpp" />
<ClCompile Include="Src\Debugger\CodeView.cpp" />
<ClCompile Include="Src\Debugger\CodeWindow.cpp" />
<ClCompile Include="Src\Debugger\CodeWindowFunctions.cpp" />
<ClCompile Include="Src\ConfigMain.cpp" />
<ClCompile Include="Src\Debugger\DebuggerPanel.cpp" />
<ClCompile Include="Src\Debugger\DebuggerUIUtil.cpp" />
<ClCompile Include="Src\Debugger\DSPDebugWindow.cpp" />
<ClCompile Include="Src\Debugger\DSPRegisterView.cpp" />
<ClCompile Include="Src\FifoPlayerDlg.cpp" />
<ClCompile Include="Src\Frame.cpp" />
<ClCompile Include="Src\FrameAui.cpp" />
<ClCompile Include="Src\FrameTools.cpp" />
<ClCompile Include="Src\GameListCtrl.cpp" />
<ClCompile Include="Src\GCMicDlg.cpp" />
<ClCompile Include="Src\GeckoCodeDiag.cpp" />
<ClCompile Include="Src\HotkeyDlg.cpp" />
<ClCompile Include="Src\InputConfigDiag.cpp" />
<ClCompile Include="Src\InputConfigDiagBitmaps.cpp" />
<ClCompile Include="Src\ISOFile.cpp" />
<ClCompile Include="Src\ISOProperties.cpp" />
<ClCompile Include="Src\Debugger\JitWindow.cpp" />
<ClCompile Include="Src\LogConfigWindow.cpp" />
<ClCompile Include="Src\LogWindow.cpp" />
<ClCompile Include="Src\Main.cpp" />
<ClCompile Include="Src\MainNoGUI.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="Src\MemcardManager.cpp" />
<ClCompile Include="Src\MemoryCards\WiiSaveCrypted.cpp" />
<ClCompile Include="Src\Debugger\MemoryCheckDlg.cpp" />
<ClCompile Include="Src\Debugger\MemoryView.cpp" />
<ClCompile Include="Src\Debugger\MemoryWindow.cpp" />
<ClCompile Include="Src\NetWindow.cpp" />
<ClCompile Include="Src\PatchAddEdit.cpp" />
<ClCompile Include="Src\PHackSettings.cpp" />
<ClCompile Include="Src\Debugger\RegisterView.cpp" />
<ClCompile Include="Src\Debugger\RegisterWindow.cpp" />
<ClCompile Include="Src\GLInterface\WGL.cpp" />
<ClCompile Include="Src\stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="Src\TASInputDlg.cpp" />
<ClCompile Include="Src\UDPConfigDiag.cpp" />
<ClCompile Include="Src\VideoConfigDiag.cpp" />
<ClCompile Include="Src\WiimoteConfigDiag.cpp" />
<ClCompile Include="Src\WXInputBase.cpp" />
<ClCompile Include="Src\WxUtils.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="Src\AboutDolphin.h" />
<ClInclude Include="Src\ARCodeAddEdit.h" />
<ClInclude Include="Src\Debugger\BreakpointDlg.h" />
<ClInclude Include="Src\Debugger\BreakpointView.h" />
<ClInclude Include="Src\Debugger\BreakpointWindow.h" />
<ClInclude Include="Src\CheatsWindow.h" />
<ClInclude Include="Src\Debugger\CodeView.h" />
<ClInclude Include="Src\Debugger\CodeWindow.h" />
<ClInclude Include="Src\ConfigMain.h" />
<ClInclude Include="Src\Debugger\DebuggerPanel.h" />
<ClInclude Include="Src\Debugger\DebuggerUIUtil.h" />
<ClInclude Include="Src\Debugger\DSPDebugWindow.h" />
<ClInclude Include="Src\Debugger\DSPRegisterView.h" />
<ClInclude Include="Src\FifoPlayerDlg.h" />
<ClInclude Include="Src\Frame.h" />
<ClInclude Include="Src\GameListCtrl.h" />
<ClInclude Include="Src\GCMicDlg.h" />
<ClInclude Include="Src\GeckoCodeDiag.h" />
<ClInclude Include="Src\Globals.h" />
<ClInclude Include="Src\HotkeyDlg.h" />
<ClInclude Include="Src\InputConfigDiag.h" />
<ClInclude Include="Src\ISOFile.h" />
<ClInclude Include="Src\ISOProperties.h" />
<ClInclude Include="Src\Debugger\JitWindow.h" />
<ClInclude Include="Src\LogConfigWindow.h" />
<ClInclude Include="Src\LogWindow.h" />
<ClInclude Include="Src\Main.h" />
<ClInclude Include="Src\MemcardManager.h" />
<ClInclude Include="Src\MemoryCards\WiiSaveCrypted.h" />
<ClInclude Include="Src\Debugger\MemoryCheckDlg.h" />
<ClInclude Include="Src\Debugger\MemoryView.h" />
<ClInclude Include="Src\Debugger\MemoryWindow.h" />
<ClInclude Include="Src\NetWindow.h" />
<ClInclude Include="Src\PatchAddEdit.h" />
<ClInclude Include="Src\PHackSettings.h" />
<ClInclude Include="Src\Debugger\RegisterView.h" />
<ClInclude Include="Src\Debugger\RegisterWindow.h" />
<ClInclude Include="Src\stdafx.h" />
<ClInclude Include="Src\TASInputDlg.h" />
<ClInclude Include="Src\UDPConfigDiag.h" />
<ClInclude Include="Src\VideoConfigDiag.h" />
<ClInclude Include="Src\WiimoteConfigDiag.h" />
<ClInclude Include="Src\WXInputBase.h" />
<ClInclude Include="Src\WxUtils.h" />
<ClInclude Include="Src\GLInterface.h" />
<ClInclude Include="Src\GLInterface\InterfaceBase.h" />
<ClInclude Include="Src\GLInterface\WGL.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Installer\Dolphin.ico" />
<None Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Externals\Bochs_disasm\Bochs_disasm.vcxproj">
<Project>{cd3d4c3c-1027-4d33-b047-aec7b56d0bf6}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\libpng\png\png.vcxproj">
<Project>{01573c36-ac6e-49f6-94ba-572517eb9740}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\LZO\LZO.vcxproj">
<Project>{d8890b98-26f7-4cff-bbfb-b95f371b5f20}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\SFML\build\vc2010\SFML_Network.vcxproj">
<Project>{93d73454-2512-424e-9cda-4bb357fe13dd}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\wxWidgets3\build\msw\wx_base.vcxproj">
<Project>{1c8436c9-dbaf-42be-83bc-cf3ec9175abe}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\zlib\zlib.vcxproj">
<Project>{3e1339f5-9311-4122-9442-369702e8fcad}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoDX11\Plugin_VideoDX11.vcxproj">
<Project>{9a4c733c-bade-4ac6-b58a-6e274395e90e}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoDX9\Plugin_VideoDX9.vcxproj">
<Project>{dc7d7af4-ce47-49e8-8b63-265cb6233a49}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoOGL\Plugin_VideoOGL.vcxproj">
<Project>{1909cd2d-1707-456f-86ca-0df42a727c99}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoSoftware\Plugin_VideoSoftware.vcxproj">
<Project>{9e9da440-e9ad-413c-b648-91030e792211}</Project>
</ProjectReference>
<ProjectReference Include="..\AudioCommon\AudioCommon.vcxproj">
<Project>{37d007bd-d66c-4eaf-b56c-bd1aac340a05}</Project>
</ProjectReference>
<ProjectReference Include="..\Common\Common.vcxproj">
<Project>{c87a4178-44f6-49b2-b7aa-c79af1b8c534}</Project>
</ProjectReference>
<ProjectReference Include="..\Core\Core.vcxproj">
<Project>{8c60e805-0da5-4e25-8f84-038db504bb0d}</Project>
</ProjectReference>
<ProjectReference Include="..\DiscIO\DiscIO.vcxproj">
<Project>{b6398059-ebb6-4c34-b547-95f365b71ff4}</Project>
</ProjectReference>
<ProjectReference Include="..\InputCommon\InputCommon.vcxproj">
<Project>{b39ac394-5db5-4da9-9d98-09d46ca3701f}</Project>
</ProjectReference>
<ProjectReference Include="..\VideoCommon\VideoCommon.vcxproj">
<Project>{3e5c4e02-1ba9-4776-bdbe-e3f91ffa34cf}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="DolphinWX.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Command>
<Message>Copying Data\* to $(TargetDir)</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Src\AboutDolphin.cpp" />
<ClCompile Include="Src\ARCodeAddEdit.cpp" />
<ClCompile Include="Src\Debugger\BreakpointDlg.cpp" />
<ClCompile Include="Src\Debugger\BreakpointView.cpp" />
<ClCompile Include="Src\Debugger\BreakpointWindow.cpp" />
<ClCompile Include="Src\CheatsWindow.cpp" />
<ClCompile Include="Src\Debugger\CodeView.cpp" />
<ClCompile Include="Src\Debugger\CodeWindow.cpp" />
<ClCompile Include="Src\Debugger\CodeWindowFunctions.cpp" />
<ClCompile Include="Src\ConfigMain.cpp" />
<ClCompile Include="Src\Debugger\DebuggerPanel.cpp" />
<ClCompile Include="Src\Debugger\DebuggerUIUtil.cpp" />
<ClCompile Include="Src\Debugger\DSPDebugWindow.cpp" />
<ClCompile Include="Src\Debugger\DSPRegisterView.cpp" />
<ClCompile Include="Src\FifoPlayerDlg.cpp" />
<ClCompile Include="Src\Frame.cpp" />
<ClCompile Include="Src\FrameAui.cpp" />
<ClCompile Include="Src\FrameTools.cpp" />
<ClCompile Include="Src\GameListCtrl.cpp" />
<ClCompile Include="Src\GCMicDlg.cpp" />
<ClCompile Include="Src\GeckoCodeDiag.cpp" />
<ClCompile Include="Src\HotkeyDlg.cpp" />
<ClCompile Include="Src\InputConfigDiag.cpp" />
<ClCompile Include="Src\InputConfigDiagBitmaps.cpp" />
<ClCompile Include="Src\ISOFile.cpp" />
<ClCompile Include="Src\ISOProperties.cpp" />
<ClCompile Include="Src\Debugger\JitWindow.cpp" />
<ClCompile Include="Src\LogConfigWindow.cpp" />
<ClCompile Include="Src\LogWindow.cpp" />
<ClCompile Include="Src\Main.cpp" />
<ClCompile Include="Src\MainNoGUI.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="Src\MemcardManager.cpp" />
<ClCompile Include="Src\MemoryCards\WiiSaveCrypted.cpp" />
<ClCompile Include="Src\Debugger\MemoryCheckDlg.cpp" />
<ClCompile Include="Src\Debugger\MemoryView.cpp" />
<ClCompile Include="Src\Debugger\MemoryWindow.cpp" />
<ClCompile Include="Src\NetWindow.cpp" />
<ClCompile Include="Src\PatchAddEdit.cpp" />
<ClCompile Include="Src\PHackSettings.cpp" />
<ClCompile Include="Src\Debugger\RegisterView.cpp" />
<ClCompile Include="Src\Debugger\RegisterWindow.cpp" />
<ClCompile Include="Src\GLInterface\WGL.cpp" />
<ClCompile Include="Src\stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="Src\TASInputDlg.cpp" />
<ClCompile Include="Src\UDPConfigDiag.cpp" />
<ClCompile Include="Src\VideoConfigDiag.cpp" />
<ClCompile Include="Src\WiimoteConfigDiag.cpp" />
<ClCompile Include="Src\WXInputBase.cpp" />
<ClCompile Include="Src\WxUtils.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="Src\AboutDolphin.h" />
<ClInclude Include="Src\ARCodeAddEdit.h" />
<ClInclude Include="Src\Debugger\BreakpointDlg.h" />
<ClInclude Include="Src\Debugger\BreakpointView.h" />
<ClInclude Include="Src\Debugger\BreakpointWindow.h" />
<ClInclude Include="Src\CheatsWindow.h" />
<ClInclude Include="Src\Debugger\CodeView.h" />
<ClInclude Include="Src\Debugger\CodeWindow.h" />
<ClInclude Include="Src\ConfigMain.h" />
<ClInclude Include="Src\Debugger\DebuggerPanel.h" />
<ClInclude Include="Src\Debugger\DebuggerUIUtil.h" />
<ClInclude Include="Src\Debugger\DSPDebugWindow.h" />
<ClInclude Include="Src\Debugger\DSPRegisterView.h" />
<ClInclude Include="Src\FifoPlayerDlg.h" />
<ClInclude Include="Src\Frame.h" />
<ClInclude Include="Src\GameListCtrl.h" />
<ClInclude Include="Src\GCMicDlg.h" />
<ClInclude Include="Src\GeckoCodeDiag.h" />
<ClInclude Include="Src\Globals.h" />
<ClInclude Include="Src\HotkeyDlg.h" />
<ClInclude Include="Src\InputConfigDiag.h" />
<ClInclude Include="Src\ISOFile.h" />
<ClInclude Include="Src\ISOProperties.h" />
<ClInclude Include="Src\Debugger\JitWindow.h" />
<ClInclude Include="Src\LogConfigWindow.h" />
<ClInclude Include="Src\LogWindow.h" />
<ClInclude Include="Src\Main.h" />
<ClInclude Include="Src\MemcardManager.h" />
<ClInclude Include="Src\MemoryCards\WiiSaveCrypted.h" />
<ClInclude Include="Src\Debugger\MemoryCheckDlg.h" />
<ClInclude Include="Src\Debugger\MemoryView.h" />
<ClInclude Include="Src\Debugger\MemoryWindow.h" />
<ClInclude Include="Src\NetWindow.h" />
<ClInclude Include="Src\PatchAddEdit.h" />
<ClInclude Include="Src\PHackSettings.h" />
<ClInclude Include="Src\Debugger\RegisterView.h" />
<ClInclude Include="Src\Debugger\RegisterWindow.h" />
<ClInclude Include="Src\stdafx.h" />
<ClInclude Include="Src\TASInputDlg.h" />
<ClInclude Include="Src\UDPConfigDiag.h" />
<ClInclude Include="Src\VideoConfigDiag.h" />
<ClInclude Include="Src\WiimoteConfigDiag.h" />
<ClInclude Include="Src\WXInputBase.h" />
<ClInclude Include="Src\WxUtils.h" />
<ClInclude Include="Src\GLInterface.h" />
<ClInclude Include="Src\GLInterface\InterfaceBase.h" />
<ClInclude Include="Src\GLInterface\WGL.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Installer\Dolphin.ico" />
<None Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Externals\Bochs_disasm\Bochs_disasm.vcxproj">
<Project>{cd3d4c3c-1027-4d33-b047-aec7b56d0bf6}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\libpng\png\png.vcxproj">
<Project>{01573c36-ac6e-49f6-94ba-572517eb9740}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\LZO\LZO.vcxproj">
<Project>{d8890b98-26f7-4cff-bbfb-b95f371b5f20}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\miniupnpc\miniupnpc.vcxproj">
<Project>{a680190d-0764-485b-9cf3-a82c5edd5715}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\SFML\build\vc2010\SFML_Network.vcxproj">
<Project>{93d73454-2512-424e-9cda-4bb357fe13dd}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\wxWidgets3\build\msw\wx_base.vcxproj">
<Project>{1c8436c9-dbaf-42be-83bc-cf3ec9175abe}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\zlib\zlib.vcxproj">
<Project>{3e1339f5-9311-4122-9442-369702e8fcad}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoDX11\Plugin_VideoDX11.vcxproj">
<Project>{9a4c733c-bade-4ac6-b58a-6e274395e90e}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoDX9\Plugin_VideoDX9.vcxproj">
<Project>{dc7d7af4-ce47-49e8-8b63-265cb6233a49}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoOGL\Plugin_VideoOGL.vcxproj">
<Project>{1909cd2d-1707-456f-86ca-0df42a727c99}</Project>
</ProjectReference>
<ProjectReference Include="..\..\Plugins\Plugin_VideoSoftware\Plugin_VideoSoftware.vcxproj">
<Project>{9e9da440-e9ad-413c-b648-91030e792211}</Project>
</ProjectReference>
<ProjectReference Include="..\AudioCommon\AudioCommon.vcxproj">
<Project>{37d007bd-d66c-4eaf-b56c-bd1aac340a05}</Project>
</ProjectReference>
<ProjectReference Include="..\Common\Common.vcxproj">
<Project>{c87a4178-44f6-49b2-b7aa-c79af1b8c534}</Project>
</ProjectReference>
<ProjectReference Include="..\Core\Core.vcxproj">
<Project>{8c60e805-0da5-4e25-8f84-038db504bb0d}</Project>
</ProjectReference>
<ProjectReference Include="..\DiscIO\DiscIO.vcxproj">
<Project>{b6398059-ebb6-4c34-b547-95f365b71ff4}</Project>
</ProjectReference>
<ProjectReference Include="..\InputCommon\InputCommon.vcxproj">
<Project>{b39ac394-5db5-4da9-9d98-09d46ca3701f}</Project>
</ProjectReference>
<ProjectReference Include="..\VideoCommon\VideoCommon.vcxproj">
<Project>{3e5c4e02-1ba9-4776-bdbe-e3f91ffa34cf}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="DolphinWX.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,305 +1,309 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="Src\Main.cpp" />
<ClCompile Include="Src\MainNoGUI.cpp" />
<ClCompile Include="Src\stdafx.cpp" />
<ClCompile Include="Src\WXInputBase.cpp" />
<ClCompile Include="Src\WxUtils.cpp" />
<ClCompile Include="Src\MemoryCards\WiiSaveCrypted.cpp">
<Filter>GUI\Saves</Filter>
</ClCompile>
<ClCompile Include="Src\NetWindow.cpp">
<Filter>GUI\NetPlay</Filter>
</ClCompile>
<ClCompile Include="Src\InputConfigDiag.cpp">
<Filter>GUI\InputConfig</Filter>
</ClCompile>
<ClCompile Include="Src\InputConfigDiagBitmaps.cpp">
<Filter>GUI\InputConfig</Filter>
</ClCompile>
<ClCompile Include="Src\AboutDolphin.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ARCodeAddEdit.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\CheatsWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ConfigMain.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\Frame.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FrameAui.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FrameTools.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GameListCtrl.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GeckoCodeDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\HotkeyDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ISOProperties.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\LogWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\MemcardManager.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\PatchAddEdit.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\UDPConfigDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\WiimoteConfigDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ISOFile.cpp">
<Filter>Misc</Filter>
</ClCompile>
<ClCompile Include="Src\PHackSettings.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DebuggerUIUtil.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\VideoConfigDiag.cpp">
<Filter>GUI\Video</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DebuggerPanel.cpp">
<Filter>GUI\Video</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointDlg.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeWindowFunctions.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DSPDebugWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\JitWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryCheckDlg.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\RegisterWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\RegisterView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DSPRegisterView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\LogConfigWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FifoPlayerDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\TASInputDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GCMicDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Src\Main.h" />
<ClInclude Include="Src\stdafx.h" />
<ClInclude Include="Src\WXInputBase.h" />
<ClInclude Include="Src\WxUtils.h" />
<ClInclude Include="Src\MemoryCards\WiiSaveCrypted.h">
<Filter>GUI\Saves</Filter>
</ClInclude>
<ClInclude Include="Src\NetWindow.h">
<Filter>GUI\NetPlay</Filter>
</ClInclude>
<ClInclude Include="Src\InputConfigDiag.h">
<Filter>GUI\InputConfig</Filter>
</ClInclude>
<ClInclude Include="Src\ARCodeAddEdit.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\AboutDolphin.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ConfigMain.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\CheatsWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GeckoCodeDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Frame.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GameListCtrl.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Globals.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\HotkeyDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ISOProperties.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\LogWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\MemcardManager.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\PatchAddEdit.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\UDPConfigDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\WiimoteConfigDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ISOFile.h">
<Filter>Misc</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Resources</Filter>
</ClInclude>
<ClInclude Include="Src\PHackSettings.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DebuggerUIUtil.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\VideoConfigDiag.h">
<Filter>GUI\Video</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\CodeView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DebuggerPanel.h">
<Filter>GUI\Video</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointDlg.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\CodeWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DSPDebugWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\JitWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryCheckDlg.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\RegisterWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\RegisterView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DSPRegisterView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\LogConfigWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\FifoPlayerDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\TASInputDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GCMicDlg.h">
<Filter>GUI</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="CMakeLists.txt" />
<None Include="..\..\..\Installer\Dolphin.ico">
<Filter>Resources</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Filter Include="GUI">
<UniqueIdentifier>{2f20d058-1119-4738-bda8-90fe900e8d69}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\InputConfig">
<UniqueIdentifier>{70eb2f12-fab7-4953-8ad1-a981837c3a7e}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\NetPlay">
<UniqueIdentifier>{38fc863a-0392-4c5d-ab28-7fe1f70e8a70}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Saves">
<UniqueIdentifier>{3727fb17-2efd-43ce-b71f-d110f0f40474}</UniqueIdentifier>
</Filter>
<Filter Include="Misc">
<UniqueIdentifier>{0721c9ae-4d49-49d6-997b-3731f8ab64cc}</UniqueIdentifier>
</Filter>
<Filter Include="Resources">
<UniqueIdentifier>{9dd3ef96-b03a-4c14-9d35-6a4850acd430}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Debugger">
<UniqueIdentifier>{8ab1ce40-f5e7-47b8-9706-59c924af4eaa}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Video">
<UniqueIdentifier>{ff5180be-244f-4c0e-8a35-bd4bffb6a343}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="DolphinWX.rc">
<Filter>Resources</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="Src\Main.cpp" />
<ClCompile Include="Src\MainNoGUI.cpp" />
<ClCompile Include="Src\stdafx.cpp" />
<ClCompile Include="Src\WXInputBase.cpp" />
<ClCompile Include="Src\WxUtils.cpp" />
<ClCompile Include="Src\MemoryCards\WiiSaveCrypted.cpp">
<Filter>GUI\Saves</Filter>
</ClCompile>
<ClCompile Include="Src\NetWindow.cpp">
<Filter>GUI\NetPlay</Filter>
</ClCompile>
<ClCompile Include="Src\InputConfigDiag.cpp">
<Filter>GUI\InputConfig</Filter>
</ClCompile>
<ClCompile Include="Src\InputConfigDiagBitmaps.cpp">
<Filter>GUI\InputConfig</Filter>
</ClCompile>
<ClCompile Include="Src\AboutDolphin.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ARCodeAddEdit.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\CheatsWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ConfigMain.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\Frame.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FrameAui.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FrameTools.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GameListCtrl.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GeckoCodeDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\HotkeyDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ISOProperties.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\LogWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\MemcardManager.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\PatchAddEdit.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\UDPConfigDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\WiimoteConfigDiag.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\ISOFile.cpp">
<Filter>Misc</Filter>
</ClCompile>
<ClCompile Include="Src\PHackSettings.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DebuggerUIUtil.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\VideoConfigDiag.cpp">
<Filter>GUI\Video</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DebuggerPanel.cpp">
<Filter>GUI\Video</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointDlg.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\CodeWindowFunctions.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DSPDebugWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\JitWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryCheckDlg.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\MemoryWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\RegisterWindow.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\RegisterView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\DSPRegisterView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\Debugger\BreakpointView.cpp">
<Filter>GUI\Debugger</Filter>
</ClCompile>
<ClCompile Include="Src\LogConfigWindow.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\FifoPlayerDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\TASInputDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GCMicDlg.cpp">
<Filter>GUI</Filter>
</ClCompile>
<ClCompile Include="Src\GLInterface\WGL.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Src\Main.h" />
<ClInclude Include="Src\stdafx.h" />
<ClInclude Include="Src\WXInputBase.h" />
<ClInclude Include="Src\WxUtils.h" />
<ClInclude Include="Src\MemoryCards\WiiSaveCrypted.h">
<Filter>GUI\Saves</Filter>
</ClInclude>
<ClInclude Include="Src\NetWindow.h">
<Filter>GUI\NetPlay</Filter>
</ClInclude>
<ClInclude Include="Src\InputConfigDiag.h">
<Filter>GUI\InputConfig</Filter>
</ClInclude>
<ClInclude Include="Src\ARCodeAddEdit.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\AboutDolphin.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ConfigMain.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\CheatsWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GeckoCodeDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Frame.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GameListCtrl.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Globals.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\HotkeyDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ISOProperties.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\LogWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\MemcardManager.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\PatchAddEdit.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\UDPConfigDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\WiimoteConfigDiag.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\ISOFile.h">
<Filter>Misc</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Resources</Filter>
</ClInclude>
<ClInclude Include="Src\PHackSettings.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DebuggerUIUtil.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\VideoConfigDiag.h">
<Filter>GUI\Video</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\CodeView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DebuggerPanel.h">
<Filter>GUI\Video</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointDlg.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\CodeWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DSPDebugWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\JitWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryCheckDlg.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\MemoryWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\RegisterWindow.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\RegisterView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\DSPRegisterView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\Debugger\BreakpointView.h">
<Filter>GUI\Debugger</Filter>
</ClInclude>
<ClInclude Include="Src\LogConfigWindow.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\FifoPlayerDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\TASInputDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GCMicDlg.h">
<Filter>GUI</Filter>
</ClInclude>
<ClInclude Include="Src\GLInterface.h" />
<ClInclude Include="Src\GLInterface\InterfaceBase.h" />
<ClInclude Include="Src\GLInterface\WGL.h" />
</ItemGroup>
<ItemGroup>
<None Include="CMakeLists.txt" />
<None Include="..\..\..\Installer\Dolphin.ico">
<Filter>Resources</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Filter Include="GUI">
<UniqueIdentifier>{2f20d058-1119-4738-bda8-90fe900e8d69}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\InputConfig">
<UniqueIdentifier>{70eb2f12-fab7-4953-8ad1-a981837c3a7e}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\NetPlay">
<UniqueIdentifier>{38fc863a-0392-4c5d-ab28-7fe1f70e8a70}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Saves">
<UniqueIdentifier>{3727fb17-2efd-43ce-b71f-d110f0f40474}</UniqueIdentifier>
</Filter>
<Filter Include="Misc">
<UniqueIdentifier>{0721c9ae-4d49-49d6-997b-3731f8ab64cc}</UniqueIdentifier>
</Filter>
<Filter Include="Resources">
<UniqueIdentifier>{9dd3ef96-b03a-4c14-9d35-6a4850acd430}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Debugger">
<UniqueIdentifier>{8ab1ce40-f5e7-47b8-9706-59c924af4eaa}</UniqueIdentifier>
</Filter>
<Filter Include="GUI\Video">
<UniqueIdentifier>{ff5180be-244f-4c0e-8a35-bd4bffb6a343}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="DolphinWX.rc">
<Filter>Resources</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -149,6 +149,10 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
wxBoxSizer* const top_szr = new wxBoxSizer(wxHORIZONTAL);
top_szr->Add(port_lbl, 0, wxCENTER | wxRIGHT, 5);
top_szr->Add(m_host_port_text, 0);
#ifdef USE_UPNP
m_upnp_chk = new wxCheckBox(host_tab, wxID_ANY, _("Forward port (UPnP)"));
top_szr->Add(m_upnp_chk, 0, wxALL | wxALIGN_RIGHT, 5);
#endif
wxBoxSizer* const host_szr = new wxBoxSizer(wxVERTICAL);
host_szr->Add(top_szr, 0, wxALL | wxEXPAND, 5);
@ -220,6 +224,10 @@ void NetPlaySetupDiag::OnHost(wxCommandEvent&)
, WxStrToStr(m_nickname_text->GetValue()), npd, game);
if (netplay_ptr->is_connected)
{
#ifdef USE_UPNP
if(m_upnp_chk->GetValue())
((NetPlayServer*)netplay_ptr)->TryPortmapping(port);
#endif
npd->Show();
Destroy();
}

View File

@ -48,6 +48,9 @@ private:
*m_connect_ip_text;
wxListBox* m_game_lbox;
#ifdef USE_UPNP
wxCheckBox* m_upnp_chk;
#endif
const CGameListCtrl* const m_game_list;
};