diff --git a/.github/workflows/linux-workflow.yml b/.github/workflows/linux-workflow.yml
index c8fe1a7d49..441b563aba 100644
--- a/.github/workflows/linux-workflow.yml
+++ b/.github/workflows/linux-workflow.yml
@@ -85,6 +85,7 @@ jobs:
./.git/modules/
./3rdparty/fmt
./3rdparty/xz
+ ./3rdparty/yaml-cpp
./3rdparty/gtest
- name: Checkout Submodules
diff --git a/.github/workflows/windows-workflow.yml b/.github/workflows/windows-workflow.yml
index 243641ffa0..d943807128 100644
--- a/.github/workflows/windows-workflow.yml
+++ b/.github/workflows/windows-workflow.yml
@@ -66,6 +66,7 @@ jobs:
./.git/modules/
./3rdparty/fmt
./3rdparty/xz
+ ./3rdparty/yaml-cpp
./3rdparty/gtest
- name: Checkout Submodules
diff --git a/.gitmodules b/.gitmodules
index 17e9711d93..b336aa2b43 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "3rdparty/fmt/fmt"]
path = 3rdparty/fmt/fmt
url = https://github.com/fmtlib/fmt.git
+[submodule "3rdparty/yaml-cpp/yaml-cpp"]
+ path = 3rdparty/yaml-cpp/yaml-cpp
+ url = https://github.com/jbeder/yaml-cpp.git
diff --git a/3rdparty/yaml-cpp/yaml-cpp b/3rdparty/yaml-cpp/yaml-cpp
new file mode 160000
index 0000000000..98acc5a887
--- /dev/null
+++ b/3rdparty/yaml-cpp/yaml-cpp
@@ -0,0 +1 @@
+Subproject commit 98acc5a8874faab28b82c28936f4b400b389f5d6
diff --git a/3rdparty/yaml-cpp/yaml.vcxproj b/3rdparty/yaml-cpp/yaml.vcxproj
new file mode 100644
index 0000000000..ecee74f2be
--- /dev/null
+++ b/3rdparty/yaml-cpp/yaml.vcxproj
@@ -0,0 +1,105 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Devel
+ Win32
+
+
+ Devel
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+ {48329442-E41B-4A1F-8364-36EEE1B71343}
+ Win32Proj
+
+
+
+ StaticLibrary
+ $(DefaultPlatformToolset)
+ MultiByte
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AllRules.ruleset
+
+
+
+ %(PreprocessorDefinitions)
+ Level3
+ $(ProjectDir)/yaml-cpp/include/;$(ProjectDir)/yaml-cpp/src/;%(AdditionalIncludeDirectories)
+ stdcpp17
+ MaxSpeed
+ Speed
+ true
+ true
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PCSX2_suite.sln b/PCSX2_suite.sln
index e9b5647f56..85553e88e5 100644
--- a/PCSX2_suite.sln
+++ b/PCSX2_suite.sln
@@ -74,6 +74,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "3rdparty\fmt\fmt.vcx
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsamplerate", "3rdparty\libsamplerate\libsamplerate.vcxproj", "{47AFDBEF-F15F-4BC0-B436-5BE443C3F80F}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml", "3rdparty\yaml-cpp\yaml.vcxproj", "{48329442-E41B-4A1F-8364-36EEE1B71343}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -508,6 +510,26 @@ Global
{47AFDBEF-F15F-4BC0-B436-5BE443C3F80F}.Release|Win32.Build.0 = Release|Win32
{47AFDBEF-F15F-4BC0-B436-5BE443C3F80F}.Release|x64.ActiveCfg = Release|x64
{47AFDBEF-F15F-4BC0-B436-5BE443C3F80F}.Release|x64.Build.0 = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Debug|Win32.ActiveCfg = Debug|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Debug|Win32.Build.0 = Debug|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Debug|x64.ActiveCfg = Debug|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Debug|x64.Build.0 = Debug|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Devel|Win32.ActiveCfg = Devel|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Devel|Win32.Build.0 = Devel|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Devel|x64.ActiveCfg = Devel|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Devel|x64.Build.0 = Devel|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release AVX2|Win32.ActiveCfg = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release AVX2|Win32.Build.0 = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release AVX2|x64.ActiveCfg = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release AVX2|x64.Build.0 = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release SSE4|Win32.ActiveCfg = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release SSE4|Win32.Build.0 = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release SSE4|x64.ActiveCfg = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release SSE4|x64.Build.0 = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release|Win32.ActiveCfg = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release|Win32.Build.0 = Release|Win32
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release|x64.ActiveCfg = Release|x64
+ {48329442-E41B-4A1F-8364-36EEE1B71343}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -535,6 +557,7 @@ Global
{12728250-16EC-4DC6-94D7-E21DD88947F8} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38}
{449AD25E-424A-4714-BABC-68706CDCC33B} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38}
{47AFDBEF-F15F-4BC0-B436-5BE443C3F80F} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38}
+ {48329442-E41B-4A1F-8364-36EEE1B71343} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0BC474EA-3628-45D3-9DBC-E22D0B7E0F77}
diff --git a/common/vsprops/3rdpartyDeps.props b/common/vsprops/3rdpartyDeps.props
index 41276724a3..28a00d8a68 100644
--- a/common/vsprops/3rdpartyDeps.props
+++ b/common/vsprops/3rdpartyDeps.props
@@ -6,7 +6,7 @@
- $(SvnRootDir)\3rdparty\;$(SvnRootDir)\3rdparty\soundtouch\;$(SolutionDir)\3rdparty\fmt\fmt\include\;%(AdditionalIncludeDirectories)
+ $(SvnRootDir)\3rdparty\;$(SvnRootDir)\3rdparty\soundtouch\;$(SolutionDir)\3rdparty\yaml-cpp\yaml-cpp\include\;$(SolutionDir)\3rdparty\fmt\fmt\include\;%(AdditionalIncludeDirectories)
$(SvnRootDir)\deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
diff --git a/pcsx2/windows/VCprojects/pcsx2.vcxproj b/pcsx2/windows/VCprojects/pcsx2.vcxproj
index 993a193964..14cf7251dd 100644
--- a/pcsx2/windows/VCprojects/pcsx2.vcxproj
+++ b/pcsx2/windows/VCprojects/pcsx2.vcxproj
@@ -883,6 +883,9 @@
{6744dad8-9c70-574a-bff2-9f8dddb24a75}
+
+ {48329442-e41b-4a1f-8364-36eee1b71343}
+
{2f6c0388-20cb-4242-9f6c-a6ebb6a83f47}
false