Commits

spencercw committed 0d5c2ed

Remove SDL.

Comments (0)

Files changed (692)

 		{3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}
 	EndProjectSection
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sdl", "sdl", "{99F2E5DC-7F2B-4A6C-9567-9616923B46B1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdl", "third_party\sdl\sdl.vcxproj", "{1DC41A27-9A43-412D-ABDB-90E6A427A228}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdl_main", "third_party\sdl\sdl_main.vcxproj", "{3D185A1F-893F-43D7-9C0E-84218717FDD0}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gb_emulator", "gb_emulator\gb_emulator.vcxproj", "{36A6F338-8651-4F03-9CC7-15D970CED2BE}"
 	ProjectSection(ProjectDependencies) = postProject
 		{F12F4A06-F450-4CF4-B699-E29B3F4E90F5} = {F12F4A06-F450-4CF4-B699-E29B3F4E90F5}
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0} = {3D185A1F-893F-43D7-9C0E-84218717FDD0}
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228} = {1DC41A27-9A43-412D-ABDB-90E6A427A228}
 		{3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {3E283F37-A4ED-41B7-A3E6-A2D89D131A30}
 		{A6B3D68F-FB58-4AA3-AA76-E69190CEBA16} = {A6B3D68F-FB58-4AA3-AA76-E69190CEBA16}
 		{1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {1738D5F6-ED1E-47E0-B2F0-456864B93C1E}
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sdcc", "sdcc", "{318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "config", "third_party\sdcc\config.vcxproj", "{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "config", "third_party\sdcc\config.vcxproj", "{76CA0319-C26A-D4FE-43F6-4FF9504F8154}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asgb", "third_party\sdcc\sdas\asgb\asgb.vcxproj", "{1342F6A4-878F-08E4-8395-97ABE0F63951}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asgb", "third_party\sdcc\sdas\asgb\asgb.vcxproj", "{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}"
 	ProjectSection(ProjectDependencies) = postProject
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754} = {AF6166D9-3EDA-D68D-DE92-F571B2AD1754}
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154} = {76CA0319-C26A-D4FE-43F6-4FF9504F8154}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makebin", "third_party\sdcc\support\makebin\makebin.vcxproj", "{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makebin", "third_party\sdcc\support\makebin\makebin.vcxproj", "{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librarian", "third_party\sdcc\support\librarian\librarian.vcxproj", "{D36E44D7-7F8D-5634-618A-301DF919129F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librarian", "third_party\sdcc\support\librarian\librarian.vcxproj", "{7AA7E617-7D10-BBD8-911D-91670B2F1413}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "z80a", "third_party\sdcc\src\z80\z80a.vcxproj", "{E1A7C65A-FE0A-CB01-F783-32FCF5147466}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "z80a", "third_party\sdcc\src\z80\z80a.vcxproj", "{CD2F0D49-D275-0094-2034-197A525484C3}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "z80", "third_party\sdcc\src\z80\z80.vcxproj", "{92496E41-5CB8-08BF-A4D7-23036E57DB8D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "z80", "third_party\sdcc\src\z80\z80.vcxproj", "{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}"
 	ProjectSection(ProjectDependencies) = postProject
-		{42EDC447-7082-17F1-A02F-2ED8746669AA} = {42EDC447-7082-17F1-A02F-2ED8746669AA}
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466} = {E1A7C65A-FE0A-CB01-F783-32FCF5147466}
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754} = {AF6166D9-3EDA-D68D-DE92-F571B2AD1754}
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE} = {59A7B82E-729E-95AC-37E3-78E75EE1A7FE}
+		{CD2F0D49-D275-0094-2034-197A525484C3} = {CD2F0D49-D275-0094-2034-197A525484C3}
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154} = {76CA0319-C26A-D4FE-43F6-4FF9504F8154}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yacc", "third_party\sdcc\src\yacc.vcxproj", "{42EDC447-7082-17F1-A02F-2ED8746669AA}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yacc", "third_party\sdcc\src\yacc.vcxproj", "{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "src", "third_party\sdcc\src\src.vcxproj", "{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "src", "third_party\sdcc\src\src.vcxproj", "{FD66F15B-84F2-B694-7E51-7E25311FDA3B}"
 	ProjectSection(ProjectDependencies) = postProject
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D} = {92496E41-5CB8-08BF-A4D7-23036E57DB8D}
-		{42EDC447-7082-17F1-A02F-2ED8746669AA} = {42EDC447-7082-17F1-A02F-2ED8746669AA}
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754} = {AF6166D9-3EDA-D68D-DE92-F571B2AD1754}
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D} = {70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE} = {59A7B82E-729E-95AC-37E3-78E75EE1A7FE}
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154} = {76CA0319-C26A-D4FE-43F6-4FF9504F8154}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdcppa", "third_party\sdcc\support\cpp\sdcppa.vcxproj", "{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdcppa", "third_party\sdcc\support\cpp\sdcppa.vcxproj", "{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdcpp", "third_party\sdcc\support\cpp\sdcpp.vcxproj", "{A3DA8040-004F-7E7D-D507-1972371079D3}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdcpp", "third_party\sdcc\support\cpp\sdcpp.vcxproj", "{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}"
 	ProjectSection(ProjectDependencies) = postProject
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF} = {44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3} = {90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aslink", "third_party\sdcc\sdas\linksrc\aslink.vcxproj", "{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aslink", "third_party\sdcc\sdas\linksrc\aslink.vcxproj", "{E3A206A3-0944-7FA0-240F-9056B891FD35}"
 	ProjectSection(ProjectDependencies) = postProject
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754} = {AF6166D9-3EDA-D68D-DE92-F571B2AD1754}
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154} = {76CA0319-C26A-D4FE-43F6-4FF9504F8154}
 	EndProjectSection
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gbdk", "gbdk", "{CD8488DE-0838-46D1-980C-3E325A7CF560}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gbz80", "third_party\gbdk\libc\gbz80.vcxproj", "{49C9510A-C9BD-4199-9602-A724CC257817}"
 	ProjectSection(ProjectDependencies) = postProject
-		{A3DA8040-004F-7E7D-D507-1972371079D3} = {A3DA8040-004F-7E7D-D507-1972371079D3}
-		{1342F6A4-878F-08E4-8395-97ABE0F63951} = {1342F6A4-878F-08E4-8395-97ABE0F63951}
-		{D36E44D7-7F8D-5634-618A-301DF919129F} = {D36E44D7-7F8D-5634-618A-301DF919129F}
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6} = {B11F7AFD-04A2-9DCF-266A-B2C0635596D6}
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5} = {C2A54E5B-1934-6130-60AB-A9F878E1E0B5}
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3} = {7CA56168-C6A8-EF88-0933-A195FFAB3AB3}
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413} = {7AA7E617-7D10-BBD8-911D-91670B2F1413}
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B} = {FD66F15B-84F2-B694-7E51-7E25311FDA3B}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maccer", "third_party\gbdk\maccer\maccer.vcxproj", "{5F04981B-7F84-4440-8BC3-D250AABDACE0}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gb", "third_party\gbdk\libc\gb\gb.vcxproj", "{72BF5C65-4B6D-4A4A-A958-6F64EDD14E65}"
 	ProjectSection(ProjectDependencies) = postProject
