diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..d888e49e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+*.tlog
+*.idb
+*.pdb
+*.sbr
+*.filters
+*.user
+*.opensdf
+*.sdf
+*.suo
+*.sdf
+*.obj
+*.log
+*.bak
+ipch/*
+.vs/
+local/
+bin/
+obj/
\ No newline at end of file
diff --git a/OpenAssetTools.sln b/OpenAssetTools.sln
new file mode 100644
index 00000000..894a926a
--- /dev/null
+++ b/OpenAssetTools.sln
@@ -0,0 +1,55 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.852
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Linker", "src\Linker\Linker.vcxproj", "{A70826FD-9A3E-498C-B5D6-585C4DA14FEB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{EB945BC9-2451-4AB5-B434-BD07FAA2D06A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ThirdParty", "ThirdParty", "{562895A0-B72F-4A89-9A10-DF97A5D35269}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Components", "Components", "{6C048B51-3E90-45B8-8376-F3FFB5E216FC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZoneCommon", "src\ZoneCommon\ZoneCommon.vcxproj", "{2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZoneLoader", "src\ZoneLoader\ZoneLoader.vcxproj", "{C3308B0A-D7C7-4560-B5F7-3654DD4B668D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZoneWriter", "src\ZoneWriter\ZoneWriter.vcxproj", "{B92A6638-68F9-45D2-AB03-6ED69E349381}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB}.Debug|x86.ActiveCfg = Debug|Win32
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB}.Debug|x86.Build.0 = Debug|Win32
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB}.Release|x86.ActiveCfg = Release|Win32
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB}.Release|x86.Build.0 = Release|Win32
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}.Debug|x86.ActiveCfg = Debug|Win32
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}.Debug|x86.Build.0 = Debug|Win32
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}.Release|x86.ActiveCfg = Release|Win32
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}.Release|x86.Build.0 = Release|Win32
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D}.Debug|x86.ActiveCfg = Debug|Win32
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D}.Debug|x86.Build.0 = Debug|Win32
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D}.Release|x86.ActiveCfg = Release|Win32
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D}.Release|x86.Build.0 = Release|Win32
+ {B92A6638-68F9-45D2-AB03-6ED69E349381}.Debug|x86.ActiveCfg = Debug|Win32
+ {B92A6638-68F9-45D2-AB03-6ED69E349381}.Debug|x86.Build.0 = Debug|Win32
+ {B92A6638-68F9-45D2-AB03-6ED69E349381}.Release|x86.ActiveCfg = Release|Win32
+ {B92A6638-68F9-45D2-AB03-6ED69E349381}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB} = {EB945BC9-2451-4AB5-B434-BD07FAA2D06A}
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7} = {6C048B51-3E90-45B8-8376-F3FFB5E216FC}
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D} = {6C048B51-3E90-45B8-8376-F3FFB5E216FC}
+ {B92A6638-68F9-45D2-AB03-6ED69E349381} = {6C048B51-3E90-45B8-8376-F3FFB5E216FC}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FBB5097F-0C5C-439C-8E82-19EF614DE3BE}
+ EndGlobalSection
+EndGlobal
diff --git a/src/Linker/Linker.vcxproj b/src/Linker/Linker.vcxproj
new file mode 100644
index 00000000..8bac1a85
--- /dev/null
+++ b/src/Linker/Linker.vcxproj
@@ -0,0 +1,134 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+ 15.0
+ {A70826FD-9A3E-498C-B5D6-585C4DA14FEB}
+ Win32Proj
+ Linker
+ 10.0.17763.0
+
+
+
+ Application
+ true
+ v141
+ Unicode
+
+
+ Application
+ false
+ v141
+ true
+ Unicode
+
+
+ v141
+
+
+ v141
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ linker
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ linker
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ linker
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ linker
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ pch.h
+
+
+ Console
+ true
+ $(TargetDir)
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ pch.h
+
+
+ Console
+ true
+ true
+ true
+ $(TargetDir)
+
+
+
+
+ $(TargetDir)
+
+
+
+
+ $(TargetDir)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Linker/main.cpp b/src/Linker/main.cpp
new file mode 100644
index 00000000..3e90c6cf
--- /dev/null
+++ b/src/Linker/main.cpp
@@ -0,0 +1,4 @@
+int main(int argc, const char** argv)
+{
+ return 0;
+}
\ No newline at end of file
diff --git a/src/ZoneCommon/ZoneCommon.vcxproj b/src/ZoneCommon/ZoneCommon.vcxproj
new file mode 100644
index 00000000..775c264c
--- /dev/null
+++ b/src/ZoneCommon/ZoneCommon.vcxproj
@@ -0,0 +1,160 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {2A92076F-6DFD-4FB1-9E6A-4542B4B049C7}
+ Win32Proj
+ ZoneCommon
+ 10.0.17763.0
+
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ _DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ZoneLoader/ZoneLoader.vcxproj b/src/ZoneLoader/ZoneLoader.vcxproj
new file mode 100644
index 00000000..e20ded88
--- /dev/null
+++ b/src/ZoneLoader/ZoneLoader.vcxproj
@@ -0,0 +1,160 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {C3308B0A-D7C7-4560-B5F7-3654DD4B668D}
+ Win32Proj
+ ZoneLoader
+ 10.0.17763.0
+
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ _DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ZoneWriter/ZoneWriter.vcxproj b/src/ZoneWriter/ZoneWriter.vcxproj
new file mode 100644
index 00000000..0d60c221
--- /dev/null
+++ b/src/ZoneWriter/ZoneWriter.vcxproj
@@ -0,0 +1,160 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {B92A6638-68F9-45D2-AB03-6ED69E349381}
+ Win32Proj
+ ZoneWriter
+ 10.0.17763.0
+
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+ StaticLibrary
+ true
+ v141
+ Unicode
+
+
+ StaticLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ true
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+ false
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)_$(Platform)\
+ $(SolutionDir)bin\$(Configuration)_$(Platform)\
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ _DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file