diff --git a/.gitmodules b/.gitmodules
index 4379e83b..cd8d9a98 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -25,3 +25,6 @@
[submodule "external/sdl"]
path = external/sdl
url = https://github.com/libsdl-org/SDL.git
+[submodule "external/libusb"]
+ path = external/libusb
+ url = https://github.com/libusb/libusb.git
diff --git a/external/libusb b/external/libusb
new file mode 160000
index 00000000..de38189e
--- /dev/null
+++ b/external/libusb
@@ -0,0 +1 @@
+Subproject commit de38189e8014fa393f4d8c1d9d3fdf5e2a95899d
diff --git a/external/libusb.vcxproj b/external/libusb.vcxproj
new file mode 100644
index 00000000..37705964
--- /dev/null
+++ b/external/libusb.vcxproj
@@ -0,0 +1,62 @@
+
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ {82a8d930-2514-48fa-b811-e5c402f2ab4a}
+ libusb
+
+
+ StaticLibrary
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)external\libusb\libusb;$(SolutionDir)external\libusb\msvc\;%(AdditionalIncludeDirectories)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/external/libusb.vcxproj.filters b/external/libusb.vcxproj.filters
new file mode 100644
index 00000000..4e573551
--- /dev/null
+++ b/external/libusb.vcxproj.filters
@@ -0,0 +1,108 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {afe2d53d-f2ee-4602-bb0f-28fa32853253}
+
+
+ {c01251de-46bc-4e2b-a7f7-744f5b84943d}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\os
+
+
+ Source Files\os
+
+
+ Source Files\os
+
+
+ Source Files\os
+
+
+ Source Files\os
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+ Header Files\os
+
+
+
\ No newline at end of file
diff --git a/nxemu.sln b/nxemu.sln
index 8809087b..1f8408ce 100644
--- a/nxemu.sln
+++ b/nxemu.sln
@@ -48,110 +48,66 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zydis", "..\nxemu-private\e
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdl", "external\sdl.vcxproj", "{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libusb", "external\libusb.vcxproj", "{82A8D930-2514-48FA-B811-E5C402F2AB4A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
Release|x64 = Release|x64
- Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Debug|x64.ActiveCfg = Debug|x64
{C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Debug|x64.Build.0 = Debug|x64
- {C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Debug|x86.ActiveCfg = Debug|x64
- {C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Debug|x86.Build.0 = Debug|x64
{C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Release|x64.ActiveCfg = Release|x64
{C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Release|x64.Build.0 = Release|x64
- {C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Release|x86.ActiveCfg = Release|x64
- {C8659F5A-3AFA-4BF0-9409-3B9819E17714}.Release|x86.Build.0 = Release|x64
{1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Debug|x64.ActiveCfg = Debug|x64
{1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Debug|x64.Build.0 = Debug|x64
- {1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Debug|x86.ActiveCfg = Debug|x64
- {1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Debug|x86.Build.0 = Debug|x64
{1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Release|x64.ActiveCfg = Release|x64
{1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Release|x64.Build.0 = Release|x64
- {1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Release|x86.ActiveCfg = Release|x64
- {1F4A3DC8-4CCA-485E-B120-FEB2B5A15023}.Release|x86.Build.0 = Release|x64
{CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Debug|x64.ActiveCfg = Debug|x64
{CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Debug|x64.Build.0 = Debug|x64
- {CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Debug|x86.ActiveCfg = Debug|x64
- {CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Debug|x86.Build.0 = Debug|x64
{CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Release|x64.ActiveCfg = Release|x64
{CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Release|x64.Build.0 = Release|x64
- {CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Release|x86.ActiveCfg = Release|x64
- {CF365EDD-C903-47B1-AAAE-A483D3C0D274}.Release|x86.Build.0 = Release|x64
{D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Debug|x64.ActiveCfg = Debug|x64
{D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Debug|x64.Build.0 = Debug|x64
- {D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Debug|x86.ActiveCfg = Debug|x64
- {D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Debug|x86.Build.0 = Debug|x64
{D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Release|x64.ActiveCfg = Release|x64
{D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Release|x64.Build.0 = Release|x64
- {D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Release|x86.ActiveCfg = Release|x64
- {D442FBFE-1018-4056-A0AE-CBCB6BF9DD90}.Release|x86.Build.0 = Release|x64
{EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Debug|x64.ActiveCfg = Debug|x64
{EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Debug|x64.Build.0 = Debug|x64
- {EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Debug|x86.ActiveCfg = Debug|x64
- {EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Debug|x86.Build.0 = Debug|x64
{EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Release|x64.ActiveCfg = Release|x64
{EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Release|x64.Build.0 = Release|x64
- {EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Release|x86.ActiveCfg = Release|x64
- {EC81BE93-8316-4DB6-8A26-B13FB5B13848}.Release|x86.Build.0 = Release|x64
{148184C3-456B-409C-8112-2FC35DE07D92}.Debug|x64.ActiveCfg = Debug|x64
{148184C3-456B-409C-8112-2FC35DE07D92}.Debug|x64.Build.0 = Debug|x64
- {148184C3-456B-409C-8112-2FC35DE07D92}.Debug|x86.ActiveCfg = Debug|x64
- {148184C3-456B-409C-8112-2FC35DE07D92}.Debug|x86.Build.0 = Debug|x64
{148184C3-456B-409C-8112-2FC35DE07D92}.Release|x64.ActiveCfg = Release|x64
{148184C3-456B-409C-8112-2FC35DE07D92}.Release|x64.Build.0 = Release|x64
- {148184C3-456B-409C-8112-2FC35DE07D92}.Release|x86.ActiveCfg = Release|x64
- {148184C3-456B-409C-8112-2FC35DE07D92}.Release|x86.Build.0 = Release|x64
{686302AD-7653-43FF-A120-44E8D45B7371}.Debug|x64.ActiveCfg = Debug|x64
{686302AD-7653-43FF-A120-44E8D45B7371}.Debug|x64.Build.0 = Debug|x64
- {686302AD-7653-43FF-A120-44E8D45B7371}.Debug|x86.ActiveCfg = Debug|x64
- {686302AD-7653-43FF-A120-44E8D45B7371}.Debug|x86.Build.0 = Debug|x64
{686302AD-7653-43FF-A120-44E8D45B7371}.Release|x64.ActiveCfg = Release|x64
{686302AD-7653-43FF-A120-44E8D45B7371}.Release|x64.Build.0 = Release|x64
- {686302AD-7653-43FF-A120-44E8D45B7371}.Release|x86.ActiveCfg = Release|x64
- {686302AD-7653-43FF-A120-44E8D45B7371}.Release|x86.Build.0 = Release|x64
{F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Debug|x64.ActiveCfg = Debug|x64
{F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Debug|x64.Build.0 = Debug|x64
- {F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Debug|x86.ActiveCfg = Debug|x64
- {F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Debug|x86.Build.0 = Debug|x64
{F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Release|x64.ActiveCfg = Release|x64
{F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Release|x64.Build.0 = Release|x64
- {F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Release|x86.ActiveCfg = Release|x64
- {F119CF47-F0E6-4152-A9BD-07B20BD0B540}.Release|x86.Build.0 = Release|x64
{A059B52A-FB13-4060-AC89-128570938D5D}.Debug|x64.ActiveCfg = Debug|x64
{A059B52A-FB13-4060-AC89-128570938D5D}.Debug|x64.Build.0 = Debug|x64
- {A059B52A-FB13-4060-AC89-128570938D5D}.Debug|x86.ActiveCfg = Debug|Win32
- {A059B52A-FB13-4060-AC89-128570938D5D}.Debug|x86.Build.0 = Debug|Win32
{A059B52A-FB13-4060-AC89-128570938D5D}.Release|x64.ActiveCfg = Release|x64
{A059B52A-FB13-4060-AC89-128570938D5D}.Release|x64.Build.0 = Release|x64
- {A059B52A-FB13-4060-AC89-128570938D5D}.Release|x86.ActiveCfg = Release|Win32
- {A059B52A-FB13-4060-AC89-128570938D5D}.Release|x86.Build.0 = Release|Win32
{D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Debug|x64.ActiveCfg = Debug|x64
{D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Debug|x64.Build.0 = Debug|x64
- {D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Debug|x86.ActiveCfg = Debug|Win32
- {D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Debug|x86.Build.0 = Debug|Win32
{D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Release|x64.ActiveCfg = Release|x64
{D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Release|x64.Build.0 = Release|x64
- {D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Release|x86.ActiveCfg = Release|Win32
- {D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7}.Release|x86.Build.0 = Release|Win32
{9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Debug|x64.ActiveCfg = Debug|x64
{9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Debug|x64.Build.0 = Debug|x64
- {9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Debug|x86.ActiveCfg = Debug|Win32
- {9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Debug|x86.Build.0 = Debug|Win32
{9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Release|x64.ActiveCfg = Release|x64
{9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Release|x64.Build.0 = Release|x64
- {9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Release|x86.ActiveCfg = Release|Win32
- {9DEC236B-F924-4166-A1B1-002F3BF8F0EC}.Release|x86.Build.0 = Release|Win32
{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Debug|x64.ActiveCfg = Debug|x64
{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Debug|x64.Build.0 = Debug|x64
- {C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Debug|x86.ActiveCfg = Debug|x64
- {C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Debug|x86.Build.0 = Debug|x64
{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Release|x64.ActiveCfg = Release|x64
{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Release|x64.Build.0 = Release|x64
- {C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Release|x86.ActiveCfg = Release|x64
- {C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD}.Release|x86.Build.0 = Release|x64
+ {82A8D930-2514-48FA-B811-E5C402F2AB4A}.Debug|x64.ActiveCfg = Debug|x64
+ {82A8D930-2514-48FA-B811-E5C402F2AB4A}.Debug|x64.Build.0 = Debug|x64
+ {82A8D930-2514-48FA-B811-E5C402F2AB4A}.Release|x64.ActiveCfg = Release|x64
+ {82A8D930-2514-48FA-B811-E5C402F2AB4A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -162,6 +118,7 @@ Global
{D58BDFC6-1F1E-4C55-9296-1C2411B0FDA7} = {29EE6611-75A5-4A1D-A994-33A5EBB4F765}
{9DEC236B-F924-4166-A1B1-002F3BF8F0EC} = {29EE6611-75A5-4A1D-A994-33A5EBB4F765}
{C44840A5-59BC-4CA0-85C2-B51F0BA6E3BD} = {29EE6611-75A5-4A1D-A994-33A5EBB4F765}
+ {82A8D930-2514-48FA-B811-E5C402F2AB4A} = {29EE6611-75A5-4A1D-A994-33A5EBB4F765}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AF860836-279D-4187-9FAF-4E2D4B9C59CF}
diff --git a/src/nxemu-os/nxemu-os.vcxproj b/src/nxemu-os/nxemu-os.vcxproj
index e480e7d6..48b66b21 100644
--- a/src/nxemu-os/nxemu-os.vcxproj
+++ b/src/nxemu-os/nxemu-os.vcxproj
@@ -766,6 +766,9 @@
{d58bdfc6-1f1e-4c55-9296-1c2411b0fda7}
+
+ {82a8d930-2514-48fa-b811-e5c402f2ab4a}
+
{c44840a5-59bc-4ca0-85c2-b51f0ba6e3bd}