-		{A3DA8040-004F-7E7D-D507-1972371079D3} = {A3DA8040-004F-7E7D-D507-1972371079D3}
-		{1342F6A4-878F-08E4-8395-97ABE0F63951} = {1342F6A4-878F-08E4-8395-97ABE0F63951}
-		{D36E44D7-7F8D-5634-618A-301DF919129F} = {D36E44D7-7F8D-5634-618A-301DF919129F}
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6} = {B11F7AFD-04A2-9DCF-266A-B2C0635596D6}
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5} = {C2A54E5B-1934-6130-60AB-A9F878E1E0B5}
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3} = {7CA56168-C6A8-EF88-0933-A195FFAB3AB3}
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413} = {7AA7E617-7D10-BBD8-911D-91670B2F1413}
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B} = {FD66F15B-84F2-B694-7E51-7E25311FDA3B}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "argtable", "third_party\argtable\argtable.vcxproj", "{652CAAA0-2AAC-435C-A1BA-CBD1F5B0945D}"
 		{1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|Win32.Build.0 = Release|Win32
 		{1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|x64.ActiveCfg = Release|x64
 		{1738D5F6-ED1E-47E0-B2F0-456864B93C1E}.Release|x64.Build.0 = Release|x64
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Debug|Win32.Build.0 = Debug|Win32
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Debug|x64.ActiveCfg = Debug|x64
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Debug|x64.Build.0 = Debug|x64
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Release|Win32.ActiveCfg = Release|Win32
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Release|Win32.Build.0 = Release|Win32
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Release|x64.ActiveCfg = Release|x64
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228}.Release|x64.Build.0 = Release|x64
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Debug|Win32.Build.0 = Debug|Win32
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Debug|x64.ActiveCfg = Debug|x64
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Debug|x64.Build.0 = Debug|x64
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Release|Win32.ActiveCfg = Release|Win32
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Release|Win32.Build.0 = Release|Win32
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Release|x64.ActiveCfg = Release|x64
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0}.Release|x64.Build.0 = Release|x64
 		{36A6F338-8651-4F03-9CC7-15D970CED2BE}.Debug|Win32.ActiveCfg = Debug|Win32
 		{36A6F338-8651-4F03-9CC7-15D970CED2BE}.Debug|Win32.Build.0 = Debug|Win32
 		{36A6F338-8651-4F03-9CC7-15D970CED2BE}.Debug|x64.ActiveCfg = Debug|x64
 		{C482DE3A-7E8A-46E3-8808-9AB6B297DBB9}.Release|Win32.Build.0 = Release|Win32
 		{C482DE3A-7E8A-46E3-8808-9AB6B297DBB9}.Release|x64.ActiveCfg = Release|x64
 		{C482DE3A-7E8A-46E3-8808-9AB6B297DBB9}.Release|x64.Build.0 = Release|x64
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Debug|Win32.Build.0 = Debug|Win32
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Debug|x64.ActiveCfg = Debug|x64
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Debug|x64.Build.0 = Debug|x64
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Release|Win32.ActiveCfg = Release|Win32
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Release|Win32.Build.0 = Release|Win32
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Release|x64.ActiveCfg = Release|x64
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754}.Release|x64.Build.0 = Release|x64
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Debug|Win32.Build.0 = Debug|Win32
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Debug|x64.ActiveCfg = Debug|x64
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Debug|x64.Build.0 = Debug|x64
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Release|Win32.ActiveCfg = Release|Win32
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Release|Win32.Build.0 = Release|Win32
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Release|x64.ActiveCfg = Release|x64
-		{1342F6A4-878F-08E4-8395-97ABE0F63951}.Release|x64.Build.0 = Release|x64
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Debug|Win32.Build.0 = Debug|Win32
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Debug|x64.ActiveCfg = Debug|x64
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Debug|x64.Build.0 = Debug|x64
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Release|Win32.ActiveCfg = Release|Win32
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Release|Win32.Build.0 = Release|Win32
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Release|x64.ActiveCfg = Release|x64
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A}.Release|x64.Build.0 = Release|x64
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Debug|Win32.Build.0 = Debug|Win32
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Debug|x64.ActiveCfg = Debug|x64
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Debug|x64.Build.0 = Debug|x64
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Release|Win32.ActiveCfg = Release|Win32
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Release|Win32.Build.0 = Release|Win32
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Release|x64.ActiveCfg = Release|x64
-		{D36E44D7-7F8D-5634-618A-301DF919129F}.Release|x64.Build.0 = Release|x64
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Debug|Win32.Build.0 = Debug|Win32
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Debug|x64.ActiveCfg = Debug|x64
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Debug|x64.Build.0 = Debug|x64
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Release|Win32.ActiveCfg = Release|Win32
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Release|Win32.Build.0 = Release|Win32
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Release|x64.ActiveCfg = Release|x64
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466}.Release|x64.Build.0 = Release|x64
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Debug|Win32.Build.0 = Debug|Win32
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Debug|x64.ActiveCfg = Debug|x64
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Debug|x64.Build.0 = Debug|x64
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Release|Win32.ActiveCfg = Release|Win32
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Release|Win32.Build.0 = Release|Win32
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Release|x64.ActiveCfg = Release|x64
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D}.Release|x64.Build.0 = Release|x64
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Debug|Win32.Build.0 = Debug|Win32
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Debug|x64.ActiveCfg = Debug|x64
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Debug|x64.Build.0 = Debug|x64
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Release|Win32.ActiveCfg = Release|Win32
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Release|Win32.Build.0 = Release|Win32
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Release|x64.ActiveCfg = Release|x64
-		{42EDC447-7082-17F1-A02F-2ED8746669AA}.Release|x64.Build.0 = Release|x64
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Debug|Win32.Build.0 = Debug|Win32
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Debug|x64.ActiveCfg = Debug|x64
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Debug|x64.Build.0 = Debug|x64
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Release|Win32.ActiveCfg = Release|Win32
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Release|Win32.Build.0 = Release|Win32
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Release|x64.ActiveCfg = Release|x64
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6}.Release|x64.Build.0 = Release|x64
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Debug|Win32.Build.0 = Debug|Win32
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Debug|x64.ActiveCfg = Debug|x64
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Debug|x64.Build.0 = Debug|x64
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Release|Win32.ActiveCfg = Release|Win32
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Release|Win32.Build.0 = Release|Win32
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Release|x64.ActiveCfg = Release|x64
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF}.Release|x64.Build.0 = Release|x64
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Debug|Win32.Build.0 = Debug|Win32
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Debug|x64.ActiveCfg = Debug|x64
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Debug|x64.Build.0 = Debug|x64
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Release|Win32.ActiveCfg = Release|Win32
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Release|Win32.Build.0 = Release|Win32
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Release|x64.ActiveCfg = Release|x64
-		{A3DA8040-004F-7E7D-D507-1972371079D3}.Release|x64.Build.0 = Release|x64
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Debug|Win32.Build.0 = Debug|Win32
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Debug|x64.ActiveCfg = Debug|x64
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Debug|x64.Build.0 = Debug|x64
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Release|Win32.ActiveCfg = Release|Win32
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Release|Win32.Build.0 = Release|Win32
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Release|x64.ActiveCfg = Release|x64
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5}.Release|x64.Build.0 = Release|x64
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Debug|Win32.ActiveCfg = Debug|Win32
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Debug|Win32.Build.0 = Debug|Win32
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Debug|x64.ActiveCfg = Debug|x64
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Debug|x64.Build.0 = Debug|x64
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Release|Win32.ActiveCfg = Release|Win32
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Release|Win32.Build.0 = Release|Win32
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Release|x64.ActiveCfg = Release|x64
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154}.Release|x64.Build.0 = Release|x64
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Debug|Win32.Build.0 = Debug|Win32
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Debug|x64.ActiveCfg = Debug|x64
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Debug|x64.Build.0 = Debug|x64
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Release|Win32.ActiveCfg = Release|Win32
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Release|Win32.Build.0 = Release|Win32
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Release|x64.ActiveCfg = Release|x64
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3}.Release|x64.Build.0 = Release|x64
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Debug|Win32.Build.0 = Debug|Win32
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Debug|x64.ActiveCfg = Debug|x64
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Debug|x64.Build.0 = Debug|x64
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Release|Win32.ActiveCfg = Release|Win32
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Release|Win32.Build.0 = Release|Win32
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Release|x64.ActiveCfg = Release|x64
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5}.Release|x64.Build.0 = Release|x64
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Debug|Win32.Build.0 = Debug|Win32
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Debug|x64.ActiveCfg = Debug|x64
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Debug|x64.Build.0 = Debug|x64
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Release|Win32.ActiveCfg = Release|Win32
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Release|Win32.Build.0 = Release|Win32
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Release|x64.ActiveCfg = Release|x64
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413}.Release|x64.Build.0 = Release|x64
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Debug|Win32.Build.0 = Debug|Win32
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Debug|x64.ActiveCfg = Debug|x64
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Debug|x64.Build.0 = Debug|x64
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Release|Win32.ActiveCfg = Release|Win32
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Release|Win32.Build.0 = Release|Win32
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Release|x64.ActiveCfg = Release|x64
+		{CD2F0D49-D275-0094-2034-197A525484C3}.Release|x64.Build.0 = Release|x64
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Debug|Win32.Build.0 = Debug|Win32
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Debug|x64.ActiveCfg = Debug|x64
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Debug|x64.Build.0 = Debug|x64
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Release|Win32.ActiveCfg = Release|Win32
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Release|Win32.Build.0 = Release|Win32
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Release|x64.ActiveCfg = Release|x64
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D}.Release|x64.Build.0 = Release|x64
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Debug|Win32.ActiveCfg = Debug|Win32
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Debug|Win32.Build.0 = Debug|Win32
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Debug|x64.ActiveCfg = Debug|x64
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Debug|x64.Build.0 = Debug|x64
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Release|Win32.ActiveCfg = Release|Win32
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Release|Win32.Build.0 = Release|Win32
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Release|x64.ActiveCfg = Release|x64
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE}.Release|x64.Build.0 = Release|x64
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Debug|Win32.Build.0 = Debug|Win32
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Debug|x64.ActiveCfg = Debug|x64
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Debug|x64.Build.0 = Debug|x64
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Release|Win32.ActiveCfg = Release|Win32
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Release|Win32.Build.0 = Release|Win32
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Release|x64.ActiveCfg = Release|x64
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B}.Release|x64.Build.0 = Release|x64
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Debug|Win32.Build.0 = Debug|Win32
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Debug|x64.ActiveCfg = Debug|x64
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Debug|x64.Build.0 = Debug|x64
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Release|Win32.ActiveCfg = Release|Win32
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Release|Win32.Build.0 = Release|Win32
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Release|x64.ActiveCfg = Release|x64
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3}.Release|x64.Build.0 = Release|x64
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Debug|Win32.Build.0 = Debug|Win32
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Debug|x64.ActiveCfg = Debug|x64
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Debug|x64.Build.0 = Debug|x64
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Release|Win32.ActiveCfg = Release|Win32
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Release|Win32.Build.0 = Release|Win32
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Release|x64.ActiveCfg = Release|x64
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5}.Release|x64.Build.0 = Release|x64
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Debug|Win32.Build.0 = Debug|Win32
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Debug|x64.ActiveCfg = Debug|x64
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Debug|x64.Build.0 = Debug|x64
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Release|Win32.ActiveCfg = Release|Win32
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Release|Win32.Build.0 = Release|Win32
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Release|x64.ActiveCfg = Release|x64
+		{E3A206A3-0944-7FA0-240F-9056B891FD35}.Release|x64.Build.0 = Release|x64
 		{49C9510A-C9BD-4199-9602-A724CC257817}.Debug|Win32.ActiveCfg = Debug|Win32
 		{49C9510A-C9BD-4199-9602-A724CC257817}.Debug|Win32.Build.0 = Debug|Win32
 		{49C9510A-C9BD-4199-9602-A724CC257817}.Debug|x64.ActiveCfg = Debug|x64
 	EndGlobalSection
 	GlobalSection(NestedProjects) = preSolution
 		{C7EBDEED-384A-453D-B21E-18EFFDFD0D1E} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
