diff --git a/.gitignore b/.gitignore index 7b2304ec..922fac4a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ Win32_LIB_ASM_Release *.user *.db *.opendb +/.vs diff --git a/CMakeLists.txt b/CMakeLists.txt index f9364fdd..eb91866f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.0) project(SRB2 - VERSION 2.1.19 + VERSION 2.1.20 LANGUAGES C) if(${PROJECT_SOURCE_DIR} MATCHES ${PROJECT_BINARY_DIR}) diff --git a/SRB2_Debug.props b/SRB2_Debug.props index 2c16f7cb..8be11c58 100644 --- a/SRB2_Debug.props +++ b/SRB2_Debug.props @@ -17,7 +17,7 @@ MultiThreadedDebugDLL true All - true + false EnableFastChecks diff --git a/appveyor.yml b/appveyor.yml index ae3f82f5..69913cfc 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 2.1.19.{branch}-{build} +version: 2.1.20.{branch}-{build} os: MinGW environment: diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 57a8bc1e..11c9acff 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -26,6 +26,7 @@ #include "p_local.h" #include "p_setup.h" #include "s_sound.h" +#include "i_sound.h" #include "m_misc.h" #include "am_map.h" #include "byteptr.h" @@ -135,6 +136,7 @@ static void Command_Playintro_f(void); static void Command_Displayplayer_f(void); static void Command_Tunes_f(void); +static void Command_RestartAudio_f(void); static void Command_ExitLevel_f(void); static void Command_Showmap_f(void); @@ -757,6 +759,7 @@ void D_RegisterClientCommands(void) COM_AddCommand("displayplayer", Command_Displayplayer_f); COM_AddCommand("tunes", Command_Tunes_f); + COM_AddCommand("restartaudio", Command_RestartAudio_f); CV_RegisterVar(&cv_resetmusic); // FIXME: not to be here.. but needs be done for config loading @@ -3454,8 +3457,31 @@ static void Command_Addfile(void) if (*p == '\\' || *p == '/' || *p == ':') break; ++p; + // check total packet size and no of files currently loaded + { + size_t packetsize = 0; + serverinfo_pak *dummycheck = NULL; + + // Shut the compiler up. + (void)dummycheck; + + // See W_LoadWadFile in w_wad.c + for (i = 0; i < numwadfiles; i++) + packetsize += nameonlylength(wadfiles[i]->filename) + 22; + + packetsize += nameonlylength(fn) + 22; + + if ((numwadfiles >= MAX_WADFILES) + || (packetsize > sizeof(dummycheck->fileneeded))) + { + CONS_Alert(CONS_ERROR, M_GetText("Too many files loaded to add %s\n"), fn); + return; + } + } + WRITESTRINGN(buf_p,p,240); + // calculate and check md5 { UINT8 md5sum[16]; #ifdef NOMD5 @@ -3473,6 +3499,15 @@ static void Command_Addfile(void) } else // file not found return; + + for (i = 0; i < numwadfiles; i++) + { + if (!memcmp(wadfiles[i]->md5sum, md5sum, 16)) + { + CONS_Alert(CONS_ERROR, M_GetText("%s is already loaded\n"), fn); + return; + } + } #endif WRITEMEM(buf_p, md5sum, 16); } @@ -3701,9 +3736,9 @@ static void Command_ListWADS_f(void) static void Command_Version_f(void) { #ifdef DEVELOP - CONS_Printf("Sonic Robo Blast 2 %s-%s (%s %s)\n", compbranch, comprevision, compdate, comptime); + CONS_Printf("SRB2Kart %s-%s (%s %s)\n", compbranch, comprevision, compdate, comptime); #else - CONS_Printf("Sonic Robo Blast 2 %s (%s %s %s)\n", VERSIONSTRING, compdate, comptime, comprevision); + CONS_Printf("SRB2Kart %s (%s %s %s)\n", VERSIONSTRING, compdate, comptime, comprevision); #endif } @@ -4352,6 +4387,27 @@ static void Command_Tunes_f(void) } } +static void Command_RestartAudio_f(void) +{ + if (dedicated) // No point in doing anything if game is a dedicated server. + return; + + S_StopMusic(); + I_ShutdownMusic(); + I_ShutdownSound(); + I_StartupSound(); + I_InitMusic(); + +// These must be called or no sound and music until manually set. + + I_SetSfxVolume(cv_soundvolume.value); + I_SetDigMusicVolume(cv_digmusicvolume.value); + I_SetMIDIMusicVolume(cv_midimusicvolume.value); + if (Playing()) // Gotta make sure the player is in a level + P_RestoreMusic(&players[consoleplayer]); + +} + /** Quits a game and returns to the title screen. * */ diff --git a/src/doomdef.h b/src/doomdef.h index 8aa28b5e..175838c0 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -172,7 +172,7 @@ extern FILE *logstream; // The string used in the alert that pops up in the event of an update being available. // Please change to apply to your modification (we don't want everyone asking where your mod is on SRB2.org!). #define UPDATE_ALERT_STRING \ -"A new update is available for SRB2kart.\n"\ +"A new update is available for SRB2Kart.\n"\ "Please visit the forums on SRB2.org to download it.\n"\ "\n"\ "You are using version: %s\n"\ @@ -189,7 +189,7 @@ extern FILE *logstream; // The string used in the I_Error alert upon trying to host through command line parameters. // Generally less filled with newlines, since Windows gives you lots more room to work with. #define UPDATE_ALERT_STRING_CONSOLE \ -"A new update is available for SRB2kart.\n"\ +"A new update is available for SRB2Kart.\n"\ "Please visit the forums on SRB2.org to download it.\n"\ "\n"\ "You are using version: %s\n"\ @@ -205,7 +205,7 @@ extern FILE *logstream; // Will always resemble the versionstring, 205 = 2.0.5, 210 = 2.1, etc. #define CODEBASE 210 -// The Modification ID; must be obtained from Inuyasha ( http://mb.srb2.org/private.php?do=newpm&u=2604 ). +// The Modification ID; must be obtained from Rob ( https://mb.srb2.org/private.php?do=newpm&u=546 ). // DO NOT try to set this otherwise, or your modification will be unplayable through the Master Server. // "12" is the default mod ID for version 2.1 #define MODID 12 diff --git a/src/hardware/r_opengl/r_opengl-vc10.vcxproj b/src/hardware/r_opengl/r_opengl-vc10.vcxproj index 43da2a3e..f04ae320 100644 --- a/src/hardware/r_opengl/r_opengl-vc10.vcxproj +++ b/src/hardware/r_opengl/r_opengl-vc10.vcxproj @@ -122,6 +122,7 @@ $(IntDir)r_opengl.lib MachineX86 + Windows true @@ -166,6 +167,7 @@ $(IntDir)r_opengl.lib MachineX64 + Windows true @@ -212,6 +214,7 @@ $(IntDir)r_opengl.lib MachineX86 + Windows true @@ -258,6 +261,7 @@ $(IntDir)r_opengl.lib MachineX64 + Windows true diff --git a/src/hardware/s_openal/s_openal-vc10.vcxproj b/src/hardware/s_openal/s_openal-vc10.vcxproj index 67d2d95a..8b4f6cbb 100644 --- a/src/hardware/s_openal/s_openal-vc10.vcxproj +++ b/src/hardware/s_openal/s_openal-vc10.vcxproj @@ -125,6 +125,7 @@ $(IntDir)s_openal.lib MachineX86 + Windows true @@ -170,6 +171,7 @@ $(IntDir)s_openal.lib MachineX64 + Windows true @@ -216,6 +218,7 @@ $(IntDir)s_openal.lib MachineX86 + Windows true @@ -262,6 +265,7 @@ $(IntDir)s_openal.lib MachineX64 + Windows true diff --git a/src/i_tcp.c b/src/i_tcp.c index 3d55236e..6488e984 100644 --- a/src/i_tcp.c +++ b/src/i_tcp.c @@ -215,7 +215,6 @@ static UINT8 UPNP_support = TRUE; #if defined (USE_WINSOCK) && !defined (NONET) typedef SOCKET SOCKET_TYPE; -#define BADSOCKET INVALID_SOCKET #define ERRSOCKET (SOCKET_ERROR) #else #if (defined (__unix__) && !defined (MSDOS)) || defined (__APPLE__) || defined (__HAIKU__) || defined(_PS3) @@ -223,7 +222,6 @@ typedef int SOCKET_TYPE; #else typedef unsigned long SOCKET_TYPE; #endif -#define BADSOCKET (SOCKET_TYPE)(~0) #define ERRSOCKET (-1) #endif @@ -232,10 +230,10 @@ typedef int socklen_t; #endif #ifndef NONET -static SOCKET_TYPE mysockets[MAXNETNODES+1] = {BADSOCKET}; +static SOCKET_TYPE mysockets[MAXNETNODES+1] = {ERRSOCKET}; static size_t mysocketses = 0; static int myfamily[MAXNETNODES+1] = {0}; -static SOCKET_TYPE nodesocket[MAXNETNODES+1] = {BADSOCKET}; +static SOCKET_TYPE nodesocket[MAXNETNODES+1] = {ERRSOCKET}; static mysockaddr_t clientaddress[MAXNETNODES+1]; static mysockaddr_t broadcastaddress[MAXNETNODES+1]; static size_t broadcastaddresses = 0; @@ -647,7 +645,7 @@ static boolean FD_CPY(fd_set *src, fd_set *dst, SOCKET_TYPE *fd, size_t len) FD_ZERO(dst); for (i = 0; i < len;i++) { - if(fd[i] != BADSOCKET && fd[i] != (SOCKET_TYPE)ERRSOCKET && + if(fd[i] != (SOCKET_TYPE)ERRSOCKET && FD_ISSET(fd[i], src) && !FD_ISSET(fd[i], dst)) // no checking for dups { FD_SET(fd[i], dst); @@ -725,7 +723,7 @@ static void SOCK_Send(void) } return; } - else if (nodesocket[doomcom->remotenode] == BADSOCKET) + else if (nodesocket[doomcom->remotenode] == (SOCKET_TYPE)ERRSOCKET) { for (i = 0; i < mysocketses; i++) { @@ -777,7 +775,7 @@ static void SOCK_FreeNodenum(INT32 numnode) DEBFILE(va("Free node %d (%s)\n", numnode, SOCK_GetNodeAddress(numnode))); nodeconnected[numnode] = false; - nodesocket[numnode] = BADSOCKET; + nodesocket[numnode] = ERRSOCKET; // put invalid address memset(&clientaddress[numnode], 0, sizeof (clientaddress[numnode])); @@ -804,7 +802,7 @@ static SOCKET_TYPE UDP_Bind(int family, struct sockaddr *addr, socklen_t addrlen #endif mysockaddr_t straddr; - if (s == (SOCKET_TYPE)ERRSOCKET || s == BADSOCKET) + if (s == (SOCKET_TYPE)ERRSOCKET) return (SOCKET_TYPE)ERRSOCKET; #ifdef USE_WINSOCK { // Alam_GBC: disable the new UDP connection reset behavior for Win2k and up @@ -911,9 +909,9 @@ static boolean UDP_Socket(void) for (s = 0; s < mysocketses; s++) - mysockets[s] = BADSOCKET; + mysockets[s] = ERRSOCKET; for (s = 0; s < MAXNETNODES+1; s++) - nodesocket[s] = BADSOCKET; + nodesocket[s] = ERRSOCKET; FD_ZERO(&masterset); s = 0; @@ -1250,7 +1248,6 @@ static void SOCK_CloseSocket(void) for (i=0; i < MAXNETNODES+1; i++) { if (mysockets[i] != (SOCKET_TYPE)ERRSOCKET - && mysockets[i] != BADSOCKET && FD_ISSET(mysockets[i], &masterset)) { #if !defined (__DJGPP__) || defined (WATTCP) @@ -1258,7 +1255,7 @@ static void SOCK_CloseSocket(void) close(mysockets[i]); #endif } - mysockets[i] = BADSOCKET; + mysockets[i] = ERRSOCKET; } } #endif diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index a24473ba..eadd0153 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -231,6 +231,8 @@ boolean LUAh_MobjHook(mobj_t *mo, enum hook which) if (!gL || !(hooksAvailable[which/8] & (1<<(which%8)))) return false; + I_Assert(mo->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic mobj hooks @@ -406,6 +408,8 @@ UINT8 LUAh_MobjCollideHook(mobj_t *thing1, mobj_t *thing2, enum hook which) if (!gL || !(hooksAvailable[which/8] & (1<<(which%8)))) return 0; + I_Assert(thing1->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic mobj collision hooks @@ -479,6 +483,8 @@ boolean LUAh_MobjThinker(mobj_t *mo) if (!gL || !(hooksAvailable[hook_MobjThinker/8] & (1<<(hook_MobjThinker%8)))) return false; + I_Assert(mo->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic mobj thinker hooks @@ -532,6 +538,8 @@ boolean LUAh_TouchSpecial(mobj_t *special, mobj_t *toucher) if (!gL || !(hooksAvailable[hook_TouchSpecial/8] & (1<<(hook_TouchSpecial%8)))) return 0; + I_Assert(special->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic touch special hooks @@ -595,6 +603,8 @@ UINT8 LUAh_ShouldDamage(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 if (!gL || !(hooksAvailable[hook_ShouldDamage/8] & (1<<(hook_ShouldDamage%8)))) return 0; + I_Assert(target->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic should damage hooks @@ -676,6 +686,8 @@ boolean LUAh_MobjDamage(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 if (!gL || !(hooksAvailable[hook_MobjDamage/8] & (1<<(hook_MobjDamage%8)))) return 0; + I_Assert(target->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic mobj damage hooks @@ -747,6 +759,8 @@ boolean LUAh_MobjDeath(mobj_t *target, mobj_t *inflictor, mobj_t *source) if (!gL || !(hooksAvailable[hook_MobjDeath/8] & (1<<(hook_MobjDeath%8)))) return 0; + I_Assert(target->type < NUMMOBJTYPES); + lua_settop(gL, 0); // Look for all generic mobj death hooks diff --git a/src/mserv.c b/src/mserv.c index 78c42e55..98849df4 100644 --- a/src/mserv.c +++ b/src/mserv.c @@ -102,35 +102,35 @@ #define PACKET_SIZE 1024 -#define MS_NO_ERROR 0 -#define MS_SOCKET_ERROR -201 -#define MS_CONNECT_ERROR -203 -#define MS_WRITE_ERROR -210 -#define MS_READ_ERROR -211 -#define MS_CLOSE_ERROR -212 -#define MS_GETHOSTBYNAME_ERROR -220 -#define MS_GETHOSTNAME_ERROR -221 -#define MS_TIMEOUT_ERROR -231 +#define MS_NO_ERROR 0 +#define MS_SOCKET_ERROR -201 +#define MS_CONNECT_ERROR -203 +#define MS_WRITE_ERROR -210 +#define MS_READ_ERROR -211 +#define MS_CLOSE_ERROR -212 +#define MS_GETHOSTBYNAME_ERROR -220 +#define MS_GETHOSTNAME_ERROR -221 +#define MS_TIMEOUT_ERROR -231 // see master server code for the values -#define ADD_SERVER_MSG 101 -#define REMOVE_SERVER_MSG 103 -#define ADD_SERVERv2_MSG 104 -#define GET_SERVER_MSG 200 -#define GET_SHORT_SERVER_MSG 205 -#define ASK_SERVER_MSG 206 -#define ANSWER_ASK_SERVER_MSG 207 -#define ASK_SERVER_MSG 206 -#define ANSWER_ASK_SERVER_MSG 207 -#define GET_MOTD_MSG 208 -#define SEND_MOTD_MSG 209 -#define GET_ROOMS_MSG 210 -#define SEND_ROOMS_MSG 211 -#define GET_ROOMS_HOST_MSG 212 -#define GET_VERSION_MSG 213 -#define SEND_VERSION_MSG 214 -#define GET_BANNED_MSG 215 // Someone's been baaaaaad! -#define PING_SERVER_MSG 216 +#define ADD_SERVER_MSG 101 +#define REMOVE_SERVER_MSG 103 +#define ADD_SERVERv2_MSG 104 +#define GET_SERVER_MSG 200 +#define GET_SHORT_SERVER_MSG 205 +#define ASK_SERVER_MSG 206 +#define ANSWER_ASK_SERVER_MSG 207 +#define ASK_SERVER_MSG 206 +#define ANSWER_ASK_SERVER_MSG 207 +#define GET_MOTD_MSG 208 +#define SEND_MOTD_MSG 209 +#define GET_ROOMS_MSG 210 +#define SEND_ROOMS_MSG 211 +#define GET_ROOMS_HOST_MSG 212 +#define GET_VERSION_MSG 213 +#define SEND_VERSION_MSG 214 +#define GET_BANNED_MSG 215 // Someone's been baaaaaad! +#define PING_SERVER_MSG 216 #define HEADER_SIZE (sizeof (INT32)*4) @@ -217,7 +217,6 @@ UINT16 current_port = 0; #if (defined (_WIN32) || defined (_WIN32_WCE) || defined (_WIN32)) && !defined (NONET) typedef SOCKET SOCKET_TYPE; -#define BADSOCKET INVALID_SOCKET #define ERRSOCKET (SOCKET_ERROR) #else #if (defined (__unix__) && !defined (MSDOS)) || defined (__APPLE__) || defined (__HAIKU__) || defined (_PS3) @@ -225,7 +224,6 @@ typedef int SOCKET_TYPE; #else typedef unsigned long SOCKET_TYPE; #endif -#define BADSOCKET (SOCKET_TYPE)(~0) #define ERRSOCKET (-1) #endif @@ -234,7 +232,7 @@ typedef int socklen_t; #endif #ifndef NONET -static SOCKET_TYPE socket_fd = BADSOCKET; // WINSOCK socket +static SOCKET_TYPE socket_fd = ERRSOCKET; // WINSOCK socket static struct timeval select_timeout; static fd_set wset; static size_t recvfull(SOCKET_TYPE s, char *buf, size_t len, int flags); @@ -265,9 +263,9 @@ void AddMServCommands(void) static void CloseConnection(void) { #ifndef NONET - if (socket_fd != (SOCKET_TYPE)ERRSOCKET && socket_fd != BADSOCKET) + if (socket_fd != (SOCKET_TYPE)ERRSOCKET) close(socket_fd); - socket_fd = BADSOCKET; + socket_fd = ERRSOCKET; #endif } @@ -385,7 +383,7 @@ static INT32 MS_Connect(const char *ip_addr, const char *str_port, INT32 async) while (runp != NULL) { socket_fd = socket(runp->ai_family, runp->ai_socktype, runp->ai_protocol); - if (socket_fd != BADSOCKET && socket_fd != (SOCKET_TYPE)ERRSOCKET) + if (socket_fd != (SOCKET_TYPE)ERRSOCKET) { if (async) // do asynchronous connection { diff --git a/src/p_mobj.c b/src/p_mobj.c index f85027cd..286fa292 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9296,6 +9296,16 @@ void P_RespawnSpecials(void) if (mthing->type == mobjinfo[i].doomednum) break; + if (i == NUMMOBJTYPES) // prevent creation of objects with this type -- Monster Iestyn 17/12/17 + { + // 3D Mode start Thing is unlikely to be added to the que, + // so don't bother checking for that specific type + CONS_Alert(CONS_WARNING, M_GetText("P_RespawnSpecials: Unknown thing type %d attempted to respawn at (%d, %d)\n"), mthing->type, mthing->x, mthing->y); + // pull it from the que + iquetail = (iquetail+1)&(ITEMQUESIZE-1); + return; + } + //CTF rings should continue to respawn as normal rings outside of CTF. if (gametype != GT_CTF) { diff --git a/src/p_spec.c b/src/p_spec.c index bb5a9c52..36cdda6f 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -5292,13 +5292,11 @@ static void P_AddOldAirbob(sector_t *sec, line_t *sourceline, boolean noadjust) airbob->vars[2] = FRACUNIT; if (noadjust) - { airbob->vars[7] = airbob->sector->ceilingheight-16*FRACUNIT; - airbob->vars[6] = airbob->vars[7] - - (sec->ceilingheight - sec->floorheight); - } else airbob->vars[7] = airbob->sector->ceilingheight - P_AproxDistance(sourceline->dx, sourceline->dy); + airbob->vars[6] = airbob->vars[7] + - (sec->ceilingheight - sec->floorheight); airbob->vars[3] = airbob->vars[2]; diff --git a/src/sdl/i_main.c b/src/sdl/i_main.c index c4809587..d0368dd7 100644 --- a/src/sdl/i_main.c +++ b/src/sdl/i_main.c @@ -148,7 +148,9 @@ int main(int argc, char **argv) LoadLibraryA("exchndl.dll"); } } +#ifndef __MINGW32__ prevExceptionFilter = SetUnhandledExceptionFilter(RecordExceptionInfo); +#endif MakeCodeWritable(); #endif // startup SRB2 diff --git a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj index 68391f99..eaac87de 100644 --- a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj +++ b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj @@ -1214,7 +1214,7 @@ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.19; + CURRENT_PROJECT_VERSION = 2.1.20; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", NORMALSRB2, @@ -1226,7 +1226,7 @@ C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.19; + CURRENT_PROJECT_VERSION = 2.1.20; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj index fada7849..574161c6 100644 --- a/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj +++ b/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj @@ -1214,7 +1214,7 @@ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.19; + CURRENT_PROJECT_VERSION = 2.1.20; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", NORMALSRB2, @@ -1226,7 +1226,7 @@ C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.19; + CURRENT_PROJECT_VERSION = 2.1.20; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg index 3d7af7fe..da66e996 100644 --- a/src/win32/Makefile.cfg +++ b/src/win32/Makefile.cfg @@ -64,7 +64,7 @@ endif ifdef SDL i_system_o+=$(OBJDIR)/SRB2.res - i_main_o+=$(OBJDIR)/win_dbg.o + #i_main_o+=$(OBJDIR)/win_dbg.o ifndef NOHW OPTS+=-DUSE_WGL_SWAP endif @@ -81,7 +81,8 @@ endif i_net_o=$(OBJDIR)/win_net.o i_system_o=$(OBJDIR)/win_sys.o $(OBJDIR)/SRB2.res i_sound_o=$(OBJDIR)/win_snd.o - i_main_o=$(OBJDIR)/win_dbg.o $(OBJDIR)/win_main.o + i_main_o=$(OBJDIR)/win_main.o + #i_main_o+=$(OBJDIR)/win_dbg.o OBJS=$(OBJDIR)/dx_error.o $(OBJDIR)/fabdxlib.o $(OBJDIR)/win_vid.o $(OBJDIR)/win_dll.o endif diff --git a/src/win32/win_main.c b/src/win32/win_main.c index 943c5528..a37c49fc 100644 --- a/src/win32/win_main.c +++ b/src/win32/win_main.c @@ -244,7 +244,7 @@ static LRESULT CALLBACK MainWndproc(HWND hWnd, UINT message, WPARAM wParam, LPAR D_PostEvent(&ev); return TRUE; } - + break; case WM_XBUTTONDOWN: if (nodinput) { @@ -253,7 +253,7 @@ static LRESULT CALLBACK MainWndproc(HWND hWnd, UINT message, WPARAM wParam, LPAR D_PostEvent(&ev); return TRUE; } - + break; case WM_MOUSEWHEEL: //I_OutputMsg("MW_WHEEL dispatched.\n"); ev.type = ev_keydown; @@ -666,7 +666,9 @@ int WINAPI WinMain (HINSTANCE hInstance, #endif LoadLibraryA("exchndl.dll"); +#ifndef __MINGW32__ prevExceptionFilter = SetUnhandledExceptionFilter(RecordExceptionInfo); +#endif Result = HandledWinMain(hInstance); #ifdef BUGTRAP diff --git a/src/win32/win_sys.c b/src/win32/win_sys.c index 97b0a79f..882e3e58 100644 --- a/src/win32/win_sys.c +++ b/src/win32/win_sys.c @@ -2581,7 +2581,7 @@ acquire: UINT64 newbuttons = joybuttons ^ lastjoybuttons; lastjoybuttons = joybuttons; - for (i = 0; i < JOYBUTTONS && i < JOYBUTTONS_MAX; i++, j <<= 1) + for (i = 0; i < JOYBUTTONS_MIN; i++, j <<= 1) { if (newbuttons & j) // button changed state? { @@ -2601,7 +2601,7 @@ acquire: UINT64 newhats = joyhats ^ lastjoyhats; lastjoyhats = joyhats; - for (i = 0; i < JOYHATS*4 && i < JOYHATS_MAX*4; i++, j <<= 1) + for (i = 0; i < JOYHATS_MIN*4; i++, j <<= 1) { if (newhats & j) // button changed state? { @@ -2825,7 +2825,7 @@ acquire: UINT64 newbuttons = joybuttons ^ lastjoy2buttons; lastjoy2buttons = joybuttons; - for (i = 0; i < JOYBUTTONS && i < JOYBUTTONS_MAX; i++, j <<= 1) + for (i = 0; i < JOYBUTTONS_MIN; i++, j <<= 1) { if (newbuttons & j) // button changed state? { @@ -2845,7 +2845,7 @@ acquire: UINT64 newhats = joyhats ^ lastjoy2hats; lastjoy2hats = joyhats; - for (i = 0; i < JOYHATS*4 && i < JOYHATS_MAX*4; i++, j <<= 1) + for (i = 0; i < JOYHATS_MIN*4; i++, j <<= 1) { if (newhats & j) // button changed state? { diff --git a/src/win32/win_vid.c b/src/win32/win_vid.c index 0960bb6d..a9dd097b 100644 --- a/src/win32/win_vid.c +++ b/src/win32/win_vid.c @@ -322,6 +322,7 @@ static inline boolean I_SkipFrame(void) case GS_LEVEL: if (!paused) return false; + /* FALLTHRU */ case GS_TIMEATTACK: #ifndef CLIENT_LOADINGSCREEN case GS_WAITINGPLAYERS: