diff --git a/CMakeLists.txt b/CMakeLists.txt
index 09ca275110..0137d06d5a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -416,9 +416,13 @@ add_library(Common STATIC
${CommonVulkan}
Common/ColorConv.cpp
Common/ColorConv.h
- Common/ChunkFile.cpp
- Common/ChunkFile.h
- Common/ChunkFileDo.h
+ Common/Serialize/Serializer.cpp
+ Common/Serialize/Serializer.h
+ Common/Serialize/SerializeDeque.h
+ Common/Serialize/SerializeFuncs.h
+ Common/Serialize/SerializeList.h
+ Common/Serialize/SerializeMap.h
+ Common/Serialize/SerializeSet.h
Common/ConsoleListener.cpp
Common/ConsoleListener.h
Common/Crypto/md5.cpp
diff --git a/Common/Common.vcxproj b/Common/Common.vcxproj
index c54bc30238..40a9f61a06 100644
--- a/Common/Common.vcxproj
+++ b/Common/Common.vcxproj
@@ -354,9 +354,12 @@
-
+
+
-
+
+
+
@@ -406,6 +409,7 @@
+
@@ -445,7 +449,7 @@
false
false
-
+
diff --git a/Common/Common.vcxproj.filters b/Common/Common.vcxproj.filters
index a19ee2e281..92551a3e85 100644
--- a/Common/Common.vcxproj.filters
+++ b/Common/Common.vcxproj.filters
@@ -3,7 +3,6 @@
-
@@ -76,7 +75,24 @@
-
+
+ Serialize
+
+
+ Serialize
+
+
+ Serialize
+
+
+ Serialize
+
+
+ Serialize
+
+
+ Serialize
+
@@ -106,7 +122,6 @@
Crypto
-
@@ -141,6 +156,9 @@
Vulkan
+
+ Serialize
+
@@ -155,5 +173,8 @@
{c14d66ef-5f7c-4565-975a-72774e7ccfb9}
+
+ {7be79ad5-3520-46a1-a370-dce2a943978c}
+
\ No newline at end of file
diff --git a/Common/FixedSizeQueue.h b/Common/FixedSizeQueue.h
index 03ebf5c41f..ed7eb14a75 100644
--- a/Common/FixedSizeQueue.h
+++ b/Common/FixedSizeQueue.h
@@ -18,8 +18,8 @@
#pragma once
#include
-#include "ChunkFile.h"
-#include "MemoryUtil.h"
+#include "Common/MemoryUtil.h"
+#include "Common/Serialize/Serializer.h"
// STL-look-a-like interface, but name is mixed case to distinguish it clearly from the
// real STL classes.
diff --git a/Common/ChunkFileDoDeque.h b/Common/Serialize/SerializeDeque.h
similarity index 91%
rename from Common/ChunkFileDoDeque.h
rename to Common/Serialize/SerializeDeque.h
index 1c2aa9339e..d0dc8adbb0 100644
--- a/Common/ChunkFileDoDeque.h
+++ b/Common/Serialize/SerializeDeque.h
@@ -17,9 +17,9 @@
#pragma once
-// Templates for save state serialization. See ChunkFile.h.
+// Templates for save state serialization. See Serializer.h.
#include
-#include "Common/ChunkFileDo.h"
+#include "Common/Serialize/SerializeFuncs.h"
template
void DoDeque(PointerWrap &p, std::deque &x, T &default_val) {
diff --git a/Common/ChunkFileDo.h b/Common/Serialize/SerializeFuncs.h
similarity index 96%
rename from Common/ChunkFileDo.h
rename to Common/Serialize/SerializeFuncs.h
index e43f229e8a..3080749fa3 100644
--- a/Common/ChunkFileDo.h
+++ b/Common/Serialize/SerializeFuncs.h
@@ -17,10 +17,10 @@
#pragma once
-// Templates for save state serialization. See ChunkFile.h.
+// Templates for save state serialization. See Serializer.h.
#include
#include
-#include "Common/ChunkFile.h"
+#include "Common/Serialize/Serializer.h"
#include "Common/Swap.h"
void Do(PointerWrap &p, std::string &x);
diff --git a/Common/ChunkFileDoList.h b/Common/Serialize/SerializeList.h
similarity index 96%
rename from Common/ChunkFileDoList.h
rename to Common/Serialize/SerializeList.h
index 1ae1a2a12d..ff4ed57a9a 100644
--- a/Common/ChunkFileDoList.h
+++ b/Common/Serialize/SerializeList.h
@@ -17,9 +17,9 @@
#pragma once
-// Templates for save state serialization. See ChunkFile.h.
+// Templates for save state serialization. See Serializer.h.
#include
-#include "Common/ChunkFileDo.h"
+#include "Common/Serialize/SerializeFuncs.h"
template
void DoList(PointerWrap &p, std::list &x, T &default_val) {
diff --git a/Common/ChunkFileDoMap.h b/Common/Serialize/SerializeMap.h
similarity index 97%
rename from Common/ChunkFileDoMap.h
rename to Common/Serialize/SerializeMap.h
index 5c01a244c8..9190f5067e 100644
--- a/Common/ChunkFileDoMap.h
+++ b/Common/Serialize/SerializeMap.h
@@ -17,10 +17,10 @@
#pragma once
-// Templates for save state serialization. See ChunkFile.h.
+// Templates for save state serialization. See Serializer.h.
#include