-		{99F2E5DC-7F2B-4A6C-9567-9616923B46B1} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
+		{3FBB67F0-9977-4AF9-B9C5-DB6DCA407219} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
 		{F12F4A06-F450-4CF4-B699-E29B3F4E90F5} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
 		{318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
 		{CD8488DE-0838-46D1-980C-3E325A7CF560} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
 		{652CAAA0-2AAC-435C-A1BA-CBD1F5B0945D} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
-		{3FBB67F0-9977-4AF9-B9C5-DB6DCA407219} = {E4EA39C2-326B-473E-8DFC-EB8206863544}
 		{3E283F37-A4ED-41B7-A3E6-A2D89D131A30} = {C7EBDEED-384A-453D-B21E-18EFFDFD0D1E}
 		{B84FF31A-5F9A-46F8-AB22-DBFC9BECE3BE} = {C7EBDEED-384A-453D-B21E-18EFFDFD0D1E}
 		{1738D5F6-ED1E-47E0-B2F0-456864B93C1E} = {C7EBDEED-384A-453D-B21E-18EFFDFD0D1E}
-		{1DC41A27-9A43-412D-ABDB-90E6A427A228} = {99F2E5DC-7F2B-4A6C-9567-9616923B46B1}
-		{3D185A1F-893F-43D7-9C0E-84218717FDD0} = {99F2E5DC-7F2B-4A6C-9567-9616923B46B1}
-		{AF6166D9-3EDA-D68D-DE92-F571B2AD1754} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{1342F6A4-878F-08E4-8395-97ABE0F63951} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{12C4DF94-8F2D-02C4-EEED-86D88AF9C42A} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{D36E44D7-7F8D-5634-618A-301DF919129F} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{E1A7C65A-FE0A-CB01-F783-32FCF5147466} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{92496E41-5CB8-08BF-A4D7-23036E57DB8D} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{42EDC447-7082-17F1-A02F-2ED8746669AA} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{B11F7AFD-04A2-9DCF-266A-B2C0635596D6} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{44E8DACE-F6D4-ABC9-5A93-AB0F603D7EDF} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{A3DA8040-004F-7E7D-D507-1972371079D3} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
-		{2535D37F-2DC1-8EFB-AA96-50CCBADD1AE5} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{F261E9F6-67D3-463B-B184-30CC6567B581} = {3FBB67F0-9977-4AF9-B9C5-DB6DCA407219}
+		{7941D140-2260-4136-B2DE-9AE502E3BB3E} = {3FBB67F0-9977-4AF9-B9C5-DB6DCA407219}
+		{76CA0319-C26A-D4FE-43F6-4FF9504F8154} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{7CA56168-C6A8-EF88-0933-A195FFAB3AB3} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{190E0752-D162-A7E7-4C73-6F0B20D9ACA5} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{7AA7E617-7D10-BBD8-911D-91670B2F1413} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{CD2F0D49-D275-0094-2034-197A525484C3} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{70FB04A5-1D51-6DD9-BDBF-D487C7DB965D} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{59A7B82E-729E-95AC-37E3-78E75EE1A7FE} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{FD66F15B-84F2-B694-7E51-7E25311FDA3B} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{90DE2FED-CC0D-808F-D887-B77DCA5BA0E3} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{C2A54E5B-1934-6130-60AB-A9F878E1E0B5} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
+		{E3A206A3-0944-7FA0-240F-9056B891FD35} = {318C7CCA-CB33-4798-BCCE-EBB4ADE05C3C}
 		{49C9510A-C9BD-4199-9602-A724CC257817} = {CD8488DE-0838-46D1-980C-3E325A7CF560}
 		{5F04981B-7F84-4440-8BC3-D250AABDACE0} = {CD8488DE-0838-46D1-980C-3E325A7CF560}
 		{72BF5C65-4B6D-4A4A-A958-6F64EDD14E65} = {CD8488DE-0838-46D1-980C-3E325A7CF560}
 		{D06116E1-FBBB-4C51-995F-48D28C3ED462} = {DF46D82F-C719-4F4A-AFE8-558AD4190C41}
-		{F261E9F6-67D3-463B-B184-30CC6567B581} = {3FBB67F0-9977-4AF9-B9C5-DB6DCA407219}
-		{7941D140-2260-4136-B2DE-9AE502E3BB3E} = {3FBB67F0-9977-4AF9-B9C5-DB6DCA407219}
 	EndGlobalSection
 EndGlobal

gb_emulator/gb_emulator.vcxproj

       <WarningLevel>Level4</WarningLevel>
       <Optimization>Disabled</Optimization>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>DEBUG;ENABLE_SNDFILE_WINDOWS_PROTOTYPES;GB_EMULATOR_EXPORTS;_SCL_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <LargeAddressAware>true</LargeAddressAware>
       <AdditionalLibraryDirectories>$(OutDir);$(SolutionDir)third_party\libsndfile\x86;$(BOOST_ROOT)\lib;$(CG_LIB_PATH);$(DIRECTX_SDK_ROOT)\Lib\x86</AdditionalLibraryDirectories>
-      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11d.lib;dxgi.lib;gb_net.lib;hqx.lib;libprotobuf.lib;libsndfile-1.lib;sdl.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11d.lib;dxgi.lib;gb_net.lib;hqx.lib;libprotobuf.lib;libsndfile-1.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <SubSystem>Windows</SubSystem>
       <ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
     </Link>
       <WarningLevel>Level4</WarningLevel>
       <Optimization>Disabled</Optimization>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>DEBUG;ENABLE_SNDFILE_WINDOWS_PROTOTYPES;GB_EMULATOR_EXPORTS;_SCL_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <LargeAddressAware>true</LargeAddressAware>
       <AdditionalLibraryDirectories>$(OutDir);$(SolutionDir)third_party\libsndfile\x64;$(BOOST_ROOT)\lib64;$(CG_LIB64_PATH);$(DIRECTX_SDK_ROOT)\Lib\x64</AdditionalLibraryDirectories>
-      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11d.lib;dxgi.lib;gb_net.lib;hqx.lib;libprotobuf.lib;libsndfile-1.lib;sdl.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11d.lib;dxgi.lib;gb_net.lib;hqx.lib;libprotobuf.lib;libsndfile-1.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <SubSystem>Windows</SubSystem>
     </Link>
     <PostBuildEvent>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ENABLE_SNDFILE_WINDOWS_PROTOTYPES;GB_EMULATOR_EXPORTS;_SCL_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <OptimizeReferences>true</OptimizeReferences>
       <LargeAddressAware>true</LargeAddressAware>
       <AdditionalLibraryDirectories>$(OutDir);$(SolutionDir)third_party\libsndfile\x86;$(BOOST_ROOT)\lib;$(CG_LIB_PATH);$(DIRECTX_SDK_ROOT)\Lib\x86</AdditionalLibraryDirectories>
-      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11.lib;dxgi.lib;hqx.lib;gb_net.lib;libprotobuf.lib;libsndfile-1.lib;sdl.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11.lib;dxgi.lib;hqx.lib;gb_net.lib;libprotobuf.lib;libsndfile-1.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <SubSystem>Windows</SubSystem>
       <ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
     </Link>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)include;$(SolutionDir)gb_net\include;$(SolutionDir)third_party\hqx\include;$(SolutionDir)third_party\libsndfile\include;$(SolutionDir)third_party\protobuf\src;$(BOOST_ROOT);$(CG_INC_PATH);$(DIRECTX_SDK_ROOT)\Include</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ENABLE_SNDFILE_WINDOWS_PROTOTYPES;GB_EMULATOR_EXPORTS;_SCL_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <OptimizeReferences>true</OptimizeReferences>
       <LargeAddressAware>true</LargeAddressAware>
       <AdditionalLibraryDirectories>$(OutDir);$(SolutionDir)third_party\libsndfile\x64;$(BOOST_ROOT)\lib64;$(CG_LIB64_PATH);$(DIRECTX_SDK_ROOT)\Lib\x64</AdditionalLibraryDirectories>
