diff --git a/project/msvc/.gitignore b/project/msvc/.gitignore
new file mode 100644
index 00000000..e8376ee0
--- /dev/null
+++ b/project/msvc/.gitignore
@@ -0,0 +1,6 @@
+Debug
+Release
+ipch
+*.suo
+*.user
+*.sdf
\ No newline at end of file
diff --git a/project/msvc/README.txt b/project/msvc/README.txt
new file mode 100644
index 00000000..e014c13c
--- /dev/null
+++ b/project/msvc/README.txt
@@ -0,0 +1,3 @@
+Project files for MS Visual Studio 2010
+Edit project properties to set proper include and libraries directory for SDL 1.2
+and SDL image 1.2
diff --git a/project/msvc/grafx2.sln b/project/msvc/grafx2.sln
new file mode 100644
index 00000000..c8f8c739
--- /dev/null
+++ b/project/msvc/grafx2.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grafx2", "grafx2.vcxproj", "{2C23F950-9403-4871-848E-7E98BE9BD565}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2C23F950-9403-4871-848E-7E98BE9BD565}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C23F950-9403-4871-848E-7E98BE9BD565}.Debug|Win32.Build.0 = Debug|Win32
+ {2C23F950-9403-4871-848E-7E98BE9BD565}.Release|Win32.ActiveCfg = Release|Win32
+ {2C23F950-9403-4871-848E-7E98BE9BD565}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/project/msvc/grafx2.vcxproj b/project/msvc/grafx2.vcxproj
new file mode 100644
index 00000000..f4a30a8a
--- /dev/null
+++ b/project/msvc/grafx2.vcxproj
@@ -0,0 +1,200 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {2C23F950-9403-4871-848E-7E98BE9BD565}
+ Win32Proj
+ grafx2
+
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)..\..\bin\
+ $(ProjectName)$(Configuration)
+
+
+ false
+ $(SolutionDir)..\..\bin\
+
+
+
+
+
+ Level3
+ Disabled
+ NOTTF;__no_pnglib__;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ C:\code\SDL_image-1.2.12\include;C:\code\SDL-1.2.15\include;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ SDL.lib;SDLmain.lib;SDL_image.lib;%(AdditionalDependencies)
+ C:\code\SDL-1.2.15\lib\x86;C:\code\SDL_image-1.2.12\lib\x86;%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ NOTTF;__no_pnglib__;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ C:\code\SDL_image-1.2.12\include;C:\code\SDL-1.2.15\include;%(AdditionalIncludeDirectories)
+
+
+ Windows
+ true
+ true
+ true
+ SDL.lib;SDLmain.lib;SDL_image.lib;%(AdditionalDependencies)
+ C:\code\SDL-1.2.15\lib\x86;C:\code\SDL_image-1.2.12\lib\x86;%(AdditionalLibraryDirectories)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/msvc/grafx2.vcxproj.filters b/project/msvc/grafx2.vcxproj.filters
new file mode 100644
index 00000000..f2f08cec
--- /dev/null
+++ b/project/msvc/grafx2.vcxproj.filters
@@ -0,0 +1,341 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+ Fichiers d%27en-tête
+
+
+
+
+ Fichiers de ressources
+
+
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+ Fichiers sources
+
+
+
\ No newline at end of file
diff --git a/src/buttons.c b/src/buttons.c
index 4ed77dfc..4a96280b 100644
--- a/src/buttons.c
+++ b/src/buttons.c
@@ -24,7 +24,7 @@
#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
#include
#include
-#elif defined(__WIN32__)
+#elif defined(__WIN32__) || defined(WIN32)
#include
#endif
@@ -37,9 +37,19 @@
#include
#include
#include
+#if !defined(_MSC_VER)
#include
+#else
+#if (_MSC_VER >= 1400)
+#define strncasecmp _memicmp
+#else
+#define strncasecmp memicmp
+#endif
+#endif
#include
+#if !defined(__VBCC__) && !defined(_MSC_VER)
#include
+#endif
#include
#include
#include
@@ -81,7 +91,9 @@
#include
#include
#elif defined(__WIN32__)
+#ifndef _MSC_VER
#include
+#endif
#include
#else
#include
diff --git a/src/const.h b/src/const.h
index 329387ca..bdbbe311 100644
--- a/src/const.h
+++ b/src/const.h
@@ -38,6 +38,12 @@
#else
#include // for PATH_MAX
#endif
+#ifndef PATH_MAX
+#ifdef _MSC_VER
+#include
+#endif
+#define PATH_MAX MAX_PATH
+#endif
#ifndef M_2PI
#define M_2PI 6.28318530717958647692528676656 ///< Hmm, pie...
diff --git a/src/errors.h b/src/errors.h
index b9dd23c9..7d9e20d4 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -26,6 +26,9 @@
#ifdef __VBCC__
#define __func__ "stupid compiler !"
#endif
+#ifdef _MSC_VER
+ #define __func__ __FUNCTION__
+#endif
/// Prints the source filename, line number, function name, a string and an integer.
#define DEBUG(y,z) printf("%s %d %s | %s : %d###\n",__FILE__,__LINE__,__func__,y,(unsigned int)z)
diff --git a/src/filesel.c b/src/filesel.c
index 8077c52f..62f7a6d7 100644
--- a/src/filesel.c
+++ b/src/filesel.c
@@ -41,11 +41,15 @@
#include
#include
#include
+#ifdef _MSC_VER
+#include
+#define snprintf _snprintf
+#else
#include
+#include
+#endif
#include
-#include
#include
-#include
#include "const.h"
#include "struct.h"
@@ -97,12 +101,15 @@ byte Native_filesel(byte load)
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
- ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
+ ofn.lpstrFilter = TEXT("Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0");
+#ifdef UNICODE
+#else
ofn.lpstrFile = szFileName;
+#endif
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER;
if(load) ofn.Flags |= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
- ofn.lpstrDefExt = "txt";
+ ofn.lpstrDefExt = TEXT("txt");
if(load)
{
@@ -682,7 +689,7 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
char drive_path[]="A:\\";
// Cette API Windows est étrange, je dois m'y faire...
drive_path[0]='A'+bit_index;
- switch (GetDriveType(drive_path))
+ switch (GetDriveTypeA(drive_path))
{
case DRIVE_CDROM:
icon=ICON_CDROM;
@@ -1572,7 +1579,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
else if (context->Type == CONTEXT_PALETTE)
Open_window(310,200,"Save palette");
else
- assert(false);
+ assert(0);
Window_set_normal_button(198,180,51,14,"Save",0,1,SDLK_RETURN); // 1
if (Selector->Format_filter<=FORMAT_ALL_FILES) // Correction du *.*
{
diff --git a/src/gfx2.rc b/src/gfx2.rc
new file mode 100644
index 00000000..250ae880
--- /dev/null
+++ b/src/gfx2.rc
@@ -0,0 +1 @@
+1 ICON "gfx2.ico"
diff --git a/src/help.c b/src/help.c
index 203bfd0d..486093bf 100644
--- a/src/help.c
+++ b/src/help.c
@@ -25,8 +25,11 @@
#include
#include
-#if defined(__WIN32__)
+#if defined(__WIN32__) || defined(WIN32)
#include
+#ifdef _MSC_VER
+ #define snprintf _snprintf
+#endif
#elif defined(__macosx__) || defined(__FreeBSD__)
#include
#include
@@ -61,6 +64,9 @@
extern char Program_version[]; // generated in pversion.c
extern char SVN_revision[]; // generated in pversion.c
+#ifdef _MSC_VER//TODO TEMP
+#define SVN_revision "MSC_0000"
+#endif
// Recherche un raccourci clavier:
word * Shortcut(word shortcut_number)
@@ -785,7 +791,7 @@ void Button_Stats(void)
#if defined(__WIN32__)
{
ULARGE_INTEGER tailleU;
- GetDiskFreeSpaceEx(Main.selector.Directory,&tailleU,NULL,NULL);
+ GetDiskFreeSpaceExA(Main.selector.Directory,&tailleU,NULL,NULL);
mem_size = tailleU.QuadPart;
}
#elif defined(__linux__) || defined(__macosx__) || defined(__FreeBSD__) || defined(__SYLLABLE__) || defined(__AROS__)
diff --git a/src/hotkeys.c b/src/hotkeys.c
index ca8942ad..c86ebacb 100644
--- a/src/hotkeys.c
+++ b/src/hotkeys.c
@@ -23,7 +23,7 @@
#include "global.h"
#include "hotkeys.h"
-#ifdef __VBCC__
+#if defined(__VBCC__) || defined(_MSC_VER)
#define false 0
#define true 1
#endif
diff --git a/src/hotkeys.h b/src/hotkeys.h
index c5eed94e..9365ff27 100644
--- a/src/hotkeys.h
+++ b/src/hotkeys.h
@@ -26,7 +26,7 @@
/// The actual data is in hotkeys.c
//////////////////////////////////////////////////////////////////////////////
-#if !defined(__VBCC__)
+#if !defined(__VBCC__) && !defined(_MSC_VER)
#include
#else
#define bool char
diff --git a/src/init.c b/src/init.c
index cc27c985..0259e78b 100644
--- a/src/init.c
+++ b/src/init.c
@@ -38,7 +38,7 @@
//#include
#include
-#ifndef __VBCC__
+#if !defined(__VBCC__) && !defined(_MSC_VER)
#include
#endif
@@ -58,6 +58,10 @@
#ifdef GRAFX2_CATCHES_SIGNALS
#include
#endif
+#ifdef _MSC_VER
+#include
+#define snprintf _snprintf
+#endif
#include "buttons.h"
#include "const.h"
diff --git a/src/io.c b/src/io.c
index e8e4e242..6d0cf2e6 100644
--- a/src/io.c
+++ b/src/io.c
@@ -30,14 +30,20 @@
#include
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
#include
#include
#include
#elif defined(__WIN32__)
+#ifdef _MSC_VER
+ #include
+#else
#include
+#endif
#include
//#include
#elif defined(__MINT__)
@@ -297,6 +303,9 @@ int Directory_exists(char * directory)
// Détermine si un répertoire passé en paramètre existe ou non dans le
// répertoire courant.
{
+#ifdef _MSC_VER // TODO
+ return 1;
+#else
DIR* entry; // Structure de lecture des éléments
if (strcmp(directory,PARENT_DIR)==0)
@@ -315,6 +324,7 @@ int Directory_exists(char * directory)
return 1;
}
}
+#endif
}
/// Check if a file or directory is hidden.
@@ -360,6 +370,8 @@ int File_length_file(FILE * file)
void For_each_file(const char * directory_name, void Callback(const char *, const char *))
{
+#ifdef _MSC_VER
+#else
// Pour scan de répertoire
DIR* current_directory; //Répertoire courant
struct dirent* entry; // Structure de lecture des éléments
@@ -389,11 +401,14 @@ void For_each_file(const char * directory_name, void Callback(const char *, cons
}
}
closedir(current_directory);
+#endif
}
/// Scans a directory, calls Callback for each file or directory in it,
void For_each_directory_entry(const char * directory_name, void * pdata, T_File_dir_cb Callback)
{
+#ifdef _MSC_VER // TODO !
+#else
DIR* current_directory; // current directory
struct dirent* entry; // directory entry struct
char full_filename[MAX_PATH_CHARACTERS];
@@ -446,6 +461,7 @@ void For_each_directory_entry(const char * directory_name, void * pdata, T_File_
File_is_hidden(entry->d_name, full_filename));
}
closedir(current_directory);
+#endif
}
@@ -491,7 +507,7 @@ byte Create_lock_file(const char *file_directory)
#ifdef __WIN32__
// Windowzy method for creating a lock file
- Lock_file_handle = CreateFile(
+ Lock_file_handle = CreateFileA(
lock_filename,
GENERIC_WRITE,
0, // No sharing
diff --git a/src/loadsave.c b/src/loadsave.c
index b46c6417..db0351b3 100644
--- a/src/loadsave.c
+++ b/src/loadsave.c
@@ -28,7 +28,9 @@
#include
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#include
#include
#include
diff --git a/src/main.c b/src/main.c
index 641df1a6..f1c28d1e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -35,7 +35,9 @@
#include
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#include
#include
diff --git a/src/misc.c b/src/misc.c
index ebdf4135..3a97c2c1 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -23,7 +23,9 @@
*/
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#include
#include
#include "struct.h"
diff --git a/src/mountlist.c b/src/mountlist.c
index f92d0330..e0bc1cb2 100644
--- a/src/mountlist.c
+++ b/src/mountlist.c
@@ -20,7 +20,7 @@
*/
// This file is not used on some platforms, so don't do anything for them
-#if(!defined(__WIN32__))&&(!defined(__amigaos4__))&&(!defined(__AROS__))&&(!defined(__MORPHOS__))&&(!defined(__amigaos__))
+#if(!(defined(__WIN32__)||defined(WIN32)))&&(!defined(__amigaos4__))&&(!defined(__AROS__))&&(!defined(__MORPHOS__))&&(!defined(__amigaos__))
// We don't use autoconf and all that in grafx2, so let's do the config here ...
#if defined(__macosx__) || defined(__FreeBSD__) || defined(__OpenBSD__) // MacOS X is POSIX compliant
@@ -63,7 +63,9 @@
#include
+#ifndef _MSC_VER
#include
+#endif
#if HAVE_SYS_PARAM_H
# include
diff --git a/src/mountlist.h b/src/mountlist.h
index ae0c2944..5e01c8a1 100644
--- a/src/mountlist.h
+++ b/src/mountlist.h
@@ -28,8 +28,8 @@
#ifndef MOUNTLIST_H_
# define MOUNTLIST_H_
-#if !defined(__VBCC__)
- # include
+#if !defined(__VBCC__) && !defined(_MSC_VER)
+ #include
#else
#define bool char
#endif
diff --git a/src/oldies.c b/src/oldies.c
index 7c19f400..b85f7c68 100644
--- a/src/oldies.c
+++ b/src/oldies.c
@@ -22,7 +22,9 @@
*/
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#include
#include
#include "struct.h"
diff --git a/src/op_c.c b/src/op_c.c
index d3e1d721..9f01c941 100644
--- a/src/op_c.c
+++ b/src/op_c.c
@@ -21,7 +21,9 @@
along with Grafx2; if not, see
*/
#include
+#ifndef _MSC_VER
#include
+#endif
#include
#include
#include
diff --git a/src/readline.c b/src/readline.c
index 5595650c..7c9c4ad1 100644
--- a/src/readline.c
+++ b/src/readline.c
@@ -47,6 +47,7 @@
#ifdef __WIN32__
#include
#include
+
#elif defined __HAIKU__
#include "haiku.h"
#elif defined(__AROS__)
@@ -57,6 +58,11 @@
#include
#endif
+#ifdef _MSC_VER
+#include
+#define snprintf _snprintf
+#endif
+
// Virtual keyboard is ON by default on these platforms:
#if defined(__GP2X__) || defined(__WIZ__) || defined(__CAANOO__) || defined(GCWZERO)
#define VIRT_KEY_DEFAULT_ON 1
diff --git a/src/realpath.c b/src/realpath.c
index b5138f93..4411b3f4 100644
--- a/src/realpath.c
+++ b/src/realpath.c
@@ -8,7 +8,9 @@
#include
#include
#include
+#ifndef _MSC_VER
#include
+#endif
#if defined(__AROS__) || defined(__linux__) || defined(__GLIBC__)|| defined(__MINT__) || defined(__FreeBSD__)
#include
#endif
@@ -114,7 +116,7 @@
return resolved_path;
}
-#elif defined (__WIN32__)
+#elif defined(__WIN32__) || defined(WIN32)
// Mingw has a working equivalent. It only has reversed arguments.
char *Realpath(const char *_path, char *resolved_path)
{
diff --git a/src/setup.c b/src/setup.c
index 221d36df..168aee5a 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -29,9 +29,12 @@
#include
#include
#include
-#if defined(__WIN32__)
+#if defined(__WIN32__) || defined(WIN32)
#include
#include // Mingw's _mkdir()
+#ifdef _MSC_VER
+ #include
+#endif
#elif defined(__macosx__)
#import
#import
@@ -58,7 +61,7 @@
int Create_ConfigDirectory(char * config_dir)
{
- #ifdef __WIN32__
+ #if defined(__WIN32__) || defined(WIN32)
// Mingw's mkdir has a weird name and only one argument
return _mkdir(config_dir);
#else
diff --git a/src/text.c b/src/text.c
index 449645d9..e662a27d 100644
--- a/src/text.c
+++ b/src/text.c
@@ -50,6 +50,11 @@
#import
#endif
+#ifdef _MSC_VER
+#include
+#define snprintf _snprintf
+#endif
+
#include
#include "SFont.h"
diff --git a/src/windows.c b/src/windows.c
index 2c70a3c9..baf65180 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -29,6 +29,11 @@
#include // atoi()
#include // strncpy() strlen()
+#ifdef _MSC_VER
+#include
+#define snprintf _snprintf
+#endif
+
#include "windows.h"
#include "engine.h"
@@ -1437,6 +1442,7 @@ void Warning_with_format(const char *template, ...) {
va_start(arg_ptr, template);
vsnprintf(message, sizeof(message), template, arg_ptr);
+ Verbose_message("Warning", message);
va_end(arg_ptr);
}