[Scummvm-git-logs] scummvm master -> b7961325de5c88e03380d653943305f038ca1b85

bluegr noreply at scummvm.org
Thu Apr 2 00:21:58 UTC 2026


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
c578867ebd NANCY: Implement changes in PlaySecondaryMovie for Nancy10+
0a6173abb3 BUILD: Update the ideprojects target to create project files for VS2026
b7961325de DISTS: Update the generated MSVC project files to VS2026


Commit: c578867ebd41ca178d7d529ee5a1bdf24b5d0b47
    https://github.com/scummvm/scummvm/commit/c578867ebd41ca178d7d529ee5a1bdf24b5d0b47
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-02T03:21:23+03:00

Commit Message:
NANCY: Implement changes in PlaySecondaryMovie for Nancy10+

Nancy11 progresses to the main game scene now

Changed paths:
    engines/nancy/action/secondarymovie.cpp


diff --git a/engines/nancy/action/secondarymovie.cpp b/engines/nancy/action/secondarymovie.cpp
index 19273fd2431..8059bb28d58 100644
--- a/engines/nancy/action/secondarymovie.cpp
+++ b/engines/nancy/action/secondarymovie.cpp
@@ -51,14 +51,14 @@ void PlaySecondaryMovie::readData(Common::SeekableReadStream &stream) {
 
 	readFilename(ser, _videoName);
 	readFilename(ser, _paletteName, kGameTypeVampire, kGameTypeVampire);
-	readFilename(ser, _bitmapOverlayName);
+	readFilename(ser, _bitmapOverlayName, kGameTypeVampire, kGameTypeNancy9);
 
 	ser.syncAsUint16LE(_videoType, kGameTypeNancy7);
-	ser.skip(2); // videoPlaySource
+	ser.skip(2, kGameTypeVampire, kGameTypeNancy9); // videoPlaySource
 	ser.syncAsUint16LE(_videoFormat);
 	ser.skip(4, kGameTypeVampire, kGameTypeVampire); // paletteStart, paletteSize
-	ser.skip(2); // hasBitmapOverlaySurface
-	ser.skip(2); // VIDEO_STOP_RENDERING, VIDEO_CONTINUE_RENDERING
+	ser.skip(2, kGameTypeVampire, kGameTypeNancy9);  // hasBitmapOverlaySurface
+	ser.skip(2, kGameTypeVampire, kGameTypeNancy9);  // VIDEO_STOP_RENDERING, VIDEO_CONTINUE_RENDERING
 
 	ser.syncAsUint16LE(_videoSceneChange);
 	ser.syncAsUint16LE(_playerCursorAllowed);
@@ -66,18 +66,28 @@ void PlaySecondaryMovie::readData(Common::SeekableReadStream &stream) {
 	ser.syncAsUint16LE(_firstFrame);
 	ser.syncAsUint16LE(_lastFrame);
 
+	ser.syncAsSint16LE(_sceneChange.sceneID, kGameTypeNancy10);
+	ser.skip(5 * 2, kGameTypeNancy10);	// TODO
+
 	if (ser.getVersion() >= kGameTypeNancy1) {
-		_frameFlags.resize(15);
-		for (uint i = 0; i < 15; ++i) {
+		uint size = 15;
+		
+		if (ser.getVersion() >= kGameTypeNancy10)
+			ser.syncAsUint16LE(size);
+
+		_frameFlags.resize(size);
+		for (uint i = 0; i < size; ++i) {
 			ser.syncAsSint16LE(_frameFlags[i].frameID);
 			ser.syncAsSint16LE(_frameFlags[i].flagDesc.label);
 			ser.syncAsUint16LE(_frameFlags[i].flagDesc.flag);
 		}
 	}
 
-	_triggerFlags.readData(stream);
-	_sound.readNormal(stream);
-	_sceneChange.readData(stream, ser.getVersion() == kGameTypeVampire);
+	if (ser.getVersion() <= kGameTypeNancy9) {
+		_triggerFlags.readData(stream);
+		_sound.readNormal(stream);
+		_sceneChange.readData(stream, ser.getVersion() == kGameTypeVampire);
+	}
 
 	uint16 numVideoDescs = 0;
 	ser.syncAsUint16LE(numVideoDescs);


Commit: 0a6173abb341aabe34e9a76e23ce445feb1c2b84
    https://github.com/scummvm/scummvm/commit/0a6173abb341aabe34e9a76e23ce445feb1c2b84
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-02T03:21:23+03:00

Commit Message:
BUILD: Update the ideprojects target to create project files for VS2026

Previously, we were generating project files for VS2015, which is an
ancient version

Changed paths:
    ports.mk


diff --git a/ports.mk b/ports.mk
index f0bbe00e184..3090fbce975 100644
--- a/ports.mk
+++ b/ports.mk
@@ -717,7 +717,7 @@ endif
 	@echo Creating Code::Blocks project files...
 	@cd $(srcdir)/dists/codeblocks && $(PWD)/devtools/create_project/create_project ../.. --codeblocks >/dev/null && git add -f engines/*.h *.workspace *.cbp
 	@echo Creating MSVC project files...
-	@cd $(srcdir)/dists/msvc && $(PWD)/devtools/create_project/create_project ../.. --msvc-version 14 --msvc >/dev/null && git add -f engines/*.h *.sln *.vcxproj *.vcxproj.filters *.props
+	@cd $(srcdir)/dists/msvc && $(PWD)/devtools/create_project/create_project ../.. --msvc-version 18 --msvc >/dev/null && git add -f engines/*.h *.sln *.vcxproj *.vcxproj.filters *.props
 	@echo
 	@echo All is done.
 	@echo Now run


Commit: b7961325de5c88e03380d653943305f038ca1b85
    https://github.com/scummvm/scummvm/commit/b7961325de5c88e03380d653943305f038ca1b85
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-04-02T03:21:24+03:00

Commit Message:
DISTS: Update the generated MSVC project files to VS2026

Changed paths:
    dists/msvc/ScummVM_ASanarm64.props
    dists/msvc/ScummVM_ASanx64.props
    dists/msvc/ScummVM_ASanx86.props
    dists/msvc/ScummVM_Debugarm64.props
    dists/msvc/ScummVM_Debugx64.props
    dists/msvc/ScummVM_Debugx86.props
    dists/msvc/ScummVM_Globalarm64.props
    dists/msvc/ScummVM_Globalx64.props
    dists/msvc/ScummVM_Globalx86.props
    dists/msvc/ScummVM_LLVMarm64.props
    dists/msvc/ScummVM_LLVMx64.props
    dists/msvc/ScummVM_LLVMx86.props
    dists/msvc/ScummVM_Releasearm64.props
    dists/msvc/ScummVM_Releasex64.props
    dists/msvc/ScummVM_Releasex86.props
    dists/msvc/access.vcxproj
    dists/msvc/access.vcxproj.filters
    dists/msvc/adl.vcxproj
    dists/msvc/agi.vcxproj
    dists/msvc/agi.vcxproj.filters
    dists/msvc/agos.vcxproj
    dists/msvc/agos.vcxproj.filters
    dists/msvc/ags.vcxproj
    dists/msvc/ags.vcxproj.filters
    dists/msvc/alcachofa.vcxproj
    dists/msvc/alg.vcxproj
    dists/msvc/alg.vcxproj.filters
    dists/msvc/asylum.vcxproj
    dists/msvc/asylum.vcxproj.filters
    dists/msvc/awe.vcxproj
    dists/msvc/bagel.vcxproj
    dists/msvc/bagel.vcxproj.filters
    dists/msvc/bbvs.vcxproj
    dists/msvc/bbvs.vcxproj.filters
    dists/msvc/bladerunner.vcxproj
    dists/msvc/bladerunner.vcxproj.filters
    dists/msvc/buried.vcxproj
    dists/msvc/buried.vcxproj.filters
    dists/msvc/cge.vcxproj
    dists/msvc/cge2.vcxproj
    dists/msvc/chewy.vcxproj
    dists/msvc/chewy.vcxproj.filters
    dists/msvc/cine.vcxproj
    dists/msvc/composer.vcxproj
    dists/msvc/crab.vcxproj
    dists/msvc/crab.vcxproj.filters
    dists/msvc/cruise.vcxproj
    dists/msvc/cryomni3d.vcxproj
    dists/msvc/cryomni3d.vcxproj.filters
    dists/msvc/darkseed.vcxproj
    dists/msvc/dgds.vcxproj
    dists/msvc/dgds.vcxproj.filters
    dists/msvc/director.vcxproj
    dists/msvc/director.vcxproj.filters
    dists/msvc/draci.vcxproj
    dists/msvc/dragons.vcxproj
    dists/msvc/drascula.vcxproj
    dists/msvc/dreamweb.vcxproj
    dists/msvc/efh.vcxproj
    dists/msvc/engines/detection_table.h
    dists/msvc/engines/plugins_table.h
    dists/msvc/freescape.vcxproj
    dists/msvc/freescape.vcxproj.filters
    dists/msvc/glk.vcxproj
    dists/msvc/glk.vcxproj.filters
    dists/msvc/gnap.vcxproj
    dists/msvc/gnap.vcxproj.filters
    dists/msvc/gob.vcxproj
    dists/msvc/gob.vcxproj.filters
    dists/msvc/got.vcxproj
    dists/msvc/got.vcxproj.filters
    dists/msvc/griffon.vcxproj
    dists/msvc/grim.vcxproj
    dists/msvc/grim.vcxproj.filters
    dists/msvc/groovie.vcxproj
    dists/msvc/groovie.vcxproj.filters
    dists/msvc/hadesch.vcxproj
    dists/msvc/hadesch.vcxproj.filters
    dists/msvc/hdb.vcxproj
    dists/msvc/hopkins.vcxproj
    dists/msvc/hugo.vcxproj
    dists/msvc/hypno.vcxproj
    dists/msvc/hypno.vcxproj.filters
    dists/msvc/illusions.vcxproj
    dists/msvc/illusions.vcxproj.filters
    dists/msvc/kingdom.vcxproj
    dists/msvc/kyra.vcxproj
    dists/msvc/kyra.vcxproj.filters
    dists/msvc/lab.vcxproj
    dists/msvc/lastexpress.vcxproj
    dists/msvc/lastexpress.vcxproj.filters
    dists/msvc/lure.vcxproj
    dists/msvc/m4.vcxproj
    dists/msvc/m4.vcxproj.filters
    dists/msvc/made.vcxproj
    dists/msvc/mads.vcxproj
    dists/msvc/mads.vcxproj.filters
    dists/msvc/mm.vcxproj
    dists/msvc/mm.vcxproj.filters
    dists/msvc/mohawk.vcxproj
    dists/msvc/mohawk.vcxproj.filters
    dists/msvc/mortevielle.vcxproj
    dists/msvc/mtropolis.vcxproj
    dists/msvc/mtropolis.vcxproj.filters
    dists/msvc/myst3.vcxproj
    dists/msvc/nancy.vcxproj
    dists/msvc/nancy.vcxproj.filters
    dists/msvc/neverhood.vcxproj
    dists/msvc/neverhood.vcxproj.filters
    dists/msvc/ngi.vcxproj
    dists/msvc/ngi.vcxproj.filters
    dists/msvc/parallaction.vcxproj
    dists/msvc/pegasus.vcxproj
    dists/msvc/pegasus.vcxproj.filters
    dists/msvc/petka.vcxproj
    dists/msvc/petka.vcxproj.filters
    dists/msvc/pink.vcxproj
    dists/msvc/pink.vcxproj.filters
    dists/msvc/plumbers.vcxproj
    dists/msvc/prince.vcxproj
    dists/msvc/private.vcxproj
    dists/msvc/qdengine.vcxproj
    dists/msvc/qdengine.vcxproj.filters
    dists/msvc/queen.vcxproj
    dists/msvc/saga.vcxproj
    dists/msvc/saga2.vcxproj
    dists/msvc/sci.vcxproj
    dists/msvc/sci.vcxproj.filters
    dists/msvc/scumm.vcxproj
    dists/msvc/scumm.vcxproj.filters
    dists/msvc/scummvm-detection.vcxproj
    dists/msvc/scummvm-detection.vcxproj.filters
    dists/msvc/scummvm.sln
    dists/msvc/scummvm.vcxproj
    dists/msvc/scummvm.vcxproj.filters
    dists/msvc/sherlock.vcxproj
    dists/msvc/sherlock.vcxproj.filters
    dists/msvc/sky.vcxproj
    dists/msvc/sky.vcxproj.filters
    dists/msvc/sludge.vcxproj
    dists/msvc/stark.vcxproj
    dists/msvc/stark.vcxproj.filters
    dists/msvc/supernova.vcxproj
    dists/msvc/supernova.vcxproj.filters
    dists/msvc/sword1.vcxproj
    dists/msvc/sword2.vcxproj
    dists/msvc/sword25.vcxproj
    dists/msvc/sword25.vcxproj.filters
    dists/msvc/teenagent.vcxproj
    dists/msvc/tetraedge.vcxproj
    dists/msvc/tetraedge.vcxproj.filters
    dists/msvc/tinsel.vcxproj
    dists/msvc/tinsel.vcxproj.filters
    dists/msvc/titanic.vcxproj
    dists/msvc/titanic.vcxproj.filters
    dists/msvc/toltecs.vcxproj
    dists/msvc/tony.vcxproj
    dists/msvc/tony.vcxproj.filters
    dists/msvc/toon.vcxproj
    dists/msvc/tot.vcxproj
    dists/msvc/tot.vcxproj.filters
    dists/msvc/touche.vcxproj
    dists/msvc/trecision.vcxproj
    dists/msvc/tsage.vcxproj
    dists/msvc/tsage.vcxproj.filters
    dists/msvc/tucker.vcxproj
    dists/msvc/twine.vcxproj
    dists/msvc/twine.vcxproj.filters
    dists/msvc/twp.vcxproj
    dists/msvc/twp.vcxproj.filters
    dists/msvc/ultima.vcxproj
    dists/msvc/ultima.vcxproj.filters
    dists/msvc/vcruise.vcxproj
    dists/msvc/voyeur.vcxproj
    dists/msvc/wage.vcxproj
    dists/msvc/wintermute.vcxproj
    dists/msvc/wintermute.vcxproj.filters
    dists/msvc/zvision.vcxproj
    dists/msvc/zvision.vcxproj.filters


diff --git a/dists/msvc/ScummVM_ASanarm64.props b/dists/msvc/ScummVM_ASanarm64.props
index 8d88a0e13a8..32aecfc9042 100644
--- a/dists/msvc/ScummVM_ASanarm64.props
+++ b/dists/msvc/ScummVM_ASanarm64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalarm64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_ASanx64.props b/dists/msvc/ScummVM_ASanx64.props
index 8c898d2c763..5b6a4196e7d 100644
--- a/dists/msvc/ScummVM_ASanx64.props
+++ b/dists/msvc/ScummVM_ASanx64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_ASanx86.props b/dists/msvc/ScummVM_ASanx86.props
index 2dbf09908f7..3aa48f49858 100644
--- a/dists/msvc/ScummVM_ASanx86.props
+++ b/dists/msvc/ScummVM_ASanx86.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx86.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Debugarm64.props b/dists/msvc/ScummVM_Debugarm64.props
index abcaf23b955..0c6fa6a8e88 100644
--- a/dists/msvc/ScummVM_Debugarm64.props
+++ b/dists/msvc/ScummVM_Debugarm64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalarm64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Debugx64.props b/dists/msvc/ScummVM_Debugx64.props
index faed2211573..52d7b95abb7 100644
--- a/dists/msvc/ScummVM_Debugx64.props
+++ b/dists/msvc/ScummVM_Debugx64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Debugx86.props b/dists/msvc/ScummVM_Debugx86.props
index 2728573d26e..f32b72c713f 100644
--- a/dists/msvc/ScummVM_Debugx86.props
+++ b/dists/msvc/ScummVM_Debugx86.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx86.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Globalarm64.props b/dists/msvc/ScummVM_Globalarm64.props
index 9e194f1bebc..ed184e761e3 100644
--- a/dists/msvc/ScummVM_Globalarm64.props
+++ b/dists/msvc/ScummVM_Globalarm64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<PropertyGroup>
 		<_PropertySheetDisplayName>ScummVM_Global</_PropertySheetDisplayName>
 		<OutDir>$(Configuration)arm64\</OutDir>
@@ -13,13 +13,14 @@
 			<PreprocessorDefinitions>USE_ZLIB;USE_MAD;USE_FRIBIDI;USE_OGG;USE_VORBIS;USE_FLAC;USE_PNG;USE_MPEG2;USE_THEORADEC;USE_FREETYPE2;USE_JPEG;USE_FLUIDSYNTH;USE_LIBCURL;USE_SDL_NET;USE_BINK;USE_SCALERS;USE_HQ_SCALERS;USE_EDGE_SCALERS;USE_ASPECT;USE_RGB_COLOR;USE_HIGHRES;USE_MT32EMU;USE_OPENGL;USE_OPENGL_GAME;USE_OPENGL_SHADERS;USE_TINYGL;USE_TASKBAR;USE_HTTP;USE_BASIC_NET;USE_CLOUD;USE_ENET;USE_TRANSLATION;USE_SYSTEM_PRINTING;USE_SYSDIALOGS;USE_DETECTLANG;USE_TTS;BUILTIN_RESOURCES;DETECTION_FULL;USE_DETECTION_FEATURES_STATIC;USE_FMTOWNS_PC98_AUDIO;USE_HNM;USE_IMGUI;USE_INDEO3;USE_INDEO45;USE_JYV1;USE_LUA;USE_MFC;USE_MIDI;USE_QDM2;USE_SID_AUDIO;USE_SVQ1;USE_TRUEMOTION1;USE_UNIVERSALTRACKER;USE_VGMTRANS_AUDIO;USE_XAN;ENABLE_SCUMM;ENABLE_SCUMM_7_8;ENABLE_HE;ENABLE_ACCESS;ENABLE_ADL;ENABLE_AGI;ENABLE_AGOS;ENABLE_AGOS2;ENABLE_AGS;ENABLE_ALCACHOFA;ENABLE_ALG;ENABLE_ASYLUM;ENABLE_AWE;ENABLE_BAGEL;ENABLE_BBVS;ENABLE_BLADERUNNER;ENABLE_BURIED;ENABLE_CGE;ENABLE_CGE2;ENABLE_CHEWY;ENABLE_CINE;ENABLE_COMPOSER;ENABLE_CRAB;ENABLE_CRUISE;ENABLE_CRYOMNI3D;ENABLE_VERSAILLES;ENABLE_DARKSEED;ENABLE_DGDS;ENABLE_DIRECTOR;ENABLE_DRACI;ENABLE_DRAGONS;ENABLE_DRASCULA;ENABLE_DREAMWEB;ENABLE_EFH;ENABLE_FREESCAPE;ENABLE_GLK;ENABLE_GNAP;ENABLE_GOB;ENABLE_GOT;ENABLE_GRIFFON;ENABLE_GRIM;ENABLE_GROOVIE;ENABLE_GROOVIE2;ENABLE_HADESCH;ENABLE_HDB;ENABLE_HOPKINS;ENABLE_HUGO;ENABLE_HYPNO;ENABLE_ILLUSIONS;ENABLE_KINGDOM;ENABLE_KYRA;ENABLE_LOL;ENABLE_EOB;ENABLE_LAB;ENABLE_LASTEXPRESS;ENABLE_LURE;ENABLE_M4;ENABLE_MADE;ENABLE_MADS;ENABLE_MM;ENABLE_MM1;ENABLE_XEEN;ENABLE_MOHAWK;ENABLE_RIVEN;ENABLE_MYST;ENABLE_MYSTME;ENABLE_MORTEVIELLE;ENABLE_MTROPOLIS;ENABLE_MYST3;ENABLE_NANCY;ENABLE_NEVERHOOD;ENABLE_NGI;ENABLE_PARALLACTION;ENABLE_PEGASUS;ENABLE_PETKA;ENABLE_PINK;ENABLE_PLUMBERS;ENABLE_PRINCE;ENABLE_PRIVATE;ENABLE_QDENGINE;ENABLE_QUEEN;ENABLE_SAGA;ENABLE_IHNM;ENABLE_SAGA2;ENABLE_SCI;ENABLE_SCI32;ENABLE_SHERLOCK;ENABLE_SKY;ENABLE_SLUDGE;ENABLE_STARK;ENABLE_SUPERNOVA;ENABLE_SWORD1;ENABLE_SWORD2;ENABLE_SWORD25;ENABLE_TEENAGENT;ENABLE_TETRAEDGE;ENABLE_TINSEL;ENABLE_TITANIC;ENABLE_TOLTECS;ENABLE_TONY;ENABLE_TOON;ENABLE_TOT;ENABLE_TOUCHE;ENABLE_TRECISION;ENABLE_TSAGE;ENABLE_RINGWORLD;ENABLE_BLUEFORCE;ENABLE_RINGWORLD2;ENABLE_TUCKER;ENABLE_TWINE;ENABLE_TWP;ENABLE_ULTIMA;ENABLE_ULTIMA4;ENABLE_ULTIMA6;ENABLE_ULTIMA8;ENABLE_VCRUISE;ENABLE_VOYEUR;ENABLE_WAGE;ENABLE_WINTERMUTE;ENABLE_WME3D;ENABLE_FOXTAIL;ENABLE_HEROCRAFT;ENABLE_ZVISION;WIN32;CURL_STATICLIB;SDL_BACKEND;USE_SDL2;DETECTION_STATIC;USE_GLAD;USE_IMGUI_SDLRENDERER2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<ExceptionHandling></ExceptionHandling>
 			<RuntimeTypeInfo>true</RuntimeTypeInfo>
+			<DiagnosticsFormat>Caret</DiagnosticsFormat>
 			<WarningLevel>Level4</WarningLevel>
 			<TreatWarningAsError>false</TreatWarningAsError>
 			<CompileAs>Default</CompileAs>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
 			<ConformanceMode>true</ConformanceMode>
 			<ObjectFileName>$(IntDir)dists\msvc\%(RelativeDir)</ObjectFileName>
-			<AdditionalOptions>/utf-8 /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions>/utf-8 /Zc:__cplusplus /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
 		</ClCompile>
 		<Link>
 			<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
diff --git a/dists/msvc/ScummVM_Globalx64.props b/dists/msvc/ScummVM_Globalx64.props
index f8ab576889d..9d53138635d 100644
--- a/dists/msvc/ScummVM_Globalx64.props
+++ b/dists/msvc/ScummVM_Globalx64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<PropertyGroup>
 		<_PropertySheetDisplayName>ScummVM_Global</_PropertySheetDisplayName>
 		<OutDir>$(Configuration)x64\</OutDir>
@@ -13,13 +13,14 @@
 			<PreprocessorDefinitions>USE_ZLIB;USE_MAD;USE_FRIBIDI;USE_OGG;USE_VORBIS;USE_FLAC;USE_PNG;USE_MPEG2;USE_THEORADEC;USE_FREETYPE2;USE_JPEG;USE_FLUIDSYNTH;USE_LIBCURL;USE_SDL_NET;USE_BINK;USE_SCALERS;USE_HQ_SCALERS;USE_EDGE_SCALERS;USE_ASPECT;USE_RGB_COLOR;USE_HIGHRES;USE_MT32EMU;USE_OPENGL;USE_OPENGL_GAME;USE_OPENGL_SHADERS;USE_TINYGL;USE_TASKBAR;USE_HTTP;USE_BASIC_NET;USE_CLOUD;USE_ENET;USE_TRANSLATION;USE_SYSTEM_PRINTING;USE_SYSDIALOGS;USE_DETECTLANG;USE_TTS;BUILTIN_RESOURCES;DETECTION_FULL;USE_DETECTION_FEATURES_STATIC;USE_FMTOWNS_PC98_AUDIO;USE_HNM;USE_IMGUI;USE_INDEO3;USE_INDEO45;USE_JYV1;USE_LUA;USE_MFC;USE_MIDI;USE_QDM2;USE_SID_AUDIO;USE_SVQ1;USE_TRUEMOTION1;USE_UNIVERSALTRACKER;USE_VGMTRANS_AUDIO;USE_XAN;ENABLE_SCUMM;ENABLE_SCUMM_7_8;ENABLE_HE;ENABLE_ACCESS;ENABLE_ADL;ENABLE_AGI;ENABLE_AGOS;ENABLE_AGOS2;ENABLE_AGS;ENABLE_ALCACHOFA;ENABLE_ALG;ENABLE_ASYLUM;ENABLE_AWE;ENABLE_BAGEL;ENABLE_BBVS;ENABLE_BLADERUNNER;ENABLE_BURIED;ENABLE_CGE;ENABLE_CGE2;ENABLE_CHEWY;ENABLE_CINE;ENABLE_COMPOSER;ENABLE_CRAB;ENABLE_CRUISE;ENABLE_CRYOMNI3D;ENABLE_VERSAILLES;ENABLE_DARKSEED;ENABLE_DGDS;ENABLE_DIRECTOR;ENABLE_DRACI;ENABLE_DRAGONS;ENABLE_DRASCULA;ENABLE_DREAMWEB;ENABLE_EFH;ENABLE_FREESCAPE;ENABLE_GLK;ENABLE_GNAP;ENABLE_GOB;ENABLE_GOT;ENABLE_GRIFFON;ENABLE_GRIM;ENABLE_GROOVIE;ENABLE_GROOVIE2;ENABLE_HADESCH;ENABLE_HDB;ENABLE_HOPKINS;ENABLE_HUGO;ENABLE_HYPNO;ENABLE_ILLUSIONS;ENABLE_KINGDOM;ENABLE_KYRA;ENABLE_LOL;ENABLE_EOB;ENABLE_LAB;ENABLE_LASTEXPRESS;ENABLE_LURE;ENABLE_M4;ENABLE_MADE;ENABLE_MADS;ENABLE_MM;ENABLE_MM1;ENABLE_XEEN;ENABLE_MOHAWK;ENABLE_RIVEN;ENABLE_MYST;ENABLE_MYSTME;ENABLE_MORTEVIELLE;ENABLE_MTROPOLIS;ENABLE_MYST3;ENABLE_NANCY;ENABLE_NEVERHOOD;ENABLE_NGI;ENABLE_PARALLACTION;ENABLE_PEGASUS;ENABLE_PETKA;ENABLE_PINK;ENABLE_PLUMBERS;ENABLE_PRINCE;ENABLE_PRIVATE;ENABLE_QDENGINE;ENABLE_QUEEN;ENABLE_SAGA;ENABLE_IHNM;ENABLE_SAGA2;ENABLE_SCI;ENABLE_SCI32;ENABLE_SHERLOCK;ENABLE_SKY;ENABLE_SLUDGE;ENABLE_STARK;ENABLE_SUPERNOVA;ENABLE_SWORD1;ENABLE_SWORD2;ENABLE_SWORD25;ENABLE_TEENAGENT;ENABLE_TETRAEDGE;ENABLE_TINSEL;ENABLE_TITANIC;ENABLE_TOLTECS;ENABLE_TONY;ENABLE_TOON;ENABLE_TOT;ENABLE_TOUCHE;ENABLE_TRECISION;ENABLE_TSAGE;ENABLE_RINGWORLD;ENABLE_BLUEFORCE;ENABLE_RINGWORLD2;ENABLE_TUCKER;ENABLE_TWINE;ENABLE_TWP;ENABLE_ULTIMA;ENABLE_ULTIMA4;ENABLE_ULTIMA6;ENABLE_ULTIMA8;ENABLE_VCRUISE;ENABLE_VOYEUR;ENABLE_WAGE;ENABLE_WINTERMUTE;ENABLE_WME3D;ENABLE_FOXTAIL;ENABLE_HEROCRAFT;ENABLE_ZVISION;WIN32;CURL_STATICLIB;SDL_BACKEND;USE_SDL2;DETECTION_STATIC;USE_GLAD;USE_IMGUI_SDLRENDERER2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<ExceptionHandling></ExceptionHandling>
 			<RuntimeTypeInfo>true</RuntimeTypeInfo>
+			<DiagnosticsFormat>Caret</DiagnosticsFormat>
 			<WarningLevel>Level4</WarningLevel>
 			<TreatWarningAsError>false</TreatWarningAsError>
 			<CompileAs>Default</CompileAs>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
 			<ConformanceMode>true</ConformanceMode>
 			<ObjectFileName>$(IntDir)dists\msvc\%(RelativeDir)</ObjectFileName>
-			<AdditionalOptions>/utf-8 /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions>/utf-8 /Zc:__cplusplus /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
 		</ClCompile>
 		<Link>
 			<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
diff --git a/dists/msvc/ScummVM_Globalx86.props b/dists/msvc/ScummVM_Globalx86.props
index 2121c9d3908..a6c5fa5b80a 100644
--- a/dists/msvc/ScummVM_Globalx86.props
+++ b/dists/msvc/ScummVM_Globalx86.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<PropertyGroup>
 		<_PropertySheetDisplayName>ScummVM_Global</_PropertySheetDisplayName>
 		<OutDir>$(Configuration)x86\</OutDir>
@@ -13,13 +13,14 @@
 			<PreprocessorDefinitions>USE_ZLIB;USE_MAD;USE_FRIBIDI;USE_OGG;USE_VORBIS;USE_FLAC;USE_PNG;USE_MPEG2;USE_THEORADEC;USE_FREETYPE2;USE_JPEG;USE_FLUIDSYNTH;USE_LIBCURL;USE_SDL_NET;USE_BINK;USE_SCALERS;USE_HQ_SCALERS;USE_EDGE_SCALERS;USE_ASPECT;USE_RGB_COLOR;USE_HIGHRES;USE_MT32EMU;USE_NASM;USE_OPENGL;USE_OPENGL_GAME;USE_OPENGL_SHADERS;USE_TINYGL;USE_TASKBAR;USE_HTTP;USE_BASIC_NET;USE_CLOUD;USE_ENET;USE_TRANSLATION;USE_SYSTEM_PRINTING;USE_SYSDIALOGS;USE_DETECTLANG;USE_TTS;BUILTIN_RESOURCES;DETECTION_FULL;USE_DETECTION_FEATURES_STATIC;USE_FMTOWNS_PC98_AUDIO;USE_HNM;USE_IMGUI;USE_INDEO3;USE_INDEO45;USE_JYV1;USE_LUA;USE_MFC;USE_MIDI;USE_QDM2;USE_SID_AUDIO;USE_SVQ1;USE_TRUEMOTION1;USE_UNIVERSALTRACKER;USE_VGMTRANS_AUDIO;USE_XAN;ENABLE_SCUMM;ENABLE_SCUMM_7_8;ENABLE_HE;ENABLE_ACCESS;ENABLE_ADL;ENABLE_AGI;ENABLE_AGOS;ENABLE_AGOS2;ENABLE_AGS;ENABLE_ALCACHOFA;ENABLE_ALG;ENABLE_ASYLUM;ENABLE_AWE;ENABLE_BAGEL;ENABLE_BBVS;ENABLE_BLADERUNNER;ENABLE_BURIED;ENABLE_CGE;ENABLE_CGE2;ENABLE_CHEWY;ENABLE_CINE;ENABLE_COMPOSER;ENABLE_CRAB;ENABLE_CRUISE;ENABLE_CRYOMNI3D;ENABLE_VERSAILLES;ENABLE_DARKSEED;ENABLE_DGDS;ENABLE_DIRECTOR;ENABLE_DRACI;ENABLE_DRAGONS;ENABLE_DRASCULA;ENABLE_DREAMWEB;ENABLE_EFH;ENABLE_FREESCAPE;ENABLE_GLK;ENABLE_GNAP;ENABLE_GOB;ENABLE_GOT;ENABLE_GRIFFON;ENABLE_GRIM;ENABLE_GROOVIE;ENABLE_GROOVIE2;ENABLE_HADESCH;ENABLE_HDB;ENABLE_HOPKINS;ENABLE_HUGO;ENABLE_HYPNO;ENABLE_ILLUSIONS;ENABLE_KINGDOM;ENABLE_KYRA;ENABLE_LOL;ENABLE_EOB;ENABLE_LAB;ENABLE_LASTEXPRESS;ENABLE_LURE;ENABLE_M4;ENABLE_MADE;ENABLE_MADS;ENABLE_MM;ENABLE_MM1;ENABLE_XEEN;ENABLE_MOHAWK;ENABLE_RIVEN;ENABLE_MYST;ENABLE_MYSTME;ENABLE_MORTEVIELLE;ENABLE_MTROPOLIS;ENABLE_MYST3;ENABLE_NANCY;ENABLE_NEVERHOOD;ENABLE_NGI;ENABLE_PARALLACTION;ENABLE_PEGASUS;ENABLE_PETKA;ENABLE_PINK;ENABLE_PLUMBERS;ENABLE_PRINCE;ENABLE_PRIVATE;ENABLE_QDENGINE;ENABLE_QUEEN;ENABLE_SAGA;ENABLE_IHNM;ENABLE_SAGA2;ENABLE_SCI;ENABLE_SCI32;ENABLE_SHERLOCK;ENABLE_SKY;ENABLE_SLUDGE;ENABLE_STARK;ENABLE_SUPERNOVA;ENABLE_SWORD1;ENABLE_SWORD2;ENABLE_SWORD25;ENABLE_TEENAGENT;ENABLE_TETRAEDGE;ENABLE_TINSEL;ENABLE_TITANIC;ENABLE_TOLTECS;ENABLE_TONY;ENABLE_TOON;ENABLE_TOT;ENABLE_TOUCHE;ENABLE_TRECISION;ENABLE_TSAGE;ENABLE_RINGWORLD;ENABLE_BLUEFORCE;ENABLE_RINGWORLD2;ENABLE_TUCKER;ENABLE_TWINE;ENABLE_TWP;ENABLE_ULTIMA;ENABLE_ULTIMA4;ENABLE_ULTIMA6;ENABLE_ULTIMA8;ENABLE_VCRUISE;ENABLE_VOYEUR;ENABLE_WAGE;ENABLE_WINTERMUTE;ENABLE_WME3D;ENABLE_FOXTAIL;ENABLE_HEROCRAFT;ENABLE_ZVISION;WIN32;CURL_STATICLIB;SDL_BACKEND;USE_SDL2;DETECTION_STATIC;USE_GLAD;USE_IMGUI_SDLRENDERER2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 			<ExceptionHandling></ExceptionHandling>
 			<RuntimeTypeInfo>true</RuntimeTypeInfo>
+			<DiagnosticsFormat>Caret</DiagnosticsFormat>
 			<WarningLevel>Level4</WarningLevel>
 			<TreatWarningAsError>false</TreatWarningAsError>
 			<CompileAs>Default</CompileAs>
 			<MultiProcessorCompilation>true</MultiProcessorCompilation>
 			<ConformanceMode>true</ConformanceMode>
 			<ObjectFileName>$(IntDir)dists\msvc\%(RelativeDir)</ObjectFileName>
-			<AdditionalOptions>/utf-8 /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions>/utf-8 /Zc:__cplusplus /we"4701" /we"4703" /we"4456" /we"4003" /we"4840" /we"4805" /we"4305" /we"4366" /we"4315" /we"4715" /we"4716" %(AdditionalOptions)</AdditionalOptions>
 		</ClCompile>
 		<Link>
 			<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
diff --git a/dists/msvc/ScummVM_LLVMarm64.props b/dists/msvc/ScummVM_LLVMarm64.props
index 6976d6542f8..99528b53bc8 100644
--- a/dists/msvc/ScummVM_LLVMarm64.props
+++ b/dists/msvc/ScummVM_LLVMarm64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalarm64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_LLVMx64.props b/dists/msvc/ScummVM_LLVMx64.props
index a42ccd66910..60383b8ad8b 100644
--- a/dists/msvc/ScummVM_LLVMx64.props
+++ b/dists/msvc/ScummVM_LLVMx64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_LLVMx86.props b/dists/msvc/ScummVM_LLVMx86.props
index 1517d19623e..67e9316f133 100644
--- a/dists/msvc/ScummVM_LLVMx86.props
+++ b/dists/msvc/ScummVM_LLVMx86.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx86.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Releasearm64.props b/dists/msvc/ScummVM_Releasearm64.props
index af515363188..03747559c8f 100644
--- a/dists/msvc/ScummVM_Releasearm64.props
+++ b/dists/msvc/ScummVM_Releasearm64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalarm64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Releasex64.props b/dists/msvc/ScummVM_Releasex64.props
index a93ca3b8c4d..79a8abcf556 100644
--- a/dists/msvc/ScummVM_Releasex64.props
+++ b/dists/msvc/ScummVM_Releasex64.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx64.props" />
 	</ImportGroup>
diff --git a/dists/msvc/ScummVM_Releasex86.props b/dists/msvc/ScummVM_Releasex86.props
index 4d8cf533e04..d7bf8ed9eec 100644
--- a/dists/msvc/ScummVM_Releasex86.props
+++ b/dists/msvc/ScummVM_Releasex86.props
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ImportGroup Label="PropertySheets">
 		<Import Project="ScummVM_Globalx86.props" />
 	</ImportGroup>
diff --git a/dists/msvc/access.vcxproj b/dists/msvc/access.vcxproj
index 88b98cd0782..e79a1730cef 100644
--- a/dists/msvc/access.vcxproj
+++ b/dists/msvc/access.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{C6D5DBFD-AF06-461B-9AF0-B943A2502CC7}</ProjectGuid>
+		<ProjectGuid>{B20BE4C6-E089-3BEF-9614-1F01A5557531}</ProjectGuid>
 		<RootNamespace>access</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/access.vcxproj.filters b/dists/msvc/access.vcxproj.filters
index d9ca977ccb5..fff717d139e 100644
--- a/dists/msvc/access.vcxproj.filters
+++ b/dists/msvc/access.vcxproj.filters
@@ -1,17 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="amazon">
-			<UniqueIdentifier>77873FBE-0BB0-4CDC-921A-9BED5A2F20C9</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5A5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="martian">
-			<UniqueIdentifier>31E83126-10B1-469E-B192-985522A6D5F6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5A6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="video">
-			<UniqueIdentifier>0502F9E6-80B7-430A-ADE4-17F57E441562</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5A7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\access\access.cpp" />
 		<ClCompile Include="..\..\engines\access\amazon\amazon_game.cpp">
 			<Filter>amazon</Filter>
 		</ClCompile>
@@ -30,6 +31,17 @@
 		<ClCompile Include="..\..\engines\access\amazon\amazon_scripts.cpp">
 			<Filter>amazon</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\access\animation.cpp" />
+		<ClCompile Include="..\..\engines\access\asurface.cpp" />
+		<ClCompile Include="..\..\engines\access\bubble_box.cpp" />
+		<ClCompile Include="..\..\engines\access\char.cpp" />
+		<ClCompile Include="..\..\engines\access\data.cpp" />
+		<ClCompile Include="..\..\engines\access\debugger.cpp" />
+		<ClCompile Include="..\..\engines\access\decompress.cpp" />
+		<ClCompile Include="..\..\engines\access\events.cpp" />
+		<ClCompile Include="..\..\engines\access\files.cpp" />
+		<ClCompile Include="..\..\engines\access\font.cpp" />
+		<ClCompile Include="..\..\engines\access\inventory.cpp" />
 		<ClCompile Include="..\..\engines\access\martian\martian_duct.cpp">
 			<Filter>martian</Filter>
 		</ClCompile>
@@ -51,21 +63,6 @@
 		<ClCompile Include="..\..\engines\access\martian\midiparser_bemd.cpp">
 			<Filter>martian</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\access\video\movie_decoder.cpp">
-			<Filter>video</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\access\access.cpp" />
-		<ClCompile Include="..\..\engines\access\animation.cpp" />
-		<ClCompile Include="..\..\engines\access\asurface.cpp" />
-		<ClCompile Include="..\..\engines\access\bubble_box.cpp" />
-		<ClCompile Include="..\..\engines\access\char.cpp" />
-		<ClCompile Include="..\..\engines\access\data.cpp" />
-		<ClCompile Include="..\..\engines\access\debugger.cpp" />
-		<ClCompile Include="..\..\engines\access\decompress.cpp" />
-		<ClCompile Include="..\..\engines\access\events.cpp" />
-		<ClCompile Include="..\..\engines\access\files.cpp" />
-		<ClCompile Include="..\..\engines\access\font.cpp" />
-		<ClCompile Include="..\..\engines\access\inventory.cpp" />
 		<ClCompile Include="..\..\engines\access\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\access\player.cpp" />
 		<ClCompile Include="..\..\engines\access\resources.cpp" />
@@ -74,8 +71,12 @@
 		<ClCompile Include="..\..\engines\access\scripts.cpp" />
 		<ClCompile Include="..\..\engines\access\sound.cpp" />
 		<ClCompile Include="..\..\engines\access\video.cpp" />
+		<ClCompile Include="..\..\engines\access\video\movie_decoder.cpp">
+			<Filter>video</Filter>
+		</ClCompile>
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\access\access.h" />
 		<ClInclude Include="..\..\engines\access\amazon\amazon_game.h">
 			<Filter>amazon</Filter>
 		</ClInclude>
@@ -94,6 +95,19 @@
 		<ClInclude Include="..\..\engines\access\amazon\amazon_scripts.h">
 			<Filter>amazon</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\access\animation.h" />
+		<ClInclude Include="..\..\engines\access\asurface.h" />
+		<ClInclude Include="..\..\engines\access\bubble_box.h" />
+		<ClInclude Include="..\..\engines\access\char.h" />
+		<ClInclude Include="..\..\engines\access\data.h" />
+		<ClInclude Include="..\..\engines\access\debugger.h" />
+		<ClInclude Include="..\..\engines\access\decompress.h" />
+		<ClInclude Include="..\..\engines\access\detection.h" />
+		<ClInclude Include="..\..\engines\access\detection_tables.h" />
+		<ClInclude Include="..\..\engines\access\events.h" />
+		<ClInclude Include="..\..\engines\access\files.h" />
+		<ClInclude Include="..\..\engines\access\font.h" />
+		<ClInclude Include="..\..\engines\access\inventory.h" />
 		<ClInclude Include="..\..\engines\access\martian\martian_duct.h">
 			<Filter>martian</Filter>
 		</ClInclude>
@@ -115,23 +129,6 @@
 		<ClInclude Include="..\..\engines\access\martian\midiparser_bemd.h">
 			<Filter>martian</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\access\video\movie_decoder.h">
-			<Filter>video</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\access\access.h" />
-		<ClInclude Include="..\..\engines\access\animation.h" />
-		<ClInclude Include="..\..\engines\access\asurface.h" />
-		<ClInclude Include="..\..\engines\access\bubble_box.h" />
-		<ClInclude Include="..\..\engines\access\char.h" />
-		<ClInclude Include="..\..\engines\access\data.h" />
-		<ClInclude Include="..\..\engines\access\debugger.h" />
-		<ClInclude Include="..\..\engines\access\decompress.h" />
-		<ClInclude Include="..\..\engines\access\detection.h" />
-		<ClInclude Include="..\..\engines\access\detection_tables.h" />
-		<ClInclude Include="..\..\engines\access\events.h" />
-		<ClInclude Include="..\..\engines\access\files.h" />
-		<ClInclude Include="..\..\engines\access\font.h" />
-		<ClInclude Include="..\..\engines\access\inventory.h" />
 		<ClInclude Include="..\..\engines\access\player.h" />
 		<ClInclude Include="..\..\engines\access\resources.h" />
 		<ClInclude Include="..\..\engines\access\room.h" />
@@ -139,6 +136,9 @@
 		<ClInclude Include="..\..\engines\access\scripts.h" />
 		<ClInclude Include="..\..\engines\access\sound.h" />
 		<ClInclude Include="..\..\engines\access\video.h" />
+		<ClInclude Include="..\..\engines\access\video\movie_decoder.h">
+			<Filter>video</Filter>
+		</ClInclude>
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\access\module.mk" />
diff --git a/dists/msvc/adl.vcxproj b/dists/msvc/adl.vcxproj
index d4d2ef48090..8fe09014c3b 100644
--- a/dists/msvc/adl.vcxproj
+++ b/dists/msvc/adl.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{BA3662A8-0289-43BF-B920-151A8D68A686}</ProjectGuid>
+		<ProjectGuid>{A7D2A7ED-3679-3FC7-B03B-C55E612A3F7B}</ProjectGuid>
 		<RootNamespace>adl</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/agi.vcxproj b/dists/msvc/agi.vcxproj
index 69b2c679f5f..e004eb23d4a 100644
--- a/dists/msvc/agi.vcxproj
+++ b/dists/msvc/agi.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{16C9CDC4-1601-448E-8BC1-C0B8488BA950}</ProjectGuid>
+		<ProjectGuid>{C660F55A-0E99-39E9-8879-6CB32B02F8F0}</ProjectGuid>
 		<RootNamespace>agi</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/agi.vcxproj.filters b/dists/msvc/agi.vcxproj.filters
index f95f290b08d..54953a25490 100644
--- a/dists/msvc/agi.vcxproj.filters
+++ b/dists/msvc/agi.vcxproj.filters
@@ -1,29 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="preagi">
-			<UniqueIdentifier>46A3D3B6-1BC5-4B78-8B15-68DE57AFF3C1</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5A8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
-		<ClCompile Include="..\..\engines\agi\preagi\mickey.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\agi\preagi\picture_mickey_winnie.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\agi\preagi\picture_troll.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\agi\preagi\preagi.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\agi\preagi\troll.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\agi\preagi\winnie.cpp">
-			<Filter>preagi</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\agi\agi.cpp" />
 		<ClCompile Include="..\..\engines\agi\checks.cpp" />
 		<ClCompile Include="..\..\engines\agi\console.cpp" />
@@ -53,6 +35,24 @@
 		<ClCompile Include="..\..\engines\agi\opcodes.cpp" />
 		<ClCompile Include="..\..\engines\agi\picture.cpp" />
 		<ClCompile Include="..\..\engines\agi\picture_gal.cpp" />
+		<ClCompile Include="..\..\engines\agi\preagi\mickey.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\agi\preagi\picture_mickey_winnie.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\agi\preagi\picture_troll.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\agi\preagi\preagi.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\agi\preagi\troll.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\agi\preagi\winnie.cpp">
+			<Filter>preagi</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\agi\saveload.cpp" />
 		<ClCompile Include="..\..\engines\agi\sound.cpp" />
 		<ClCompile Include="..\..\engines\agi\sound_2gs.cpp" />
@@ -68,24 +68,6 @@
 		<ClCompile Include="..\..\engines\agi\words.cpp" />
 	</ItemGroup>
 	<ItemGroup>
-		<ClInclude Include="..\..\engines\agi\preagi\mickey.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\agi\preagi\picture_mickey_winnie.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\agi\preagi\picture_troll.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\agi\preagi\preagi.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\agi\preagi\troll.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\agi\preagi\winnie.h">
-			<Filter>preagi</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\agi\agi.h" />
 		<ClInclude Include="..\..\engines\agi\appleIIgs_timedelay_overwrite.h" />
 		<ClInclude Include="..\..\engines\agi\console.h" />
@@ -105,6 +87,24 @@
 		<ClInclude Include="..\..\engines\agi\palette.h" />
 		<ClInclude Include="..\..\engines\agi\picture.h" />
 		<ClInclude Include="..\..\engines\agi\picture_gal.h" />
+		<ClInclude Include="..\..\engines\agi\preagi\mickey.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\agi\preagi\picture_mickey_winnie.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\agi\preagi\picture_troll.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\agi\preagi\preagi.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\agi\preagi\troll.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\agi\preagi\winnie.h">
+			<Filter>preagi</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\agi\sound.h" />
 		<ClInclude Include="..\..\engines\agi\sound_2gs.h" />
 		<ClInclude Include="..\..\engines\agi\sound_a2.h" />
diff --git a/dists/msvc/agos.vcxproj b/dists/msvc/agos.vcxproj
index c9de3e42f55..e574f3ec3fd 100644
--- a/dists/msvc/agos.vcxproj
+++ b/dists/msvc/agos.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{9D814079-722A-4794-B4B2-1BF57C65C571}</ProjectGuid>
+		<ProjectGuid>{1DAB72F0-9644-3165-865C-0AE87DA59CF2}</ProjectGuid>
 		<RootNamespace>agos</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/agos.vcxproj.filters b/dists/msvc/agos.vcxproj.filters
index 239621083d7..aa959730ba7 100644
--- a/dists/msvc/agos.vcxproj.filters
+++ b/dists/msvc/agos.vcxproj.filters
@@ -1,17 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="drivers">
-			<UniqueIdentifier>B4DAE7E1-CA1B-4490-BD7D-886EFA54A6A0</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5A9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="drivers\accolade">
-			<UniqueIdentifier>EE140F7F-5537-4218-A1EF-6F30800CB5F4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="drivers\simon1">
-			<UniqueIdentifier>98E96543-FCA3-423B-9E75-FD394624A939</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\agos\agos.cpp" />
+		<ClCompile Include="..\..\engines\agos\animation.cpp" />
+		<ClCompile Include="..\..\engines\agos\charset-fontdata.cpp" />
+		<ClCompile Include="..\..\engines\agos\charset.cpp" />
+		<ClCompile Include="..\..\engines\agos\contain.cpp" />
+		<ClCompile Include="..\..\engines\agos\cursor.cpp" />
+		<ClCompile Include="..\..\engines\agos\debug.cpp" />
+		<ClCompile Include="..\..\engines\agos\debugger.cpp" />
+		<ClCompile Include="..\..\engines\agos\dialogs.cpp" />
+		<ClCompile Include="..\..\engines\agos\draw.cpp" />
 		<ClCompile Include="..\..\engines\agos\drivers\accolade\adlib.cpp">
 			<Filter>drivers\accolade</Filter>
 		</ClCompile>
@@ -30,22 +40,12 @@
 		<ClCompile Include="..\..\engines\agos\drivers\accolade\pc98.cpp">
 			<Filter>drivers\accolade</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\agos\drivers\simon1\adlib.cpp">
-			<Filter>drivers\simon1</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\agos\drivers\elvira_atarist.cpp">
 			<Filter>drivers</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\agos\agos.cpp" />
-		<ClCompile Include="..\..\engines\agos\animation.cpp" />
-		<ClCompile Include="..\..\engines\agos\charset-fontdata.cpp" />
-		<ClCompile Include="..\..\engines\agos\charset.cpp" />
-		<ClCompile Include="..\..\engines\agos\contain.cpp" />
-		<ClCompile Include="..\..\engines\agos\cursor.cpp" />
-		<ClCompile Include="..\..\engines\agos\debug.cpp" />
-		<ClCompile Include="..\..\engines\agos\debugger.cpp" />
-		<ClCompile Include="..\..\engines\agos\dialogs.cpp" />
-		<ClCompile Include="..\..\engines\agos\draw.cpp" />
+		<ClCompile Include="..\..\engines\agos\drivers\simon1\adlib.cpp">
+			<Filter>drivers\simon1</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\agos\event.cpp" />
 		<ClCompile Include="..\..\engines\agos\feeble.cpp" />
 		<ClCompile Include="..\..\engines\agos\gfx.cpp" />
@@ -94,6 +94,14 @@
 		<ClCompile Include="..\..\engines\agos\zones.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\agos\agos.h" />
+		<ClInclude Include="..\..\engines\agos\animation.h" />
+		<ClInclude Include="..\..\engines\agos\debug.h" />
+		<ClInclude Include="..\..\engines\agos\debugger.h" />
+		<ClInclude Include="..\..\engines\agos\detection.h" />
+		<ClInclude Include="..\..\engines\agos\detection_fallback.h" />
+		<ClInclude Include="..\..\engines\agos\detection_tables.h" />
+		<ClInclude Include="..\..\engines\agos\dialogs.h" />
 		<ClInclude Include="..\..\engines\agos\drivers\accolade\adlib.h">
 			<Filter>drivers\accolade</Filter>
 		</ClInclude>
@@ -109,20 +117,12 @@
 		<ClInclude Include="..\..\engines\agos\drivers\accolade\mt32.h">
 			<Filter>drivers\accolade</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\agos\drivers\simon1\adlib.h">
-			<Filter>drivers\simon1</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\agos\drivers\elvira_atarist.h">
 			<Filter>drivers</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\agos\agos.h" />
-		<ClInclude Include="..\..\engines\agos\animation.h" />
-		<ClInclude Include="..\..\engines\agos\debug.h" />
-		<ClInclude Include="..\..\engines\agos\debugger.h" />
-		<ClInclude Include="..\..\engines\agos\detection.h" />
-		<ClInclude Include="..\..\engines\agos\detection_fallback.h" />
-		<ClInclude Include="..\..\engines\agos\detection_tables.h" />
-		<ClInclude Include="..\..\engines\agos\dialogs.h" />
+		<ClInclude Include="..\..\engines\agos\drivers\simon1\adlib.h">
+			<Filter>drivers\simon1</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\agos\intern.h" />
 		<ClInclude Include="..\..\engines\agos\intern_detection.h" />
 		<ClInclude Include="..\..\engines\agos\midi.h" />
diff --git a/dists/msvc/ags.vcxproj b/dists/msvc/ags.vcxproj
index 6e6e6baa2dc..30a84f75c49 100644
--- a/dists/msvc/ags.vcxproj
+++ b/dists/msvc/ags.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{9DC16087-2E0D-4026-A340-66F59F97BD28}</ProjectGuid>
+		<ProjectGuid>{F08A3076-F19B-39E4-B3A2-72F09E331A4A}</ProjectGuid>
 		<RootNamespace>ags</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/ags.vcxproj.filters b/dists/msvc/ags.vcxproj.filters
index 11af3fbc6aa..0f63798b303 100644
--- a/dists/msvc/ags.vcxproj.filters
+++ b/dists/msvc/ags.vcxproj.filters
@@ -1,203 +1,251 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="engine">
-			<UniqueIdentifier>FB945DC5-844A-49FC-AFD7-2011DA3DA14D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\ac">
-			<UniqueIdentifier>6A275CBF-0B11-4676-8685-C8F67BBBD058</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AD-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\ac\dynobj">
-			<UniqueIdentifier>80881446-28F1-4D36-B908-A20729B03A96</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\debugging">
-			<UniqueIdentifier>7943402B-16FA-45B3-A155-FB2C17533F2D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5AF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\device">
-			<UniqueIdentifier>1BE7D517-1E93-435C-B6A5-ACA7FC13D63B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\game">
-			<UniqueIdentifier>EF8E8553-8FC7-472F-82C9-295882662622</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\gfx">
-			<UniqueIdentifier>98891A60-2566-4967-BA0E-BD76F0627A61</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B2-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\gui">
-			<UniqueIdentifier>56E557F2-20F5-470C-B822-5BF337622FC4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B3-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\main">
-			<UniqueIdentifier>AE7F0F51-1A3B-4084-962E-5ABA4567ADA8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B4-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\media">
-			<UniqueIdentifier>134ADEF9-9AE8-4A15-8C53-D774AD3810A6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\media\audio">
-			<UniqueIdentifier>341FFA58-4A1E-4975-8072-526B11BDF46E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\media\video">
-			<UniqueIdentifier>BF93357F-9B6C-4659-9D5B-B71A05E986CD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\platform">
-			<UniqueIdentifier>24D036D3-7351-40F0-BE42-9E45036BBD3B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\platform\base">
-			<UniqueIdentifier>928A0028-AF8A-480E-BA20-3270F5EC692D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5B9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\platform\scummvm">
-			<UniqueIdentifier>6814AB4C-A4C2-41F4-A12C-0A9EF24CCBA2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="engine\script">
-			<UniqueIdentifier>8A178464-102E-4F45-B963-9A16E5E22C97</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib">
-			<UniqueIdentifier>287BD4CF-3AC9-46C1-A537-B55D2500E58B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\aastr-0.1.1">
-			<UniqueIdentifier>C693653D-FC36-4CDB-B4A8-9A8AF6ED1341</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BD-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\alfont">
-			<UniqueIdentifier>971D4CAA-2EF8-472E-A848-E270E87205C7</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\allegro">
-			<UniqueIdentifier>807A1920-C5CC-4ECC-AAEA-448D0ABAE4B9</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5BF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\freetype-2.1.3">
-			<UniqueIdentifier>828C377A-F968-4503-B6DF-74874CDA7BD4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\freetype-2.1.3\autohint">
-			<UniqueIdentifier>309C5243-4462-4BA2-A93C-D6E9261A533B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lib\system">
-			<UniqueIdentifier>ED02E87C-2490-4CA1-851B-95C44BAB7906</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C2-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins">
-			<UniqueIdentifier>E4A9B40D-61CF-4715-A6ED-C1C2F86C5E32</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C3-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_agi">
-			<UniqueIdentifier>FAB911D1-DAE9-46A2-8ACF-9409A0898CFD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C4-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_app_open_url">
-			<UniqueIdentifier>027A7C30-BFAF-4510-B85F-ABE92B8706F6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_blend">
-			<UniqueIdentifier>40D331B8-D93D-49A6-B285-E46E15F4F718</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_bm_font_renderer">
-			<UniqueIdentifier>738916C6-848C-438D-A299-1FC2274CBBAD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_clipboard">
-			<UniqueIdentifier>A1FEECFD-5001-4E35-9B99-A9A1923DC10F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_collision_detector">
-			<UniqueIdentifier>871E7E8D-E539-477E-8CAD-6A624AA4530D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5C9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_consoles">
-			<UniqueIdentifier>AF3366DC-BC5C-453F-BCF7-A56E1B708CA5</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_controller">
-			<UniqueIdentifier>F620B11B-EC1F-43BB-AC29-2C6036B5E659</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_creditz">
-			<UniqueIdentifier>0B87433D-C3CD-4189-B62E-93B54E6608FD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_filedel">
-			<UniqueIdentifier>032106BB-06E2-4A11-B569-4ABBD00FB21A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CD-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_fire">
-			<UniqueIdentifier>0B4F4048-5D37-4D18-9C82-1AB5A7512C1C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_flashlight">
-			<UniqueIdentifier>C80EDE87-5C46-4B57-AC1F-AA5BB932D9B5</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5CF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_galaxy_steam">
-			<UniqueIdentifier>6CA1B84D-7A5C-4691-8CA5-FC4FE27657A2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_joy">
-			<UniqueIdentifier>D51A0AA4-B4E8-4D49-8CC2-39BF31262617</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_maya">
-			<UniqueIdentifier>524E1D7B-AB23-4E4F-B83C-6A36C32348CE</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D2-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_nickenstien_gfx">
-			<UniqueIdentifier>486A5E5E-35C6-4AA3-9E0D-E4991ABC01A6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D3-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_pal_render">
-			<UniqueIdentifier>10CA34F1-D87C-4AED-8EE4-10A8B8E3B86E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D4-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_parallax">
-			<UniqueIdentifier>762AD1A7-2F4C-4910-8C61-99E28B80B333</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_shell">
-			<UniqueIdentifier>E90A091A-E83F-4FF7-885F-90C1FBB61D53</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_snow_rain">
-			<UniqueIdentifier>06642E97-E971-45B8-AC46-820D1107BFF2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_sock">
-			<UniqueIdentifier>65479A58-126F-4114-8531-F43A6D8343FE</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_sprite_font">
-			<UniqueIdentifier>E1818D87-0F50-40CD-BB25-2642FBF0D6C0</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5D9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_sprite_video">
-			<UniqueIdentifier>A7FE6036-FC4E-4A2C-9C3B-C578F109A548</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_tcp_ip">
-			<UniqueIdentifier>0AA7FEAA-4DFE-4860-89F8-4B3F11253BD9</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_touch">
-			<UniqueIdentifier>4EE4B9F8-66E9-481D-B662-3BB2A735A4A2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_trans">
-			<UniqueIdentifier>AE5071E6-411F-4850-989B-A7E4EC1B14E3</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DD-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_utils">
-			<UniqueIdentifier>A2D4E7A0-5E06-4510-AEA8-52D01D1FD67D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_wadjet_util">
-			<UniqueIdentifier>8E294B1E-F65E-490B-9180-9EDC4B35632A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5DF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\ags_waves">
-			<UniqueIdentifier>14766BC5-91E4-4E65-9117-181F4D269CC8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="plugins\core">
-			<UniqueIdentifier>05B7E178-38A1-482D-A054-B8663D4CE280</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared">
-			<UniqueIdentifier>B05598CD-1414-4733-8CAD-3A11FAC292FD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E2-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\ac">
-			<UniqueIdentifier>F0E7F9AD-9838-4F62-8B15-E0D57254604F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E3-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\ac\dynobj">
-			<UniqueIdentifier>5B4B8429-ED61-42F8-AD1B-17313B2C8E74</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E4-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\core">
-			<UniqueIdentifier>33B35530-C211-4F1B-9DC0-C801F1C10479</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\debugging">
-			<UniqueIdentifier>CF8266EA-BC01-4795-8038-675967BA3798</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\font">
-			<UniqueIdentifier>60411F90-C37F-4E2A-A7B7-5E5E3C244F9B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\game">
-			<UniqueIdentifier>5AA72CFC-8C43-41E0-B479-BCCB9086C878</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\gfx">
-			<UniqueIdentifier>9C82A70B-8A43-4456-BA33-DD4AFA12D4D0</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5E9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\gui">
-			<UniqueIdentifier>635A4247-67D4-4A17-AAF2-682EF04B7021</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5EA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\script">
-			<UniqueIdentifier>FE8B918B-FDD8-4D72-8529-54A4B00CEB72</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5EB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="shared\util">
-			<UniqueIdentifier>889DA3FE-E730-4DBA-9FBA-A154FA34F8D2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5EC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\ags\ags.cpp" />
+		<ClCompile Include="..\..\engines\ags\console.cpp" />
+		<ClCompile Include="..\..\engines\ags\dialogs.cpp" />
+		<ClCompile Include="..\..\engines\ags\engine\ac\audio_channel.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\audio_clip.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\button.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\cd_audio.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\character.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\character_extras.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\character_info_engine.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\date_time.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\dialog.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\dialog_options_rendering.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\display.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\draw.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\draw_software.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\drawing_surface.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\engine\ac\dynamic_sprite.cpp">
+			<Filter>engine\ac</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\engine\ac\dynobj\cc_ags_dynamic_object.cpp">
 			<Filter>engine\ac\dynobj</Filter>
 		</ClCompile>
@@ -294,51 +342,6 @@
 		<ClCompile Include="..\..\engines\ags\engine\ac\dynobj\script_viewport.cpp">
 			<Filter>engine\ac\dynobj</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\audio_channel.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\audio_clip.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\button.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\cd_audio.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\character.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\character_extras.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\character_info_engine.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\date_time.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\dialog.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\dialog_options_rendering.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\display.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\draw.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\draw_software.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\drawing_surface.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\engine\ac\dynamic_sprite.cpp">
-			<Filter>engine\ac</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\engine\ac\event.cpp">
 			<Filter>engine\ac</Filter>
 		</ClCompile>
@@ -753,6 +756,9 @@
 		<ClCompile Include="..\..\engines\ags\engine\script\system_imports.cpp">
 			<Filter>engine\script</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\events.cpp" />
+		<ClCompile Include="..\..\engines\ags\game_scanner.cpp" />
+		<ClCompile Include="..\..\engines\ags\globals.cpp" />
 		<ClCompile Include="..\..\engines\ags\lib\aastr-0.1.1\aarot.cpp">
 			<Filter>lib\aastr-0.1.1</Filter>
 		</ClCompile>
@@ -828,6 +834,8 @@
 		<ClCompile Include="..\..\engines\ags\lib\system\datetime.cpp">
 			<Filter>lib\system</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\ags\music.cpp" />
 		<ClCompile Include="..\..\engines\ags\plugins\ags_agi\ags_agi.cpp">
 			<Filter>plugins\ags_agi</Filter>
 		</ClCompile>
@@ -903,6 +911,9 @@
 		<ClCompile Include="..\..\engines\ags\plugins\ags_parallax\ags_parallax.cpp">
 			<Filter>plugins\ags_parallax</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\plugins\ags_plugin.cpp">
+			<Filter>plugins</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\plugins\ags_shell\ags_shell.cpp">
 			<Filter>plugins\ags_shell</Filter>
 		</ClCompile>
@@ -1077,15 +1088,9 @@
 		<ClCompile Include="..\..\engines\ags\plugins\core\view_frame.cpp">
 			<Filter>plugins\core</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\plugins\ags_plugin.cpp">
-			<Filter>plugins</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\plugins\plugin_base.cpp">
 			<Filter>plugins</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\shared\ac\dynobj\script_audio_clip.cpp">
-			<Filter>shared\ac\dynobj</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\shared\ac\audio_clip_type.cpp">
 			<Filter>shared\ac</Filter>
 		</ClCompile>
@@ -1098,6 +1103,9 @@
 		<ClCompile Include="..\..\engines\ags\shared\ac\dialog_topic.cpp">
 			<Filter>shared\ac</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\ags\shared\ac\dynobj\script_audio_clip.cpp">
+			<Filter>shared\ac\dynobj</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\ags\shared\ac\game_setup_struct.cpp">
 			<Filter>shared\ac</Filter>
 		</ClCompile>
@@ -1278,16 +1286,58 @@
 		<ClCompile Include="..\..\engines\ags\shared\util\wgt2_allg.cpp">
 			<Filter>shared\util</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\ags\ags.cpp" />
-		<ClCompile Include="..\..\engines\ags\console.cpp" />
-		<ClCompile Include="..\..\engines\ags\dialogs.cpp" />
-		<ClCompile Include="..\..\engines\ags\events.cpp" />
-		<ClCompile Include="..\..\engines\ags\game_scanner.cpp" />
-		<ClCompile Include="..\..\engines\ags\globals.cpp" />
-		<ClCompile Include="..\..\engines\ags\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\ags\music.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\ags\achievements_tables.h" />
+		<ClInclude Include="..\..\engines\ags\ags.h" />
+		<ClInclude Include="..\..\engines\ags\console.h" />
+		<ClInclude Include="..\..\engines\ags\detection.h" />
+		<ClInclude Include="..\..\engines\ags\detection_tables.h" />
+		<ClInclude Include="..\..\engines\ags\engine\ac\asset_helper.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\audio_channel.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\audio_clip.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\button.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\cd_audio.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\character.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\character_extras.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\date_time.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\dialog.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\dialog_options_rendering.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\display.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\draw.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\draw_software.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\drawing_surface.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\engine\ac\dynamic_sprite.h">
+			<Filter>engine\ac</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\engine\ac\dynobj\all_dynamic_classes.h">
 			<Filter>engine\ac\dynobj</Filter>
 		</ClInclude>
@@ -1417,51 +1467,6 @@
 		<ClInclude Include="..\..\engines\ags\engine\ac\dynobj\script_viewport.h">
 			<Filter>engine\ac\dynobj</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\asset_helper.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\audio_channel.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\audio_clip.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\button.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\cd_audio.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\character.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\character_extras.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\date_time.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\dialog.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\dialog_options_rendering.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\display.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\draw.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\draw_software.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\drawing_surface.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\engine\ac\dynamic_sprite.h">
-			<Filter>engine\ac</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\engine\ac\event.h">
 			<Filter>engine\ac</Filter>
 		</ClInclude>
@@ -1906,6 +1911,9 @@
 		<ClInclude Include="..\..\engines\ags\engine\script\system_imports.h">
 			<Filter>engine\script</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\events.h" />
+		<ClInclude Include="..\..\engines\ags\game_scanner.h" />
+		<ClInclude Include="..\..\engines\ags\globals.h" />
 		<ClInclude Include="..\..\engines\ags\lib\aastr-0.1.1\aastr.h">
 			<Filter>lib\aastr-0.1.1</Filter>
 		</ClInclude>
@@ -1915,6 +1923,9 @@
 		<ClInclude Include="..\..\engines\ags\lib\alfont\alfont.h">
 			<Filter>lib\alfont</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\lib\allegro.h">
+			<Filter>lib</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\lib\allegro\aintern.h">
 			<Filter>lib\allegro</Filter>
 		</ClInclude>
@@ -1990,15 +2001,14 @@
 		<ClInclude Include="..\..\engines\ags\lib\freetype-2.1.3\ftmemory.h">
 			<Filter>lib\freetype-2.1.3</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\lib\system\datetime.h">
-			<Filter>lib\system</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\lib\allegro.h">
-			<Filter>lib</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\lib\std.h">
 			<Filter>lib</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\lib\system\datetime.h">
+			<Filter>lib\system</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\metaengine.h" />
+		<ClInclude Include="..\..\engines\ags\music.h" />
 		<ClInclude Include="..\..\engines\ags\plugins\ags_agi\ags_agi.h">
 			<Filter>plugins\ags_agi</Filter>
 		</ClInclude>
@@ -2074,6 +2084,12 @@
 		<ClInclude Include="..\..\engines\ags\plugins\ags_parallax\ags_parallax.h">
 			<Filter>plugins\ags_parallax</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\plugins\ags_plugin.h">
+			<Filter>plugins</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\plugins\ags_plugin_evts.h">
+			<Filter>plugins</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\plugins\ags_shell\ags_shell.h">
 			<Filter>plugins\ags_shell</Filter>
 		</ClInclude>
@@ -2239,12 +2255,6 @@
 		<ClInclude Include="..\..\engines\ags\plugins\core\view_frame.h">
 			<Filter>plugins\core</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\plugins\ags_plugin.h">
-			<Filter>plugins</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\plugins\ags_plugin_evts.h">
-			<Filter>plugins</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\plugins\plugin_base.h">
 			<Filter>plugins</Filter>
 		</ClInclude>
@@ -2254,6 +2264,9 @@
 		<ClInclude Include="..\..\engines\ags\plugins\serializer.h">
 			<Filter>plugins</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\shared\ac\audio_clip_type.h">
+			<Filter>shared\ac</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\shared\ac\character_info.h">
 			<Filter>shared\ac</Filter>
 		</ClInclude>
@@ -2263,15 +2276,12 @@
 		<ClInclude Include="..\..\engines\ags\shared\ac\common_defines.h">
 			<Filter>shared\ac</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\shared\ac\dynobj\script_audio_clip.h">
-			<Filter>shared\ac\dynobj</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\shared\ac\audio_clip_type.h">
-			<Filter>shared\ac</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\shared\ac\dialog_topic.h">
 			<Filter>shared\ac</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\ags\shared\ac\dynobj\script_audio_clip.h">
+			<Filter>shared\ac\dynobj</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\ags\shared\ac\game_setup_struct.h">
 			<Filter>shared\ac</Filter>
 		</ClInclude>
@@ -2530,16 +2540,6 @@
 		<ClInclude Include="..\..\engines\ags\shared\util\wgt2_allg.h">
 			<Filter>shared\util</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\ags\achievements_tables.h" />
-		<ClInclude Include="..\..\engines\ags\ags.h" />
-		<ClInclude Include="..\..\engines\ags\console.h" />
-		<ClInclude Include="..\..\engines\ags\detection.h" />
-		<ClInclude Include="..\..\engines\ags\detection_tables.h" />
-		<ClInclude Include="..\..\engines\ags\events.h" />
-		<ClInclude Include="..\..\engines\ags\game_scanner.h" />
-		<ClInclude Include="..\..\engines\ags\globals.h" />
-		<ClInclude Include="..\..\engines\ags\metaengine.h" />
-		<ClInclude Include="..\..\engines\ags\music.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\ags\module.mk" />
diff --git a/dists/msvc/alcachofa.vcxproj b/dists/msvc/alcachofa.vcxproj
index 0821c4ea5a7..9543cf90648 100644
--- a/dists/msvc/alcachofa.vcxproj
+++ b/dists/msvc/alcachofa.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{1CAA4EF4-9ADA-45D3-8F7E-2AD34C3F45AA}</ProjectGuid>
+		<ProjectGuid>{48892AF2-980B-303F-A787-A30015732F2F}</ProjectGuid>
 		<RootNamespace>alcachofa</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/alg.vcxproj b/dists/msvc/alg.vcxproj
index 4ec111d647d..ecfce9c2e30 100644
--- a/dists/msvc/alg.vcxproj
+++ b/dists/msvc/alg.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{B79B25D3-9F33-40F5-9157-F6C9FE1CABFD}</ProjectGuid>
+		<ProjectGuid>{BF2A86C2-336F-3EE8-B679-327823797DEF}</ProjectGuid>
 		<RootNamespace>alg</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/alg.vcxproj.filters b/dists/msvc/alg.vcxproj.filters
index 196755828b5..219ea4f2889 100644
--- a/dists/msvc/alg.vcxproj.filters
+++ b/dists/msvc/alg.vcxproj.filters
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="logic">
-			<UniqueIdentifier>AD46616F-A34C-471C-A9A6-18A0A94261CB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5ED-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\alg\alg.cpp" />
+		<ClCompile Include="..\..\engines\alg\game.cpp" />
+		<ClCompile Include="..\..\engines\alg\graphics.cpp" />
 		<ClCompile Include="..\..\engines\alg\logic\game_bountyhunter.cpp">
 			<Filter>logic</Filter>
 		</ClCompile>
@@ -27,14 +30,16 @@
 		<ClCompile Include="..\..\engines\alg\logic\game_spacepirates.cpp">
 			<Filter>logic</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\alg\alg.cpp" />
-		<ClCompile Include="..\..\engines\alg\game.cpp" />
-		<ClCompile Include="..\..\engines\alg\graphics.cpp" />
 		<ClCompile Include="..\..\engines\alg\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\alg\scene.cpp" />
 		<ClCompile Include="..\..\engines\alg\video.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\alg\alg.h" />
+		<ClInclude Include="..\..\engines\alg\detection.h" />
+		<ClInclude Include="..\..\engines\alg\detection_tables.h" />
+		<ClInclude Include="..\..\engines\alg\game.h" />
+		<ClInclude Include="..\..\engines\alg\graphics.h" />
 		<ClInclude Include="..\..\engines\alg\logic\game_bountyhunter.h">
 			<Filter>logic</Filter>
 		</ClInclude>
@@ -56,11 +61,6 @@
 		<ClInclude Include="..\..\engines\alg\logic\game_spacepirates.h">
 			<Filter>logic</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\alg\alg.h" />
-		<ClInclude Include="..\..\engines\alg\detection.h" />
-		<ClInclude Include="..\..\engines\alg\detection_tables.h" />
-		<ClInclude Include="..\..\engines\alg\game.h" />
-		<ClInclude Include="..\..\engines\alg\graphics.h" />
 		<ClInclude Include="..\..\engines\alg\scene.h" />
 		<ClInclude Include="..\..\engines\alg\video.h" />
 	</ItemGroup>
diff --git a/dists/msvc/asylum.vcxproj b/dists/msvc/asylum.vcxproj
index 3156863f00a..806b9c75cc8 100644
--- a/dists/msvc/asylum.vcxproj
+++ b/dists/msvc/asylum.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{AD33E9D5-8E4A-4D4C-A484-5E54E3EDDF89}</ProjectGuid>
+		<ProjectGuid>{D2638735-944A-36AF-BC8C-8169AA5CBD36}</ProjectGuid>
 		<RootNamespace>asylum</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/asylum.vcxproj.filters b/dists/msvc/asylum.vcxproj.filters
index fa06a7d5c9e..45f6d7d6902 100644
--- a/dists/msvc/asylum.vcxproj.filters
+++ b/dists/msvc/asylum.vcxproj.filters
@@ -1,20 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="puzzles">
-			<UniqueIdentifier>96574E55-6359-41DC-8455-EDC04A0149D1</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5EE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="resources">
-			<UniqueIdentifier>C8998514-4BE1-4D13-99ED-8D1C3821DA65</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5EF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="system">
-			<UniqueIdentifier>CCA67BCF-5A51-40DE-B20C-9983D10ADE0A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="views">
-			<UniqueIdentifier>D5414D56-ED0D-4095-A0D5-C149CF3AB0EC</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\asylum\asylum.cpp" />
+		<ClCompile Include="..\..\engines\asylum\console.cpp" />
+		<ClCompile Include="..\..\engines\asylum\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\asylum\puzzles\board.cpp">
 			<Filter>puzzles</Filter>
 		</ClCompile>
@@ -96,6 +99,7 @@
 		<ClCompile Include="..\..\engines\asylum\resources\worldstats.cpp">
 			<Filter>resources</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\asylum\respack.cpp" />
 		<ClCompile Include="..\..\engines\asylum\system\config.cpp">
 			<Filter>system</Filter>
 		</ClCompile>
@@ -138,12 +142,13 @@
 		<ClCompile Include="..\..\engines\asylum\views\video.cpp">
 			<Filter>views</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\asylum\asylum.cpp" />
-		<ClCompile Include="..\..\engines\asylum\console.cpp" />
-		<ClCompile Include="..\..\engines\asylum\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\asylum\respack.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\asylum\asylum.h" />
+		<ClInclude Include="..\..\engines\asylum\console.h" />
+		<ClInclude Include="..\..\engines\asylum\detection.h" />
+		<ClInclude Include="..\..\engines\asylum\detection_tables.h" />
+		<ClInclude Include="..\..\engines\asylum\eventhandler.h" />
 		<ClInclude Include="..\..\engines\asylum\puzzles\board.h">
 			<Filter>puzzles</Filter>
 		</ClInclude>
@@ -225,6 +230,9 @@
 		<ClInclude Include="..\..\engines\asylum\resources\worldstats.h">
 			<Filter>resources</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\asylum\respack.h" />
+		<ClInclude Include="..\..\engines\asylum\shared.h" />
+		<ClInclude Include="..\..\engines\asylum\staticres.h" />
 		<ClInclude Include="..\..\engines\asylum\system\config.h">
 			<Filter>system</Filter>
 		</ClInclude>
@@ -267,14 +275,6 @@
 		<ClInclude Include="..\..\engines\asylum\views\video.h">
 			<Filter>views</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\asylum\asylum.h" />
-		<ClInclude Include="..\..\engines\asylum\console.h" />
-		<ClInclude Include="..\..\engines\asylum\detection.h" />
-		<ClInclude Include="..\..\engines\asylum\detection_tables.h" />
-		<ClInclude Include="..\..\engines\asylum\eventhandler.h" />
-		<ClInclude Include="..\..\engines\asylum\respack.h" />
-		<ClInclude Include="..\..\engines\asylum\shared.h" />
-		<ClInclude Include="..\..\engines\asylum\staticres.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\asylum\module.mk" />
diff --git a/dists/msvc/awe.vcxproj b/dists/msvc/awe.vcxproj
index 6af3a3f7d57..0fdadee74b1 100644
--- a/dists/msvc/awe.vcxproj
+++ b/dists/msvc/awe.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{9EB5EE55-CFE5-4857-97F2-AC31AF34A0F4}</ProjectGuid>
+		<ProjectGuid>{671B7CAC-9C84-356C-9088-85CBD15BE5EC}</ProjectGuid>
 		<RootNamespace>awe</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/bagel.vcxproj b/dists/msvc/bagel.vcxproj
index 85c2b1ec49a..706ddfbd475 100644
--- a/dists/msvc/bagel.vcxproj
+++ b/dists/msvc/bagel.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{1DA78742-2840-49AF-8ED3-E473C5353044}</ProjectGuid>
+		<ProjectGuid>{1682E3E8-B4BF-348E-A00C-81267DB52CE5}</ProjectGuid>
 		<RootNamespace>bagel</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/bagel.vcxproj.filters b/dists/msvc/bagel.vcxproj.filters
index 4f875d38347..69c6f7f9163 100644
--- a/dists/msvc/bagel.vcxproj.filters
+++ b/dists/msvc/bagel.vcxproj.filters
@@ -1,122 +1,123 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="boflib">
-			<UniqueIdentifier>7250330D-69A1-4936-A443-032941829A6B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F2-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj">
-			<UniqueIdentifier>AF53E23E-73B9-402C-A8D6-EA6ABB7D5C24</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F3-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\archeroids">
-			<UniqueIdentifier>4A173A6F-706F-46AF-8FC1-E42F5339A9EB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F4-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\artparts">
-			<UniqueIdentifier>8A1EE7AD-4189-4625-B4D1-0D21AC5E3FDC</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F5-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\barbershop">
-			<UniqueIdentifier>DF6621EF-CFD6-4303-8A08-6934A8A2F2C7</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F6-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\battlefish">
-			<UniqueIdentifier>4D1364C6-B368-4625-AD46-00FB886A7850</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F7-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\beacon">
-			<UniqueIdentifier>2FA74892-4868-4D70-AFB8-503414D5AE91</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F8-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\crypt">
-			<UniqueIdentifier>EF7A2B98-9150-4B10-927C-876F0D0E01C2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5F9-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\dfa">
-			<UniqueIdentifier>7C9FC488-4213-4AB3-A9A3-D3FC174720ED</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FA-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\fuge">
-			<UniqueIdentifier>BCD84202-7617-4FBC-A201-C5D883400A5E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FB-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\garfunkle">
-			<UniqueIdentifier>E0CBC81E-B430-4567-A864-0586177AA578</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FC-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\gfx">
-			<UniqueIdentifier>8FF551EE-9207-4ADA-9CDD-08BA6F1C059D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FD-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\hnplibs">
-			<UniqueIdentifier>7C5F53E4-F2A0-4D24-8825-0373F392AF63</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FE-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\libs">
-			<UniqueIdentifier>F9E0DCF6-DA35-4E26-B4C4-BD98A407979A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA5FF-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\life">
-			<UniqueIdentifier>B6BFCACA-4326-49B4-BDFA-8215935FAA9D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA600-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\mankala">
-			<UniqueIdentifier>7BA83E91-E711-4431-89AA-E52BD9F0256E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA601-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\mazedoom">
-			<UniqueIdentifier>8DE22640-C0AA-4446-A684-A6161C57C33F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA602-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame">
-			<UniqueIdentifier>154902AD-2183-44CB-BA32-B6DB45904E6E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA603-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\bgen">
-			<UniqueIdentifier>A3EC06D7-6A2E-4077-8E9A-36BB32419FBB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA604-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\demo">
-			<UniqueIdentifier>7E42B24A-6962-4679-A23A-6AB6FE96CC8A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA605-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\frame">
-			<UniqueIdentifier>EAF0EE20-D537-4790-BAA8-5D8EE23A7630</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA606-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\grand_tour">
-			<UniqueIdentifier>2EB45ADC-08FB-404B-92E9-F1211F584A53</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA607-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\gtl">
-			<UniqueIdentifier>9D01B805-4643-49A4-994F-4F3CEED8BDE4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA608-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\saves">
-			<UniqueIdentifier>E3C11160-9319-4ABE-9C71-297CF7BA9D4A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA609-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\metagame\zoom">
-			<UniqueIdentifier>5802D796-CF3A-479F-9ADB-915A3DEB028C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\novacancy">
-			<UniqueIdentifier>E4EDC80E-173E-4447-91F4-D350552B4C9D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\packrat">
-			<UniqueIdentifier>74E4073D-59BF-45B1-AA6E-F08D417011E6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\pdq">
-			<UniqueIdentifier>6ADF1D52-FBAC-499E-AEE9-9F7A209A13BC</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\peggle">
-			<UniqueIdentifier>D846AA35-4551-47D1-B055-5DE4EB9FA9E8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\poker">
-			<UniqueIdentifier>B5BD2D2A-5EAF-41A8-B6A2-EBFA2B2D462A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA60F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\riddles">
-			<UniqueIdentifier>624C4FF0-CE42-4D46-B3F4-FD6711776D77</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA610-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hodjnpodj\wordsearch">
-			<UniqueIdentifier>7E4C3901-0A29-4391-81F6-7153F0D485C2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA611-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar">
-			<UniqueIdentifier>09F0229E-435A-482E-9AFA-670774FE1D11</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA612-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar\baglib">
-			<UniqueIdentifier>038374A7-4AA4-48CD-A079-F76E2927F0EB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA613-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar\boflib">
-			<UniqueIdentifier>E4305332-7A51-4637-BC26-77BEF4A8F918</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA614-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar\boflib\gfx">
-			<UniqueIdentifier>C6B20F9E-77A0-432E-8AEA-74E482F9D9F1</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA615-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar\boflib\gui">
-			<UniqueIdentifier>BE02A68C-9A7F-4436-A155-AFCE990C930D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA616-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spacebar\dialogs">
-			<UniqueIdentifier>547DE4C2-0A00-4224-B427-9A273B0D028C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA617-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\bagel\bagel.cpp" />
 		<ClCompile Include="..\..\engines\bagel\boflib\cache.cpp">
 			<Filter>boflib</Filter>
 		</ClCompile>
@@ -234,6 +235,9 @@
 		<ClCompile Include="..\..\engines\bagel\hodjnpodj\beacon\optndlg.cpp">
 			<Filter>hodjnpodj\beacon</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\hodjnpodj\console.cpp">
+			<Filter>hodjnpodj</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\hodjnpodj\crypt\crypt.cpp">
 			<Filter>hodjnpodj\crypt</Filter>
 		</ClCompile>
@@ -333,6 +337,9 @@
 		<ClCompile Include="..\..\engines\bagel\hodjnpodj\hnplibs\text.cpp">
 			<Filter>hodjnpodj\hnplibs</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\hodjnpodj\hodjnpodj.cpp">
+			<Filter>hodjnpodj</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\hodjnpodj\libs\vector.cpp">
 			<Filter>hodjnpodj\libs</Filter>
 		</ClCompile>
@@ -636,12 +643,8 @@
 		<ClCompile Include="..\..\engines\bagel\hodjnpodj\wordsearch\wordsearch.cpp">
 			<Filter>hodjnpodj\wordsearch</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\hodjnpodj\console.cpp">
-			<Filter>hodjnpodj</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\hodjnpodj\hodjnpodj.cpp">
-			<Filter>hodjnpodj</Filter>
-		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\bagel\music.cpp" />
 		<ClCompile Include="..\..\engines\bagel\spacebar\baglib\area_object.cpp">
 			<Filter>spacebar\baglib</Filter>
 		</ClCompile>
@@ -771,6 +774,27 @@
 		<ClCompile Include="..\..\engines\bagel\spacebar\baglib\zoom_pda.cpp">
 			<Filter>spacebar\baglib</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\bib_odds_wnd.cpp">
+			<Filter>spacebar</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\bibble_window.cpp">
+			<Filter>spacebar</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\app.cpp">
+			<Filter>spacebar\boflib</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\crc.cpp">
+			<Filter>spacebar\boflib</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\dat_file.cpp">
+			<Filter>spacebar\boflib</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\debug.cpp">
+			<Filter>spacebar\boflib</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\file.cpp">
+			<Filter>spacebar\boflib</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\gfx\bitmap.cpp">
 			<Filter>spacebar\boflib\gfx</Filter>
 		</ClCompile>
@@ -807,21 +831,6 @@
 		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\gui\window.cpp">
 			<Filter>spacebar\boflib\gui</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\app.cpp">
-			<Filter>spacebar\boflib</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\crc.cpp">
-			<Filter>spacebar\boflib</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\dat_file.cpp">
-			<Filter>spacebar\boflib</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\debug.cpp">
-			<Filter>spacebar\boflib</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\file.cpp">
-			<Filter>spacebar\boflib</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\options.cpp">
 			<Filter>spacebar\boflib</Filter>
 		</ClCompile>
@@ -834,6 +843,12 @@
 		<ClCompile Include="..\..\engines\bagel\spacebar\boflib\vector.cpp">
 			<Filter>spacebar\boflib</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\computer.cpp">
+			<Filter>spacebar</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bagel\spacebar\console.cpp">
+			<Filter>spacebar</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\spacebar\dialogs\credits_dialog.cpp">
 			<Filter>spacebar\dialogs</Filter>
 		</ClCompile>
@@ -858,18 +873,6 @@
 		<ClCompile Include="..\..\engines\bagel\spacebar\dialogs\start_dialog.cpp">
 			<Filter>spacebar\dialogs</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\bib_odds_wnd.cpp">
-			<Filter>spacebar</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\bibble_window.cpp">
-			<Filter>spacebar</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\computer.cpp">
-			<Filter>spacebar</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\spacebar\console.cpp">
-			<Filter>spacebar</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\bagel\spacebar\filter.cpp">
 			<Filter>spacebar</Filter>
 		</ClCompile>
@@ -903,11 +906,10 @@
 		<ClCompile Include="..\..\engines\bagel\spacebar\vid_wnd.cpp">
 			<Filter>spacebar</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bagel\bagel.cpp" />
-		<ClCompile Include="..\..\engines\bagel\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\bagel\music.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\bagel\afxwin.h" />
+		<ClInclude Include="..\..\engines\bagel\bagel.h" />
 		<ClInclude Include="..\..\engines\bagel\boflib\cache.h">
 			<Filter>boflib</Filter>
 		</ClInclude>
@@ -962,6 +964,8 @@
 		<ClInclude Include="..\..\engines\bagel\boflib\string_functions.h">
 			<Filter>boflib</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\detection.h" />
+		<ClInclude Include="..\..\engines\bagel\detection_tables.h" />
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\archeroids\init.h">
 			<Filter>hodjnpodj\archeroids</Filter>
 		</ClInclude>
@@ -1052,6 +1056,9 @@
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\beacon\resource.h">
 			<Filter>hodjnpodj\beacon</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\hodjnpodj\console.h">
+			<Filter>hodjnpodj</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\crypt\crypt.h">
 			<Filter>hodjnpodj\crypt</Filter>
 		</ClInclude>
@@ -1133,6 +1140,9 @@
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\gfx\palette.h">
 			<Filter>hodjnpodj\gfx</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\hodjnpodj\globals.h">
+			<Filter>hodjnpodj</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\hnplibs\audiocfg.h">
 			<Filter>hodjnpodj\hnplibs</Filter>
 		</ClInclude>
@@ -1181,6 +1191,9 @@
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\hnplibs\text.h">
 			<Filter>hodjnpodj\hnplibs</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\hodjnpodj\hodjnpodj.h">
+			<Filter>hodjnpodj</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\libs\array.h">
 			<Filter>hodjnpodj\libs</Filter>
 		</ClInclude>
@@ -1547,15 +1560,8 @@
 		<ClInclude Include="..\..\engines\bagel\hodjnpodj\wordsearch\wordsearch.h">
 			<Filter>hodjnpodj\wordsearch</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\hodjnpodj\console.h">
-			<Filter>hodjnpodj</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\hodjnpodj\globals.h">
-			<Filter>hodjnpodj</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\hodjnpodj\hodjnpodj.h">
-			<Filter>hodjnpodj</Filter>
-		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\metaengine.h" />
+		<ClInclude Include="..\..\engines\bagel\music.h" />
 		<ClInclude Include="..\..\engines\bagel\spacebar\baglib\area_object.h">
 			<Filter>spacebar\baglib</Filter>
 		</ClInclude>
@@ -1691,6 +1697,33 @@
 		<ClInclude Include="..\..\engines\bagel\spacebar\baglib\zoom_pda.h">
 			<Filter>spacebar\baglib</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\bib_odds_wnd.h">
+			<Filter>spacebar</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\bibble_window.h">
+			<Filter>spacebar</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\app.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\array.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\crc.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\dat_file.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\debug.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\events.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\file.h">
+			<Filter>spacebar\boflib</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\fixed.h">
 			<Filter>spacebar\boflib</Filter>
 		</ClInclude>
@@ -1730,27 +1763,6 @@
 		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\gui\window.h">
 			<Filter>spacebar\boflib\gui</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\app.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\array.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\crc.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\dat_file.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\debug.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\events.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\file.h">
-			<Filter>spacebar\boflib</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\list.h">
 			<Filter>spacebar\boflib</Filter>
 		</ClInclude>
@@ -1772,6 +1784,12 @@
 		<ClInclude Include="..\..\engines\bagel\spacebar\boflib\vhash_table.h">
 			<Filter>spacebar\boflib</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\computer.h">
+			<Filter>spacebar</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\bagel\spacebar\console.h">
+			<Filter>spacebar</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\spacebar\dialogs\credits_dialog.h">
 			<Filter>spacebar\dialogs</Filter>
 		</ClInclude>
@@ -1796,18 +1814,6 @@
 		<ClInclude Include="..\..\engines\bagel\spacebar\dialogs\start_dialog.h">
 			<Filter>spacebar\dialogs</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\bib_odds_wnd.h">
-			<Filter>spacebar</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\bibble_window.h">
-			<Filter>spacebar</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\computer.h">
-			<Filter>spacebar</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\spacebar\console.h">
-			<Filter>spacebar</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\bagel\spacebar\filter.h">
 			<Filter>spacebar</Filter>
 		</ClInclude>
@@ -1850,12 +1856,6 @@
 		<ClInclude Include="..\..\engines\bagel\spacebar\vid_wnd.h">
 			<Filter>spacebar</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bagel\afxwin.h" />
-		<ClInclude Include="..\..\engines\bagel\bagel.h" />
-		<ClInclude Include="..\..\engines\bagel\detection.h" />
-		<ClInclude Include="..\..\engines\bagel\detection_tables.h" />
-		<ClInclude Include="..\..\engines\bagel\metaengine.h" />
-		<ClInclude Include="..\..\engines\bagel\music.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\bagel\module.mk" />
diff --git a/dists/msvc/bbvs.vcxproj b/dists/msvc/bbvs.vcxproj
index cb97e293e69..8e569c59b96 100644
--- a/dists/msvc/bbvs.vcxproj
+++ b/dists/msvc/bbvs.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{C8807703-ACF0-4672-8437-C93AD859377B}</ProjectGuid>
+		<ProjectGuid>{085128FA-84D5-3ED6-890C-A1CC39DB3701}</ProjectGuid>
 		<RootNamespace>bbvs</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/bbvs.vcxproj.filters b/dists/msvc/bbvs.vcxproj.filters
index 1803ed03732..36bc8454533 100644
--- a/dists/msvc/bbvs.vcxproj.filters
+++ b/dists/msvc/bbvs.vcxproj.filters
@@ -1,11 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="minigames">
-			<UniqueIdentifier>FB77F906-FD9A-439D-9CF4-95FED599E53C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA618-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\bbvs\bbvs.cpp" />
+		<ClCompile Include="..\..\engines\bbvs\dialogs.cpp" />
+		<ClCompile Include="..\..\engines\bbvs\gamemodule.cpp" />
+		<ClCompile Include="..\..\engines\bbvs\graphics.cpp" />
+		<ClCompile Include="..\..\engines\bbvs\logic.cpp" />
+		<ClCompile Include="..\..\engines\bbvs\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\bbvs\minigames\bbairguitar.cpp">
 			<Filter>minigames</Filter>
 		</ClCompile>
@@ -33,12 +39,6 @@
 		<ClCompile Include="..\..\engines\bbvs\minigames\minigame.cpp">
 			<Filter>minigames</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bbvs\bbvs.cpp" />
-		<ClCompile Include="..\..\engines\bbvs\dialogs.cpp" />
-		<ClCompile Include="..\..\engines\bbvs\gamemodule.cpp" />
-		<ClCompile Include="..\..\engines\bbvs\graphics.cpp" />
-		<ClCompile Include="..\..\engines\bbvs\logic.cpp" />
-		<ClCompile Include="..\..\engines\bbvs\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\bbvs\saveload.cpp" />
 		<ClCompile Include="..\..\engines\bbvs\scene.cpp" />
 		<ClCompile Include="..\..\engines\bbvs\sound.cpp" />
@@ -47,6 +47,11 @@
 		<ClCompile Include="..\..\engines\bbvs\walk.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\bbvs\bbvs.h" />
+		<ClInclude Include="..\..\engines\bbvs\detection.h" />
+		<ClInclude Include="..\..\engines\bbvs\dialogs.h" />
+		<ClInclude Include="..\..\engines\bbvs\gamemodule.h" />
+		<ClInclude Include="..\..\engines\bbvs\graphics.h" />
 		<ClInclude Include="..\..\engines\bbvs\minigames\bbairguitar.h">
 			<Filter>minigames</Filter>
 		</ClInclude>
@@ -62,11 +67,6 @@
 		<ClInclude Include="..\..\engines\bbvs\minigames\minigame.h">
 			<Filter>minigames</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bbvs\bbvs.h" />
-		<ClInclude Include="..\..\engines\bbvs\detection.h" />
-		<ClInclude Include="..\..\engines\bbvs\dialogs.h" />
-		<ClInclude Include="..\..\engines\bbvs\gamemodule.h" />
-		<ClInclude Include="..\..\engines\bbvs\graphics.h" />
 		<ClInclude Include="..\..\engines\bbvs\sound.h" />
 		<ClInclude Include="..\..\engines\bbvs\spritemodule.h" />
 	</ItemGroup>
diff --git a/dists/msvc/bladerunner.vcxproj b/dists/msvc/bladerunner.vcxproj
index 7c0d01c75b0..2f8882f1bb5 100644
--- a/dists/msvc/bladerunner.vcxproj
+++ b/dists/msvc/bladerunner.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{0A6E23AF-B59C-4B81-974B-FC877EF400D5}</ProjectGuid>
+		<ProjectGuid>{32D59313-44A1-3CC2-AC13-DE5916EBE514}</ProjectGuid>
 		<RootNamespace>bladerunner</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/bladerunner.vcxproj.filters b/dists/msvc/bladerunner.vcxproj.filters
index 1cfc4e8e38f..e2e5517c012 100644
--- a/dists/msvc/bladerunner.vcxproj.filters
+++ b/dists/msvc/bladerunner.vcxproj.filters
@@ -1,20 +1,67 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="script">
-			<UniqueIdentifier>9AEF799A-449F-4227-8DD0-B3E4307CDE57</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA619-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="script\ai">
-			<UniqueIdentifier>157CC22D-581E-4627-91E2-9C7200F1125B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="script\scene">
-			<UniqueIdentifier>065EA6D1-C8AA-4926-8DC1-22102AEEAD3D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="ui">
-			<UniqueIdentifier>C480B156-C6C0-4D46-877D-9766C4E6B4E3</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\bladerunner\actor.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\actor_clues.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\actor_combat.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\actor_dialogue_queue.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\actor_walk.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\adpcm_decoder.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\ambient_sounds.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\archive.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\aud_stream.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\audio_cache.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\audio_mixer.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\audio_player.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\audio_speech.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\bladerunner.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\boundingbox.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\chapters.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\color.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\combat.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\crimes_database.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\debugger.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\decompress_lcw.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\decompress_lzo.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\dialogue_menu.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\fog.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\font.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\framelimiter.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\game_flags.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\game_info.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\image.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\item.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\item_pickup.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\items.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\light.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\lights.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\matrix.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\mouse.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\movement_track.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\music.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\obstacles.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\outtake.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\overlays.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\regions.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\savefile.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\scene.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\scene_objects.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\screen_effects.cpp" />
 		<ClCompile Include="..\..\engines\bladerunner\script\ai\answering_machine.cpp">
 			<Filter>script\ai</Filter>
 		</ClCompile>
@@ -234,6 +281,21 @@
 		<ClCompile Include="..\..\engines\bladerunner\script\ai\zuben.cpp">
 			<Filter>script\ai</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\script\ai_script.cpp">
+			<Filter>script</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\script\esper_script.cpp">
+			<Filter>script</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\script\init_script.cpp">
+			<Filter>script</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\script\kia_script.cpp">
+			<Filter>script</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\script\police_maze.cpp">
+			<Filter>script</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\bladerunner\script\scene\ar01.cpp">
 			<Filter>script\scene</Filter>
 		</ClCompile>
@@ -570,21 +632,6 @@
 		<ClCompile Include="..\..\engines\bladerunner\script\scene\ug19.cpp">
 			<Filter>script\scene</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\script\ai_script.cpp">
-			<Filter>script</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\script\esper_script.cpp">
-			<Filter>script</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\script\init_script.cpp">
-			<Filter>script</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\script\kia_script.cpp">
-			<Filter>script</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\script\police_maze.cpp">
-			<Filter>script</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\bladerunner\script\scene_script.cpp">
 			<Filter>script</Filter>
 		</ClCompile>
@@ -594,6 +641,16 @@
 		<ClCompile Include="..\..\engines\bladerunner\script\vk_script.cpp">
 			<Filter>script</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\bladerunner\set.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\set_effects.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\settings.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\shape.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\slice_animations.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\slice_renderer.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\subtitles.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\suspects_database.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\text_resource.cpp" />
+		<ClCompile Include="..\..\engines\bladerunner\time.cpp" />
 		<ClCompile Include="..\..\engines\bladerunner\ui\elevator.cpp">
 			<Filter>ui</Filter>
 		</ClCompile>
@@ -669,63 +726,6 @@
 		<ClCompile Include="..\..\engines\bladerunner\ui\vk.cpp">
 			<Filter>ui</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\bladerunner\actor.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\actor_clues.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\actor_combat.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\actor_dialogue_queue.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\actor_walk.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\adpcm_decoder.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\ambient_sounds.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\archive.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\aud_stream.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\audio_cache.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\audio_mixer.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\audio_player.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\audio_speech.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\bladerunner.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\boundingbox.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\chapters.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\color.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\combat.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\crimes_database.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\debugger.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\decompress_lcw.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\decompress_lzo.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\dialogue_menu.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\fog.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\font.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\framelimiter.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\game_flags.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\game_info.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\image.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\item.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\item_pickup.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\items.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\light.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\lights.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\matrix.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\mouse.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\movement_track.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\music.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\obstacles.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\outtake.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\overlays.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\regions.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\savefile.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\scene.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\scene_objects.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\screen_effects.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\set.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\set_effects.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\settings.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\shape.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\slice_animations.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\slice_renderer.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\subtitles.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\suspects_database.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\text_resource.cpp" />
-		<ClCompile Include="..\..\engines\bladerunner\time.cpp" />
 		<ClCompile Include="..\..\engines\bladerunner\view.cpp" />
 		<ClCompile Include="..\..\engines\bladerunner\vqa_decoder.cpp" />
 		<ClCompile Include="..\..\engines\bladerunner\vqa_player.cpp" />
@@ -733,6 +733,56 @@
 		<ClCompile Include="..\..\engines\bladerunner\zbuffer.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\bladerunner\actor.h" />
+		<ClInclude Include="..\..\engines\bladerunner\actor_clues.h" />
+		<ClInclude Include="..\..\engines\bladerunner\actor_combat.h" />
+		<ClInclude Include="..\..\engines\bladerunner\actor_dialogue_queue.h" />
+		<ClInclude Include="..\..\engines\bladerunner\actor_walk.h" />
+		<ClInclude Include="..\..\engines\bladerunner\adpcm_decoder.h" />
+		<ClInclude Include="..\..\engines\bladerunner\ambient_sounds.h" />
+		<ClInclude Include="..\..\engines\bladerunner\archive.h" />
+		<ClInclude Include="..\..\engines\bladerunner\aud_stream.h" />
+		<ClInclude Include="..\..\engines\bladerunner\audio_cache.h" />
+		<ClInclude Include="..\..\engines\bladerunner\audio_mixer.h" />
+		<ClInclude Include="..\..\engines\bladerunner\audio_player.h" />
+		<ClInclude Include="..\..\engines\bladerunner\audio_speech.h" />
+		<ClInclude Include="..\..\engines\bladerunner\bladerunner.h" />
+		<ClInclude Include="..\..\engines\bladerunner\boundingbox.h" />
+		<ClInclude Include="..\..\engines\bladerunner\chapters.h" />
+		<ClInclude Include="..\..\engines\bladerunner\color.h" />
+		<ClInclude Include="..\..\engines\bladerunner\combat.h" />
+		<ClInclude Include="..\..\engines\bladerunner\crimes_database.h" />
+		<ClInclude Include="..\..\engines\bladerunner\debugger.h" />
+		<ClInclude Include="..\..\engines\bladerunner\decompress_lcw.h" />
+		<ClInclude Include="..\..\engines\bladerunner\decompress_lzo.h" />
+		<ClInclude Include="..\..\engines\bladerunner\detection.h" />
+		<ClInclude Include="..\..\engines\bladerunner\detection_tables.h" />
+		<ClInclude Include="..\..\engines\bladerunner\dialogue_menu.h" />
+		<ClInclude Include="..\..\engines\bladerunner\fog.h" />
+		<ClInclude Include="..\..\engines\bladerunner\font.h" />
+		<ClInclude Include="..\..\engines\bladerunner\framelimiter.h" />
+		<ClInclude Include="..\..\engines\bladerunner\game_constants.h" />
+		<ClInclude Include="..\..\engines\bladerunner\game_flags.h" />
+		<ClInclude Include="..\..\engines\bladerunner\game_info.h" />
+		<ClInclude Include="..\..\engines\bladerunner\image.h" />
+		<ClInclude Include="..\..\engines\bladerunner\item.h" />
+		<ClInclude Include="..\..\engines\bladerunner\item_pickup.h" />
+		<ClInclude Include="..\..\engines\bladerunner\items.h" />
+		<ClInclude Include="..\..\engines\bladerunner\light.h" />
+		<ClInclude Include="..\..\engines\bladerunner\lights.h" />
+		<ClInclude Include="..\..\engines\bladerunner\matrix.h" />
+		<ClInclude Include="..\..\engines\bladerunner\mouse.h" />
+		<ClInclude Include="..\..\engines\bladerunner\movement_track.h" />
+		<ClInclude Include="..\..\engines\bladerunner\music.h" />
+		<ClInclude Include="..\..\engines\bladerunner\obstacles.h" />
+		<ClInclude Include="..\..\engines\bladerunner\outtake.h" />
+		<ClInclude Include="..\..\engines\bladerunner\overlays.h" />
+		<ClInclude Include="..\..\engines\bladerunner\rect_float.h" />
+		<ClInclude Include="..\..\engines\bladerunner\regions.h" />
+		<ClInclude Include="..\..\engines\bladerunner\savefile.h" />
+		<ClInclude Include="..\..\engines\bladerunner\scene.h" />
+		<ClInclude Include="..\..\engines\bladerunner\scene_objects.h" />
+		<ClInclude Include="..\..\engines\bladerunner\screen_effects.h" />
 		<ClInclude Include="..\..\engines\bladerunner\script\ai_script.h">
 			<Filter>script</Filter>
 		</ClInclude>
@@ -757,6 +807,16 @@
 		<ClInclude Include="..\..\engines\bladerunner\script\vk_script.h">
 			<Filter>script</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\bladerunner\set.h" />
+		<ClInclude Include="..\..\engines\bladerunner\set_effects.h" />
+		<ClInclude Include="..\..\engines\bladerunner\settings.h" />
+		<ClInclude Include="..\..\engines\bladerunner\shape.h" />
+		<ClInclude Include="..\..\engines\bladerunner\slice_animations.h" />
+		<ClInclude Include="..\..\engines\bladerunner\slice_renderer.h" />
+		<ClInclude Include="..\..\engines\bladerunner\subtitles.h" />
+		<ClInclude Include="..\..\engines\bladerunner\suspects_database.h" />
+		<ClInclude Include="..\..\engines\bladerunner\text_resource.h" />
+		<ClInclude Include="..\..\engines\bladerunner\time.h" />
 		<ClInclude Include="..\..\engines\bladerunner\ui\elevator.h">
 			<Filter>ui</Filter>
 		</ClInclude>
@@ -835,66 +895,6 @@
 		<ClInclude Include="..\..\engines\bladerunner\ui\vk.h">
 			<Filter>ui</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\bladerunner\actor.h" />
-		<ClInclude Include="..\..\engines\bladerunner\actor_clues.h" />
-		<ClInclude Include="..\..\engines\bladerunner\actor_combat.h" />
-		<ClInclude Include="..\..\engines\bladerunner\actor_dialogue_queue.h" />
-		<ClInclude Include="..\..\engines\bladerunner\actor_walk.h" />
-		<ClInclude Include="..\..\engines\bladerunner\adpcm_decoder.h" />
-		<ClInclude Include="..\..\engines\bladerunner\ambient_sounds.h" />
-		<ClInclude Include="..\..\engines\bladerunner\archive.h" />
-		<ClInclude Include="..\..\engines\bladerunner\aud_stream.h" />
-		<ClInclude Include="..\..\engines\bladerunner\audio_cache.h" />
-		<ClInclude Include="..\..\engines\bladerunner\audio_mixer.h" />
-		<ClInclude Include="..\..\engines\bladerunner\audio_player.h" />
-		<ClInclude Include="..\..\engines\bladerunner\audio_speech.h" />
-		<ClInclude Include="..\..\engines\bladerunner\bladerunner.h" />
-		<ClInclude Include="..\..\engines\bladerunner\boundingbox.h" />
-		<ClInclude Include="..\..\engines\bladerunner\chapters.h" />
-		<ClInclude Include="..\..\engines\bladerunner\color.h" />
-		<ClInclude Include="..\..\engines\bladerunner\combat.h" />
-		<ClInclude Include="..\..\engines\bladerunner\crimes_database.h" />
-		<ClInclude Include="..\..\engines\bladerunner\debugger.h" />
-		<ClInclude Include="..\..\engines\bladerunner\decompress_lcw.h" />
-		<ClInclude Include="..\..\engines\bladerunner\decompress_lzo.h" />
-		<ClInclude Include="..\..\engines\bladerunner\detection.h" />
-		<ClInclude Include="..\..\engines\bladerunner\detection_tables.h" />
-		<ClInclude Include="..\..\engines\bladerunner\dialogue_menu.h" />
-		<ClInclude Include="..\..\engines\bladerunner\fog.h" />
-		<ClInclude Include="..\..\engines\bladerunner\font.h" />
-		<ClInclude Include="..\..\engines\bladerunner\framelimiter.h" />
-		<ClInclude Include="..\..\engines\bladerunner\game_constants.h" />
-		<ClInclude Include="..\..\engines\bladerunner\game_flags.h" />
-		<ClInclude Include="..\..\engines\bladerunner\game_info.h" />
-		<ClInclude Include="..\..\engines\bladerunner\image.h" />
-		<ClInclude Include="..\..\engines\bladerunner\item.h" />
-		<ClInclude Include="..\..\engines\bladerunner\item_pickup.h" />
-		<ClInclude Include="..\..\engines\bladerunner\items.h" />
-		<ClInclude Include="..\..\engines\bladerunner\light.h" />
-		<ClInclude Include="..\..\engines\bladerunner\lights.h" />
-		<ClInclude Include="..\..\engines\bladerunner\matrix.h" />
-		<ClInclude Include="..\..\engines\bladerunner\mouse.h" />
-		<ClInclude Include="..\..\engines\bladerunner\movement_track.h" />
-		<ClInclude Include="..\..\engines\bladerunner\music.h" />
-		<ClInclude Include="..\..\engines\bladerunner\obstacles.h" />
-		<ClInclude Include="..\..\engines\bladerunner\outtake.h" />
-		<ClInclude Include="..\..\engines\bladerunner\overlays.h" />
-		<ClInclude Include="..\..\engines\bladerunner\rect_float.h" />
-		<ClInclude Include="..\..\engines\bladerunner\regions.h" />
-		<ClInclude Include="..\..\engines\bladerunner\savefile.h" />
-		<ClInclude Include="..\..\engines\bladerunner\scene.h" />
-		<ClInclude Include="..\..\engines\bladerunner\scene_objects.h" />
-		<ClInclude Include="..\..\engines\bladerunner\screen_effects.h" />
-		<ClInclude Include="..\..\engines\bladerunner\set.h" />
-		<ClInclude Include="..\..\engines\bladerunner\set_effects.h" />
-		<ClInclude Include="..\..\engines\bladerunner\settings.h" />
-		<ClInclude Include="..\..\engines\bladerunner\shape.h" />
-		<ClInclude Include="..\..\engines\bladerunner\slice_animations.h" />
-		<ClInclude Include="..\..\engines\bladerunner\slice_renderer.h" />
-		<ClInclude Include="..\..\engines\bladerunner\subtitles.h" />
-		<ClInclude Include="..\..\engines\bladerunner\suspects_database.h" />
-		<ClInclude Include="..\..\engines\bladerunner\text_resource.h" />
-		<ClInclude Include="..\..\engines\bladerunner\time.h" />
 		<ClInclude Include="..\..\engines\bladerunner\vector.h" />
 		<ClInclude Include="..\..\engines\bladerunner\view.h" />
 		<ClInclude Include="..\..\engines\bladerunner\vqa_decoder.h" />
diff --git a/dists/msvc/buried.vcxproj b/dists/msvc/buried.vcxproj
index 3273ff16e37..90cef6a379c 100644
--- a/dists/msvc/buried.vcxproj
+++ b/dists/msvc/buried.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{1CA60C59-EA73-468E-9065-AE1D67EC0F02}</ProjectGuid>
+		<ProjectGuid>{ED5D36D8-68B0-3A25-B9C5-FA2DBDABCF38}</ProjectGuid>
 		<RootNamespace>buried</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/buried.vcxproj.filters b/dists/msvc/buried.vcxproj.filters
index a44130e491e..b834f21d0ed 100644
--- a/dists/msvc/buried.vcxproj.filters
+++ b/dists/msvc/buried.vcxproj.filters
@@ -1,16 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="demo">
-			<UniqueIdentifier>452F456E-7D79-43C9-BA96-E004690A3CD8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="environ">
-			<UniqueIdentifier>2B371C43-9B96-4B0D-98C6-414A6CF5A83B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\buried\agent_evaluation.cpp" />
+		<ClCompile Include="..\..\engines\buried\avi_frames.cpp" />
+		<ClCompile Include="..\..\engines\buried\biochip_right.cpp" />
+		<ClCompile Include="..\..\engines\buried\biochip_view.cpp" />
+		<ClCompile Include="..\..\engines\buried\buried.cpp" />
+		<ClCompile Include="..\..\engines\buried\complete.cpp" />
 		<ClCompile Include="..\..\engines\buried\console.cpp" />
 		<ClCompile Include="..\..\engines\buried\credits.cpp" />
+		<ClCompile Include="..\..\engines\buried\death.cpp" />
 		<ClCompile Include="..\..\engines\buried\demo\demo_menu.cpp">
 			<Filter>demo</Filter>
 		</ClCompile>
@@ -20,7 +27,6 @@
 		<ClCompile Include="..\..\engines\buried\demo\movie_scene.cpp">
 			<Filter>demo</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\buried\death.cpp" />
 		<ClCompile Include="..\..\engines\buried\environ\agent3_lair.cpp">
 			<Filter>environ</Filter>
 		</ClCompile>
@@ -51,12 +57,6 @@
 		<ClCompile Include="..\..\engines\buried\environ\scene_factory.cpp">
 			<Filter>environ</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\buried\agent_evaluation.cpp" />
-		<ClCompile Include="..\..\engines\buried\avi_frames.cpp" />
-		<ClCompile Include="..\..\engines\buried\biochip_right.cpp" />
-		<ClCompile Include="..\..\engines\buried\biochip_view.cpp" />
-		<ClCompile Include="..\..\engines\buried\buried.cpp" />
-		<ClCompile Include="..\..\engines\buried\complete.cpp" />
 		<ClCompile Include="..\..\engines\buried\frame_window.cpp" />
 		<ClCompile Include="..\..\engines\buried\gameui.cpp" />
 		<ClCompile Include="..\..\engines\buried\graphics.cpp" />
@@ -75,6 +75,18 @@
 		<ClCompile Include="..\..\engines\buried\window.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\buried\agent_evaluation.h" />
+		<ClInclude Include="..\..\engines\buried\aidata.h" />
+		<ClInclude Include="..\..\engines\buried\animdata.h" />
+		<ClInclude Include="..\..\engines\buried\avi_frames.h" />
+		<ClInclude Include="..\..\engines\buried\biochip_right.h" />
+		<ClInclude Include="..\..\engines\buried\biochip_view.h" />
+		<ClInclude Include="..\..\engines\buried\bookdata.h" />
+		<ClInclude Include="..\..\engines\buried\buried.h" />
+		<ClInclude Include="..\..\engines\buried\complete.h" />
+		<ClInclude Include="..\..\engines\buried\console.h" />
+		<ClInclude Include="..\..\engines\buried\credits.h" />
+		<ClInclude Include="..\..\engines\buried\death.h" />
 		<ClInclude Include="..\..\engines\buried\demo\demo_menu.h">
 			<Filter>demo</Filter>
 		</ClInclude>
@@ -84,26 +96,14 @@
 		<ClInclude Include="..\..\engines\buried\demo\movie_scene.h">
 			<Filter>demo</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\buried\detection.h" />
+		<ClInclude Include="..\..\engines\buried\detection_tables.h" />
 		<ClInclude Include="..\..\engines\buried\environ\scene_base.h">
 			<Filter>environ</Filter>
 		</ClInclude>
 		<ClInclude Include="..\..\engines\buried\environ\scene_common.h">
 			<Filter>environ</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\buried\agent_evaluation.h" />
-		<ClInclude Include="..\..\engines\buried\aidata.h" />
-		<ClInclude Include="..\..\engines\buried\animdata.h" />
-		<ClInclude Include="..\..\engines\buried\avi_frames.h" />
-		<ClInclude Include="..\..\engines\buried\biochip_right.h" />
-		<ClInclude Include="..\..\engines\buried\biochip_view.h" />
-		<ClInclude Include="..\..\engines\buried\bookdata.h" />
-		<ClInclude Include="..\..\engines\buried\buried.h" />
-		<ClInclude Include="..\..\engines\buried\complete.h" />
-		<ClInclude Include="..\..\engines\buried\console.h" />
-		<ClInclude Include="..\..\engines\buried\credits.h" />
-		<ClInclude Include="..\..\engines\buried\death.h" />
-		<ClInclude Include="..\..\engines\buried\detection.h" />
-		<ClInclude Include="..\..\engines\buried\detection_tables.h" />
 		<ClInclude Include="..\..\engines\buried\fbcdata.h" />
 		<ClInclude Include="..\..\engines\buried\frame_window.h" />
 		<ClInclude Include="..\..\engines\buried\gameui.h" />
diff --git a/dists/msvc/cge.vcxproj b/dists/msvc/cge.vcxproj
index 607df93844a..e45f79be22e 100644
--- a/dists/msvc/cge.vcxproj
+++ b/dists/msvc/cge.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{8E8B5EF3-64F9-414B-8B4F-C693C9809436}</ProjectGuid>
+		<ProjectGuid>{37EB5338-FB2A-349E-A897-0B0D90739D1B}</ProjectGuid>
 		<RootNamespace>cge</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/cge2.vcxproj b/dists/msvc/cge2.vcxproj
index 3bd773b4d6b..9af383c2bf7 100644
--- a/dists/msvc/cge2.vcxproj
+++ b/dists/msvc/cge2.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{8955EA12-6349-4258-8D3F-0494BEBC7AC8}</ProjectGuid>
+		<ProjectGuid>{0484D058-6344-36A7-8ABC-44A9C28CF6F7}</ProjectGuid>
 		<RootNamespace>cge2</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/chewy.vcxproj b/dists/msvc/chewy.vcxproj
index 7a888092c98..ff4aebd1ab2 100644
--- a/dists/msvc/chewy.vcxproj
+++ b/dists/msvc/chewy.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{13195C55-0CDB-4B58-81C5-7196EA0C4D60}</ProjectGuid>
+		<ProjectGuid>{5DB999DF-71AE-3922-8503-BF0772EC131F}</ProjectGuid>
 		<RootNamespace>chewy</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/chewy.vcxproj.filters b/dists/msvc/chewy.vcxproj.filters
index 15f5316454b..0302a4d8545 100644
--- a/dists/msvc/chewy.vcxproj.filters
+++ b/dists/msvc/chewy.vcxproj.filters
@@ -1,20 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="audio">
-			<UniqueIdentifier>E3FD9E3B-16BB-4035-B12C-C72009EB2BBE</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA61F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="dialogs">
-			<UniqueIdentifier>D0A61595-8790-4879-8EC3-8BEDE294F4CB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA620-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="rooms">
-			<UniqueIdentifier>7AC188F0-2591-4970-AD83-377B16E37D79</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA621-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="video">
-			<UniqueIdentifier>52E3EE1B-16D1-4044-BD11-F624F0F90DBF</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA622-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\chewy\atds.cpp" />
 		<ClCompile Include="..\..\engines\chewy\audio\chewy_voc.cpp">
 			<Filter>audio</Filter>
 		</ClCompile>
@@ -24,6 +25,11 @@
 		<ClCompile Include="..\..\engines\chewy\audio\tmf_stream.cpp">
 			<Filter>audio</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\chewy\barriers.cpp" />
+		<ClCompile Include="..\..\engines\chewy\chewy.cpp" />
+		<ClCompile Include="..\..\engines\chewy\console.cpp" />
+		<ClCompile Include="..\..\engines\chewy\cursor.cpp" />
+		<ClCompile Include="..\..\engines\chewy\detail.cpp" />
 		<ClCompile Include="..\..\engines\chewy\dialogs\cinema.cpp">
 			<Filter>dialogs</Filter>
 		</ClCompile>
@@ -42,6 +48,22 @@
 		<ClCompile Include="..\..\engines\chewy\dialogs\options.cpp">
 			<Filter>dialogs</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\chewy\effect.cpp" />
+		<ClCompile Include="..\..\engines\chewy\events.cpp" />
+		<ClCompile Include="..\..\engines\chewy\font.cpp" />
+		<ClCompile Include="..\..\engines\chewy\globals.cpp" />
+		<ClCompile Include="..\..\engines\chewy\inits.cpp" />
+		<ClCompile Include="..\..\engines\chewy\main.cpp" />
+		<ClCompile Include="..\..\engines\chewy\mcga_graphics.cpp" />
+		<ClCompile Include="..\..\engines\chewy\memory.cpp" />
+		<ClCompile Include="..\..\engines\chewy\menus.cpp" />
+		<ClCompile Include="..\..\engines\chewy\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\chewy\movclass.cpp" />
+		<ClCompile Include="..\..\engines\chewy\object.cpp" />
+		<ClCompile Include="..\..\engines\chewy\object_extra.cpp" />
+		<ClCompile Include="..\..\engines\chewy\r_event.cpp" />
+		<ClCompile Include="..\..\engines\chewy\resource.cpp" />
+		<ClCompile Include="..\..\engines\chewy\room.cpp" />
 		<ClCompile Include="..\..\engines\chewy\rooms\room00.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
@@ -315,42 +337,22 @@
 		<ClCompile Include="..\..\engines\chewy\rooms\room97.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\chewy\video\cfo_decoder.cpp">
-			<Filter>video</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\chewy\video\video_player.cpp">
-			<Filter>video</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\chewy\atds.cpp" />
-		<ClCompile Include="..\..\engines\chewy\barriers.cpp" />
-		<ClCompile Include="..\..\engines\chewy\chewy.cpp" />
-		<ClCompile Include="..\..\engines\chewy\console.cpp" />
-		<ClCompile Include="..\..\engines\chewy\cursor.cpp" />
-		<ClCompile Include="..\..\engines\chewy\detail.cpp" />
-		<ClCompile Include="..\..\engines\chewy\effect.cpp" />
-		<ClCompile Include="..\..\engines\chewy\events.cpp" />
-		<ClCompile Include="..\..\engines\chewy\font.cpp" />
-		<ClCompile Include="..\..\engines\chewy\globals.cpp" />
-		<ClCompile Include="..\..\engines\chewy\inits.cpp" />
-		<ClCompile Include="..\..\engines\chewy\main.cpp" />
-		<ClCompile Include="..\..\engines\chewy\mcga_graphics.cpp" />
-		<ClCompile Include="..\..\engines\chewy\memory.cpp" />
-		<ClCompile Include="..\..\engines\chewy\menus.cpp" />
-		<ClCompile Include="..\..\engines\chewy\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\chewy\movclass.cpp" />
-		<ClCompile Include="..\..\engines\chewy\object.cpp" />
-		<ClCompile Include="..\..\engines\chewy\object_extra.cpp" />
-		<ClCompile Include="..\..\engines\chewy\r_event.cpp" />
-		<ClCompile Include="..\..\engines\chewy\resource.cpp" />
-		<ClCompile Include="..\..\engines\chewy\room.cpp" />
 		<ClCompile Include="..\..\engines\chewy\sound.cpp" />
 		<ClCompile Include="..\..\engines\chewy\sprite.cpp" />
 		<ClCompile Include="..\..\engines\chewy\t_event.cpp" />
 		<ClCompile Include="..\..\engines\chewy\text.cpp" />
 		<ClCompile Include="..\..\engines\chewy\timer.cpp" />
 		<ClCompile Include="..\..\engines\chewy\types.cpp" />
+		<ClCompile Include="..\..\engines\chewy\video\cfo_decoder.cpp">
+			<Filter>video</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\chewy\video\video_player.cpp">
+			<Filter>video</Filter>
+		</ClCompile>
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\chewy\ani_dat.h" />
+		<ClInclude Include="..\..\engines\chewy\atds.h" />
 		<ClInclude Include="..\..\engines\chewy\audio\chewy_voc.h">
 			<Filter>audio</Filter>
 		</ClInclude>
@@ -360,6 +362,13 @@
 		<ClInclude Include="..\..\engines\chewy\audio\tmf_stream.h">
 			<Filter>audio</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\chewy\barriers.h" />
+		<ClInclude Include="..\..\engines\chewy\chewy.h" />
+		<ClInclude Include="..\..\engines\chewy\console.h" />
+		<ClInclude Include="..\..\engines\chewy\cursor.h" />
+		<ClInclude Include="..\..\engines\chewy\defines.h" />
+		<ClInclude Include="..\..\engines\chewy\detail.h" />
+		<ClInclude Include="..\..\engines\chewy\detection.h" />
 		<ClInclude Include="..\..\engines\chewy\dialogs\cinema.h">
 			<Filter>dialogs</Filter>
 		</ClInclude>
@@ -378,6 +387,20 @@
 		<ClInclude Include="..\..\engines\chewy\dialogs\options.h">
 			<Filter>dialogs</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\chewy\effect.h" />
+		<ClInclude Include="..\..\engines\chewy\events.h" />
+		<ClInclude Include="..\..\engines\chewy\font.h" />
+		<ClInclude Include="..\..\engines\chewy\globals.h" />
+		<ClInclude Include="..\..\engines\chewy\main.h" />
+		<ClInclude Include="..\..\engines\chewy\mcga_graphics.h" />
+		<ClInclude Include="..\..\engines\chewy\memory.h" />
+		<ClInclude Include="..\..\engines\chewy\menus.h" />
+		<ClInclude Include="..\..\engines\chewy\movclass.h" />
+		<ClInclude Include="..\..\engines\chewy\ngstypes.h" />
+		<ClInclude Include="..\..\engines\chewy\object.h" />
+		<ClInclude Include="..\..\engines\chewy\object_extra.h" />
+		<ClInclude Include="..\..\engines\chewy\resource.h" />
+		<ClInclude Include="..\..\engines\chewy\room.h" />
 		<ClInclude Include="..\..\engines\chewy\rooms\room00.h">
 			<Filter>rooms</Filter>
 		</ClInclude>
@@ -654,39 +677,16 @@
 		<ClInclude Include="..\..\engines\chewy\rooms\rooms.h">
 			<Filter>rooms</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\chewy\sound.h" />
+		<ClInclude Include="..\..\engines\chewy\text.h" />
+		<ClInclude Include="..\..\engines\chewy\timer.h" />
+		<ClInclude Include="..\..\engines\chewy\types.h" />
 		<ClInclude Include="..\..\engines\chewy\video\cfo_decoder.h">
 			<Filter>video</Filter>
 		</ClInclude>
 		<ClInclude Include="..\..\engines\chewy\video\video_player.h">
 			<Filter>video</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\chewy\ani_dat.h" />
-		<ClInclude Include="..\..\engines\chewy\atds.h" />
-		<ClInclude Include="..\..\engines\chewy\barriers.h" />
-		<ClInclude Include="..\..\engines\chewy\chewy.h" />
-		<ClInclude Include="..\..\engines\chewy\console.h" />
-		<ClInclude Include="..\..\engines\chewy\cursor.h" />
-		<ClInclude Include="..\..\engines\chewy\defines.h" />
-		<ClInclude Include="..\..\engines\chewy\detail.h" />
-		<ClInclude Include="..\..\engines\chewy\detection.h" />
-		<ClInclude Include="..\..\engines\chewy\effect.h" />
-		<ClInclude Include="..\..\engines\chewy\events.h" />
-		<ClInclude Include="..\..\engines\chewy\font.h" />
-		<ClInclude Include="..\..\engines\chewy\globals.h" />
-		<ClInclude Include="..\..\engines\chewy\main.h" />
-		<ClInclude Include="..\..\engines\chewy\mcga_graphics.h" />
-		<ClInclude Include="..\..\engines\chewy\memory.h" />
-		<ClInclude Include="..\..\engines\chewy\menus.h" />
-		<ClInclude Include="..\..\engines\chewy\movclass.h" />
-		<ClInclude Include="..\..\engines\chewy\ngstypes.h" />
-		<ClInclude Include="..\..\engines\chewy\object.h" />
-		<ClInclude Include="..\..\engines\chewy\object_extra.h" />
-		<ClInclude Include="..\..\engines\chewy\resource.h" />
-		<ClInclude Include="..\..\engines\chewy\room.h" />
-		<ClInclude Include="..\..\engines\chewy\sound.h" />
-		<ClInclude Include="..\..\engines\chewy\text.h" />
-		<ClInclude Include="..\..\engines\chewy\timer.h" />
-		<ClInclude Include="..\..\engines\chewy\types.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\chewy\module.mk" />
diff --git a/dists/msvc/cine.vcxproj b/dists/msvc/cine.vcxproj
index b4c7f50e983..5fcf0cbd113 100644
--- a/dists/msvc/cine.vcxproj
+++ b/dists/msvc/cine.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{F7A3F4E0-FA99-445D-A242-96B7EFB5C833}</ProjectGuid>
+		<ProjectGuid>{63643830-B54A-30FE-9A3B-C43DDA1A3FAC}</ProjectGuid>
 		<RootNamespace>cine</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/composer.vcxproj b/dists/msvc/composer.vcxproj
index 01b20d5829e..fd108286e76 100644
--- a/dists/msvc/composer.vcxproj
+++ b/dists/msvc/composer.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{3CDB3C09-E4E8-41FE-9379-ABBC9A794651}</ProjectGuid>
+		<ProjectGuid>{505C81BD-2E55-329B-994D-CB880B3439B5}</ProjectGuid>
 		<RootNamespace>composer</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/crab.vcxproj b/dists/msvc/crab.vcxproj
index 8ff9e3adbc2..b19ede8d231 100644
--- a/dists/msvc/crab.vcxproj
+++ b/dists/msvc/crab.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{A210D233-85D1-48BC-8C68-9444CDDBF182}</ProjectGuid>
+		<ProjectGuid>{96FD22B1-C4BB-3601-93C0-AE6E696C335E}</ProjectGuid>
 		<RootNamespace>crab</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/crab.vcxproj.filters b/dists/msvc/crab.vcxproj.filters
index 716d136f66a..5d726694d2e 100644
--- a/dists/msvc/crab.vcxproj.filters
+++ b/dists/msvc/crab.vcxproj.filters
@@ -1,47 +1,56 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="TMX">
-			<UniqueIdentifier>F33246E4-14BC-403E-9C0C-D8668AB35561</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA623-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="ai">
-			<UniqueIdentifier>5583D815-D2CE-4F38-BAC0-5F0AE2E30C1A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA624-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="animation">
-			<UniqueIdentifier>5BCF0C96-907D-4001-86DE-59BF096D586A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA625-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="event">
-			<UniqueIdentifier>DCE621A6-2E28-4264-B3B0-7AEB67288CEE</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA626-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="image">
-			<UniqueIdentifier>CF86045A-060E-4347-9315-019B83605CFD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA627-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="input">
-			<UniqueIdentifier>3E7B0B49-2B07-400A-9434-13C7E2C70837</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA628-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="item">
-			<UniqueIdentifier>1DCFFAC9-63F2-46AF-91BC-FBDA9CAE9B04</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA629-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="level">
-			<UniqueIdentifier>50D2B0C0-4933-4135-9BFD-93325D7C4F90</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="music">
-			<UniqueIdentifier>F7DA5014-757E-44DD-8471-CBAE72684EF8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="people">
-			<UniqueIdentifier>67162F0A-4500-4C30-AD0B-601487EA172D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="stat">
-			<UniqueIdentifier>D5567593-50B5-4661-8DD4-ECFEFEED4311</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="text">
-			<UniqueIdentifier>20B40D97-BE74-452B-9DD5-A7ED98F2009C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="ui">
-			<UniqueIdentifier>7879FD3E-82D4-49A0-A69F-E898AFBE8144</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA62F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\crab\GameParam.cpp" />
+		<ClCompile Include="..\..\engines\crab\LoadingScreen.cpp" />
+		<ClCompile Include="..\..\engines\crab\PathfindingAgent.cpp" />
+		<ClCompile Include="..\..\engines\crab\PathfindingGraphNode.cpp" />
+		<ClCompile Include="..\..\engines\crab\PathfindingGrid.cpp" />
+		<ClCompile Include="..\..\engines\crab\Polygon.cpp" />
+		<ClCompile Include="..\..\engines\crab\Rectangle.cpp" />
+		<ClCompile Include="..\..\engines\crab\ScreenSettings.cpp" />
+		<ClCompile Include="..\..\engines\crab\Shape.cpp" />
 		<ClCompile Include="..\..\engines\crab\TMX\TMXLayer.cpp">
 			<Filter>TMX</Filter>
 		</ClCompile>
@@ -51,6 +60,8 @@
 		<ClCompile Include="..\..\engines\crab\TMX\TMXTileSet.cpp">
 			<Filter>TMX</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\TTSHandler.cpp" />
+		<ClCompile Include="..\..\engines\crab\XMLDoc.cpp" />
 		<ClCompile Include="..\..\engines\crab\ai\SpriteConstant.cpp">
 			<Filter>ai</Filter>
 		</ClCompile>
@@ -96,6 +107,10 @@
 		<ClCompile Include="..\..\engines\crab\animation\walkframes.cpp">
 			<Filter>animation</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\app.cpp" />
+		<ClCompile Include="..\..\engines\crab\collision.cpp" />
+		<ClCompile Include="..\..\engines\crab\console.cpp" />
+		<ClCompile Include="..\..\engines\crab\crab.cpp" />
 		<ClCompile Include="..\..\engines\crab\event\EventSeqGroup.cpp">
 			<Filter>event</Filter>
 		</ClCompile>
@@ -129,6 +144,8 @@
 		<ClCompile Include="..\..\engines\crab\event\triggerset.cpp">
 			<Filter>event</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\filesystem.cpp" />
+		<ClCompile Include="..\..\engines\crab\game.cpp" />
 		<ClCompile Include="..\..\engines\crab\image\Image.cpp">
 			<Filter>image</Filter>
 		</ClCompile>
@@ -192,6 +209,9 @@
 		<ClCompile Include="..\..\engines\crab\level\talknotify.cpp">
 			<Filter>level</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\loaders.cpp" />
+		<ClCompile Include="..\..\engines\crab\mainmenu.cpp" />
+		<ClCompile Include="..\..\engines\crab\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\crab\music\MusicManager.cpp">
 			<Filter>music</Filter>
 		</ClCompile>
@@ -207,6 +227,7 @@
 		<ClCompile Include="..\..\engines\crab\people\trait.cpp">
 			<Filter>people</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\splash.cpp" />
 		<ClCompile Include="..\..\engines\crab\stat\Stat.cpp">
 			<Filter>stat</Filter>
 		</ClCompile>
@@ -222,6 +243,7 @@
 		<ClCompile Include="..\..\engines\crab\text\color.cpp">
 			<Filter>text</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\crab\timer.cpp" />
 		<ClCompile Include="..\..\engines\crab\ui\AlphaImage.cpp">
 			<Filter>ui</Filter>
 		</ClCompile>
@@ -363,30 +385,21 @@
 		<ClCompile Include="..\..\engines\crab\ui\textdata.cpp">
 			<Filter>ui</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\crab\GameParam.cpp" />
-		<ClCompile Include="..\..\engines\crab\LoadingScreen.cpp" />
-		<ClCompile Include="..\..\engines\crab\PathfindingAgent.cpp" />
-		<ClCompile Include="..\..\engines\crab\PathfindingGraphNode.cpp" />
-		<ClCompile Include="..\..\engines\crab\PathfindingGrid.cpp" />
-		<ClCompile Include="..\..\engines\crab\Polygon.cpp" />
-		<ClCompile Include="..\..\engines\crab\Rectangle.cpp" />
-		<ClCompile Include="..\..\engines\crab\ScreenSettings.cpp" />
-		<ClCompile Include="..\..\engines\crab\Shape.cpp" />
-		<ClCompile Include="..\..\engines\crab\TTSHandler.cpp" />
-		<ClCompile Include="..\..\engines\crab\XMLDoc.cpp" />
-		<ClCompile Include="..\..\engines\crab\app.cpp" />
-		<ClCompile Include="..\..\engines\crab\collision.cpp" />
-		<ClCompile Include="..\..\engines\crab\console.cpp" />
-		<ClCompile Include="..\..\engines\crab\crab.cpp" />
-		<ClCompile Include="..\..\engines\crab\filesystem.cpp" />
-		<ClCompile Include="..\..\engines\crab\game.cpp" />
-		<ClCompile Include="..\..\engines\crab\loaders.cpp" />
-		<ClCompile Include="..\..\engines\crab\mainmenu.cpp" />
-		<ClCompile Include="..\..\engines\crab\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\crab\splash.cpp" />
-		<ClCompile Include="..\..\engines\crab\timer.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\crab\GameClock.h" />
+		<ClInclude Include="..\..\engines\crab\GameParam.h" />
+		<ClInclude Include="..\..\engines\crab\LevelResult.h" />
+		<ClInclude Include="..\..\engines\crab\Line.h" />
+		<ClInclude Include="..\..\engines\crab\LoadingScreen.h" />
+		<ClInclude Include="..\..\engines\crab\PathfindingAgent.h" />
+		<ClInclude Include="..\..\engines\crab\PathfindingGraphNode.h" />
+		<ClInclude Include="..\..\engines\crab\PathfindingGrid.h" />
+		<ClInclude Include="..\..\engines\crab\Polygon.h" />
+		<ClInclude Include="..\..\engines\crab\PriorityQueue.h" />
+		<ClInclude Include="..\..\engines\crab\Rectangle.h" />
+		<ClInclude Include="..\..\engines\crab\ScreenSettings.h" />
+		<ClInclude Include="..\..\engines\crab\Shape.h" />
 		<ClInclude Include="..\..\engines\crab\TMX\TMXLayer.h">
 			<Filter>TMX</Filter>
 		</ClInclude>
@@ -399,6 +412,8 @@
 		<ClInclude Include="..\..\engines\crab\TMX\TileInfo.h">
 			<Filter>TMX</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\TTSHandler.h" />
+		<ClInclude Include="..\..\engines\crab\XMLDoc.h" />
 		<ClInclude Include="..\..\engines\crab\ai\SpriteConstant.h">
 			<Filter>ai</Filter>
 		</ClInclude>
@@ -456,6 +471,13 @@
 		<ClInclude Include="..\..\engines\crab\animation\walkframes.h">
 			<Filter>animation</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\app.h" />
+		<ClInclude Include="..\..\engines\crab\backInserter.h" />
+		<ClInclude Include="..\..\engines\crab\collision.h" />
+		<ClInclude Include="..\..\engines\crab\color.h" />
+		<ClInclude Include="..\..\engines\crab\console.h" />
+		<ClInclude Include="..\..\engines\crab\crab.h" />
+		<ClInclude Include="..\..\engines\crab\detection.h" />
 		<ClInclude Include="..\..\engines\crab\event\EventSeqGroup.h">
 			<Filter>event</Filter>
 		</ClInclude>
@@ -492,6 +514,11 @@
 		<ClInclude Include="..\..\engines\crab\event\triggerset.h">
 			<Filter>event</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\filesystem.h" />
+		<ClInclude Include="..\..\engines\crab\game.h" />
+		<ClInclude Include="..\..\engines\crab\gamestate_container.h" />
+		<ClInclude Include="..\..\engines\crab\gamestates.h" />
+		<ClInclude Include="..\..\engines\crab\gametype.h" />
 		<ClInclude Include="..\..\engines\crab\image\Image.h">
 			<Filter>image</Filter>
 		</ClInclude>
@@ -543,12 +570,17 @@
 		<ClInclude Include="..\..\engines\crab\level\talknotify.h">
 			<Filter>level</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\levelpaths.h" />
+		<ClInclude Include="..\..\engines\crab\loaders.h" />
+		<ClInclude Include="..\..\engines\crab\mainmenu.h" />
+		<ClInclude Include="..\..\engines\crab\metaengine.h" />
 		<ClInclude Include="..\..\engines\crab\music\MusicManager.h">
 			<Filter>music</Filter>
 		</ClInclude>
 		<ClInclude Include="..\..\engines\crab\music\musicparam.h">
 			<Filter>music</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\numstr.h" />
 		<ClInclude Include="..\..\engines\crab\people\opinion.h">
 			<Filter>people</Filter>
 		</ClInclude>
@@ -561,6 +593,7 @@
 		<ClInclude Include="..\..\engines\crab\people\trait.h">
 			<Filter>people</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\splash.h" />
 		<ClInclude Include="..\..\engines\crab\stat\Stat.h">
 			<Filter>stat</Filter>
 		</ClInclude>
@@ -579,6 +612,7 @@
 		<ClInclude Include="..\..\engines\crab\text\color.h">
 			<Filter>text</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\crab\timer.h" />
 		<ClInclude Include="..\..\engines\crab\ui\AlphaImage.h">
 			<Filter>ui</Filter>
 		</ClInclude>
@@ -741,40 +775,6 @@
 		<ClInclude Include="..\..\engines\crab\ui\textarea.h">
 			<Filter>ui</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\crab\GameClock.h" />
-		<ClInclude Include="..\..\engines\crab\GameParam.h" />
-		<ClInclude Include="..\..\engines\crab\LevelResult.h" />
-		<ClInclude Include="..\..\engines\crab\Line.h" />
-		<ClInclude Include="..\..\engines\crab\LoadingScreen.h" />
-		<ClInclude Include="..\..\engines\crab\PathfindingAgent.h" />
-		<ClInclude Include="..\..\engines\crab\PathfindingGraphNode.h" />
-		<ClInclude Include="..\..\engines\crab\PathfindingGrid.h" />
-		<ClInclude Include="..\..\engines\crab\Polygon.h" />
-		<ClInclude Include="..\..\engines\crab\PriorityQueue.h" />
-		<ClInclude Include="..\..\engines\crab\Rectangle.h" />
-		<ClInclude Include="..\..\engines\crab\ScreenSettings.h" />
-		<ClInclude Include="..\..\engines\crab\Shape.h" />
-		<ClInclude Include="..\..\engines\crab\TTSHandler.h" />
-		<ClInclude Include="..\..\engines\crab\XMLDoc.h" />
-		<ClInclude Include="..\..\engines\crab\app.h" />
-		<ClInclude Include="..\..\engines\crab\backInserter.h" />
-		<ClInclude Include="..\..\engines\crab\collision.h" />
-		<ClInclude Include="..\..\engines\crab\color.h" />
-		<ClInclude Include="..\..\engines\crab\console.h" />
-		<ClInclude Include="..\..\engines\crab\crab.h" />
-		<ClInclude Include="..\..\engines\crab\detection.h" />
-		<ClInclude Include="..\..\engines\crab\filesystem.h" />
-		<ClInclude Include="..\..\engines\crab\game.h" />
-		<ClInclude Include="..\..\engines\crab\gamestate_container.h" />
-		<ClInclude Include="..\..\engines\crab\gamestates.h" />
-		<ClInclude Include="..\..\engines\crab\gametype.h" />
-		<ClInclude Include="..\..\engines\crab\levelpaths.h" />
-		<ClInclude Include="..\..\engines\crab\loaders.h" />
-		<ClInclude Include="..\..\engines\crab\mainmenu.h" />
-		<ClInclude Include="..\..\engines\crab\metaengine.h" />
-		<ClInclude Include="..\..\engines\crab\numstr.h" />
-		<ClInclude Include="..\..\engines\crab\splash.h" />
-		<ClInclude Include="..\..\engines\crab\timer.h" />
 		<ClInclude Include="..\..\engines\crab\vectors.h" />
 	</ItemGroup>
 	<ItemGroup>
diff --git a/dists/msvc/cruise.vcxproj b/dists/msvc/cruise.vcxproj
index d473ccd1568..96ceb40eb12 100644
--- a/dists/msvc/cruise.vcxproj
+++ b/dists/msvc/cruise.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{881D12E9-9325-479D-8239-18498FF315B4}</ProjectGuid>
+		<ProjectGuid>{DFF9692E-C648-3760-97A5-93381B836789}</ProjectGuid>
 		<RootNamespace>cruise</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/cryomni3d.vcxproj b/dists/msvc/cryomni3d.vcxproj
index 31e081f992c..989151d2314 100644
--- a/dists/msvc/cryomni3d.vcxproj
+++ b/dists/msvc/cryomni3d.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{1CB7DC9D-CC4A-49F6-B7BB-DBB73FBE06D9}</ProjectGuid>
+		<ProjectGuid>{1D76BB75-8D69-35A4-84F5-9824AA6492BB}</ProjectGuid>
 		<RootNamespace>cryomni3d</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/cryomni3d.vcxproj.filters b/dists/msvc/cryomni3d.vcxproj.filters
index 77eb133a4ff..5d55ea3c45c 100644
--- a/dists/msvc/cryomni3d.vcxproj.filters
+++ b/dists/msvc/cryomni3d.vcxproj.filters
@@ -1,17 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="fonts">
-			<UniqueIdentifier>8BC500F8-1D28-4CA8-B297-FDC299580822</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA630-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="image">
-			<UniqueIdentifier>FCD3FCE4-3A67-4E1E-87EB-A0C687D2D9C4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA631-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="versailles">
-			<UniqueIdentifier>04392CC6-0D9E-44B0-99EE-8588AD07B952</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA632-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\cryomni3d\cryomni3d.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\datstream.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\dialogs_manager.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\fixed_image.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\font_manager.cpp" />
 		<ClCompile Include="..\..\engines\cryomni3d\fonts\cryoextfont.cpp">
 			<Filter>fonts</Filter>
 		</ClCompile>
@@ -24,6 +29,11 @@
 		<ClCompile Include="..\..\engines\cryomni3d\image\hnm.cpp">
 			<Filter>image</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\cryomni3d\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\mouse_boxes.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\objects.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\omni3d.cpp" />
+		<ClCompile Include="..\..\engines\cryomni3d\sprites.cpp" />
 		<ClCompile Include="..\..\engines\cryomni3d\versailles\data.cpp">
 			<Filter>versailles</Filter>
 		</ClCompile>
@@ -54,19 +64,16 @@
 		<ClCompile Include="..\..\engines\cryomni3d\versailles\toolbar.cpp">
 			<Filter>versailles</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\cryomni3d\cryomni3d.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\datstream.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\dialogs_manager.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\fixed_image.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\font_manager.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\mouse_boxes.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\objects.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\omni3d.cpp" />
-		<ClCompile Include="..\..\engines\cryomni3d\sprites.cpp" />
 		<ClCompile Include="..\..\engines\cryomni3d\wam_parser.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\cryomni3d\cryomni3d.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\datstream.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\detection.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\detection_tables.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\dialogs_manager.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\fixed_image.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\font_manager.h" />
 		<ClInclude Include="..\..\engines\cryomni3d\fonts\cryoextfont.h">
 			<Filter>fonts</Filter>
 		</ClInclude>
@@ -79,6 +86,10 @@
 		<ClInclude Include="..\..\engines\cryomni3d\image\hnm.h">
 			<Filter>image</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\cryomni3d\mouse_boxes.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\objects.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\omni3d.h" />
+		<ClInclude Include="..\..\engines\cryomni3d\sprites.h" />
 		<ClInclude Include="..\..\engines\cryomni3d\versailles\dialogs_manager.h">
 			<Filter>versailles</Filter>
 		</ClInclude>
@@ -91,17 +102,6 @@
 		<ClInclude Include="..\..\engines\cryomni3d\versailles\toolbar.h">
 			<Filter>versailles</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\cryomni3d\cryomni3d.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\datstream.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\detection.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\detection_tables.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\dialogs_manager.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\fixed_image.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\font_manager.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\mouse_boxes.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\objects.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\omni3d.h" />
-		<ClInclude Include="..\..\engines\cryomni3d\sprites.h" />
 		<ClInclude Include="..\..\engines\cryomni3d\wam_parser.h" />
 	</ItemGroup>
 	<ItemGroup>
diff --git a/dists/msvc/darkseed.vcxproj b/dists/msvc/darkseed.vcxproj
index 2bfa18bcb2b..c0ea33e0dba 100644
--- a/dists/msvc/darkseed.vcxproj
+++ b/dists/msvc/darkseed.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{B099D113-15BF-4967-B924-E98D2F367702}</ProjectGuid>
+		<ProjectGuid>{CFB2F956-0D0F-3FEF-9B87-FDC1A36CA1A0}</ProjectGuid>
 		<RootNamespace>darkseed</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/dgds.vcxproj b/dists/msvc/dgds.vcxproj
index afcdecd5b0f..b4cc09d6542 100644
--- a/dists/msvc/dgds.vcxproj
+++ b/dists/msvc/dgds.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{69390D00-18B7-4363-908D-1F81424B2DFC}</ProjectGuid>
+		<ProjectGuid>{2B9612A0-C18E-3923-89D6-8328013D78F2}</ProjectGuid>
 		<RootNamespace>dgds</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/dgds.vcxproj.filters b/dists/msvc/dgds.vcxproj.filters
index 06d2118d6e9..280d0705c68 100644
--- a/dists/msvc/dgds.vcxproj.filters
+++ b/dists/msvc/dgds.vcxproj.filters
@@ -1,20 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="minigames">
-			<UniqueIdentifier>7F4F5E6F-6804-4506-B743-83EE54CB7ED2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA633-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="sound">
-			<UniqueIdentifier>346ABCBB-C66F-4E0C-B62F-EFF8926FCCC9</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA634-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="sound\drivers">
-			<UniqueIdentifier>7755E78A-4477-4A92-9FCB-E0DFAE0B9B52</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA635-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="sound\resource">
-			<UniqueIdentifier>B2F10829-792E-4A4C-AD39-4AEDD6FBDD85</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA636-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\dgds\ads.cpp" />
+		<ClCompile Include="..\..\engines\dgds\clock.cpp" />
+		<ClCompile Include="..\..\engines\dgds\console.cpp" />
+		<ClCompile Include="..\..\engines\dgds\decompress.cpp" />
+		<ClCompile Include="..\..\engines\dgds\dgds.cpp" />
+		<ClCompile Include="..\..\engines\dgds\dgds_rect.cpp" />
+		<ClCompile Include="..\..\engines\dgds\dialog.cpp" />
+		<ClCompile Include="..\..\engines\dgds\dragon_native.cpp" />
+		<ClCompile Include="..\..\engines\dgds\drawing.cpp" />
+		<ClCompile Include="..\..\engines\dgds\font.cpp" />
+		<ClCompile Include="..\..\engines\dgds\game_palettes.cpp" />
+		<ClCompile Include="..\..\engines\dgds\globals.cpp" />
+		<ClCompile Include="..\..\engines\dgds\head.cpp" />
+		<ClCompile Include="..\..\engines\dgds\hoc_intro.cpp" />
+		<ClCompile Include="..\..\engines\dgds\image.cpp" />
+		<ClCompile Include="..\..\engines\dgds\inventory.cpp" />
+		<ClCompile Include="..\..\engines\dgds\menu.cpp" />
+		<ClCompile Include="..\..\engines\dgds\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\dgds\minigames\china_tank.cpp">
 			<Filter>minigames</Filter>
 		</ClCompile>
@@ -30,6 +48,14 @@
 		<ClCompile Include="..\..\engines\dgds\minigames\shell_game.cpp">
 			<Filter>minigames</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\dgds\parser.cpp" />
+		<ClCompile Include="..\..\engines\dgds\request.cpp" />
+		<ClCompile Include="..\..\engines\dgds\resource.cpp" />
+		<ClCompile Include="..\..\engines\dgds\scene.cpp" />
+		<ClCompile Include="..\..\engines\dgds\scene_condition.cpp" />
+		<ClCompile Include="..\..\engines\dgds\scene_op.cpp" />
+		<ClCompile Include="..\..\engines\dgds\scripts.cpp" />
+		<ClCompile Include="..\..\engines\dgds\sound.cpp" />
 		<ClCompile Include="..\..\engines\dgds\sound\drivers\adlib.cpp">
 			<Filter>sound\drivers</Filter>
 		</ClCompile>
@@ -45,48 +71,42 @@
 		<ClCompile Include="..\..\engines\dgds\sound\drivers\midipatch.cpp">
 			<Filter>sound\drivers</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\dgds\sound\resource\resource_audio.cpp">
-			<Filter>sound\resource</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\dgds\sound\resource\sci_resource.cpp">
-			<Filter>sound\resource</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\dgds\sound\midiparser_sci.cpp">
 			<Filter>sound</Filter>
 		</ClCompile>
 		<ClCompile Include="..\..\engines\dgds\sound\music.cpp">
 			<Filter>sound</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\dgds\ads.cpp" />
-		<ClCompile Include="..\..\engines\dgds\clock.cpp" />
-		<ClCompile Include="..\..\engines\dgds\console.cpp" />
-		<ClCompile Include="..\..\engines\dgds\decompress.cpp" />
-		<ClCompile Include="..\..\engines\dgds\dgds.cpp" />
-		<ClCompile Include="..\..\engines\dgds\dgds_rect.cpp" />
-		<ClCompile Include="..\..\engines\dgds\dialog.cpp" />
-		<ClCompile Include="..\..\engines\dgds\dragon_native.cpp" />
-		<ClCompile Include="..\..\engines\dgds\drawing.cpp" />
-		<ClCompile Include="..\..\engines\dgds\font.cpp" />
-		<ClCompile Include="..\..\engines\dgds\game_palettes.cpp" />
-		<ClCompile Include="..\..\engines\dgds\globals.cpp" />
-		<ClCompile Include="..\..\engines\dgds\head.cpp" />
-		<ClCompile Include="..\..\engines\dgds\hoc_intro.cpp" />
-		<ClCompile Include="..\..\engines\dgds\image.cpp" />
-		<ClCompile Include="..\..\engines\dgds\inventory.cpp" />
-		<ClCompile Include="..\..\engines\dgds\menu.cpp" />
-		<ClCompile Include="..\..\engines\dgds\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\dgds\parser.cpp" />
-		<ClCompile Include="..\..\engines\dgds\request.cpp" />
-		<ClCompile Include="..\..\engines\dgds\resource.cpp" />
-		<ClCompile Include="..\..\engines\dgds\scene.cpp" />
-		<ClCompile Include="..\..\engines\dgds\scene_condition.cpp" />
-		<ClCompile Include="..\..\engines\dgds\scene_op.cpp" />
-		<ClCompile Include="..\..\engines\dgds\scripts.cpp" />
-		<ClCompile Include="..\..\engines\dgds\sound.cpp" />
+		<ClCompile Include="..\..\engines\dgds\sound\resource\resource_audio.cpp">
+			<Filter>sound\resource</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\dgds\sound\resource\sci_resource.cpp">
+			<Filter>sound\resource</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\dgds\sound_raw.cpp" />
 		<ClCompile Include="..\..\engines\dgds\ttm.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\dgds\ads.h" />
+		<ClInclude Include="..\..\engines\dgds\clock.h" />
+		<ClInclude Include="..\..\engines\dgds\console.h" />
+		<ClInclude Include="..\..\engines\dgds\debug_util.h" />
+		<ClInclude Include="..\..\engines\dgds\decompress.h" />
+		<ClInclude Include="..\..\engines\dgds\detection_tables.h" />
+		<ClInclude Include="..\..\engines\dgds\dgds.h" />
+		<ClInclude Include="..\..\engines\dgds\dgds_rect.h" />
+		<ClInclude Include="..\..\engines\dgds\dialog.h" />
+		<ClInclude Include="..\..\engines\dgds\dragon_native.h" />
+		<ClInclude Include="..\..\engines\dgds\drawing.h" />
+		<ClInclude Include="..\..\engines\dgds\font.h" />
+		<ClInclude Include="..\..\engines\dgds\game_palettes.h" />
+		<ClInclude Include="..\..\engines\dgds\globals.h" />
+		<ClInclude Include="..\..\engines\dgds\head.h" />
+		<ClInclude Include="..\..\engines\dgds\hoc_intro.h" />
+		<ClInclude Include="..\..\engines\dgds\image.h" />
+		<ClInclude Include="..\..\engines\dgds\includes.h" />
+		<ClInclude Include="..\..\engines\dgds\inventory.h" />
+		<ClInclude Include="..\..\engines\dgds\menu.h" />
 		<ClInclude Include="..\..\engines\dgds\minigames\china_tank.h">
 			<Filter>minigames</Filter>
 		</ClInclude>
@@ -102,6 +122,14 @@
 		<ClInclude Include="..\..\engines\dgds\minigames\shell_game.h">
 			<Filter>minigames</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\dgds\parser.h" />
+		<ClInclude Include="..\..\engines\dgds\request.h" />
+		<ClInclude Include="..\..\engines\dgds\resource.h" />
+		<ClInclude Include="..\..\engines\dgds\scene.h" />
+		<ClInclude Include="..\..\engines\dgds\scene_condition.h" />
+		<ClInclude Include="..\..\engines\dgds\scene_op.h" />
+		<ClInclude Include="..\..\engines\dgds\scripts.h" />
+		<ClInclude Include="..\..\engines\dgds\sound.h" />
 		<ClInclude Include="..\..\engines\dgds\sound\drivers\gm_names.h">
 			<Filter>sound\drivers</Filter>
 		</ClInclude>
@@ -114,46 +142,18 @@
 		<ClInclude Include="..\..\engines\dgds\sound\drivers\mididriver.h">
 			<Filter>sound\drivers</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\dgds\sound\resource\sci_resource.h">
-			<Filter>sound\resource</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\dgds\sound\midiparser_sci.h">
 			<Filter>sound</Filter>
 		</ClInclude>
 		<ClInclude Include="..\..\engines\dgds\sound\music.h">
 			<Filter>sound</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\dgds\sound\resource\sci_resource.h">
+			<Filter>sound\resource</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\dgds\sound\scispan.h">
 			<Filter>sound</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\dgds\ads.h" />
-		<ClInclude Include="..\..\engines\dgds\clock.h" />
-		<ClInclude Include="..\..\engines\dgds\console.h" />
-		<ClInclude Include="..\..\engines\dgds\debug_util.h" />
-		<ClInclude Include="..\..\engines\dgds\decompress.h" />
-		<ClInclude Include="..\..\engines\dgds\detection_tables.h" />
-		<ClInclude Include="..\..\engines\dgds\dgds.h" />
-		<ClInclude Include="..\..\engines\dgds\dgds_rect.h" />
-		<ClInclude Include="..\..\engines\dgds\dialog.h" />
-		<ClInclude Include="..\..\engines\dgds\dragon_native.h" />
-		<ClInclude Include="..\..\engines\dgds\drawing.h" />
-		<ClInclude Include="..\..\engines\dgds\font.h" />
-		<ClInclude Include="..\..\engines\dgds\game_palettes.h" />
-		<ClInclude Include="..\..\engines\dgds\globals.h" />
-		<ClInclude Include="..\..\engines\dgds\head.h" />
-		<ClInclude Include="..\..\engines\dgds\hoc_intro.h" />
-		<ClInclude Include="..\..\engines\dgds\image.h" />
-		<ClInclude Include="..\..\engines\dgds\includes.h" />
-		<ClInclude Include="..\..\engines\dgds\inventory.h" />
-		<ClInclude Include="..\..\engines\dgds\menu.h" />
-		<ClInclude Include="..\..\engines\dgds\parser.h" />
-		<ClInclude Include="..\..\engines\dgds\request.h" />
-		<ClInclude Include="..\..\engines\dgds\resource.h" />
-		<ClInclude Include="..\..\engines\dgds\scene.h" />
-		<ClInclude Include="..\..\engines\dgds\scene_condition.h" />
-		<ClInclude Include="..\..\engines\dgds\scene_op.h" />
-		<ClInclude Include="..\..\engines\dgds\scripts.h" />
-		<ClInclude Include="..\..\engines\dgds\sound.h" />
 		<ClInclude Include="..\..\engines\dgds\sound_raw.h" />
 		<ClInclude Include="..\..\engines\dgds\ttm.h" />
 	</ItemGroup>
diff --git a/dists/msvc/director.vcxproj b/dists/msvc/director.vcxproj
index 4202b488b51..1cfea1ffbd5 100644
--- a/dists/msvc/director.vcxproj
+++ b/dists/msvc/director.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{B1B852AB-C4F3-4DE8-BC73-FEB58A75F969}</ProjectGuid>
+		<ProjectGuid>{1F6E45F5-A4CC-3D20-9F15-908863D1A5B9}</ProjectGuid>
 		<RootNamespace>director</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/director.vcxproj.filters b/dists/msvc/director.vcxproj.filters
index 0769da882db..46437030254 100644
--- a/dists/msvc/director.vcxproj.filters
+++ b/dists/msvc/director.vcxproj.filters
@@ -1,131 +1,134 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="castmember">
-			<UniqueIdentifier>40100FBC-D28B-498E-B3AB-50FD17CAE979</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA637-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="debugger">
-			<UniqueIdentifier>98734543-50E3-4A51-A712-3BBD61BB851B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA638-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo">
-			<UniqueIdentifier>439D1D3C-FCDC-41D1-BEE4-06449A050D01</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA639-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\lingodec">
-			<UniqueIdentifier>9C8F3243-7660-4E54-A46A-666BF5C3FB06</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs">
-			<UniqueIdentifier>93FCE622-514F-402E-BE58-54E4B23016CB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\a">
-			<UniqueIdentifier>E8EF5DBD-8E10-443B-A561-C6C771A3CC61</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\b">
-			<UniqueIdentifier>61EB7294-8F82-4554-97AA-598E5F0F1FBB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\c">
-			<UniqueIdentifier>3C8F72A5-1126-4628-9F9D-65133C025305</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\d">
-			<UniqueIdentifier>0F8A3EC5-1C11-4D1F-83DC-EDF4C09046AA</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA63F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\e">
-			<UniqueIdentifier>1C50EAEE-3A2C-4E9F-B21C-57E317BEC9C1</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA640-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\f">
-			<UniqueIdentifier>30347589-4B23-4233-8A7E-091AF79D081A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA641-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\g">
-			<UniqueIdentifier>56FE97EF-CD6D-44D9-B706-068017BF4AB4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA642-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\h">
-			<UniqueIdentifier>FCB8D2FE-0348-4C0C-B516-58C5977EA01B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA643-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\i">
-			<UniqueIdentifier>29B3B324-6AC3-4534-8352-49417ADD3432</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA644-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\j">
-			<UniqueIdentifier>0DC75F76-7C44-4445-8A5E-59BFB7CA5911</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA645-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\l">
-			<UniqueIdentifier>296180FB-3ABB-4E81-8C03-4DD7F51BD321</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA646-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\m">
-			<UniqueIdentifier>E5BD232C-49C4-4BC7-83C7-D5832AE2A86F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA647-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\o">
-			<UniqueIdentifier>8CC50898-84BB-4E1E-8C12-142DFC9C49ED</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA648-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\p">
-			<UniqueIdentifier>3033D16F-633D-4FF7-A190-6C0689298F70</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA649-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\q">
-			<UniqueIdentifier>B83D381B-720A-4177-9393-56AC157CD246</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\r">
-			<UniqueIdentifier>7F339BA3-5A8E-47C9-8F63-5F0B33746757</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\s">
-			<UniqueIdentifier>9CBEBBC7-F558-4A35-BDBE-EF86543E0A6C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\t">
-			<UniqueIdentifier>55D7BBEE-6C4B-43BE-8016-B2F77E4A00AA</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\u">
-			<UniqueIdentifier>72AF0FEC-107D-4220-8992-E1192ADC5DA8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\v">
-			<UniqueIdentifier>56BDA03A-A41E-4FC6-8C26-013612845125</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA64F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\w">
-			<UniqueIdentifier>700D05E1-2ED6-4CE7-BB33-846B394CE1B4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA650-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\x">
-			<UniqueIdentifier>F9D7B4BF-D1A4-48DA-8DA6-711BCA39A9D8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA651-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xlibs\y">
-			<UniqueIdentifier>0DCFFC3A-AA98-48DD-9B70-3FFD74815FBC</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA652-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras">
-			<UniqueIdentifier>9070B8D8-D2D5-4BA8-A379-6E38BEC0D9B8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA653-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\a">
-			<UniqueIdentifier>C7AA7E8A-8D86-4B18-8F6F-8F112430FE3C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA654-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\b">
-			<UniqueIdentifier>800EE1DE-0186-4655-A9D0-064E7849DDAB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA655-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\d">
-			<UniqueIdentifier>95DBDB81-CF6A-4F64-B62C-E6331A72A371</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA656-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\f">
-			<UniqueIdentifier>EBC9163A-5CAE-4B1C-8EAF-F92E55F01F41</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA657-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\k">
-			<UniqueIdentifier>7C6740AF-E8A8-472B-BC67-24C3301FD1ED</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA658-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\m">
-			<UniqueIdentifier>DCABD055-B681-4519-B419-D8929B263879</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA659-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\o">
-			<UniqueIdentifier>4BD789B5-6B64-4CEE-B69D-7CAE82E74594</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\q">
-			<UniqueIdentifier>2C144500-82EE-49E7-9F14-5A86EE7C26DA</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\r">
-			<UniqueIdentifier>E6C75A89-6B64-4CCC-8807-E12AB3DFFD0E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\s">
-			<UniqueIdentifier>21943337-5A31-4E13-90C1-8D2E6D6150FD</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\t">
-			<UniqueIdentifier>0B721D67-E6A9-4CA6-B46B-BD27CEDC54C2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lingo\xtras\x">
-			<UniqueIdentifier>81906EAF-A403-4C8B-8D3F-7A5C801A06B2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA65F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\director\archive-save.cpp" />
+		<ClCompile Include="..\..\engines\director\archive.cpp" />
+		<ClCompile Include="..\..\engines\director\cast.cpp" />
 		<ClCompile Include="..\..\engines\director\castmember\bitmap.cpp">
 			<Filter>castmember</Filter>
 		</ClCompile>
@@ -165,6 +168,9 @@
 		<ClCompile Include="..\..\engines\director\castmember\xtra.cpp">
 			<Filter>castmember</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\director\channel.cpp" />
+		<ClCompile Include="..\..\engines\director\cursor.cpp" />
+		<ClCompile Include="..\..\engines\director\debugger.cpp" />
 		<ClCompile Include="..\..\engines\director\debugger\debugtools.cpp">
 			<Filter>debugger</Filter>
 		</ClCompile>
@@ -198,6 +204,58 @@
 		<ClCompile Include="..\..\engines\director\debugger\dt-search.cpp">
 			<Filter>debugger</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\director\director.cpp" />
+		<ClCompile Include="..\..\engines\director\events.cpp" />
+		<ClCompile Include="..\..\engines\director\fonts.cpp" />
+		<ClCompile Include="..\..\engines\director\frame.cpp" />
+		<ClCompile Include="..\..\engines\director\game-quirks.cpp" />
+		<ClCompile Include="..\..\engines\director\graphics.cpp" />
+		<ClCompile Include="..\..\engines\director\images.cpp" />
+		<ClCompile Include="..\..\engines\director\lingo\lingo-builtins.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-bytecode.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-code.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-codegen.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-events.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-funcs.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-gr.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-lex.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-mci.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-object.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-patcher.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-preprocessor.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-the.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo-utils.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\director\lingo\lingo.cpp">
+			<Filter>lingo</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\director\lingo\lingodec\ast.cpp">
 			<Filter>lingo\lingodec</Filter>
 		</ClCompile>
@@ -648,64 +706,6 @@
 		<ClCompile Include="..\..\engines\director\lingo\xtras\x\xsound.cpp">
 			<Filter>lingo\xtras\x</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-builtins.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-bytecode.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-code.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-codegen.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-events.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-funcs.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-gr.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-lex.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-mci.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-object.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-patcher.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-preprocessor.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-the.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo-utils.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\lingo\lingo.cpp">
-			<Filter>lingo</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\director\archive-save.cpp" />
-		<ClCompile Include="..\..\engines\director\archive.cpp" />
-		<ClCompile Include="..\..\engines\director\cast.cpp" />
-		<ClCompile Include="..\..\engines\director\channel.cpp" />
-		<ClCompile Include="..\..\engines\director\cursor.cpp" />
-		<ClCompile Include="..\..\engines\director\debugger.cpp" />
-		<ClCompile Include="..\..\engines\director\director.cpp" />
-		<ClCompile Include="..\..\engines\director\events.cpp" />
-		<ClCompile Include="..\..\engines\director\fonts.cpp" />
-		<ClCompile Include="..\..\engines\director\frame.cpp" />
-		<ClCompile Include="..\..\engines\director\game-quirks.cpp" />
-		<ClCompile Include="..\..\engines\director\graphics.cpp" />
-		<ClCompile Include="..\..\engines\director\images.cpp" />
 		<ClCompile Include="..\..\engines\director\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\director\movie.cpp" />
 		<ClCompile Include="..\..\engines\director\picture.cpp" />
@@ -722,6 +722,9 @@
 		<ClCompile Include="..\..\engines\director\window.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\director\archive.h" />
+		<ClInclude Include="..\..\engines\director\blank-score.h" />
+		<ClInclude Include="..\..\engines\director\cast.h" />
 		<ClInclude Include="..\..\engines\director\castmember\bitmap.h">
 			<Filter>castmember</Filter>
 		</ClInclude>
@@ -761,12 +764,52 @@
 		<ClInclude Include="..\..\engines\director\castmember\xtra.h">
 			<Filter>castmember</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\director\channel.h" />
+		<ClInclude Include="..\..\engines\director\cursor.h" />
+		<ClInclude Include="..\..\engines\director\debugger.h" />
 		<ClInclude Include="..\..\engines\director\debugger\debugtools.h">
 			<Filter>debugger</Filter>
 		</ClInclude>
 		<ClInclude Include="..\..\engines\director\debugger\dt-internal.h">
 			<Filter>debugger</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\director\detection.h" />
+		<ClInclude Include="..\..\engines\director\detection_paths.h" />
+		<ClInclude Include="..\..\engines\director\detection_tables.h" />
+		<ClInclude Include="..\..\engines\director\director.h" />
+		<ClInclude Include="..\..\engines\director\frame.h" />
+		<ClInclude Include="..\..\engines\director\graphics-data.h" />
+		<ClInclude Include="..\..\engines\director\images.h" />
+		<ClInclude Include="..\..\engines\director\lingo\lingo-ast.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-builtins.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-bytecode.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-code.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-codegen.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-gr.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-object.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-the.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo-utils.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\director\lingo\lingo.h">
+			<Filter>lingo</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\director\lingo\lingodec\ast.h">
 			<Filter>lingo\lingodec</Filter>
 		</ClInclude>
@@ -1223,49 +1266,6 @@
 		<ClInclude Include="..\..\engines\director\lingo\xtras\x\xsound.h">
 			<Filter>lingo\xtras\x</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-ast.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-builtins.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-bytecode.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-code.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-codegen.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-gr.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-object.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-the.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo-utils.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\lingo\lingo.h">
-			<Filter>lingo</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\director\archive.h" />
-		<ClInclude Include="..\..\engines\director\blank-score.h" />
-		<ClInclude Include="..\..\engines\director\cast.h" />
-		<ClInclude Include="..\..\engines\director\channel.h" />
-		<ClInclude Include="..\..\engines\director\cursor.h" />
-		<ClInclude Include="..\..\engines\director\debugger.h" />
-		<ClInclude Include="..\..\engines\director\detection.h" />
-		<ClInclude Include="..\..\engines\director\detection_paths.h" />
-		<ClInclude Include="..\..\engines\director\detection_tables.h" />
-		<ClInclude Include="..\..\engines\director\director.h" />
-		<ClInclude Include="..\..\engines\director\frame.h" />
-		<ClInclude Include="..\..\engines\director\graphics-data.h" />
-		<ClInclude Include="..\..\engines\director\images.h" />
 		<ClInclude Include="..\..\engines\director\movie.h" />
 		<ClInclude Include="..\..\engines\director\palette-fade.h" />
 		<ClInclude Include="..\..\engines\director\picture.h" />
diff --git a/dists/msvc/draci.vcxproj b/dists/msvc/draci.vcxproj
index f0a8f9aa967..76caef23585 100644
--- a/dists/msvc/draci.vcxproj
+++ b/dists/msvc/draci.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{37541F55-2E35-4C6B-9F1D-E7C940E689DE}</ProjectGuid>
+		<ProjectGuid>{7BEF05FD-F300-3C25-823B-6BE5F2A15614}</ProjectGuid>
 		<RootNamespace>draci</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/dragons.vcxproj b/dists/msvc/dragons.vcxproj
index e5ebb66e997..caea25401b9 100644
--- a/dists/msvc/dragons.vcxproj
+++ b/dists/msvc/dragons.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{F4510FD2-3E0A-4FF9-8533-63960EC2FCBB}</ProjectGuid>
+		<ProjectGuid>{29FA5703-5B3F-3F53-AC71-6CBBCC20314F}</ProjectGuid>
 		<RootNamespace>dragons</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/drascula.vcxproj b/dists/msvc/drascula.vcxproj
index f892ae1fdf1..008723020d1 100644
--- a/dists/msvc/drascula.vcxproj
+++ b/dists/msvc/drascula.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{4AFD27EC-6486-44AB-90DA-AE5A7C2D57D3}</ProjectGuid>
+		<ProjectGuid>{2B16E879-A8BA-3D29-99CA-F6F72B621269}</ProjectGuid>
 		<RootNamespace>drascula</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/dreamweb.vcxproj b/dists/msvc/dreamweb.vcxproj
index 3c551b5793b..a0c98d8a01c 100644
--- a/dists/msvc/dreamweb.vcxproj
+++ b/dists/msvc/dreamweb.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{1751DE3E-8245-47FB-B4DB-B6E890A05D26}</ProjectGuid>
+		<ProjectGuid>{CB66C83C-DB28-3BB3-904E-522FD8E4EB95}</ProjectGuid>
 		<RootNamespace>dreamweb</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/efh.vcxproj b/dists/msvc/efh.vcxproj
index 1f76de69d77..37d1c7cce26 100644
--- a/dists/msvc/efh.vcxproj
+++ b/dists/msvc/efh.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{454E3F3C-40CC-4A04-89F7-8D18B47C2A25}</ProjectGuid>
+		<ProjectGuid>{552F4941-F444-3A55-B960-766A22BAC181}</ProjectGuid>
 		<RootNamespace>efh</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/engines/detection_table.h b/dists/msvc/engines/detection_table.h
index 4fb36b9b43e..25d0f0da1ed 100644
--- a/dists/msvc/engines/detection_table.h
+++ b/dists/msvc/engines/detection_table.h
@@ -97,6 +97,9 @@ LINK_PLUGIN(DRACI_DETECTION)
 #if defined(ENABLE_DRAGONS) || defined(DETECTION_FULL)
 LINK_PLUGIN(DRAGONS_DETECTION)
 #endif
+#if defined(ENABLE_DRAGONSLAIR2) || defined(DETECTION_FULL)
+LINK_PLUGIN(DRAGONSLAIR2_DETECTION)
+#endif
 #if defined(ENABLE_DRASCULA) || defined(DETECTION_FULL)
 LINK_PLUGIN(DRASCULA_DETECTION)
 #endif
@@ -355,6 +358,9 @@ LINK_PLUGIN(WAYNESWORLD_DETECTION)
 #if defined(ENABLE_WINTERMUTE) || defined(DETECTION_FULL)
 LINK_PLUGIN(WINTERMUTE_DETECTION)
 #endif
+#if defined(ENABLE_YAGA) || defined(DETECTION_FULL)
+LINK_PLUGIN(YAGA_DETECTION)
+#endif
 #if defined(ENABLE_ZVISION) || defined(DETECTION_FULL)
 LINK_PLUGIN(ZVISION_DETECTION)
 #endif
diff --git a/dists/msvc/engines/plugins_table.h b/dists/msvc/engines/plugins_table.h
index 98b0ddde80e..53f49f4ba19 100644
--- a/dists/msvc/engines/plugins_table.h
+++ b/dists/msvc/engines/plugins_table.h
@@ -97,6 +97,9 @@ LINK_PLUGIN(DRACI)
 #if PLUGIN_ENABLED_STATIC(DRAGONS)
 LINK_PLUGIN(DRAGONS)
 #endif
+#if PLUGIN_ENABLED_STATIC(DRAGONSLAIR2)
+LINK_PLUGIN(DRAGONSLAIR2)
+#endif
 #if PLUGIN_ENABLED_STATIC(DRASCULA)
 LINK_PLUGIN(DRASCULA)
 #endif
@@ -355,6 +358,9 @@ LINK_PLUGIN(WAYNESWORLD)
 #if PLUGIN_ENABLED_STATIC(WINTERMUTE)
 LINK_PLUGIN(WINTERMUTE)
 #endif
+#if PLUGIN_ENABLED_STATIC(YAGA)
+LINK_PLUGIN(YAGA)
+#endif
 #if PLUGIN_ENABLED_STATIC(ZVISION)
 LINK_PLUGIN(ZVISION)
 #endif
diff --git a/dists/msvc/freescape.vcxproj b/dists/msvc/freescape.vcxproj
index 57ab210b7dd..d9f0caa17f2 100644
--- a/dists/msvc/freescape.vcxproj
+++ b/dists/msvc/freescape.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{5BD14D2B-3415-4308-8328-CE757F257762}</ProjectGuid>
+		<ProjectGuid>{91381BCC-F314-3F5F-A709-2DB7BA9F3DA1}</ProjectGuid>
 		<RootNamespace>freescape</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -197,6 +200,7 @@
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\atari.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\atari.music.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\c64.cpp" />
+		<ClCompile Include="..\..\engines\freescape\games\eclipse\c64.music.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\cpc.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\dos.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\eclipse.cpp" />
@@ -244,6 +248,7 @@
 		<ClInclude Include="..\..\engines\freescape\games\driller\c64.music.h" />
 		<ClInclude Include="..\..\engines\freescape\games\driller\c64.sfx.h" />
 		<ClInclude Include="..\..\engines\freescape\games\driller\driller.h" />
+		<ClInclude Include="..\..\engines\freescape\games\eclipse\c64.music.h" />
 		<ClInclude Include="..\..\engines\freescape\games\eclipse\eclipse.h" />
 		<ClInclude Include="..\..\engines\freescape\language\8bitDetokeniser.h" />
 		<ClInclude Include="..\..\engines\freescape\language\instruction.h" />
diff --git a/dists/msvc/freescape.vcxproj.filters b/dists/msvc/freescape.vcxproj.filters
index 96c276b0a92..ca383e0ed1c 100644
--- a/dists/msvc/freescape.vcxproj.filters
+++ b/dists/msvc/freescape.vcxproj.filters
@@ -1,35 +1,43 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="games">
-			<UniqueIdentifier>B83DD497-0465-45D0-8D89-EEB96419238C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA660-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="games\castle">
-			<UniqueIdentifier>EF49DCF1-4F20-4F5E-B0D3-FB2064EFA90F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA661-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="games\dark">
-			<UniqueIdentifier>3EE8AAF8-E0D0-4445-897F-06DEA61FA0A7</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA662-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="games\driller">
-			<UniqueIdentifier>26F11B61-0D10-4FF5-8738-CDBD852E5981</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA663-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="games\eclipse">
-			<UniqueIdentifier>A130184B-D8E6-4CE5-B9F5-9EE8166F0E9E</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA664-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="language">
-			<UniqueIdentifier>5EF3EA0B-63F5-4E20-AC39-A752F95EE407</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA665-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="loaders">
-			<UniqueIdentifier>DFFE2843-C9CD-4E30-B2DC-35F961950CE3</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA666-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="objects">
-			<UniqueIdentifier>9DD5D3CC-E830-4D16-8E1E-14BB6A420135</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA667-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="sound">
-			<UniqueIdentifier>F86E0CA8-14DF-4486-8B17-310887C01161</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA668-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\freescape\area.cpp" />
+		<ClCompile Include="..\..\engines\freescape\assets.cpp" />
+		<ClCompile Include="..\..\engines\freescape\debugger.cpp" />
+		<ClCompile Include="..\..\engines\freescape\demo.cpp" />
+		<ClCompile Include="..\..\engines\freescape\doodle.cpp" />
+		<ClCompile Include="..\..\engines\freescape\events.cpp" />
+		<ClCompile Include="..\..\engines\freescape\font.cpp" />
+		<ClCompile Include="..\..\engines\freescape\freescape.cpp" />
 		<ClCompile Include="..\..\engines\freescape\games\castle\amiga.cpp">
 			<Filter>games\castle</Filter>
 		</ClCompile>
@@ -111,6 +119,9 @@
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\c64.cpp">
 			<Filter>games\eclipse</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\freescape\games\eclipse\c64.music.cpp">
+			<Filter>games\eclipse</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\freescape\games\eclipse\cpc.cpp">
 			<Filter>games\eclipse</Filter>
 		</ClCompile>
@@ -126,6 +137,12 @@
 		<ClCompile Include="..\..\engines\freescape\games\palettes.cpp">
 			<Filter>games</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\freescape\gfx.cpp" />
+		<ClCompile Include="..\..\engines\freescape\gfx_opengl.cpp" />
+		<ClCompile Include="..\..\engines\freescape\gfx_opengl_shaders.cpp" />
+		<ClCompile Include="..\..\engines\freescape\gfx_opengl_texture.cpp" />
+		<ClCompile Include="..\..\engines\freescape\gfx_tinygl.cpp" />
+		<ClCompile Include="..\..\engines\freescape\gfx_tinygl_texture.cpp" />
 		<ClCompile Include="..\..\engines\freescape\language\8bitDetokeniser.cpp">
 			<Filter>language</Filter>
 		</ClCompile>
@@ -141,6 +158,8 @@
 		<ClCompile Include="..\..\engines\freescape\loaders\c64.cpp">
 			<Filter>loaders</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\freescape\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\freescape\movement.cpp" />
 		<ClCompile Include="..\..\engines\freescape\objects\geometricobject.cpp">
 			<Filter>objects</Filter>
 		</ClCompile>
@@ -165,28 +184,18 @@
 		<ClCompile Include="..\..\engines\freescape\sound\zx.cpp">
 			<Filter>sound</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\freescape\area.cpp" />
-		<ClCompile Include="..\..\engines\freescape\assets.cpp" />
-		<ClCompile Include="..\..\engines\freescape\debugger.cpp" />
-		<ClCompile Include="..\..\engines\freescape\demo.cpp" />
-		<ClCompile Include="..\..\engines\freescape\doodle.cpp" />
-		<ClCompile Include="..\..\engines\freescape\events.cpp" />
-		<ClCompile Include="..\..\engines\freescape\font.cpp" />
-		<ClCompile Include="..\..\engines\freescape\freescape.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx_opengl.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx_opengl_shaders.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx_opengl_texture.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx_tinygl.cpp" />
-		<ClCompile Include="..\..\engines\freescape\gfx_tinygl_texture.cpp" />
-		<ClCompile Include="..\..\engines\freescape\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\freescape\movement.cpp" />
 		<ClCompile Include="..\..\engines\freescape\sweepAABB.cpp" />
 		<ClCompile Include="..\..\engines\freescape\ui.cpp" />
 		<ClCompile Include="..\..\engines\freescape\unpack.cpp" />
 		<ClCompile Include="..\..\engines\freescape\wb.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\freescape\area.h" />
+		<ClInclude Include="..\..\engines\freescape\debugger.h" />
+		<ClInclude Include="..\..\engines\freescape\detection.h" />
+		<ClInclude Include="..\..\engines\freescape\doodle.h" />
+		<ClInclude Include="..\..\engines\freescape\font.h" />
+		<ClInclude Include="..\..\engines\freescape\freescape.h" />
 		<ClInclude Include="..\..\engines\freescape\games\castle\castle.h">
 			<Filter>games\castle</Filter>
 		</ClInclude>
@@ -208,9 +217,18 @@
 		<ClInclude Include="..\..\engines\freescape\games\driller\driller.h">
 			<Filter>games\driller</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\freescape\games\eclipse\c64.music.h">
+			<Filter>games\eclipse</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\freescape\games\eclipse\eclipse.h">
 			<Filter>games\eclipse</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\freescape\gfx.h" />
+		<ClInclude Include="..\..\engines\freescape\gfx_opengl.h" />
+		<ClInclude Include="..\..\engines\freescape\gfx_opengl_shaders.h" />
+		<ClInclude Include="..\..\engines\freescape\gfx_opengl_texture.h" />
+		<ClInclude Include="..\..\engines\freescape\gfx_tinygl.h" />
+		<ClInclude Include="..\..\engines\freescape\gfx_tinygl_texture.h" />
 		<ClInclude Include="..\..\engines\freescape\language\8bitDetokeniser.h">
 			<Filter>language</Filter>
 		</ClInclude>
@@ -241,18 +259,6 @@
 		<ClInclude Include="..\..\engines\freescape\objects\sensor.h">
 			<Filter>objects</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\freescape\area.h" />
-		<ClInclude Include="..\..\engines\freescape\debugger.h" />
-		<ClInclude Include="..\..\engines\freescape\detection.h" />
-		<ClInclude Include="..\..\engines\freescape\doodle.h" />
-		<ClInclude Include="..\..\engines\freescape\font.h" />
-		<ClInclude Include="..\..\engines\freescape\freescape.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx_opengl.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx_opengl_shaders.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx_opengl_texture.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx_tinygl.h" />
-		<ClInclude Include="..\..\engines\freescape\gfx_tinygl_texture.h" />
 		<ClInclude Include="..\..\engines\freescape\sound.h" />
 		<ClInclude Include="..\..\engines\freescape\sweepAABB.h" />
 		<ClInclude Include="..\..\engines\freescape\wb.h" />
diff --git a/dists/msvc/glk.vcxproj b/dists/msvc/glk.vcxproj
index 849cde1e3b6..4da3be59aae 100644
--- a/dists/msvc/glk.vcxproj
+++ b/dists/msvc/glk.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{B275C5CB-ED38-4F98-930B-EAA7907FF7AF}</ProjectGuid>
+		<ProjectGuid>{0D01C69A-EDE1-311D-B26D-ACB7D1600101}</ProjectGuid>
 		<RootNamespace>glk</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/glk.vcxproj.filters b/dists/msvc/glk.vcxproj.filters
index cf1fb0b0284..ef5949bed58 100644
--- a/dists/msvc/glk.vcxproj.filters
+++ b/dists/msvc/glk.vcxproj.filters
@@ -1,65 +1,65 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="adrift">
-			<UniqueIdentifier>D02E9209-F276-4AD6-9CAC-34C1D50B1A8F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA669-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="advsys">
-			<UniqueIdentifier>CB9C11E3-E289-43F8-9FC9-10BD27C15BA9</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="agt">
-			<UniqueIdentifier>2087D9D2-4FAB-45BE-9470-431C69CC3355</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="alan2">
-			<UniqueIdentifier>3B624DE7-2F10-48C6-85A2-C1E957716BD8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="alan3">
-			<UniqueIdentifier>CE16B7C5-4B69-44CE-9441-5B91741D1C66</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="archetype">
-			<UniqueIdentifier>A82EC4B3-575F-4C6C-9D01-7BA110EB8C46</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="comprehend">
-			<UniqueIdentifier>8748BD1C-EB97-4AD7-BBB9-02204A7CAF27</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA66F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="glulx">
-			<UniqueIdentifier>F21C657A-9C5D-4A8E-8B10-EB995B260F92</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA670-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="hugo">
-			<UniqueIdentifier>DAABF4DC-B8DC-4024-9E18-5A94F24B840B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA671-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="jacl">
-			<UniqueIdentifier>7471F986-744F-4E03-83B6-DF1151FE6B7B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA672-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="level9">
-			<UniqueIdentifier>E5CC63D7-BBE8-4D04-88B9-BBEFA6EFF162</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA673-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="magnetic">
-			<UniqueIdentifier>9486B2F9-8A94-48C2-A6EF-31B87FB2CC1C</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA674-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="quest">
-			<UniqueIdentifier>F11017B0-2AA5-46B9-A091-58E16C369DE3</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA675-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="scott">
-			<UniqueIdentifier>FD914B58-EB6B-4966-BE6B-49DE6A3F1541</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA676-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="scott\unp64">
-			<UniqueIdentifier>C36A9C70-DB92-4B40-9D20-E3B52CA1B69F</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA677-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="scott\unp64\scanners">
-			<UniqueIdentifier>EAEC68AD-5923-4E8D-943D-0D1076186093</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA678-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="tads">
-			<UniqueIdentifier>AE29FA37-85B8-4DA3-AD45-4934470CBBA7</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA679-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="tads\tads2">
-			<UniqueIdentifier>AF99793B-99B7-4058-9A11-36247138F6A8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="tads\tads3">
-			<UniqueIdentifier>921E46B1-E040-4A12-A764-C0E69669F169</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="zcode">
-			<UniqueIdentifier>2BAB498C-88A8-4D2C-881C-DF8E88E06355</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
@@ -480,6 +480,7 @@
 		<ClCompile Include="..\..\engines\glk\archetype\token.cpp">
 			<Filter>archetype</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\blorb.cpp" />
 		<ClCompile Include="..\..\engines\glk\comprehend\charset.cpp">
 			<Filter>comprehend</Filter>
 		</ClCompile>
@@ -531,6 +532,14 @@
 		<ClCompile Include="..\..\engines\glk\comprehend\pics.cpp">
 			<Filter>comprehend</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\conf.cpp" />
+		<ClCompile Include="..\..\engines\glk\debugger.cpp" />
+		<ClCompile Include="..\..\engines\glk\detection.cpp" />
+		<ClCompile Include="..\..\engines\glk\events.cpp" />
+		<ClCompile Include="..\..\engines\glk\fonts.cpp" />
+		<ClCompile Include="..\..\engines\glk\glk.cpp" />
+		<ClCompile Include="..\..\engines\glk\glk_api.cpp" />
+		<ClCompile Include="..\..\engines\glk\glk_dispa.cpp" />
 		<ClCompile Include="..\..\engines\glk\glulx\accel.cpp">
 			<Filter>glulx</Filter>
 		</ClCompile>
@@ -690,6 +699,9 @@
 		<ClCompile Include="..\..\engines\glk\magnetic\magnetic.cpp">
 			<Filter>magnetic</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\glk\pc_speaker.cpp" />
+		<ClCompile Include="..\..\engines\glk\picture.cpp" />
 		<ClCompile Include="..\..\engines\glk\quest\detection.cpp">
 			<Filter>quest</Filter>
 		</ClCompile>
@@ -720,63 +732,8 @@
 		<ClCompile Include="..\..\engines\glk\quest\string.cpp">
 			<Filter>quest</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\action_packer.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\byte_boiler.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\caution.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\ccs.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\cruel.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\eca.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\exomizer.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\expert.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\master_compressor.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\megabyte.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\pu_crunch.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\scanners.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\section8.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\tbc_multicomp.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\tcs_crunch.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\xtc.cpp">
-			<Filter>scott\unp64\scanners</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\6502_emu.cpp">
-			<Filter>scott\unp64</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\exo_util.cpp">
-			<Filter>scott\unp64</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\scott\unp64\unp64.cpp">
-			<Filter>scott\unp64</Filter>
-		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\quetzal.cpp" />
+		<ClCompile Include="..\..\engines\glk\raw_decoder.cpp" />
 		<ClCompile Include="..\..\engines\glk\scott\c64_checksums.cpp">
 			<Filter>scott</Filter>
 		</ClCompile>
@@ -849,6 +806,89 @@
 		<ClCompile Include="..\..\engines\glk\scott\ti99_4a_terp.cpp">
 			<Filter>scott</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\6502_emu.cpp">
+			<Filter>scott\unp64</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\exo_util.cpp">
+			<Filter>scott\unp64</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\action_packer.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\byte_boiler.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\caution.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\ccs.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\cruel.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\eca.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\exomizer.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\expert.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\master_compressor.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\megabyte.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\pu_crunch.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\scanners.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\section8.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\tbc_multicomp.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\tcs_crunch.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\scanners\xtc.cpp">
+			<Filter>scott\unp64\scanners</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\scott\unp64\unp64.cpp">
+			<Filter>scott\unp64</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\screen.cpp" />
+		<ClCompile Include="..\..\engines\glk\selection.cpp" />
+		<ClCompile Include="..\..\engines\glk\sound.cpp" />
+		<ClCompile Include="..\..\engines\glk\speech.cpp" />
+		<ClCompile Include="..\..\engines\glk\streams.cpp" />
+		<ClCompile Include="..\..\engines\glk\tads\detection.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\os_banners.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\os_buffer.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\os_frob_tads.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\os_glk.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\os_parse.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\tads\tads.cpp">
+			<Filter>tads</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\glk\tads\tads2\built_in.cpp">
 			<Filter>tads\tads2</Filter>
 		</ClCompile>
@@ -951,27 +991,15 @@
 		<ClCompile Include="..\..\engines\glk\tads\tads3\tads3.cpp">
 			<Filter>tads\tads3</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\detection.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\os_banners.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\os_buffer.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\os_frob_tads.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\os_glk.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\os_parse.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\tads\tads.cpp">
-			<Filter>tads</Filter>
-		</ClCompile>
+		<ClCompile Include="..\..\engines\glk\time.cpp" />
+		<ClCompile Include="..\..\engines\glk\unicode.cpp" />
+		<ClCompile Include="..\..\engines\glk\unicode_gen.cpp" />
+		<ClCompile Include="..\..\engines\glk\utils.cpp" />
+		<ClCompile Include="..\..\engines\glk\window_graphics.cpp" />
+		<ClCompile Include="..\..\engines\glk\window_pair.cpp" />
+		<ClCompile Include="..\..\engines\glk\window_text_buffer.cpp" />
+		<ClCompile Include="..\..\engines\glk\window_text_grid.cpp" />
+		<ClCompile Include="..\..\engines\glk\windows.cpp" />
 		<ClCompile Include="..\..\engines\glk\zcode\bitmap_font.cpp">
 			<Filter>zcode</Filter>
 		</ClCompile>
@@ -1044,34 +1072,6 @@
 		<ClCompile Include="..\..\engines\glk\zcode\zcode.cpp">
 			<Filter>zcode</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\glk\blorb.cpp" />
-		<ClCompile Include="..\..\engines\glk\conf.cpp" />
-		<ClCompile Include="..\..\engines\glk\debugger.cpp" />
-		<ClCompile Include="..\..\engines\glk\detection.cpp" />
-		<ClCompile Include="..\..\engines\glk\events.cpp" />
-		<ClCompile Include="..\..\engines\glk\fonts.cpp" />
-		<ClCompile Include="..\..\engines\glk\glk.cpp" />
-		<ClCompile Include="..\..\engines\glk\glk_api.cpp" />
-		<ClCompile Include="..\..\engines\glk\glk_dispa.cpp" />
-		<ClCompile Include="..\..\engines\glk\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\glk\pc_speaker.cpp" />
-		<ClCompile Include="..\..\engines\glk\picture.cpp" />
-		<ClCompile Include="..\..\engines\glk\quetzal.cpp" />
-		<ClCompile Include="..\..\engines\glk\raw_decoder.cpp" />
-		<ClCompile Include="..\..\engines\glk\screen.cpp" />
-		<ClCompile Include="..\..\engines\glk\selection.cpp" />
-		<ClCompile Include="..\..\engines\glk\sound.cpp" />
-		<ClCompile Include="..\..\engines\glk\speech.cpp" />
-		<ClCompile Include="..\..\engines\glk\streams.cpp" />
-		<ClCompile Include="..\..\engines\glk\time.cpp" />
-		<ClCompile Include="..\..\engines\glk\unicode.cpp" />
-		<ClCompile Include="..\..\engines\glk\unicode_gen.cpp" />
-		<ClCompile Include="..\..\engines\glk\utils.cpp" />
-		<ClCompile Include="..\..\engines\glk\window_graphics.cpp" />
-		<ClCompile Include="..\..\engines\glk\window_pair.cpp" />
-		<ClCompile Include="..\..\engines\glk\window_text_buffer.cpp" />
-		<ClCompile Include="..\..\engines\glk\window_text_grid.cpp" />
-		<ClCompile Include="..\..\engines\glk\windows.cpp" />
 	</ItemGroup>
 	<ItemGroup>
 		<ClInclude Include="..\..\engines\glk\adrift\adrift.h">
@@ -1422,6 +1422,7 @@
 		<ClInclude Include="..\..\engines\glk\archetype\token.h">
 			<Filter>archetype</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\blorb.h" />
 		<ClInclude Include="..\..\engines\glk\comprehend\charset.h">
 			<Filter>comprehend</Filter>
 		</ClInclude>
@@ -1476,6 +1477,15 @@
 		<ClInclude Include="..\..\engines\glk\comprehend\pics.h">
 			<Filter>comprehend</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\conf.h" />
+		<ClInclude Include="..\..\engines\glk\debugger.h" />
+		<ClInclude Include="..\..\engines\glk\detection.h" />
+		<ClInclude Include="..\..\engines\glk\events.h" />
+		<ClInclude Include="..\..\engines\glk\fonts.h" />
+		<ClInclude Include="..\..\engines\glk\game_description.h" />
+		<ClInclude Include="..\..\engines\glk\glk.h" />
+		<ClInclude Include="..\..\engines\glk\glk_api.h" />
+		<ClInclude Include="..\..\engines\glk\glk_types.h" />
 		<ClInclude Include="..\..\engines\glk\glulx\detection.h">
 			<Filter>glulx</Filter>
 		</ClInclude>
@@ -1542,6 +1552,7 @@
 		<ClInclude Include="..\..\engines\glk\jacl\version.h">
 			<Filter>jacl</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\jumps.h" />
 		<ClInclude Include="..\..\engines\glk\level9\detection.h">
 			<Filter>level9</Filter>
 		</ClInclude>
@@ -1572,6 +1583,8 @@
 		<ClInclude Include="..\..\engines\glk\magnetic\magnetic_types.h">
 			<Filter>magnetic</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\pc_speaker.h" />
+		<ClInclude Include="..\..\engines\glk\picture.h" />
 		<ClInclude Include="..\..\engines\glk\quest\detection.h">
 			<Filter>quest</Filter>
 		</ClInclude>
@@ -1614,18 +1627,8 @@
 		<ClInclude Include="..\..\engines\glk\quest\string.h">
 			<Filter>quest</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\scott\unp64\6502_emu.h">
-			<Filter>scott\unp64</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\scott\unp64\exo_util.h">
-			<Filter>scott\unp64</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\scott\unp64\unp64.h">
-			<Filter>scott\unp64</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\scott\unp64\unp64_interface.h">
-			<Filter>scott\unp64</Filter>
-		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\quetzal.h" />
+		<ClInclude Include="..\..\engines\glk\raw_decoder.h" />
 		<ClInclude Include="..\..\engines\glk\scott\c64_checksums.h">
 			<Filter>scott</Filter>
 		</ClInclude>
@@ -1707,6 +1710,50 @@
 		<ClInclude Include="..\..\engines\glk\scott\types.h">
 			<Filter>scott</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\scott\unp64\6502_emu.h">
+			<Filter>scott\unp64</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\scott\unp64\exo_util.h">
+			<Filter>scott\unp64</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\scott\unp64\unp64.h">
+			<Filter>scott\unp64</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\scott\unp64\unp64_interface.h">
+			<Filter>scott\unp64</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\screen.h" />
+		<ClInclude Include="..\..\engines\glk\selection.h" />
+		<ClInclude Include="..\..\engines\glk\sound.h" />
+		<ClInclude Include="..\..\engines\glk\speech.h" />
+		<ClInclude Include="..\..\engines\glk\streams.h" />
+		<ClInclude Include="..\..\engines\glk\tads\detection.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\detection_tables.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_banners.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_buffer.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_filetype.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_frob_tads.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_glk.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\os_parse.h">
+			<Filter>tads</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\tads\tads.h">
+			<Filter>tads</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\glk\tads\tads2\appctx.h">
 			<Filter>tads\tads2</Filter>
 		</ClInclude>
@@ -1806,33 +1853,15 @@
 		<ClInclude Include="..\..\engines\glk\tads\tads3\tads3.h">
 			<Filter>tads\tads3</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\detection.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\detection_tables.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_banners.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_buffer.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_filetype.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_frob_tads.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_glk.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\os_parse.h">
-			<Filter>tads</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\tads\tads.h">
-			<Filter>tads</Filter>
-		</ClInclude>
+		<ClInclude Include="..\..\engines\glk\time.h" />
+		<ClInclude Include="..\..\engines\glk\unicode.h" />
+		<ClInclude Include="..\..\engines\glk\unicode_gen.h" />
+		<ClInclude Include="..\..\engines\glk\utils.h" />
+		<ClInclude Include="..\..\engines\glk\window_graphics.h" />
+		<ClInclude Include="..\..\engines\glk\window_pair.h" />
+		<ClInclude Include="..\..\engines\glk\window_text_buffer.h" />
+		<ClInclude Include="..\..\engines\glk\window_text_grid.h" />
+		<ClInclude Include="..\..\engines\glk\windows.h" />
 		<ClInclude Include="..\..\engines\glk\zcode\bitmap_font.h">
 			<Filter>zcode</Filter>
 		</ClInclude>
@@ -1878,35 +1907,6 @@
 		<ClInclude Include="..\..\engines\glk\zcode\zcode.h">
 			<Filter>zcode</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\glk\blorb.h" />
-		<ClInclude Include="..\..\engines\glk\conf.h" />
-		<ClInclude Include="..\..\engines\glk\debugger.h" />
-		<ClInclude Include="..\..\engines\glk\detection.h" />
-		<ClInclude Include="..\..\engines\glk\events.h" />
-		<ClInclude Include="..\..\engines\glk\fonts.h" />
-		<ClInclude Include="..\..\engines\glk\game_description.h" />
-		<ClInclude Include="..\..\engines\glk\glk.h" />
-		<ClInclude Include="..\..\engines\glk\glk_api.h" />
-		<ClInclude Include="..\..\engines\glk\glk_types.h" />
-		<ClInclude Include="..\..\engines\glk\jumps.h" />
-		<ClInclude Include="..\..\engines\glk\pc_speaker.h" />
-		<ClInclude Include="..\..\engines\glk\picture.h" />
-		<ClInclude Include="..\..\engines\glk\quetzal.h" />
-		<ClInclude Include="..\..\engines\glk\raw_decoder.h" />
-		<ClInclude Include="..\..\engines\glk\screen.h" />
-		<ClInclude Include="..\..\engines\glk\selection.h" />
-		<ClInclude Include="..\..\engines\glk\sound.h" />
-		<ClInclude Include="..\..\engines\glk\speech.h" />
-		<ClInclude Include="..\..\engines\glk\streams.h" />
-		<ClInclude Include="..\..\engines\glk\time.h" />
-		<ClInclude Include="..\..\engines\glk\unicode.h" />
-		<ClInclude Include="..\..\engines\glk\unicode_gen.h" />
-		<ClInclude Include="..\..\engines\glk\utils.h" />
-		<ClInclude Include="..\..\engines\glk\window_graphics.h" />
-		<ClInclude Include="..\..\engines\glk\window_pair.h" />
-		<ClInclude Include="..\..\engines\glk\window_text_buffer.h" />
-		<ClInclude Include="..\..\engines\glk\window_text_grid.h" />
-		<ClInclude Include="..\..\engines\glk\windows.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\glk\module.mk" />
diff --git a/dists/msvc/gnap.vcxproj b/dists/msvc/gnap.vcxproj
index f814699c513..e3935bcd950 100644
--- a/dists/msvc/gnap.vcxproj
+++ b/dists/msvc/gnap.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{BC51272A-7664-4C27-9405-8F7E795CA661}</ProjectGuid>
+		<ProjectGuid>{7064A075-E2C6-3577-A651-50FED0B655EC}</ProjectGuid>
 		<RootNamespace>gnap</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/gnap.vcxproj.filters b/dists/msvc/gnap.vcxproj.filters
index d0dd7e510c0..b2fcce3054b 100644
--- a/dists/msvc/gnap.vcxproj.filters
+++ b/dists/msvc/gnap.vcxproj.filters
@@ -1,11 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="scenes">
-			<UniqueIdentifier>922D78AD-7DF8-4976-AE7E-9A188D62CF10</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\gnap\character.cpp" />
+		<ClCompile Include="..\..\engines\gnap\datarchive.cpp" />
+		<ClCompile Include="..\..\engines\gnap\debugger.cpp" />
+		<ClCompile Include="..\..\engines\gnap\gamesys.cpp" />
+		<ClCompile Include="..\..\engines\gnap\gnap.cpp" />
+		<ClCompile Include="..\..\engines\gnap\grid.cpp" />
+		<ClCompile Include="..\..\engines\gnap\menu.cpp" />
+		<ClCompile Include="..\..\engines\gnap\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\gnap\music.cpp" />
+		<ClCompile Include="..\..\engines\gnap\resource.cpp" />
 		<ClCompile Include="..\..\engines\gnap\scenes\arcade.cpp">
 			<Filter>scenes</Filter>
 		</ClCompile>
@@ -36,19 +46,17 @@
 		<ClCompile Include="..\..\engines\gnap\scenes\scenecore.cpp">
 			<Filter>scenes</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\gnap\character.cpp" />
-		<ClCompile Include="..\..\engines\gnap\datarchive.cpp" />
-		<ClCompile Include="..\..\engines\gnap\debugger.cpp" />
-		<ClCompile Include="..\..\engines\gnap\gamesys.cpp" />
-		<ClCompile Include="..\..\engines\gnap\gnap.cpp" />
-		<ClCompile Include="..\..\engines\gnap\grid.cpp" />
-		<ClCompile Include="..\..\engines\gnap\menu.cpp" />
-		<ClCompile Include="..\..\engines\gnap\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\gnap\music.cpp" />
-		<ClCompile Include="..\..\engines\gnap\resource.cpp" />
 		<ClCompile Include="..\..\engines\gnap\sound.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\gnap\character.h" />
+		<ClInclude Include="..\..\engines\gnap\datarchive.h" />
+		<ClInclude Include="..\..\engines\gnap\debugger.h" />
+		<ClInclude Include="..\..\engines\gnap\fontdata.h" />
+		<ClInclude Include="..\..\engines\gnap\gamesys.h" />
+		<ClInclude Include="..\..\engines\gnap\gnap.h" />
+		<ClInclude Include="..\..\engines\gnap\music.h" />
+		<ClInclude Include="..\..\engines\gnap\resource.h" />
 		<ClInclude Include="..\..\engines\gnap\scenes\arcade.h">
 			<Filter>scenes</Filter>
 		</ClInclude>
@@ -79,14 +87,6 @@
 		<ClInclude Include="..\..\engines\gnap\scenes\scenecore.h">
 			<Filter>scenes</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\gnap\character.h" />
-		<ClInclude Include="..\..\engines\gnap\datarchive.h" />
-		<ClInclude Include="..\..\engines\gnap\debugger.h" />
-		<ClInclude Include="..\..\engines\gnap\fontdata.h" />
-		<ClInclude Include="..\..\engines\gnap\gamesys.h" />
-		<ClInclude Include="..\..\engines\gnap\gnap.h" />
-		<ClInclude Include="..\..\engines\gnap\music.h" />
-		<ClInclude Include="..\..\engines\gnap\resource.h" />
 		<ClInclude Include="..\..\engines\gnap\sound.h" />
 	</ItemGroup>
 	<ItemGroup>
diff --git a/dists/msvc/gob.vcxproj b/dists/msvc/gob.vcxproj
index 51998881dfe..f8c413aedfa 100644
--- a/dists/msvc/gob.vcxproj
+++ b/dists/msvc/gob.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{FA345D19-D2C9-4A0B-92BC-A348D0099220}</ProjectGuid>
+		<ProjectGuid>{46611E37-2506-38B2-99C6-F5CBFE792D5A}</ProjectGuid>
 		<RootNamespace>gob</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/gob.vcxproj.filters b/dists/msvc/gob.vcxproj.filters
index 472848b3429..c5860fb0f71 100644
--- a/dists/msvc/gob.vcxproj.filters
+++ b/dists/msvc/gob.vcxproj.filters
@@ -1,32 +1,43 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="demos">
-			<UniqueIdentifier>B4375A96-C17D-42D8-960E-AE845B615BD2</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="image">
-			<UniqueIdentifier>8064C53F-508F-4A61-8342-081CE719EF17</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA67F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="minigames">
-			<UniqueIdentifier>EEA44A34-2028-429B-BED0-C8B3A2FAF73A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA680-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="minigames\geisha">
-			<UniqueIdentifier>8AD190B9-398B-4741-9012-835D8AFBDF92</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA681-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="pregob">
-			<UniqueIdentifier>EFA31379-B399-4DEA-B59B-AEF58BF35823</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA682-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="pregob\onceupon">
-			<UniqueIdentifier>F43AF143-0BB4-4789-80D4-A2802EF9CBF8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA683-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="save">
-			<UniqueIdentifier>CAB5D9AA-0966-4140-BD24-B23D97666ACA</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA684-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="sound">
-			<UniqueIdentifier>FA123293-DE8F-42A1-AD5C-8D6B419841F4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA685-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\gob\anifile.cpp" />
+		<ClCompile Include="..\..\engines\gob\aniobject.cpp" />
+		<ClCompile Include="..\..\engines\gob\backbuffer.cpp" />
+		<ClCompile Include="..\..\engines\gob\cheater.cpp" />
+		<ClCompile Include="..\..\engines\gob\cheater_geisha.cpp" />
+		<ClCompile Include="..\..\engines\gob\cmpfile.cpp" />
+		<ClCompile Include="..\..\engines\gob\console.cpp" />
+		<ClCompile Include="..\..\engines\gob\databases.cpp" />
+		<ClCompile Include="..\..\engines\gob\dataio.cpp" />
+		<ClCompile Include="..\..\engines\gob\dbase.cpp" />
+		<ClCompile Include="..\..\engines\gob\decfile.cpp" />
 		<ClCompile Include="..\..\engines\gob\demos\batplayer.cpp">
 			<Filter>demos</Filter>
 		</ClCompile>
@@ -36,9 +47,57 @@
 		<ClCompile Include="..\..\engines\gob\demos\scnplayer.cpp">
 			<Filter>demos</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\gob\draw.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_bargon.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_fascin.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_playtoons.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\draw_v7.cpp" />
+		<ClCompile Include="..\..\engines\gob\expression.cpp" />
+		<ClCompile Include="..\..\engines\gob\game.cpp" />
+		<ClCompile Include="..\..\engines\gob\global.cpp" />
+		<ClCompile Include="..\..\engines\gob\gob.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin_v3.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin_v4.cpp" />
+		<ClCompile Include="..\..\engines\gob\goblin_v7.cpp" />
+		<ClCompile Include="..\..\engines\gob\hotspots.cpp" />
+		<ClCompile Include="..\..\engines\gob\html_parser.cpp" />
 		<ClCompile Include="..\..\engines\gob\image\brc.cpp">
 			<Filter>image</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\gob\iniconfig.cpp" />
+		<ClCompile Include="..\..\engines\gob\init.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_fascin.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_geisha.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v3.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v4.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v6.cpp" />
+		<ClCompile Include="..\..\engines\gob\init_v7.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_adibou1.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_bargon.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_fascin.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_geisha.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_inca2.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_littlered.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_playtoons.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v3.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v4.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v5.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v6.cpp" />
+		<ClCompile Include="..\..\engines\gob\inter_v7.cpp" />
+		<ClCompile Include="..\..\engines\gob\map.cpp" />
+		<ClCompile Include="..\..\engines\gob\map_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\map_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\metaengine.cpp" />
 		<ClCompile Include="..\..\engines\gob\minigames\geisha\diving.cpp">
 			<Filter>minigames\geisha</Filter>
 		</ClCompile>
@@ -60,6 +119,13 @@
 		<ClCompile Include="..\..\engines\gob\minigames\geisha\submarine.cpp">
 			<Filter>minigames\geisha</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\gob\mult.cpp" />
+		<ClCompile Include="..\..\engines\gob\mult_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\mult_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\palanim.cpp" />
+		<ClCompile Include="..\..\engines\gob\pregob\gctfile.cpp">
+			<Filter>pregob</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\gob\pregob\onceupon\abracadabra.cpp">
 			<Filter>pregob\onceupon</Filter>
 		</ClCompile>
@@ -81,9 +147,6 @@
 		<ClCompile Include="..\..\engines\gob\pregob\onceupon\title.cpp">
 			<Filter>pregob\onceupon</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\gob\pregob\gctfile.cpp">
-			<Filter>pregob</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\gob\pregob\pregob.cpp">
 			<Filter>pregob</Filter>
 		</ClCompile>
@@ -93,6 +156,8 @@
 		<ClCompile Include="..\..\engines\gob\pregob\txtfile.cpp">
 			<Filter>pregob</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\gob\resources.cpp" />
+		<ClCompile Include="..\..\engines\gob\rxyfile.cpp" />
 		<ClCompile Include="..\..\engines\gob\save\saveconverter.cpp">
 			<Filter>save</Filter>
 		</ClCompile>
@@ -144,6 +209,10 @@
 		<ClCompile Include="..\..\engines\gob\save\saveload_v7.cpp">
 			<Filter>save</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\gob\scenery.cpp" />
+		<ClCompile Include="..\..\engines\gob\scenery_v1.cpp" />
+		<ClCompile Include="..\..\engines\gob\scenery_v2.cpp" />
+		<ClCompile Include="..\..\engines\gob\script.cpp" />
 		<ClCompile Include="..\..\engines\gob\sound\adlib.cpp">
 			<Filter>sound</Filter>
 		</ClCompile>
@@ -180,75 +249,6 @@
 		<ClCompile Include="..\..\engines\gob\sound\soundmixer.cpp">
 			<Filter>sound</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\gob\anifile.cpp" />
-		<ClCompile Include="..\..\engines\gob\aniobject.cpp" />
-		<ClCompile Include="..\..\engines\gob\backbuffer.cpp" />
-		<ClCompile Include="..\..\engines\gob\cheater.cpp" />
-		<ClCompile Include="..\..\engines\gob\cheater_geisha.cpp" />
-		<ClCompile Include="..\..\engines\gob\cmpfile.cpp" />
-		<ClCompile Include="..\..\engines\gob\console.cpp" />
-		<ClCompile Include="..\..\engines\gob\databases.cpp" />
-		<ClCompile Include="..\..\engines\gob\dataio.cpp" />
-		<ClCompile Include="..\..\engines\gob\dbase.cpp" />
-		<ClCompile Include="..\..\engines\gob\decfile.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_bargon.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_fascin.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_playtoons.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\draw_v7.cpp" />
-		<ClCompile Include="..\..\engines\gob\expression.cpp" />
-		<ClCompile Include="..\..\engines\gob\game.cpp" />
-		<ClCompile Include="..\..\engines\gob\global.cpp" />
-		<ClCompile Include="..\..\engines\gob\gob.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin_v3.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin_v4.cpp" />
-		<ClCompile Include="..\..\engines\gob\goblin_v7.cpp" />
-		<ClCompile Include="..\..\engines\gob\hotspots.cpp" />
-		<ClCompile Include="..\..\engines\gob\html_parser.cpp" />
-		<ClCompile Include="..\..\engines\gob\iniconfig.cpp" />
-		<ClCompile Include="..\..\engines\gob\init.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_fascin.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_geisha.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v3.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v4.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v6.cpp" />
-		<ClCompile Include="..\..\engines\gob\init_v7.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_adibou1.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_bargon.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_fascin.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_geisha.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_inca2.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_littlered.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_playtoons.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v3.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v4.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v5.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v6.cpp" />
-		<ClCompile Include="..\..\engines\gob\inter_v7.cpp" />
-		<ClCompile Include="..\..\engines\gob\map.cpp" />
-		<ClCompile Include="..\..\engines\gob\map_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\map_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\gob\mult.cpp" />
-		<ClCompile Include="..\..\engines\gob\mult_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\mult_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\palanim.cpp" />
-		<ClCompile Include="..\..\engines\gob\resources.cpp" />
-		<ClCompile Include="..\..\engines\gob\rxyfile.cpp" />
-		<ClCompile Include="..\..\engines\gob\scenery.cpp" />
-		<ClCompile Include="..\..\engines\gob\scenery_v1.cpp" />
-		<ClCompile Include="..\..\engines\gob\scenery_v2.cpp" />
-		<ClCompile Include="..\..\engines\gob\script.cpp" />
 		<ClCompile Include="..\..\engines\gob\surface.cpp" />
 		<ClCompile Include="..\..\engines\gob\totfile.cpp" />
 		<ClCompile Include="..\..\engines\gob\util.cpp" />
@@ -260,6 +260,16 @@
 		<ClCompile Include="..\..\engines\gob\videoplayer.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\gob\anifile.h" />
+		<ClInclude Include="..\..\engines\gob\aniobject.h" />
+		<ClInclude Include="..\..\engines\gob\backbuffer.h" />
+		<ClInclude Include="..\..\engines\gob\cheater.h" />
+		<ClInclude Include="..\..\engines\gob\cmpfile.h" />
+		<ClInclude Include="..\..\engines\gob\console.h" />
+		<ClInclude Include="..\..\engines\gob\databases.h" />
+		<ClInclude Include="..\..\engines\gob\dataio.h" />
+		<ClInclude Include="..\..\engines\gob\dbase.h" />
+		<ClInclude Include="..\..\engines\gob\decfile.h" />
 		<ClInclude Include="..\..\engines\gob\demos\batplayer.h">
 			<Filter>demos</Filter>
 		</ClInclude>
@@ -269,9 +279,22 @@
 		<ClInclude Include="..\..\engines\gob\demos\scnplayer.h">
 			<Filter>demos</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\gob\draw.h" />
+		<ClInclude Include="..\..\engines\gob\expression.h" />
+		<ClInclude Include="..\..\engines\gob\game.h" />
+		<ClInclude Include="..\..\engines\gob\gameidtotype.h" />
+		<ClInclude Include="..\..\engines\gob\global.h" />
+		<ClInclude Include="..\..\engines\gob\gob.h" />
+		<ClInclude Include="..\..\engines\gob\goblin.h" />
+		<ClInclude Include="..\..\engines\gob\hotspots.h" />
+		<ClInclude Include="..\..\engines\gob\html_parser.h" />
 		<ClInclude Include="..\..\engines\gob\image\brc.h">
 			<Filter>image</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\gob\iniconfig.h" />
+		<ClInclude Include="..\..\engines\gob\init.h" />
+		<ClInclude Include="..\..\engines\gob\inter.h" />
+		<ClInclude Include="..\..\engines\gob\map.h" />
 		<ClInclude Include="..\..\engines\gob\minigames\geisha\diving.h">
 			<Filter>minigames\geisha</Filter>
 		</ClInclude>
@@ -293,6 +316,12 @@
 		<ClInclude Include="..\..\engines\gob\minigames\geisha\submarine.h">
 			<Filter>minigames\geisha</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\gob\mult.h" />
+		<ClInclude Include="..\..\engines\gob\obsolete.h" />
+		<ClInclude Include="..\..\engines\gob\palanim.h" />
+		<ClInclude Include="..\..\engines\gob\pregob\gctfile.h">
+			<Filter>pregob</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\gob\pregob\onceupon\abracadabra.h">
 			<Filter>pregob\onceupon</Filter>
 		</ClInclude>
@@ -320,9 +349,6 @@
 		<ClInclude Include="..\..\engines\gob\pregob\onceupon\title.h">
 			<Filter>pregob\onceupon</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\gob\pregob\gctfile.h">
-			<Filter>pregob</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\gob\pregob\pregob.h">
 			<Filter>pregob</Filter>
 		</ClInclude>
@@ -332,6 +358,8 @@
 		<ClInclude Include="..\..\engines\gob\pregob\txtfile.h">
 			<Filter>pregob</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\gob\resources.h" />
+		<ClInclude Include="..\..\engines\gob\rxyfile.h" />
 		<ClInclude Include="..\..\engines\gob\save\saveconverter.h">
 			<Filter>save</Filter>
 		</ClInclude>
@@ -344,6 +372,8 @@
 		<ClInclude Include="..\..\engines\gob\save\saveload.h">
 			<Filter>save</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\gob\scenery.h" />
+		<ClInclude Include="..\..\engines\gob\script.h" />
 		<ClInclude Include="..\..\engines\gob\sound\adlib.h">
 			<Filter>sound</Filter>
 		</ClInclude>
@@ -380,36 +410,6 @@
 		<ClInclude Include="..\..\engines\gob\sound\soundmixer.h">
 			<Filter>sound</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\gob\anifile.h" />
-		<ClInclude Include="..\..\engines\gob\aniobject.h" />
-		<ClInclude Include="..\..\engines\gob\backbuffer.h" />
-		<ClInclude Include="..\..\engines\gob\cheater.h" />
-		<ClInclude Include="..\..\engines\gob\cmpfile.h" />
-		<ClInclude Include="..\..\engines\gob\console.h" />
-		<ClInclude Include="..\..\engines\gob\databases.h" />
-		<ClInclude Include="..\..\engines\gob\dataio.h" />
-		<ClInclude Include="..\..\engines\gob\dbase.h" />
-		<ClInclude Include="..\..\engines\gob\decfile.h" />
-		<ClInclude Include="..\..\engines\gob\draw.h" />
-		<ClInclude Include="..\..\engines\gob\expression.h" />
-		<ClInclude Include="..\..\engines\gob\game.h" />
-		<ClInclude Include="..\..\engines\gob\gameidtotype.h" />
-		<ClInclude Include="..\..\engines\gob\global.h" />
-		<ClInclude Include="..\..\engines\gob\gob.h" />
-		<ClInclude Include="..\..\engines\gob\goblin.h" />
-		<ClInclude Include="..\..\engines\gob\hotspots.h" />
-		<ClInclude Include="..\..\engines\gob\html_parser.h" />
-		<ClInclude Include="..\..\engines\gob\iniconfig.h" />
-		<ClInclude Include="..\..\engines\gob\init.h" />
-		<ClInclude Include="..\..\engines\gob\inter.h" />
-		<ClInclude Include="..\..\engines\gob\map.h" />
-		<ClInclude Include="..\..\engines\gob\mult.h" />
-		<ClInclude Include="..\..\engines\gob\obsolete.h" />
-		<ClInclude Include="..\..\engines\gob\palanim.h" />
-		<ClInclude Include="..\..\engines\gob\resources.h" />
-		<ClInclude Include="..\..\engines\gob\rxyfile.h" />
-		<ClInclude Include="..\..\engines\gob\scenery.h" />
-		<ClInclude Include="..\..\engines\gob\script.h" />
 		<ClInclude Include="..\..\engines\gob\surface.h" />
 		<ClInclude Include="..\..\engines\gob\totfile.h" />
 		<ClInclude Include="..\..\engines\gob\util.h" />
diff --git a/dists/msvc/got.vcxproj b/dists/msvc/got.vcxproj
index 28fc6b40078..60dad41c08f 100644
--- a/dists/msvc/got.vcxproj
+++ b/dists/msvc/got.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{8A569FED-D06D-4727-BAB5-8E5A61C552C6}</ProjectGuid>
+		<ProjectGuid>{047CA3F1-CD28-3967-8992-B5659626AB30}</ProjectGuid>
 		<RootNamespace>got</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/got.vcxproj.filters b/dists/msvc/got.vcxproj.filters
index bb5e8fa3c6b..dc87e91281c 100644
--- a/dists/msvc/got.vcxproj.filters
+++ b/dists/msvc/got.vcxproj.filters
@@ -1,26 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="data">
-			<UniqueIdentifier>AD067D99-7428-4A12-B51B-D42F29141E71</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA686-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="game">
-			<UniqueIdentifier>22C4CD0E-A23E-46C3-AEDD-898996265FAF</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA687-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="gfx">
-			<UniqueIdentifier>500B2CA6-F7E3-432D-AB38-2A41645277CB</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA688-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="utils">
-			<UniqueIdentifier>70F85E08-946E-42AD-8A38-DD7EC696E171</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA689-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="views">
-			<UniqueIdentifier>4E8E4A2F-4A17-4AD6-AFC7-9EC1BD54562A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="views\dialogs">
-			<UniqueIdentifier>24845B19-99A8-495C-A9D7-FEB750D76696</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\got\console.cpp" />
 		<ClCompile Include="..\..\engines\got\data\actor.cpp">
 			<Filter>data</Filter>
 		</ClCompile>
@@ -39,6 +40,7 @@
 		<ClCompile Include="..\..\engines\got\data\thorinfo.cpp">
 			<Filter>data</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\got\events.cpp" />
 		<ClCompile Include="..\..\engines\got\game\back.cpp">
 			<Filter>game</Filter>
 		</ClCompile>
@@ -99,6 +101,13 @@
 		<ClCompile Include="..\..\engines\got\gfx\palette.cpp">
 			<Filter>gfx</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\got\got.cpp" />
+		<ClCompile Include="..\..\engines\got\messages.cpp" />
+		<ClCompile Include="..\..\engines\got\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\got\musicdriver.cpp" />
+		<ClCompile Include="..\..\engines\got\musicdriver_adlib.cpp" />
+		<ClCompile Include="..\..\engines\got\musicparser.cpp" />
+		<ClCompile Include="..\..\engines\got\sound.cpp" />
 		<ClCompile Include="..\..\engines\got\utils\compression.cpp">
 			<Filter>utils</Filter>
 		</ClCompile>
@@ -108,6 +117,7 @@
 		<ClCompile Include="..\..\engines\got\utils\res_archive.cpp">
 			<Filter>utils</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\got\vars.cpp" />
 		<ClCompile Include="..\..\engines\got\views\credits.cpp">
 			<Filter>views</Filter>
 		</ClCompile>
@@ -189,18 +199,9 @@
 		<ClCompile Include="..\..\engines\got\views\view.cpp">
 			<Filter>views</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\got\console.cpp" />
-		<ClCompile Include="..\..\engines\got\events.cpp" />
-		<ClCompile Include="..\..\engines\got\got.cpp" />
-		<ClCompile Include="..\..\engines\got\messages.cpp" />
-		<ClCompile Include="..\..\engines\got\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\got\musicdriver.cpp" />
-		<ClCompile Include="..\..\engines\got\musicdriver_adlib.cpp" />
-		<ClCompile Include="..\..\engines\got\musicparser.cpp" />
-		<ClCompile Include="..\..\engines\got\sound.cpp" />
-		<ClCompile Include="..\..\engines\got\vars.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\got\console.h" />
 		<ClInclude Include="..\..\engines\got\data\actor.h">
 			<Filter>data</Filter>
 		</ClInclude>
@@ -225,6 +226,9 @@
 		<ClInclude Include="..\..\engines\got\data\thorinfo.h">
 			<Filter>data</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\got\detection.h" />
+		<ClInclude Include="..\..\engines\got\detection_tables.h" />
+		<ClInclude Include="..\..\engines\got\events.h" />
 		<ClInclude Include="..\..\engines\got\game\back.h">
 			<Filter>game</Filter>
 		</ClInclude>
@@ -285,6 +289,13 @@
 		<ClInclude Include="..\..\engines\got\gfx\palette.h">
 			<Filter>gfx</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\got\got.h" />
+		<ClInclude Include="..\..\engines\got\messages.h" />
+		<ClInclude Include="..\..\engines\got\metaengine.h" />
+		<ClInclude Include="..\..\engines\got\musicdriver.h" />
+		<ClInclude Include="..\..\engines\got\musicdriver_adlib.h" />
+		<ClInclude Include="..\..\engines\got\musicparser.h" />
+		<ClInclude Include="..\..\engines\got\sound.h" />
 		<ClInclude Include="..\..\engines\got\utils\compression.h">
 			<Filter>utils</Filter>
 		</ClInclude>
@@ -294,6 +305,7 @@
 		<ClInclude Include="..\..\engines\got\utils\res_archive.h">
 			<Filter>utils</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\got\vars.h" />
 		<ClInclude Include="..\..\engines\got\views\credits.h">
 			<Filter>views</Filter>
 		</ClInclude>
@@ -378,18 +390,6 @@
 		<ClInclude Include="..\..\engines\got\views\views.h">
 			<Filter>views</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\got\console.h" />
-		<ClInclude Include="..\..\engines\got\detection.h" />
-		<ClInclude Include="..\..\engines\got\detection_tables.h" />
-		<ClInclude Include="..\..\engines\got\events.h" />
-		<ClInclude Include="..\..\engines\got\got.h" />
-		<ClInclude Include="..\..\engines\got\messages.h" />
-		<ClInclude Include="..\..\engines\got\metaengine.h" />
-		<ClInclude Include="..\..\engines\got\musicdriver.h" />
-		<ClInclude Include="..\..\engines\got\musicdriver_adlib.h" />
-		<ClInclude Include="..\..\engines\got\musicparser.h" />
-		<ClInclude Include="..\..\engines\got\sound.h" />
-		<ClInclude Include="..\..\engines\got\vars.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\got\module.mk" />
diff --git a/dists/msvc/griffon.vcxproj b/dists/msvc/griffon.vcxproj
index 76bbc6e17b3..e94dd17cd53 100644
--- a/dists/msvc/griffon.vcxproj
+++ b/dists/msvc/griffon.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{2D380BCB-EFE6-4B4D-87BA-9773E238802D}</ProjectGuid>
+		<ProjectGuid>{A65EE75D-37E4-3C30-844A-78422F550B84}</ProjectGuid>
 		<RootNamespace>griffon</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/grim.vcxproj b/dists/msvc/grim.vcxproj
index 70703734b4b..1815ab6dfc3 100644
--- a/dists/msvc/grim.vcxproj
+++ b/dists/msvc/grim.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{E7B47383-76A6-468E-84DA-50998473C9D8}</ProjectGuid>
+		<ProjectGuid>{E5CAA1D4-641D-3550-9AA4-717CF5B88D43}</ProjectGuid>
 		<RootNamespace>grim</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/grim.vcxproj.filters b/dists/msvc/grim.vcxproj.filters
index 7e174513be5..f2b73106365 100644
--- a/dists/msvc/grim.vcxproj.filters
+++ b/dists/msvc/grim.vcxproj.filters
@@ -1,41 +1,47 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="costume">
-			<UniqueIdentifier>9F211F24-28EA-43ED-828D-197FF46B2C0D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="emi">
-			<UniqueIdentifier>3F4A3FE9-FEBA-422D-A767-E203229E884A</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="emi\costume">
-			<UniqueIdentifier>EAA6B220-577C-4A9E-9CDA-3A4081F49AC1</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="emi\sound">
-			<UniqueIdentifier>C2179FDD-8A19-4355-993F-3F7025E0DF8B</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA68F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="emi\sound\codecs">
-			<UniqueIdentifier>AAE2CB42-6D1E-46B6-B1D7-2D81C9EBB2C4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA690-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="imuse">
-			<UniqueIdentifier>227518F3-3E1B-4C44-A6E0-B69D38FB6605</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA691-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="lua">
-			<UniqueIdentifier>77698442-F69B-4705-9317-A91C3C5DDBDF</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA692-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="movie">
-			<UniqueIdentifier>E9B0658C-BA79-4ABE-ABBC-06A16CF50CC4</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA693-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="movie\codecs">
-			<UniqueIdentifier>122523A1-0140-4CC6-963C-64231CE3BA55</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA694-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="remastered">
-			<UniqueIdentifier>3B411F96-2934-4881-B6AA-3AEB5BC74E10</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA695-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="update">
-			<UniqueIdentifier>217E329F-2687-492A-ADAE-46386C1F04B6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA696-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\grim\actor.cpp" />
+		<ClCompile Include="..\..\engines\grim\animation.cpp" />
+		<ClCompile Include="..\..\engines\grim\bitmap.cpp" />
+		<ClCompile Include="..\..\engines\grim\color.cpp" />
+		<ClCompile Include="..\..\engines\grim\colormap.cpp" />
+		<ClCompile Include="..\..\engines\grim\costume.cpp" />
 		<ClCompile Include="..\..\engines\grim\costume\anim_component.cpp">
 			<Filter>costume</Filter>
 		</ClCompile>
@@ -78,6 +84,11 @@
 		<ClCompile Include="..\..\engines\grim\costume\sprite_component.cpp">
 			<Filter>costume</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\debug.cpp" />
+		<ClCompile Include="..\..\engines\grim\debugger.cpp" />
+		<ClCompile Include="..\..\engines\grim\emi\animationemi.cpp">
+			<Filter>emi</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\grim\emi\costume\emianim_component.cpp">
 			<Filter>emi\costume</Filter>
 		</ClCompile>
@@ -105,30 +116,6 @@
 		<ClCompile Include="..\..\engines\grim\emi\costume\emitexi_component.cpp">
 			<Filter>emi\costume</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\codecs\scx.cpp">
-			<Filter>emi\sound\codecs</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\aifftrack.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\emisound.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\mp3track.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\scxtrack.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\track.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\sound\vimatrack.cpp">
-			<Filter>emi\sound</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\emi\animationemi.cpp">
-			<Filter>emi</Filter>
-		</ClCompile>
 		<ClCompile Include="..\..\engines\grim\emi\costumeemi.cpp">
 			<Filter>emi</Filter>
 		</ClCompile>
@@ -159,6 +146,34 @@
 		<ClCompile Include="..\..\engines\grim\emi\skeleton.cpp">
 			<Filter>emi</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\aifftrack.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\codecs\scx.cpp">
+			<Filter>emi\sound\codecs</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\emisound.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\mp3track.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\scxtrack.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\track.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\emi\sound\vimatrack.cpp">
+			<Filter>emi\sound</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\font.cpp" />
+		<ClCompile Include="..\..\engines\grim\gfx_base.cpp" />
+		<ClCompile Include="..\..\engines\grim\gfx_opengl.cpp" />
+		<ClCompile Include="..\..\engines\grim\gfx_opengl_shaders.cpp" />
+		<ClCompile Include="..\..\engines\grim\gfx_tinygl.cpp" />
+		<ClCompile Include="..\..\engines\grim\grim.cpp" />
+		<ClCompile Include="..\..\engines\grim\grim_controls.cpp" />
 		<ClCompile Include="..\..\engines\grim\imuse\imuse.cpp">
 			<Filter>imuse</Filter>
 		</ClCompile>
@@ -180,6 +195,13 @@
 		<ClCompile Include="..\..\engines\grim\imuse\imuse_track.cpp">
 			<Filter>imuse</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\inputdialog.cpp" />
+		<ClCompile Include="..\..\engines\grim\iris.cpp" />
+		<ClCompile Include="..\..\engines\grim\keyframe.cpp" />
+		<ClCompile Include="..\..\engines\grim\lab.cpp" />
+		<ClCompile Include="..\..\engines\grim\lipsync.cpp" />
+		<ClCompile Include="..\..\engines\grim\localize.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua.cpp" />
 		<ClCompile Include="..\..\engines\grim\lua\lapi.cpp">
 			<Filter>lua</Filter>
 		</ClCompile>
@@ -252,6 +274,18 @@
 		<ClCompile Include="..\..\engines\grim\lua\lzio.cpp">
 			<Filter>lua</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\lua_grim_patch.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1_actor.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1_graphics.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1_set.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1_sound.cpp" />
+		<ClCompile Include="..\..\engines\grim\lua_v1_text.cpp" />
+		<ClCompile Include="..\..\engines\grim\material.cpp" />
+		<ClCompile Include="..\..\engines\grim\md5check.cpp" />
+		<ClCompile Include="..\..\engines\grim\md5checkdialog.cpp" />
+		<ClCompile Include="..\..\engines\grim\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\grim\model.cpp" />
 		<ClCompile Include="..\..\engines\grim\movie\bink.cpp">
 			<Filter>movie</Filter>
 		</ClCompile>
@@ -282,6 +316,11 @@
 		<ClCompile Include="..\..\engines\grim\movie\smush.cpp">
 			<Filter>movie</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\object.cpp" />
+		<ClCompile Include="..\..\engines\grim\objectstate.cpp" />
+		<ClCompile Include="..\..\engines\grim\patchr.cpp" />
+		<ClCompile Include="..\..\engines\grim\primitives.cpp" />
+		<ClCompile Include="..\..\engines\grim\registry.cpp" />
 		<ClCompile Include="..\..\engines\grim\remastered\commentary.cpp">
 			<Filter>remastered</Filter>
 		</ClCompile>
@@ -294,6 +333,14 @@
 		<ClCompile Include="..\..\engines\grim\remastered\overlay.cpp">
 			<Filter>remastered</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\grim\resource.cpp" />
+		<ClCompile Include="..\..\engines\grim\savegame.cpp" />
+		<ClCompile Include="..\..\engines\grim\sector.cpp" />
+		<ClCompile Include="..\..\engines\grim\set.cpp" />
+		<ClCompile Include="..\..\engines\grim\sound.cpp" />
+		<ClCompile Include="..\..\engines\grim\sprite.cpp" />
+		<ClCompile Include="..\..\engines\grim\textobject.cpp" />
+		<ClCompile Include="..\..\engines\grim\textsplit.cpp" />
 		<ClCompile Include="..\..\engines\grim\update\lang_filter.cpp">
 			<Filter>update</Filter>
 		</ClCompile>
@@ -306,55 +353,14 @@
 		<ClCompile Include="..\..\engines\grim\update\update.cpp">
 			<Filter>update</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\grim\actor.cpp" />
-		<ClCompile Include="..\..\engines\grim\animation.cpp" />
-		<ClCompile Include="..\..\engines\grim\bitmap.cpp" />
-		<ClCompile Include="..\..\engines\grim\color.cpp" />
-		<ClCompile Include="..\..\engines\grim\colormap.cpp" />
-		<ClCompile Include="..\..\engines\grim\costume.cpp" />
-		<ClCompile Include="..\..\engines\grim\debug.cpp" />
-		<ClCompile Include="..\..\engines\grim\debugger.cpp" />
-		<ClCompile Include="..\..\engines\grim\font.cpp" />
-		<ClCompile Include="..\..\engines\grim\gfx_base.cpp" />
-		<ClCompile Include="..\..\engines\grim\gfx_opengl.cpp" />
-		<ClCompile Include="..\..\engines\grim\gfx_opengl_shaders.cpp" />
-		<ClCompile Include="..\..\engines\grim\gfx_tinygl.cpp" />
-		<ClCompile Include="..\..\engines\grim\grim.cpp" />
-		<ClCompile Include="..\..\engines\grim\grim_controls.cpp" />
-		<ClCompile Include="..\..\engines\grim\inputdialog.cpp" />
-		<ClCompile Include="..\..\engines\grim\iris.cpp" />
-		<ClCompile Include="..\..\engines\grim\keyframe.cpp" />
-		<ClCompile Include="..\..\engines\grim\lab.cpp" />
-		<ClCompile Include="..\..\engines\grim\lipsync.cpp" />
-		<ClCompile Include="..\..\engines\grim\localize.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_grim_patch.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1_actor.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1_graphics.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1_set.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1_sound.cpp" />
-		<ClCompile Include="..\..\engines\grim\lua_v1_text.cpp" />
-		<ClCompile Include="..\..\engines\grim\material.cpp" />
-		<ClCompile Include="..\..\engines\grim\md5check.cpp" />
-		<ClCompile Include="..\..\engines\grim\md5checkdialog.cpp" />
-		<ClCompile Include="..\..\engines\grim\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\grim\model.cpp" />
-		<ClCompile Include="..\..\engines\grim\object.cpp" />
-		<ClCompile Include="..\..\engines\grim\objectstate.cpp" />
-		<ClCompile Include="..\..\engines\grim\patchr.cpp" />
-		<ClCompile Include="..\..\engines\grim\primitives.cpp" />
-		<ClCompile Include="..\..\engines\grim\registry.cpp" />
-		<ClCompile Include="..\..\engines\grim\resource.cpp" />
-		<ClCompile Include="..\..\engines\grim\savegame.cpp" />
-		<ClCompile Include="..\..\engines\grim\sector.cpp" />
-		<ClCompile Include="..\..\engines\grim\set.cpp" />
-		<ClCompile Include="..\..\engines\grim\sound.cpp" />
-		<ClCompile Include="..\..\engines\grim\sprite.cpp" />
-		<ClCompile Include="..\..\engines\grim\textobject.cpp" />
-		<ClCompile Include="..\..\engines\grim\textsplit.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\grim\actor.h" />
+		<ClInclude Include="..\..\engines\grim\animation.h" />
+		<ClInclude Include="..\..\engines\grim\bitmap.h" />
+		<ClInclude Include="..\..\engines\grim\color.h" />
+		<ClInclude Include="..\..\engines\grim\colormap.h" />
+		<ClInclude Include="..\..\engines\grim\costume.h" />
 		<ClInclude Include="..\..\engines\grim\costume\anim_component.h">
 			<Filter>costume</Filter>
 		</ClInclude>
@@ -397,6 +403,13 @@
 		<ClInclude Include="..\..\engines\grim\costume\sprite_component.h">
 			<Filter>costume</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\debug.h" />
+		<ClInclude Include="..\..\engines\grim\debugger.h" />
+		<ClInclude Include="..\..\engines\grim\detection.h" />
+		<ClInclude Include="..\..\engines\grim\detection_tables.h" />
+		<ClInclude Include="..\..\engines\grim\emi\animationemi.h">
+			<Filter>emi</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\grim\emi\costume\emianim_component.h">
 			<Filter>emi\costume</Filter>
 		</ClInclude>
@@ -424,30 +437,6 @@
 		<ClInclude Include="..\..\engines\grim\emi\costume\emitexi_component.h">
 			<Filter>emi\costume</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\codecs\scx.h">
-			<Filter>emi\sound\codecs</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\aifftrack.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\emisound.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\mp3track.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\scxtrack.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\track.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\sound\vimatrack.h">
-			<Filter>emi\sound</Filter>
-		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\emi\animationemi.h">
-			<Filter>emi</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\grim\emi\costumeemi.h">
 			<Filter>emi</Filter>
 		</ClInclude>
@@ -472,6 +461,33 @@
 		<ClInclude Include="..\..\engines\grim\emi\skeleton.h">
 			<Filter>emi</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\aifftrack.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\codecs\scx.h">
+			<Filter>emi\sound\codecs</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\emisound.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\mp3track.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\scxtrack.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\track.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\emi\sound\vimatrack.h">
+			<Filter>emi\sound</Filter>
+		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\font.h" />
+		<ClInclude Include="..\..\engines\grim\gfx_base.h" />
+		<ClInclude Include="..\..\engines\grim\gfx_opengl.h" />
+		<ClInclude Include="..\..\engines\grim\gfx_opengl_shaders.h" />
+		<ClInclude Include="..\..\engines\grim\gfx_tinygl.h" />
+		<ClInclude Include="..\..\engines\grim\grim.h" />
 		<ClInclude Include="..\..\engines\grim\imuse\imuse.h">
 			<Filter>imuse</Filter>
 		</ClInclude>
@@ -487,6 +503,13 @@
 		<ClInclude Include="..\..\engines\grim\imuse\imuse_track.h">
 			<Filter>imuse</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\inputdialog.h" />
+		<ClInclude Include="..\..\engines\grim\iris.h" />
+		<ClInclude Include="..\..\engines\grim\keyframe.h" />
+		<ClInclude Include="..\..\engines\grim\lab.h" />
+		<ClInclude Include="..\..\engines\grim\lipsync.h" />
+		<ClInclude Include="..\..\engines\grim\localize.h" />
+		<ClInclude Include="..\..\engines\grim\lua.h" />
 		<ClInclude Include="..\..\engines\grim\lua\lapi.h">
 			<Filter>lua</Filter>
 		</ClInclude>
@@ -556,6 +579,11 @@
 		<ClInclude Include="..\..\engines\grim\lua\lzio.h">
 			<Filter>lua</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\lua_v1.h" />
+		<ClInclude Include="..\..\engines\grim\material.h" />
+		<ClInclude Include="..\..\engines\grim\md5check.h" />
+		<ClInclude Include="..\..\engines\grim\md5checkdialog.h" />
+		<ClInclude Include="..\..\engines\grim\model.h" />
 		<ClInclude Include="..\..\engines\grim\movie\bink.h">
 			<Filter>movie</Filter>
 		</ClInclude>
@@ -586,6 +614,12 @@
 		<ClInclude Include="..\..\engines\grim\movie\smush.h">
 			<Filter>movie</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\object.h" />
+		<ClInclude Include="..\..\engines\grim\objectstate.h" />
+		<ClInclude Include="..\..\engines\grim\patchr.h" />
+		<ClInclude Include="..\..\engines\grim\pool.h" />
+		<ClInclude Include="..\..\engines\grim\primitives.h" />
+		<ClInclude Include="..\..\engines\grim\registry.h" />
 		<ClInclude Include="..\..\engines\grim\remastered\commentary.h">
 			<Filter>remastered</Filter>
 		</ClInclude>
@@ -598,6 +632,14 @@
 		<ClInclude Include="..\..\engines\grim\remastered\overlay.h">
 			<Filter>remastered</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\grim\resource.h" />
+		<ClInclude Include="..\..\engines\grim\savegame.h" />
+		<ClInclude Include="..\..\engines\grim\sector.h" />
+		<ClInclude Include="..\..\engines\grim\set.h" />
+		<ClInclude Include="..\..\engines\grim\sound.h" />
+		<ClInclude Include="..\..\engines\grim\sprite.h" />
+		<ClInclude Include="..\..\engines\grim\textobject.h" />
+		<ClInclude Include="..\..\engines\grim\textsplit.h" />
 		<ClInclude Include="..\..\engines\grim\update\lang_filter.h">
 			<Filter>update</Filter>
 		</ClInclude>
@@ -610,48 +652,6 @@
 		<ClInclude Include="..\..\engines\grim\update\update.h">
 			<Filter>update</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\grim\actor.h" />
-		<ClInclude Include="..\..\engines\grim\animation.h" />
-		<ClInclude Include="..\..\engines\grim\bitmap.h" />
-		<ClInclude Include="..\..\engines\grim\color.h" />
-		<ClInclude Include="..\..\engines\grim\colormap.h" />
-		<ClInclude Include="..\..\engines\grim\costume.h" />
-		<ClInclude Include="..\..\engines\grim\debug.h" />
-		<ClInclude Include="..\..\engines\grim\debugger.h" />
-		<ClInclude Include="..\..\engines\grim\detection.h" />
-		<ClInclude Include="..\..\engines\grim\detection_tables.h" />
-		<ClInclude Include="..\..\engines\grim\font.h" />
-		<ClInclude Include="..\..\engines\grim\gfx_base.h" />
-		<ClInclude Include="..\..\engines\grim\gfx_opengl.h" />
-		<ClInclude Include="..\..\engines\grim\gfx_opengl_shaders.h" />
-		<ClInclude Include="..\..\engines\grim\gfx_tinygl.h" />
-		<ClInclude Include="..\..\engines\grim\grim.h" />
-		<ClInclude Include="..\..\engines\grim\inputdialog.h" />
-		<ClInclude Include="..\..\engines\grim\iris.h" />
-		<ClInclude Include="..\..\engines\grim\keyframe.h" />
-		<ClInclude Include="..\..\engines\grim\lab.h" />
-		<ClInclude Include="..\..\engines\grim\lipsync.h" />
-		<ClInclude Include="..\..\engines\grim\localize.h" />
-		<ClInclude Include="..\..\engines\grim\lua.h" />
-		<ClInclude Include="..\..\engines\grim\lua_v1.h" />
-		<ClInclude Include="..\..\engines\grim\material.h" />
-		<ClInclude Include="..\..\engines\grim\md5check.h" />
-		<ClInclude Include="..\..\engines\grim\md5checkdialog.h" />
-		<ClInclude Include="..\..\engines\grim\model.h" />
-		<ClInclude Include="..\..\engines\grim\object.h" />
-		<ClInclude Include="..\..\engines\grim\objectstate.h" />
-		<ClInclude Include="..\..\engines\grim\patchr.h" />
-		<ClInclude Include="..\..\engines\grim\pool.h" />
-		<ClInclude Include="..\..\engines\grim\primitives.h" />
-		<ClInclude Include="..\..\engines\grim\registry.h" />
-		<ClInclude Include="..\..\engines\grim\resource.h" />
-		<ClInclude Include="..\..\engines\grim\savegame.h" />
-		<ClInclude Include="..\..\engines\grim\sector.h" />
-		<ClInclude Include="..\..\engines\grim\set.h" />
-		<ClInclude Include="..\..\engines\grim\sound.h" />
-		<ClInclude Include="..\..\engines\grim\sprite.h" />
-		<ClInclude Include="..\..\engines\grim\textobject.h" />
-		<ClInclude Include="..\..\engines\grim\textsplit.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\grim\module.mk" />
diff --git a/dists/msvc/groovie.vcxproj b/dists/msvc/groovie.vcxproj
index 11937d08c23..bebac4bcdec 100644
--- a/dists/msvc/groovie.vcxproj
+++ b/dists/msvc/groovie.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{849099E9-7D8D-4C12-8834-F5C36677536B}</ProjectGuid>
+		<ProjectGuid>{19797E71-3837-31DA-8D07-851E51DF4FE8}</ProjectGuid>
 		<RootNamespace>groovie</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/groovie.vcxproj.filters b/dists/msvc/groovie.vcxproj.filters
index 3aaef655cb6..cfb03cf02dc 100644
--- a/dists/msvc/groovie.vcxproj.filters
+++ b/dists/msvc/groovie.vcxproj.filters
@@ -1,14 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="logic">
-			<UniqueIdentifier>7386176D-A121-4D4B-9859-D59FE553E927</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA697-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="video">
-			<UniqueIdentifier>88ADB853-9D6C-4006-859B-0076A1A3EE96</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA698-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\groovie\cursor.cpp" />
+		<ClCompile Include="..\..\engines\groovie\debug.cpp" />
+		<ClCompile Include="..\..\engines\groovie\font.cpp" />
+		<ClCompile Include="..\..\engines\groovie\graphics.cpp" />
+		<ClCompile Include="..\..\engines\groovie\groovie.cpp" />
 		<ClCompile Include="..\..\engines\groovie\logic\beehive.cpp">
 			<Filter>logic</Filter>
 		</ClCompile>
@@ -39,6 +44,12 @@
 		<ClCompile Include="..\..\engines\groovie\logic\winerack.cpp">
 			<Filter>logic</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\groovie\lzss.cpp" />
+		<ClCompile Include="..\..\engines\groovie\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\groovie\music.cpp" />
+		<ClCompile Include="..\..\engines\groovie\resource.cpp" />
+		<ClCompile Include="..\..\engines\groovie\saveload.cpp" />
+		<ClCompile Include="..\..\engines\groovie\script.cpp" />
 		<ClCompile Include="..\..\engines\groovie\video\player.cpp">
 			<Filter>video</Filter>
 		</ClCompile>
@@ -48,19 +59,14 @@
 		<ClCompile Include="..\..\engines\groovie\video\vdx.cpp">
 			<Filter>video</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\groovie\cursor.cpp" />
-		<ClCompile Include="..\..\engines\groovie\debug.cpp" />
-		<ClCompile Include="..\..\engines\groovie\font.cpp" />
-		<ClCompile Include="..\..\engines\groovie\graphics.cpp" />
-		<ClCompile Include="..\..\engines\groovie\groovie.cpp" />
-		<ClCompile Include="..\..\engines\groovie\lzss.cpp" />
-		<ClCompile Include="..\..\engines\groovie\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\groovie\music.cpp" />
-		<ClCompile Include="..\..\engines\groovie\resource.cpp" />
-		<ClCompile Include="..\..\engines\groovie\saveload.cpp" />
-		<ClCompile Include="..\..\engines\groovie\script.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\groovie\cursor.h" />
+		<ClInclude Include="..\..\engines\groovie\debug.h" />
+		<ClInclude Include="..\..\engines\groovie\detection.h" />
+		<ClInclude Include="..\..\engines\groovie\font.h" />
+		<ClInclude Include="..\..\engines\groovie\graphics.h" />
+		<ClInclude Include="..\..\engines\groovie\groovie.h" />
 		<ClInclude Include="..\..\engines\groovie\logic\beehive.h">
 			<Filter>logic</Filter>
 		</ClInclude>
@@ -91,6 +97,11 @@
 		<ClInclude Include="..\..\engines\groovie\logic\winerack.h">
 			<Filter>logic</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\groovie\lzss.h" />
+		<ClInclude Include="..\..\engines\groovie\music.h" />
+		<ClInclude Include="..\..\engines\groovie\resource.h" />
+		<ClInclude Include="..\..\engines\groovie\saveload.h" />
+		<ClInclude Include="..\..\engines\groovie\script.h" />
 		<ClInclude Include="..\..\engines\groovie\video\player.h">
 			<Filter>video</Filter>
 		</ClInclude>
@@ -100,17 +111,6 @@
 		<ClInclude Include="..\..\engines\groovie\video\vdx.h">
 			<Filter>video</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\groovie\cursor.h" />
-		<ClInclude Include="..\..\engines\groovie\debug.h" />
-		<ClInclude Include="..\..\engines\groovie\detection.h" />
-		<ClInclude Include="..\..\engines\groovie\font.h" />
-		<ClInclude Include="..\..\engines\groovie\graphics.h" />
-		<ClInclude Include="..\..\engines\groovie\groovie.h" />
-		<ClInclude Include="..\..\engines\groovie\lzss.h" />
-		<ClInclude Include="..\..\engines\groovie\music.h" />
-		<ClInclude Include="..\..\engines\groovie\resource.h" />
-		<ClInclude Include="..\..\engines\groovie\saveload.h" />
-		<ClInclude Include="..\..\engines\groovie\script.h" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\..\engines\groovie\module.mk" />
diff --git a/dists/msvc/hadesch.vcxproj b/dists/msvc/hadesch.vcxproj
index 49795f1fd07..a1544db93f3 100644
--- a/dists/msvc/hadesch.vcxproj
+++ b/dists/msvc/hadesch.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{F2FE6D6D-E6EC-44EA-99A1-980596745CAD}</ProjectGuid>
+		<ProjectGuid>{4A034F80-1BFE-3AE1-B75A-C7ED619E6825}</ProjectGuid>
 		<RootNamespace>hadesch</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/hadesch.vcxproj.filters b/dists/msvc/hadesch.vcxproj.filters
index bf7a80e0752..14c5d2d203c 100644
--- a/dists/msvc/hadesch.vcxproj.filters
+++ b/dists/msvc/hadesch.vcxproj.filters
@@ -1,26 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="rooms">
-			<UniqueIdentifier>FA13E77D-A1AF-4DFA-B5B2-21D6E64B6C44</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA699-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="rooms\monster">
-			<UniqueIdentifier>1D05BBD9-DD63-4048-A8AB-65FEEBC501E6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69A-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
-		<ClCompile Include="..\..\engines\hadesch\rooms\monster\cyclops.cpp">
-			<Filter>rooms\monster</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\hadesch\rooms\monster\illusion.cpp">
-			<Filter>rooms\monster</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\hadesch\rooms\monster\projectile.cpp">
-			<Filter>rooms\monster</Filter>
-		</ClCompile>
-		<ClCompile Include="..\..\engines\hadesch\rooms\monster\typhoon.cpp">
-			<Filter>rooms\monster</Filter>
-		</ClCompile>
+		<ClCompile Include="..\..\engines\hadesch\ambient.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\baptr.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\gfx_context.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\hadesch.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\herobelt.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\hotzone.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\persistent.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\pod_file.cpp" />
+		<ClCompile Include="..\..\engines\hadesch\pod_image.cpp" />
 		<ClCompile Include="..\..\engines\hadesch\rooms\argo.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
@@ -63,6 +61,18 @@
 		<ClCompile Include="..\..\engines\hadesch\rooms\monster.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\hadesch\rooms\monster\cyclops.cpp">
+			<Filter>rooms\monster</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\hadesch\rooms\monster\illusion.cpp">
+			<Filter>rooms\monster</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\hadesch\rooms\monster\projectile.cpp">
+			<Filter>rooms\monster</Filter>
+		</ClCompile>
+		<ClCompile Include="..\..\engines\hadesch\rooms\monster\typhoon.cpp">
+			<Filter>rooms\monster</Filter>
+		</ClCompile>
 		<ClCompile Include="..\..\engines\hadesch\rooms\olympus.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
@@ -93,24 +103,11 @@
 		<ClCompile Include="..\..\engines\hadesch\rooms\walloffame.cpp">
 			<Filter>rooms</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\hadesch\ambient.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\baptr.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\gfx_context.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\hadesch.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\herobelt.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\hotzone.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\persistent.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\pod_file.cpp" />
-		<ClCompile Include="..\..\engines\hadesch\pod_image.cpp" />
 		<ClCompile Include="..\..\engines\hadesch\table.cpp" />
 		<ClCompile Include="..\..\engines\hadesch\tag_file.cpp" />
 		<ClCompile Include="..\..\engines\hadesch\video.cpp" />
 	</ItemGroup>
 	<ItemGroup>
-		<ClInclude Include="..\..\engines\hadesch\rooms\monster.h">
-			<Filter>rooms</Filter>
-		</ClInclude>
 		<ClInclude Include="..\..\engines\hadesch\ambient.h" />
 		<ClInclude Include="..\..\engines\hadesch\baptr.h" />
 		<ClInclude Include="..\..\engines\hadesch\detection_tables.h" />
@@ -123,6 +120,9 @@
 		<ClInclude Include="..\..\engines\hadesch\persistent.h" />
 		<ClInclude Include="..\..\engines\hadesch\pod_file.h" />
 		<ClInclude Include="..\..\engines\hadesch\pod_image.h" />
+		<ClInclude Include="..\..\engines\hadesch\rooms\monster.h">
+			<Filter>rooms</Filter>
+		</ClInclude>
 		<ClInclude Include="..\..\engines\hadesch\table.h" />
 		<ClInclude Include="..\..\engines\hadesch\tag_file.h" />
 		<ClInclude Include="..\..\engines\hadesch\video.h" />
diff --git a/dists/msvc/hdb.vcxproj b/dists/msvc/hdb.vcxproj
index a04d477bd9a..5a27fb7fbd5 100644
--- a/dists/msvc/hdb.vcxproj
+++ b/dists/msvc/hdb.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{33882445-22D8-4130-9FCC-05A7011A84B9}</ProjectGuid>
+		<ProjectGuid>{7C289F88-5F72-3B27-8274-ADA320E4CE57}</ProjectGuid>
 		<RootNamespace>hdb</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/hopkins.vcxproj b/dists/msvc/hopkins.vcxproj
index 05ec742878a..becb66d35e9 100644
--- a/dists/msvc/hopkins.vcxproj
+++ b/dists/msvc/hopkins.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{F2EA23DD-77BC-46C8-8F9B-9980470A610D}</ProjectGuid>
+		<ProjectGuid>{770AAA89-ABF4-3BF1-A781-FB8D33857579}</ProjectGuid>
 		<RootNamespace>hopkins</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/hugo.vcxproj b/dists/msvc/hugo.vcxproj
index 7d174170804..a8dd10cefb2 100644
--- a/dists/msvc/hugo.vcxproj
+++ b/dists/msvc/hugo.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{B319A88C-BC9C-444E-9301-4AD920671ED6}</ProjectGuid>
+		<ProjectGuid>{22242772-C555-3FE0-B23F-7D088A572CB2}</ProjectGuid>
 		<RootNamespace>hugo</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/hypno.vcxproj b/dists/msvc/hypno.vcxproj
index 3836cc1f545..614fdd73e8f 100644
--- a/dists/msvc/hypno.vcxproj
+++ b/dists/msvc/hypno.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{458D8821-A6CD-460A-A93D-BED9334FE6D5}</ProjectGuid>
+		<ProjectGuid>{BDA39897-5444-3AF3-A566-323337C655B5}</ProjectGuid>
 		<RootNamespace>hypno</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/hypno.vcxproj.filters b/dists/msvc/hypno.vcxproj.filters
index d0a23ce31fe..77deeb77509 100644
--- a/dists/msvc/hypno.vcxproj.filters
+++ b/dists/msvc/hypno.vcxproj.filters
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="boyz">
-			<UniqueIdentifier>B9A53D8A-1547-4147-ADB2-17852A9CDBDC</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69B-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="spider">
-			<UniqueIdentifier>32364601-6E87-44F8-8795-80099548BAE8</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69C-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="wet">
-			<UniqueIdentifier>A61466C4-F61E-43E7-AB93-FA9C0F22F9B3</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69D-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
@@ -26,6 +26,15 @@
 		<ClCompile Include="..\..\engines\hypno\boyz\scene.cpp">
 			<Filter>boyz</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\hypno\cursors.cpp" />
+		<ClCompile Include="..\..\engines\hypno\grammar_arc.cpp" />
+		<ClCompile Include="..\..\engines\hypno\grammar_mis.cpp" />
+		<ClCompile Include="..\..\engines\hypno\hypno.cpp" />
+		<ClCompile Include="..\..\engines\hypno\lexer_arc.cpp" />
+		<ClCompile Include="..\..\engines\hypno\lexer_mis.cpp" />
+		<ClCompile Include="..\..\engines\hypno\libfile.cpp" />
+		<ClCompile Include="..\..\engines\hypno\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\hypno\scene.cpp" />
 		<ClCompile Include="..\..\engines\hypno\spider\arcade.cpp">
 			<Filter>spider</Filter>
 		</ClCompile>
@@ -38,6 +47,7 @@
 		<ClCompile Include="..\..\engines\hypno\spider\talk.cpp">
 			<Filter>spider</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\hypno\video.cpp" />
 		<ClCompile Include="..\..\engines\hypno\wet\arcade.cpp">
 			<Filter>wet</Filter>
 		</ClCompile>
@@ -50,16 +60,6 @@
 		<ClCompile Include="..\..\engines\hypno\wet\wet.cpp">
 			<Filter>wet</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\hypno\cursors.cpp" />
-		<ClCompile Include="..\..\engines\hypno\grammar_arc.cpp" />
-		<ClCompile Include="..\..\engines\hypno\grammar_mis.cpp" />
-		<ClCompile Include="..\..\engines\hypno\hypno.cpp" />
-		<ClCompile Include="..\..\engines\hypno\lexer_arc.cpp" />
-		<ClCompile Include="..\..\engines\hypno\lexer_mis.cpp" />
-		<ClCompile Include="..\..\engines\hypno\libfile.cpp" />
-		<ClCompile Include="..\..\engines\hypno\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\hypno\scene.cpp" />
-		<ClCompile Include="..\..\engines\hypno\video.cpp" />
 	</ItemGroup>
 	<ItemGroup>
 		<ClInclude Include="..\..\engines\hypno\detection.h" />
diff --git a/dists/msvc/illusions.vcxproj b/dists/msvc/illusions.vcxproj
index 7e5da813066..22ae7cad8d2 100644
--- a/dists/msvc/illusions.vcxproj
+++ b/dists/msvc/illusions.vcxproj
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup Label="ProjectConfigurations">
 		<ProjectConfiguration Include="Debug|Win32">
 			<Configuration>Debug</Configuration>
@@ -51,70 +51,73 @@
 		</ProjectConfiguration>
 	</ItemGroup>
 	<PropertyGroup Label="Globals">
-		<ProjectGuid>{68477D63-BEEF-422C-9209-45CFD0652E0A}</ProjectGuid>
+		<ProjectGuid>{652B5844-0B20-3859-8A5B-EEC214A42F67}</ProjectGuid>
 		<RootNamespace>illusions</RootNamespace>
 		<Keyword>Win32Proj</Keyword>
-		<VCTargetsPath Condition="'$(VCTargetsPath14)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath14)</VCTargetsPath>
+		<VCTargetsPath Condition="'$(VCTargetsPath18)' != '' and '$(VSVersion)' == '' and $(VisualStudioVersion) == ''">$(VCTargetsPath18)</VCTargetsPath>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ASan|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
+		<EnableASAN>true</EnableASAN>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LLVM|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>LLVM-vs2014</PlatformToolset>
+		<PlatformToolset>llvm</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'" Label="Configuration">
 		<ConfigurationType>StaticLibrary</ConfigurationType>
-		<PlatformToolset>v140</PlatformToolset>
+		<PlatformToolset>v145</PlatformToolset>
 		<CharacterSet>Unicode</CharacterSet>
 	</PropertyGroup>
 	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
diff --git a/dists/msvc/illusions.vcxproj.filters b/dists/msvc/illusions.vcxproj.filters
index 6dc7e98a29d..e0f513757e9 100644
--- a/dists/msvc/illusions.vcxproj.filters
+++ b/dists/msvc/illusions.vcxproj.filters
@@ -1,20 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="18.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 	<ItemGroup>
 		<Filter Include="bbdou">
-			<UniqueIdentifier>3A962B31-BF08-4BB7-AB2F-C26DAA11BF0D</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69E-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="duckman">
-			<UniqueIdentifier>E8E251B1-BBFD-4276-89D2-2FAC51C19C20</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA69F-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="resources">
-			<UniqueIdentifier>48044E61-F2BE-4183-AF8D-8FB8E8586DAA</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA6A0-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 		<Filter Include="threads">
-			<UniqueIdentifier>AFF83515-186A-4A0D-872B-0A92E9D0FEF6</UniqueIdentifier>
+			<UniqueIdentifier>EFDBA6A1-2E1D-11F1-A827-001A7DDA7111</UniqueIdentifier>
 		</Filter>
 	</ItemGroup>
 	<ItemGroup>
+		<ClCompile Include="..\..\engines\illusions\actor.cpp" />
 		<ClCompile Include="..\..\engines\illusions\bbdou\bbdou_bubble.cpp">
 			<Filter>bbdou</Filter>
 		</ClCompile>
@@ -57,6 +58,10 @@
 		<ClCompile Include="..\..\engines\illusions\bbdou\scriptopcodes_bbdou.cpp">
 			<Filter>bbdou</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\illusions\camera.cpp" />
+		<ClCompile Include="..\..\engines\illusions\console.cpp" />
+		<ClCompile Include="..\..\engines\illusions\cursor.cpp" />
+		<ClCompile Include="..\..\engines\illusions\dictionary.cpp" />
 		<ClCompile Include="..\..\engines\illusions\duckman\duckman_credits.cpp">
 			<Filter>duckman</Filter>
 		</ClCompile>
@@ -90,6 +95,17 @@
 		<ClCompile Include="..\..\engines\illusions\duckman\scriptopcodes_duckman.cpp">
 			<Filter>duckman</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\illusions\fileresourcereader.cpp" />
+		<ClCompile Include="..\..\engines\illusions\fixedpoint.cpp" />
+		<ClCompile Include="..\..\engines\illusions\gamarchive.cpp" />
+		<ClCompile Include="..\..\engines\illusions\gamestate.cpp" />
+		<ClCompile Include="..\..\engines\illusions\gamresourcereader.cpp" />
+		<ClCompile Include="..\..\engines\illusions\graphics.cpp" />
+		<ClCompile Include="..\..\engines\illusions\illusions.cpp" />
+		<ClCompile Include="..\..\engines\illusions\input.cpp" />
+		<ClCompile Include="..\..\engines\illusions\menusystem.cpp" />
+		<ClCompile Include="..\..\engines\illusions\metaengine.cpp" />
+		<ClCompile Include="..\..\engines\illusions\pathfinder.cpp" />
 		<ClCompile Include="..\..\engines\illusions\resources\actorresource.cpp">
 			<Filter>resources</Filter>
 		</ClCompile>
@@ -114,6 +130,17 @@
 		<ClCompile Include="..\..\engines\illusions\resources\talkresource.cpp">
 			<Filter>resources</Filter>
 		</ClCompile>
+		<ClCompile Include="..\..\engines\illusions\resourcesystem.cpp" />
+		<ClCompile Include="..\..\engines\illusions\saveload.cpp" />
+		<ClCompile Include="..\..\engines\illusions\screen.cpp" />
+		<ClCompile Include="..\..\engines\illusions\screentext.cpp" />
+		<ClCompile Include="..\..\engines\illusions\scriptopcodes.cpp" />
+		<ClCompile Include="..\..\engines\illusions\scriptstack.cpp" />
+		<ClCompile Include="..\..\engines\illusions\sequenceopcodes.cpp" />
+		<ClCompile Include="..\..\engines\illusions\sound.cpp" />
+		<ClCompile Include="..\..\engines\illusions\specialcode.cpp" />
+		<ClCompile Include="..\..\engines\illusions\textdrawer.cpp" />
+		<ClCompile Include="..\..\engines\illusions\thread.cpp" />
 		<ClCompile Include="..\..\engines\illusions\threads\abortablethread.cpp">
 			<Filter>threads</Filter>
 		</ClCompile>
@@ -132,37 +159,11 @@
 		<ClCompile Include="..\..\engines\illusions\threads\timerthread.cpp">
 			<Filter>threads</Filter>
 		</ClCompile>
-		<ClCompile Include="..\..\engines\illusions\actor.cpp" />
-		<ClCompile Include="..\..\engines\illusions\camera.cpp" />
-		<ClCompile Include="..\..\engines\illusions\console.cpp" />
-		<ClCompile Include="..\..\engines\illusions\cursor.cpp" />
-		<ClCompile Include="..\..\engines\illusions\dictionary.cpp" />
-		<ClCompile Include="..\..\engines\illusions\fileresourcereader.cpp" />
-		<ClCompile Include="..\..\engines\illusions\fixedpoint.cpp" />
-		<ClCompile Include="..\..\engines\illusions\gamarchive.cpp" />
-		<ClCompile Include="..\..\engines\illusions\gamestate.cpp" />
-		<ClCompile Include="..\..\engines\illusions\gamresourcereader.cpp" />
-		<ClCompile Include="..\..\engines\illusions\graphics.cpp" />
-		<ClCompile Include="..\..\engines\illusions\illusions.cpp" />
-		<ClCompile Include="..\..\engines\illusions\input.cpp" />
-		<ClCompile Include="..\..\engines\illusions\menusystem.cpp" />
-		<ClCompile Include="..\..\engines\illusions\metaengine.cpp" />
-		<ClCompile Include="..\..\engines\illusions\pathfinder.cpp" />
-		<ClCompile Include="..\..\engines\illusions\resourcesystem.cpp" />
-		<ClCompile Include="..\..\engines\illusions\saveload.cpp" />
-		<ClCompile Include="..\..\engines\illusions\screen.cpp" />
-		<ClCompile Include="..\..\engines\illusions\screentext.cpp" />
-		<ClCompile Include="..\..\engines\illusions\scriptopcodes.cpp" />
-		<ClCompile Include="..\..\engines\illusions\scriptstack.cpp" />
-		<ClCompile Include="..\..\engines\illusions\sequenceopcodes.cpp" />
-		<ClCompile Include="..\..\engines\illusions\sound.cpp" />
-		<ClCompile Include="..\..\engines\illusions\specialcode.cpp" />
-		<ClCompile Include="..\..\engines\illusions\textdrawer.cpp" />
-		<ClCompile Include="..\..\engines\illusions\thread.cpp" />
 		<ClCompile Include="..\..\engines\illusions\time.cpp" />
 		<ClCompile Include="..\..\engines\illusions\updatefunctions.cpp" />
 	</ItemGroup>
 	<ItemGroup>
+		<ClInclude Include="..\..\engines\illusions\actor.h" />
 		<ClInclude Include="..\..\engines\illusions\bbdou\bbdou_bubble.h">
 			<Filter>bbdou</Filter>
 		</ClInclude>
@@ -202,6 +203,11 @@
 		<ClInclude Include="..\..\engines\illusions\bbdou\scriptopcodes_bbdou.h">
 			<Filter>bbdou</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\illusions\camera.h" />
+		<ClInclude Include="..\..\engines\illusions\console.h" />
+		<ClInclude Include="..\..\engines\illusions\cursor.h" />
+		<ClInclude Include="..\..\engines\illusions\detection.h" />
+		<ClInclude Include="..\..\engines\illusions\dictionary.h" />
 		<ClInclude Include="..\..\engines\illusions\duckman\duckman_credits.h">
 			<Filter>duckman</Filter>
 		</ClInclude>
@@ -235,6 +241,17 @@
 		<ClInclude Include="..\..\engines\illusions\duckman\scriptopcodes_duckman.h">
 			<Filter>duckman</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\illusions\fileresourcereader.h" />
+		<ClInclude Include="..\..\engines\illusions\fixedpoint.h" />
+		<ClInclude Include="..\..\engines\illusions\gamarchive.h" />
+		<ClInclude Include="..\..\engines\illusions\gamestate.h" />
+		<ClInclude Include="..\..\engines\illusions\gamresourcereader.h" />
+		<ClInclude Include="..\..\engines\illusions\graphics.h" />
+		<ClInclude Include="..\..\engines\illusions\illusions.h" />
+		<ClInclude Include="..\..\engines\illusions\input.h" />
+		<ClInclude Include="..\..\engines\illusions\menusystem.h" />
+		<ClInclude Include="..\..\engines\illusions\pathfinder.h" />
+		<ClInclude Include="..\..\engines\illusions\resourcereader.h" />
 		<ClInclude Include="..\..\engines\illusions\resources\actorresource.h">
 			<Filter>resources</Filter>
 		</ClInclude>
@@ -259,6 +276,16 @@
 		<ClInclude Include="..\..\engines\illusions\resources\talkresource.h">
 			<Filter>resources</Filter>
 		</ClInclude>
+		<ClInclude Include="..\..\engines\illusions\resourcesystem.h" />
+		<ClInclude Include="..\..\engines\illusions\screen.h" />
+		<ClInclude Include="..\..\engines\illusions\screentext.h" />
+		<ClInclude Include="..\..\engines\illusions\scriptopcodes.h" />
+		<ClInclude Include="..\..\engines\illusions\scriptstack.h" />
+		<ClInclude Include="..\..\engines\illusions\sequenceopcodes.h" />
+		<ClInclude Include="..\..\engines\illusions\sound.h" />
+		<ClInclude Include="..\..\engines\illusions\specialcode.h" />
+		<ClInclude Include="..\..\engines\illusions\textdrawer.h" />
+		<ClInclude Include="..\..\engines\illusions\thread.h" />
 		<ClInclude Include="..\..\engines\illusions\threads\abortablethread.h">
 			<Filter>threads</Filter>
 		</ClInclude>
@@ -277,33 +304,6 @@
 		<ClInclude Include="..\..\engines\illusions\threads\timerthread.h">
 			<Filter>threads</Filter>
 		</ClInclude>
-		<ClInclude Include="..\..\engines\illusions\actor.h" />
-		<ClInclude Include="..\..\engines\illusions\camera.h" />
-		<ClInclude Include="..\..\engines\illusions\console.h" />




More information about the Scummvm-git-logs mailing list