-      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11.lib;dxgi.lib;hqx.lib;gb_net.lib;libprotobuf.lib;libsndfile-1.lib;sdl.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>cg.lib;cgD3D11.lib;d3dx11.lib;dxgi.lib;hqx.lib;gb_net.lib;libprotobuf.lib;libsndfile-1.lib;XInput.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <SubSystem>Windows</SubSystem>
     </Link>
     <PostBuildEvent>
     <ClCompile Include="src\gb_input.cpp" />
     <ClCompile Include="src\gb_memory.cpp" />
     <ClCompile Include="src\gb_sound.cpp" />
-    <ClCompile Include="src\gb_sound_sdl.cpp" />
     <ClCompile Include="src\gb_sound_wasapi.cpp" />
     <ClCompile Include="src\gb_sound_wasapi_renderer.cpp" />
     <ClCompile Include="src\gb_timers.cpp" />
     <ClCompile Include="src\gb_video.cpp" />
     <ClCompile Include="src\gb_video_d3d11.cpp" />
-    <ClCompile Include="src\gb_video_sdl.cpp" />
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="gb.proto">

gb_emulator/gb_emulator.vcxproj.filters

     <ClCompile Include="src\gb_disassembler.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="src\gb_sound_sdl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="src\gb_sound_wasapi.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="src\gb_sound_wasapi_renderer.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="src\gb_video_sdl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="src\gb_video_d3d11.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>

