diff --git a/msvc/AudioTest.vcproj b/msvc/AudioTest.vcproj
new file mode 100644
index 0000000..b6e860e
--- /dev/null
+++ b/msvc/AudioTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/ConfigFileTest.vcproj b/msvc/ConfigFileTest.vcproj
new file mode 100644
index 0000000..c4e7c21
--- /dev/null
+++ b/msvc/ConfigFileTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/FontTest.vcproj b/msvc/FontTest.vcproj
new file mode 100644
index 0000000..54c7d49
--- /dev/null
+++ b/msvc/FontTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/ImageTest.vcproj b/msvc/ImageTest.vcproj
new file mode 100644
index 0000000..0f78f31
--- /dev/null
+++ b/msvc/ImageTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/InputTest.vcproj b/msvc/InputTest.vcproj
new file mode 100644
index 0000000..8fd6bc2
--- /dev/null
+++ b/msvc/InputTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/LogTest.vcproj b/msvc/LogTest.vcproj
new file mode 100644
index 0000000..3ad2359
--- /dev/null
+++ b/msvc/LogTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/PenTest.vcproj b/msvc/PenTest.vcproj
new file mode 100644
index 0000000..5b16a5e
--- /dev/null
+++ b/msvc/PenTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/README-MSVC.txt b/msvc/README-MSVC.txt
new file mode 100644
index 0000000..177b9db
--- /dev/null
+++ b/msvc/README-MSVC.txt
@@ -0,0 +1,6 @@
+These project files are currently unsupported, as is building in MSVC as I
+simply don't have time to test in MSVC which can be rather difficult since all
+development takes place using gcc.
+
+If you'd like to help out with MSVC support it would be greatly appreciated.
+Please contact James if you're interested.
diff --git a/msvc/RandGenTest.vcproj b/msvc/RandGenTest.vcproj
new file mode 100644
index 0000000..4fdd7cd
--- /dev/null
+++ b/msvc/RandGenTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/StateTest.vcproj b/msvc/StateTest.vcproj
new file mode 100644
index 0000000..20192ad
--- /dev/null
+++ b/msvc/StateTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/TextureTest.vcproj b/msvc/TextureTest.vcproj
new file mode 100644
index 0000000..19c2368
--- /dev/null
+++ b/msvc/TextureTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/filesysTest.vcproj b/msvc/filesysTest.vcproj
new file mode 100644
index 0000000..ff35a06
--- /dev/null
+++ b/msvc/filesysTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/mathTest.vcproj b/msvc/mathTest.vcproj
new file mode 100644
index 0000000..95298eb
--- /dev/null
+++ b/msvc/mathTest.vcproj
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msvc/photon.sln b/msvc/photon.sln
new file mode 100644
index 0000000..571eb74
--- /dev/null
+++ b/msvc/photon.sln
@@ -0,0 +1,129 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "photon", "photon.vcproj", "{3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioTest", "AudioTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConfigFileTest", "ConfigFileTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "filesysTest", "filesysTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FontTest", "FontTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageTest", "ImageTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InputTest", "InputTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LogTest", "LogTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mathTest", "mathTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PenTest", "PenTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RandGenTest", "RandGenTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StateTest", "StateTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TextureTest", "TextureTest.vcproj", "{4E77B8F7-D926-4803-8253-743687722CD5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC} = {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}.Debug.ActiveCfg = Debug|Win32
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}.Debug.Build.0 = Debug|Win32
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}.Release.ActiveCfg = Release|Win32
+ {3CC9B3F0-83F6-4BF6-83AE-58325C833ECC}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.ActiveCfg = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Debug.Build.0 = Debug|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.ActiveCfg = Release|Win32
+ {4E77B8F7-D926-4803-8253-743687722CD5}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/msvc/photon.vcproj b/msvc/photon.vcproj
new file mode 100644
index 0000000..ab91192
--- /dev/null
+++ b/msvc/photon.vcproj
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+