diff --git a/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj
new file mode 100644
index 0000000..9f1b203
--- /dev/null
+++ b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj
@@ -0,0 +1,377 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}
+ Win32Proj
+ genesisplusgxlibretro
+ 10.0.17763.0
+
+
+
+ DynamicLibrary
+ true
+ v141
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v141
+ true
+ MultiByte
+
+
+ DynamicLibrary
+ true
+ v141
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v141
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;DEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;
+ true
+ MultiThreadedDebug
+ ../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)
+
+
+ true
+ Windows
+
+
+
+
+ Level3
+ Disabled
+ _DEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;DEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;
+ true
+ MultiThreadedDebug
+ ../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)
+
+
+ true
+ Windows
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;NDEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;
+ true
+ MultiThreaded
+ ../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)
+
+
+ true
+ true
+ true
+ Windows
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ NDEBUG;GENESISPLUSGXLIBRETRO_EXPORTS;_CRT_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions);USE_LIBTREMOR;USE_LIBCHDR;PACKAGE_VERSION="1.3.2";FLAC_API_EXPORTS;FLAC__HAS_OGG=0;HAVE_LROUND;HAVE_STDINT_H;_7ZIP_ST;HAVE_FSEEKO;NDEBUG;USE_16BPP_RENDERING;FRONTEND_SUPPORTS_RGB565;LSB_FIRST;BYTE_ORDER=LITTLE_ENDIAN;HAVE_ZLIB;__LIBRETRO__;M68K_OVERCLOCK_SHIFT=20;Z80_OVERCLOCK_SHIFT=20;HAVE_YM3438_CORE;INLINE=static __inline;
+ true
+ MultiThreaded
+ ../../core/cd_hw/libchdr/src;../../core/cd_hw/libchdr/deps/libFLAC/include;../../core/cd_hw/libchdr/deps/lzma;../../core/cd_hw/libchdr/deps/zlib;../../core;../../core/z80;../../core/m68k;../../core/ntsc;../../core/sound;../../core/input_hw;../../core/cd_hw;../../core/cart_hw;../../core/cart_hw/svp;../../libretro;../../libretro/libretro-common/include;%(AdditionalIncludeDirectories)
+
+
+ true
+ true
+ true
+ Windows
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.filters b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.filters
new file mode 100644
index 0000000..d4633c9
--- /dev/null
+++ b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.filters
@@ -0,0 +1,753 @@
+
+
+
+
+ {df0fe89f-e213-4e78-b61e-7a224d2c4de0}
+
+
+ {5e36c995-a849-4ce9-a668-3a0a0abc21bb}
+
+
+ {eae16720-2758-4093-a6ae-13c949167029}
+
+
+ {989595b6-5193-4aef-bd94-0b9ebb0d8edf}
+
+
+ {cdaa7fe7-19d5-45e8-bca3-53b55118c59e}
+
+
+ {4f9eb27c-0486-423c-9e5d-be80fa351267}
+
+
+ {65a7467c-e1f3-4008-83ca-280ee9e52e30}
+
+
+ {deef004c-aec6-4993-b5f6-4da6a53b6e6e}
+
+
+ {709a945a-c951-4f3d-8beb-73318cddf8d8}
+
+
+ {d70ba8a3-d68a-4d2d-b068-18b88b2e1fbe}
+
+
+ {ec52a1a3-e92b-416d-89b0-f567be4e4807}
+
+
+ {697ebb65-2656-4a27-a2b0-6b323eff9cac}
+
+
+ {04faa22e-0710-4c23-8aa3-3b9c3c45c0b2}
+
+
+ {c848162f-9be7-4e0a-8f07-434fbcb898df}
+
+
+ {7eed7ffb-f309-4f79-87ca-96de690bd264}
+
+
+ {d9b1d470-fa8e-44d7-8a86-a17038911505}
+
+
+ {cca2a9d1-0910-47d9-9dfd-6568c6ca43cd}
+
+
+ {15e1fa75-1847-49fd-96d8-93b1ca567c15}
+
+
+ {0220cfbc-1ffa-456e-b325-03805d2c418c}
+
+
+ {f1abfc09-b381-4dc0-84f5-ef25694664b9}
+
+
+ {2da0d031-69e0-43bc-b580-e999031a9db2}
+
+
+ {f644abdc-7783-41d4-9bec-31840429521c}
+
+
+ {eb6a2018-d386-4af0-8230-97a05d41d32d}
+
+
+ {0c398821-7f40-4bfb-963d-d211a210fe70}
+
+
+ {571a0407-4e64-4c31-bd25-dbc6c107c2a2}
+
+
+ {e1e2aebc-602e-438e-a56d-055720719fff}
+
+
+ {08366101-bc7b-4009-8f09-65804bdab6ea}
+
+
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core\z80
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw\svp
+
+
+ core\cart_hw\svp
+
+
+ libretro\libretro-common\streams
+
+
+ libretro\libretro-common\streams
+
+
+ libretro\libretro-common\compat
+
+
+ libretro\libretro-common\compat
+
+
+ libretro\libretro-common\encodings
+
+
+ libretro\libretro-common\vfs
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ libretro
+
+
+ libretro
+
+
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\src
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\lzma
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\FLAC
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\private
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\protected
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\share
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\share
+
+
+ core\cd_hw\libchdr\deps\libFLAC\include\share
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core
+
+
+ core\z80
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\m68k
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\ntsc
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\sound
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\input_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cd_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw
+
+
+ core\cart_hw\svp
+
+
+ core\cart_hw\svp
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\cd_hw\libchdr\deps\zlib
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ core\tremor
+
+
+ libretro
+
+
+ libretro
+
+
+ core
+
+
+
\ No newline at end of file
diff --git a/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.user b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.user
new file mode 100644
index 0000000..be25078
--- /dev/null
+++ b/libretro/libretro_msvc/genesis_plus_gx_libretro.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/libretro/libretro_msvc/libretro_msvc.sln b/libretro/libretro_msvc/libretro_msvc.sln
new file mode 100644
index 0000000..fcb1f9b
--- /dev/null
+++ b/libretro/libretro_msvc/libretro_msvc.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.136
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genesis_plus_gx_libretro", "genesis_plus_gx_libretro.vcxproj", "{6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}"
+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
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x64.ActiveCfg = Debug|x64
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x64.Build.0 = Debug|x64
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x86.ActiveCfg = Debug|Win32
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Debug|x86.Build.0 = Debug|Win32
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x64.ActiveCfg = Release|x64
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x64.Build.0 = Release|x64
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x86.ActiveCfg = Release|Win32
+ {6E5A2D82-D5E3-4AE2-9253-733BAC8A924C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3D50B6EB-2DBD-4200-BDCA-478C602B6F32}
+ EndGlobalSection
+EndGlobal