gb_emulator/include/gb_emulator/gb_sound_sdl.h

-/*  Copyright © 2011 Chris Spencer <spencercw@gmail.com>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef GB_SOUND_SDL_H_706545C0_1824_11E1_A650_0002A5D5C51B
-#define GB_SOUND_SDL_H_706545C0_1824_11E1_A650_0002A5D5C51B
-
-#include <stdint.h>
-
-#include <boost/circular_buffer.hpp>
-
-#include <gb_emulator/gb_sound.h>
-
-//! SDL sound driver.
-class GbSoundSdl: public GbSound
-{
-public:
-	//! Constructor; opens the sound device.
-	GbSoundSdl(Gb &gb);
-
-	//! Indicates whether the audio driver is available.
-	/**
-	 * The implementation for this class always returns \c true.
-	 * \return \c true.
-	 */
-	bool isAvailable()
-	{
-		return true;
-	}
-
-	//! Performs initialisation.
-	/**
-	 * The implementation for this class does nothing.
-	 */
-	void initialise()
-	{
-	}
-
-	//! Generates a single sample.
-	double poll();
-
-	//! Sets the callback function to be called at the given frequency based on the audio clock.
-	void setTimerCallback(double frequency, boost::function<void ()> callback);
-
-private:
-	// Buffer of samples ready to be played
-	boost::circular_buffer<int16_t> soundBuf_;
-
-	// Sound timer callback
-	double callbackSampleRate_;
-	double callbackCountdown_;
-	boost::function<void ()> timerCallback_;
-
-	// Sound callback which copies samples from soundBuf_ into the device buffer
-	static void soundCallback(void *context, uint8_t *stream, int len);
-	void doSoundCallback(uint8_t *stream, int len);
-};
-
-#endif

gb_emulator/include/gb_emulator/gb_video_sdl.h

-/*  Copyright © 2011 Chris Spencer <spencercw@gmail.com>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef GB_VIDEO_SDL_H_75A9CC80_1B63_11E1_B757_0002A5D5C51B
-#define GB_VIDEO_SDL_H_75A9CC80_1B63_11E1_B757_0002A5D5C51B
-
-#include <gb_emulator/gb_config.h>
-#include <gb_emulator/gb_video.h>
-
-struct SDL_Surface;
-
-//! SDL video driver.
-class GbVideoSdl: public GbVideo
-{
-public:
-	//! Constructor; opens the display.
-	/**
-	 * \param gb The emulator context.
-	 * \param renderer The renderer to use. Only software rendering is supported by the SDL driver.
-	 */
-	GbVideoSdl(Gb &gb, GbConfig::Renderer renderer);
-
-
-	//! Indicates whether the video driver is available.
-	/**
-	 * The implementation for this class always returns \c true.
-	 * \return \c true.
-	 */
-	bool isAvailable()
-	{
-		return true;
-	}
-
-	//! Performs initialisation.
-	/**
-	 * The implementation for this class does nothing.
-	 */
-	void initialise()
-	{
-	}
-
-#ifdef _WIN32
-	//! Returns the window handle.
-	HWND window() const;
-#endif
-
-private:
-	SDL_Surface *surface_;
-
-	// Pixel buffers
-	boost::scoped_array<uint32_t> unscaledPixelBuffer_;
-	boost::scoped_array<uint32_t> scaledPixelBuffer_;
-
-	// Redraws the display
-	void draw(uint16_t *pixelBuffer, bool gbc);
-};
-
-#endif

gb_emulator/src/gb.cpp

 #pragma warning(disable: 4355) // 'this' used in base member initializer list
 #endif
 
-#ifdef _MSC_VER
-#pragma warning(push, 0)
-#endif
+#include <iomanip>
+#include <iostream>
+#include <limits>
+#include <math.h>
+#include <sstream>
+#include <stdexcept>
+#include <string>
 
 #include <boost/algorithm/string/predicate.hpp>
 #include <boost/bind.hpp>
 #include <boost/filesystem/fstream.hpp>
 #include <boost/filesystem/operations.hpp>
+
+#ifdef _MSC_VER
+#pragma warning(push, 0)
+#endif
+
 #include <google/protobuf/io/zero_copy_stream_impl.h>
-#include <iomanip>
-#include <iostream>
-#include <limits>
-#include <math.h>
-#include <SDL/SDL.h>
-#include <sstream>
-#include <stdexcept>
-#include <string>
-
 #include "gb.pb.h"
 
 #ifdef _MSC_VER
 #include <gb_emulator/gb_config.h>
 #include <gb_emulator/gb_input.h>
 #include <gb_emulator/gb_memory.h>
-#include <gb_emulator/gb_sound_sdl.h>
 #include <gb_emulator/gb_sound_wasapi.h>
 #include <gb_emulator/gb_video_d3d11.h>
-#include <gb_emulator/gb_video_sdl.h>
 
 namespace fs = boost::filesystem;
 namespace pb = google::protobuf;
 		installDir_.remove_filename();
 	}
 
-	// Initialise SDL. Individual sub-systems are initialised by the relevant classes
-	if (SDL_Init(SDL_INIT_NOPARACHUTE))
-	{
-		throw runtime_error(string("failed to initialise SDL: ") + SDL_GetError());
-	}
-
 	// Perform sub-system initialisation
 	// Audio
 	switch (config.audioDriver)
 	case GbConfig::AUDIO_WASAPI:
 		clog << "loading WASAPI audio driver\n";
 		sound_.reset(new GbSoundWasapi(*this));
-		if (sound_->isAvailable())
+		if (!sound_->isAvailable())
 		{
-			break;
+			throw runtime_error("WASAPI is not available on this system");
 		}
-		else
-		{
-			// WASAPI is not available; fall through to SDL
-			clog << "WASAPI is not available on this system...\n";
-		}
-
-	case GbConfig::AUDIO_SDL:
-		clog << "loading SDL audio driver\n";
-		sound_.reset(new GbSoundSdl(*this));
 		break;
 
 	default:
 	case GbConfig::VIDEO_D3D11:
 		clog << "loading Direct3D 11 video driver\n";
 		video_.reset(new GbVideoD3D11(*this, config.renderer, installDir_));
-		if (video_->isAvailable())
+		if (!video_->isAvailable())
 		{
-			break;
+			throw runtime_error("Direct3D 11 is not available on this system");
 		}
-		else
-		{
-			// Direct3D 11 is not available; fall through to SDL
-			clog << "Direct3D 11 is not available on this system...\n";
-		}
-
-	case GbConfig::VIDEO_SDL:
-		clog << "loading SDL video driver\n";
-		video_.reset(new GbVideoSdl(*this, config.renderer));
 		break;
 
 	default:

gb_emulator/src/gb_sound_sdl.cpp

-/*  Copyright � 2011 Chris Spencer <spencercw@gmail.com>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <gb_emulator/gb_sound_sdl.h>
-
-#include <algorithm>
-#include <stdexcept>
-#include <string>
-
-#ifdef _MSC_VER
-#pragma warning(push, 0)
-#endif
-
-#include <SDL/SDL.h>
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#include <gb_emulator/gb.h>
-
-using boost::circular_buffer;
-using std::min;
-using std::runtime_error;
-using std::string;
-
-static const unsigned SOUND_BUF_SIZE = 8192;
-
-struct SdlAudioLock
-{
-	SdlAudioLock()
-	{
-		SDL_LockAudio();
-	}
-	~SdlAudioLock()
-	{
-		SDL_UnlockAudio();
-	}
-};
-
-GbSoundSdl::GbSoundSdl(Gb &gb):
-GbSound(gb),
-soundBuf_(SOUND_BUF_SIZE)
-{
-	// Open the device
-	if (!SDL_WasInit(SDL_INIT_AUDIO))
-	{
-		SDL_InitSubSystem(SDL_INIT_AUDIO);
-	}
-
-	SDL_AudioSpec fmt, actFmt;
-	fmt.freq = 48000;
-	fmt.format = AUDIO_S16;
-	fmt.channels = 2;
-	fmt.samples = 512;
-	fmt.callback = soundCallback;
-	fmt.userdata = this;
-
-	if (SDL_OpenAudio(&fmt, &actFmt) < 0)
-	{
-		throw runtime_error(string("failed to open audio device: ") + SDL_GetError());
-	}
-
-	// Save the sample rate and begin playback
-	sampleRate_ = actFmt.freq;
-	sampleCycles_ = static_cast<double>(CPU_CLOCK) / sampleRate_;
-
-	SDL_PauseAudio(0);
-}
-
-double GbSoundSdl::poll()
-{
-	// Generate the sample
-	double left, right;
-	generateSample(left, right);
-
-	// Add the sample to the buffer to be played back
-	{
-		SdlAudioLock lock;
-		soundBuf_.push_back(static_cast<int16_t>(left  * 0x8000));
-		soundBuf_.push_back(static_cast<int16_t>(right * 0x8000));
-	}
-
-	// Return the number of cycles to execute before being called again
-	return GbSound::poll();
-}
-
-void GbSoundSdl::setTimerCallback(double frequency, boost::function<void ()> callback)
-{
-	callbackSampleRate_ = sampleRate_ * (1 / frequency);
-	callbackCountdown_ = callbackSampleRate_;
-	timerCallback_ = callback;
-}
-
-void GbSoundSdl::soundCallback(void *context, uint8_t *stream, int len)
-{
-	GbSoundSdl *parent = static_cast<GbSoundSdl *>(context);
-	parent->doSoundCallback(stream, len);
-}
-
-void GbSoundSdl::doSoundCallback(uint8_t *stream, int len)
-{
-	size_t frames = len / 4;
-
-	// Call the timer callback
-	if (timerCallback_)
-	{
-		callbackCountdown_ -= frames;
-		while (callbackCountdown_ <= 0)
-		{
-			timerCallback_();
-			callbackCountdown_ += callbackSampleRate_;
-		}
-	}
-
-	// Copy the sound into the SDL buffer
-	size_t remaining = frames * 2;
-	size_t consumed = 0;
-	circular_buffer<int16_t>::array_range range1 = soundBuf_.array_one();
-	if (range1.second)
- 	{
-		size_t samples = (min)(remaining, range1.second);
-		memcpy(stream, range1.first, samples * 2);
-		remaining -= samples;
-		consumed  += samples;
-
-		if (remaining)
-		{
-			circular_buffer<int16_t>::array_range range2 = soundBuf_.array_two();
-			if (range2.second)
-			{
-				samples = (min)(remaining, range2.second);
-				memcpy(&stream[consumed * 2], range2.first, samples * 2);
-				remaining -= samples;
-				consumed  += samples;
-			}
-		}
-
-		soundBuf_.erase_begin(consumed);
-	}
-}

gb_emulator/src/gb_video_sdl.cpp

-/*  Copyright © 2011 Chris Spencer <spencercw@gmail.com>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include <gb_emulator/gb_video_sdl.h>
-
-#include <stdexcept>
-#include <string>
-
-#ifdef _MSC_VER
-#pragma warning(push, 0)
-#endif
-
-#include <SDL/SDL.h>
-#include <SDL/SDL_syswm.h>
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#include <hqx.h>
-
-using std::logic_error;
-using std::runtime_error;
-using std::string;
-
-class SdlVideoLock
-{
-public:
-	SdlVideoLock(SDL_Surface *surface):
-	surface_(surface)
-	{
-		if (SDL_MUSTLOCK(surface_))
-		{
-			if (!SDL_LockSurface(surface_))
-			{
-				throw runtime_error(string("failed to lock video surface: ") + SDL_GetError());
-			}
-			locked_ = true;
-		}
-		else
-		{
-			locked_ = false;
-		}
-	}
-
-	~SdlVideoLock()
-	{
-		if (locked_)
-		{
-			SDL_UnlockSurface(surface_);
-		}
-	}
-
-private:
-	SDL_Surface *surface_;
-	bool locked_;
-};
-
-GbVideoSdl::GbVideoSdl(Gb &gb, GbConfig::Renderer renderer):
-GbVideo(gb),
-unscaledPixelBuffer_(new uint32_t[WIDTH * HEIGHT]),
-scaledPixelBuffer_(new uint32_t[SCALED_WIDTH * SCALED_HEIGHT])
-{
-	// Check the rendering method
-	if (renderer != GbConfig::RENDER_DEFAULT && renderer != GbConfig::RENDER_SOFTWARE)
-	{
-		throw logic_error("unsupported rendering method");
-	}
-
-	// Create the display
-	if (!SDL_WasInit(SDL_INIT_VIDEO))
-	{
-		SDL_InitSubSystem(SDL_INIT_VIDEO);
-	}
-
-	surface_ = SDL_SetVideoMode(SCALED_WIDTH, SCALED_HEIGHT, 32, SDL_SWSURFACE);
-	if (!surface_)
-	{
-		throw runtime_error(string("failed to create video surface: ") + SDL_GetError());
-	}
-}
-
-#ifdef _WIN32
-HWND GbVideoSdl::window() const
-{
-	SDL_SysWMinfo info;
-	SDL_VERSION(&info.version);
-	if (SDL_GetWMInfo(&info) != 1)
-	{
-		throw runtime_error("failed to get window information");
-	}
-	return info.window;
-}
-#endif
-
-void GbVideoSdl::draw(uint16_t *pixelBuffer, bool gbc)
-{
-	// Perform colour correction and image scaling in software
-	postProcess(pixelBuffer, gbc, unscaledPixelBuffer_.get(), scaledPixelBuffer_.get());
-
-	// Update the display
-	SdlVideoLock lock(surface_);
-	memcpy(surface_->pixels, scaledPixelBuffer_.get(),
-		SCALED_WIDTH * SCALED_HEIGHT * sizeof(uint32_t));
-	SDL_UpdateRect(surface_, 0, 0, 0, 0);
-}

gb_emulator_main/gb_emulator_main.vcxproj

       <WarningLevel>Level4</WarningLevel>
       <Optimization>Disabled</Optimization>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>argtable.lib;gb_emulator.lib;sdl.lib;sdl_main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>argtable.lib;gb_emulator.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OutDir);$(BOOST_ROOT)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Windows</SubSystem>
       <LargeAddressAware>true</LargeAddressAware>
       <WarningLevel>Level4</WarningLevel>
       <Optimization>Disabled</Optimization>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>argtable.lib;gb_emulator.lib;sdl.lib;sdl_main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>argtable.lib;gb_emulator.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OutDir);$(BOOST_ROOT)\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Windows</SubSystem>
       <LargeAddressAware>true</LargeAddressAware>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <TreatWarningAsError>true</TreatWarningAsError>
-      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(SolutionDir)third_party\sdl\include;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>$(SolutionDir)gb_emulator\include;$(SolutionDir)third_party\argtable\src;$(BOOST_ROOT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;_WIN32_WINNT=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>