[yquake2] 01/06: New upstream version 7.01~dfsg1

Simon McVittie smcv at debian.org
Mon Jun 26 07:35:47 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository yquake2.

commit 27ee4fadde063d3e0d1010c4e878184cb3e7d5b1
Author: Simon McVittie <smcv at debian.org>
Date:   Mon Jun 26 01:32:52 2017 +0100

    New upstream version 7.01~dfsg1
---
 CHANGELOG                                    |  6 ++
 CMakeLists.txt                               |  4 +-
 Makefile                                     | 16 +++--
 src/backends/windows/system.c                | 48 ++++++++++++++
 src/client/menu/menu.c                       |  6 +-
 src/client/refresh/files/pcx.c               | 98 ++++++++++++++++++++++++++++
 src/client/refresh/gl3/gl3_main.c            | 11 +++-
 src/client/refresh/gl3/gl3_shaders.c         | 46 +++++++++++--
 src/client/refresh/gl3/header/HandmadeMath.h | 38 ++++++++---
 src/client/refresh/gl3/header/local.h        |  2 +
 src/common/header/common.h                   |  3 +-
 stuff/cvarlist.md                            | 24 ++++---
 12 files changed, 266 insertions(+), 36 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 2469874..eff9381 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+Quake II 7.00 to 7.01:
+- Fix build of GL3 for platforms without SSE.
+- Fix Jennel Jaquays name in credits and quit screen.
+- Make Quake II high DPI aware on Window Vista and above.
+- Fix some problems with loading dependend librarys on Windows.
+
 Quake II 6.00 to 7.00:
 - Remove the broken multitexturing render path from the OpenGL 1.4
   renderer. It was switched off by default in 6.00.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8e4a1b3..8d4f17b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -132,7 +132,7 @@ if(${OPENAL_SUPPORT})
 endif()
 
 if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
-	list(APPEND yquake2LinkerFlags "-lm")
+	list(APPEND yquake2LinkerFlags "-lm -static-libgcc")
 else()
 	list(APPEND yquake2LinkerFlags "-lm -rdynamic")
 endif()
@@ -431,6 +431,7 @@ set(GL1-Source
 	${GL_SRC_DIR}/files/stb.c
 	${GL_SRC_DIR}/files/wal.c
 	${COMMON_SRC_DIR}/shared/shared.c
+	${COMMON_SRC_DIR}/md4.c
 	)
 
 set(GL1-Header
@@ -465,6 +466,7 @@ set(GL3-Source
 	${GL_SRC_DIR}/files/stb.c
 	${GL_SRC_DIR}/files/wal.c
 	${COMMON_SRC_DIR}/shared/shared.c
+	${COMMON_SRC_DIR}/md4.c
 	)
 
 set(GL3-Header
diff --git a/Makefile b/Makefile
index 6d654bb..bd4b81a 100755
--- a/Makefile
+++ b/Makefile
@@ -243,7 +243,7 @@ LDFLAGS := -L/usr/local/lib -lm
 else ifeq ($(YQ2_OSTYPE),OpenBSD)
 LDFLAGS := -L/usr/local/lib -lm
 else ifeq ($(YQ2_OSTYPE),Windows)
-LDFLAGS := -L/usr/lib -lws2_32 -lwinmm
+LDFLAGS := -L/usr/lib -lws2_32 -lwinmm -static-libgcc
 else ifeq ($(YQ2_OSTYPE), Darwin)
 LDFLAGS := $(OSX_ARCH) -lm
 endif
@@ -430,8 +430,12 @@ else
 release/quake2 : CFLAGS += -DUSE_OPENAL -DDEFAULT_OPENAL_DRIVER='"libopenal.so.1"' -DDLOPEN_OPENAL
 endif
 else # !DLOPEN_OPENAL
-release/quake2 : CFLAGS += -DUSE_OPENAL -I/usr/local/opt/openal-soft/include
-release/quake2 : LDFLAGS += -lopenal -L/usr/local/opt/openal-soft/lib
+release/quake2 : CFLAGS += -DUSE_OPENAL
+release/quake2 : LDFLAGS += -lopenal
+ifeq ($(YQ2_OSTYPE), Darwin)
+release/quake2 : CFLAGS += -I/usr/local/opt/openal-soft/include
+release/quake2 : LDFLAGS += -L/usr/local/opt/openal-soft/lib
+endif # Darwin
 endif # !DLOPEN_OPENAL
 endif # WITH_OPENAL
 
@@ -816,7 +820,8 @@ REFGL1_OBJS_ := \
 	src/client/refresh/files/pcx.o \
 	src/client/refresh/files/stb.o \
 	src/client/refresh/files/wal.o \
-	src/common/shared/shared.o 
+	src/common/shared/shared.o \
+	src/common/md4.o
 	
 ifeq ($(YQ2_OSTYPE), Windows)
 REFGL1_OBJS_ += \
@@ -847,7 +852,8 @@ REFGL3_OBJS_ := \
 	src/client/refresh/files/pcx.o \
 	src/client/refresh/files/stb.o \
 	src/client/refresh/files/wal.o \
-	src/common/shared/shared.o
+	src/common/shared/shared.o \
+	src/common/md4.o
 
 ifeq ($(YQ2_OSTYPE), Windows)
 REFGL3_OBJS_ += \
diff --git a/src/backends/windows/system.c b/src/backends/windows/system.c
index f219887..4302bc6 100644
--- a/src/backends/windows/system.c
+++ b/src/backends/windows/system.c
@@ -688,6 +688,50 @@ Sys_RedirectStdout(void)
 
 /* ======================================================================= */
 
+typedef enum YQ2_PROCESS_DPI_AWARENESS {
+	YQ2_PROCESS_DPI_UNAWARE = 0,
+	YQ2_PROCESS_SYSTEM_DPI_AWARE = 1,
+	YQ2_PROCESS_PER_MONITOR_DPI_AWARE = 2
+} YQ2_PROCESS_DPI_AWARENESS;
+
+void
+Sys_SetHighDPIMode(void)
+{
+	/* For Vista, Win7 and Win8 */
+	BOOL(WINAPI *SetProcessDPIAware)(void) = NULL;
+
+	/* Win8.1 and later */
+	HRESULT(WINAPI *SetProcessDpiAwareness)(YQ2_PROCESS_DPI_AWARENESS dpiAwareness) = NULL;
+
+
+	HINSTANCE userDLL = LoadLibrary("USER32.DLL");
+
+	if (userDLL)
+	{
+		SetProcessDPIAware = (BOOL(WINAPI *)(void)) GetProcAddress(userDLL,
+				"SetProcessDPIAware");
+	}
+
+
+	HINSTANCE shcoreDLL = LoadLibrary("SHCORE.DLL");
+
+	if (shcoreDLL)
+	{
+		SetProcessDpiAwareness = (HRESULT(WINAPI *)(YQ2_PROCESS_DPI_AWARENESS))
+			GetProcAddress(shcoreDLL, "SetProcessDpiAwareness");
+	}
+
+
+	if (SetProcessDpiAwareness) {
+		SetProcessDpiAwareness(YQ2_PROCESS_PER_MONITOR_DPI_AWARE);
+	}
+	else if (SetProcessDPIAware) {
+		SetProcessDPIAware();
+	}
+}
+
+/* ======================================================================= */
+
 /*
  * Windows main function. Containts the
  * initialization code and the main loop
@@ -708,6 +752,10 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
 	/* Make the current instance global */
 	global_hInstance = hInstance;
 
+	/* Force DPI awareness */
+	Sys_SetHighDPIMode();
+
+	/* FIXME: No one can see this! */
 	printf("Yamagi Quake II v%s\n", YQ2VERSION);
 	printf("=====================\n\n");
 
diff --git a/src/client/menu/menu.c b/src/client/menu/menu.c
index 1f8c3a3..c67256d 100644
--- a/src/client/menu/menu.c
+++ b/src/client/menu/menu.c
@@ -1509,7 +1509,7 @@ static const char *idcredits[] = {
 	"Tim Willits",
 	"American McGee",
 	"Christian Antkow",
-	"Paul Jaquays",
+	"Jennell Jaquays",
 	"Brandon James",
 	"",
 	"+BIZ",
@@ -1667,7 +1667,7 @@ static const char *xatcredits[] =
     "Paul Steed",
     "Tim Willits",
     "Christian Antkow",
-    "Paul Jaquays",
+    "Jennell Jaquays",
     "Brandon James",
     "Todd Hollenshead",
     "Barrett (Bear) Alexander",
@@ -1791,7 +1791,7 @@ static const char *roguecredits[] =
     "Paul Steed",
     "Tim Willits",
     "Christian Antkow",
-    "Paul Jaquays",
+    "Jennell Jaquays",
     "Brandon James",
     "Todd Hollenshead",
     "Barrett (Bear) Alexander",
diff --git a/src/client/refresh/files/pcx.c b/src/client/refresh/files/pcx.c
index f511775..010a224 100644
--- a/src/client/refresh/files/pcx.c
+++ b/src/client/refresh/files/pcx.c
@@ -26,6 +26,96 @@
 
 #include "../ref_shared.h"
 
+// Fix Jennell Jaquays' name in the Quitscreen
+// this is 98x11 pixels, each value an index
+// into the standard baseq2/pak0/pics/quit.pcx colormap
+static unsigned char quitscreenfix[] = {
+	191,191,191,47,28,39,4,4,39,1,47,28,47,28,29,1,
+	28,28,47,31,31,1,29,31,1,28,47,47,47,47,29,28,
+	47,31,30,28,40,40,4,28,28,40,39,40,29,102,102,245,
+	28,39,4,4,39,103,40,40,1,1,102,94,47,47,1,94,
+	94,94,94,47,102,245,103,103,103,47,1,102,1,102,29,29,
+	29,29,47,28,245,31,31,31,47,1,28,1,28,47,1,102, 102,102,
+	191,191,142,47,4,8,8,8,8,4,47,28,1,28,29,28,
+	29,29,31,1,47,245,47,47,28,28,31,47,28,1,31,1,
+	1,245,47,39,8,8,8,40,39,8,8,8,39,1,1,47,
+	4,8,8,8,8,4,47,29,28,31,28,28,29,28,28,28,
+	29,28,31,28,47,29,1,28,31,47,1,28,1,1,29,29,
+	29,47,28,1,28,28,245,28,28,28,28,47,29,28,47,102,102,103,
+	191,191,142,31,29,36,8,8,36,31,40,39,40,4,1,1,
+	39,40,39,40,40,31,28,40,40,4,39,40,28,47,31,40,
+	39,40,4,1,36,8,8,4,47,36,8,8,39,1,1,1,
+	29,36,8,8,36,4,4,39,40,4,47,1,47,40,40,39,
+	39,40,28,40,40,47,45,39,40,28,4,39,40,4,39,1,
+	28,4,40,28,28,4,39,28,47,40,40,39,40,39,28,28,1,103,
+	1,142,29,142,28,39,8,8,36,36,8,8,8,8,36,1,
+	8,8,8,8,8,36,39,8,8,8,8,8,36,40,36,8,
+	8,8,8,36,40,8,8,40,1,4,8,8,40,1,1,31,
+	28,39,8,8,36,8,8,8,8,8,36,31,36,8,8,8,
+	8,8,36,8,8,4,40,8,8,36,8,8,8,8,8,36,
+	40,8,8,40,39,8,8,40,36,8,8,8,8,8,39,29,28,29,
+	103,191,142,47,28,40,8,8,40,8,8,33,33,8,8,36,
+	8,8,36,36,8,8,36,8,8,36,36,8,8,36,8,8,
+	33,33,8,8,36,8,8,4,47,40,8,8,39,47,28,245,
+	28,40,8,8,40,40,36,36,33,8,8,36,8,8,36,36,
+	8,8,36,8,8,40,40,8,8,40,4,36,36,33,8,8,
+	36,8,8,39,39,8,8,36,8,8,33,36,36,39,28,1,47,28,
+	103,246,1,47,1,39,8,8,40,8,8,8,8,8,8,36,
+	8,8,4,40,8,8,36,8,8,40,4,8,8,36,8,8,
+	8,8,8,8,36,8,8,40,29,39,8,8,39,1,1,47,
+	1,39,8,8,40,36,8,8,8,8,8,36,8,8,4,40,
+	8,8,36,8,8,40,39,8,8,40,36,8,8,8,8,8,
+	36,8,8,39,40,8,8,40,36,8,8,8,8,36,28,1,1,29,
+	103,47,40,40,4,36,8,8,36,8,8,33,36,36,36,4,
+	8,8,39,4,8,8,36,8,8,4,40,8,8,36,8,8,
+	33,36,36,36,36,8,8,40,31,40,8,8,40,47,40,40,
+	4,36,8,8,36,8,8,33,33,8,8,36,8,8,36,36,
+	8,8,36,8,8,36,36,8,8,36,8,8,33,33,8,8,
+	36,8,8,36,36,8,8,4,39,36,36,33,8,8,4,40,4,31,
+	191,40,8,8,8,8,8,36,29,36,8,8,8,8,8,40,
+	8,8,40,4,8,8,36,8,8,40,39,8,8,39,36,8,
+	8,8,8,8,39,8,8,39,45,4,8,8,40,40,8,8,
+	8,8,8,36,29,36,8,8,8,8,8,40,36,8,8,8,
+	8,8,40,36,8,8,8,8,8,40,36,8,8,8,8,8,
+	40,36,8,8,8,8,8,36,8,8,8,8,8,36,4,8,8,4,
+	47,45,40,39,40,39,39,245,246,1,40,40,40,39,4,47,
+	40,4,28,29,39,40,30,39,39,1,28,40,4,28,1,40,
+	40,40,39,4,29,40,39,1,1,1,4,4,47,45,40,39,
+	40,39,39,245,246,29,39,40,40,40,4,47,28,39,39,36,
+	8,8,4,1,39,40,4,40,40,1,29,4,39,4,40,39,
+	1,39,36,36,33,8,8,4,39,4,39,4,40,47,36,8,8,40,
+	1,28,47,28,28,29,1,28,47,28,31,28,28,27,47,28,
+	45,246,30,28,245,29,47,47,29,30,28,47,27,1,246,47,
+	47,47,1,28,47,28,47,1,47,47,1,29,29,47,47,28,
+	28,29,1,47,1,47,47,28,31,47,47,31,47,47,47,4,
+	8,8,39,245,1,47,28,245,28,47,31,28,47,28,28,28,
+	40,8,8,8,8,8,36,47,28,1,246,47,1,40,8,8,36,1,
+	47,1,102,1,102,102,47,94,94,102,47,47,102,102,102,102,
+	94,1,94,47,102,1,102,47,30,30,102,27,47,102,94,1,
+	102,47,1,94,102,103,1,102,103,103,47,47,47,29,1,29,
+	28,28,29,28,1,47,28,31,29,1,47,29,28,1,1,47,
+	4,39,1,47,47,1,28,28,28,47,1,28,45,28,47,47,
+	1,40,4,4,40,4,29,28,31,45,47,28,47,47,4,40,28,28
+};
+
+static void
+fixQuitScreen(byte* px)
+{
+	// overwrite 11 lines, 98 pixels each, from quitscreenfix[]
+	// starting at line 140, column 188
+	// quitscreen is 320x240 px
+	int r, qsIdx = 0;
+
+	px += 140*320; // go to line 140
+	px += 188; // to colum 188
+	for(r=0; r<11; ++r)
+	{
+		memcpy(px, quitscreenfix+qsIdx, 98);
+		qsIdx += 98;
+		px += 320;
+	}
+}
+
 void
 LoadPCX(char *origname, byte **pic, byte **palette, int *width, int *height)
 {
@@ -134,6 +224,14 @@ LoadPCX(char *origname, byte **pic, byte **palette, int *width, int *height)
 		free(*pic);
 		*pic = NULL;
 	}
+	else if(pcx->xmax == 319 && pcx->ymax == 239
+			&& Q_strcasecmp(origname, "pics/quit.pcx") == 0
+			&& Com_BlockChecksum(pcx, len) == 3329419434u)
+	{
+		// it's the quit screen, and the baseq2 one (identified by checksum)
+		// so fix it
+		fixQuitScreen(*pic);
+	}
 
 	ri.FS_FreeFile(pcx);
 }
diff --git a/src/client/refresh/gl3/gl3_main.c b/src/client/refresh/gl3/gl3_main.c
index 8052243..a96103d 100644
--- a/src/client/refresh/gl3/gl3_main.c
+++ b/src/client/refresh/gl3/gl3_main.c
@@ -29,9 +29,6 @@
 #include "../../header/ref.h"
 #include "header/local.h"
 
-#ifndef __SSE__
-#define HANDMADE_MATH_NO_SSE
-#endif
 #define HANDMADE_MATH_IMPLEMENTATION
 #include "header/HandmadeMath.h"
 
@@ -99,6 +96,7 @@ cvar_t *gl_drawbuffer;
 cvar_t *gl_clear;
 cvar_t *gl3_particle_size;
 cvar_t *gl3_particle_fade_factor;
+cvar_t *gl3_particle_square;
 
 cvar_t *gl_lefthand;
 cvar_t *gl_farsee;
@@ -211,6 +209,7 @@ GL3_Register(void)
 	gl_customheight = ri.Cvar_Get("gl_customheight", "768", CVAR_ARCHIVE);
 	gl3_particle_size = ri.Cvar_Get("gl3_particle_size", "40", CVAR_ARCHIVE);
 	gl3_particle_fade_factor = ri.Cvar_Get("gl3_particle_fade_factor", "1.2", CVAR_ARCHIVE);
+	gl3_particle_square = ri.Cvar_Get("gl3_particle_square", "0", CVAR_ARCHIVE);
 
 	gl_norefresh = ri.Cvar_Get("gl_norefresh", "0", 0);
 	gl_drawentities = ri.Cvar_Get("gl_drawentities", "1", 0);
@@ -1658,6 +1657,12 @@ GL3_BeginFrame(float camera_separation)
 		GL3_UpdateUBO3D();
 	}
 
+	if(gl3_particle_square->modified)
+	{
+		gl3_particle_square->modified = false;
+		GL3_RecreateShaders();
+	}
+
 
 	/* go into 2D mode */
 
diff --git a/src/client/refresh/gl3/gl3_shaders.c b/src/client/refresh/gl3/gl3_shaders.c
index 4346619..9e03442 100644
--- a/src/client/refresh/gl3/gl3_shaders.c
+++ b/src/client/refresh/gl3/gl3_shaders.c
@@ -689,6 +689,18 @@ static const char* fragmentSrcParticles = MULTILINE_STRING(
 		}
 );
 
+static const char* fragmentSrcParticlesSquare = MULTILINE_STRING(
+
+		// it gets attributes and uniforms from fragmentCommon3D
+
+		in vec4 passColor;
+
+		void main()
+		{
+			outColor = passColor;
+		}
+);
+
 
 #undef MULTILINE_STRING
 
@@ -977,10 +989,8 @@ static void initUBOs(void)
 	gl3state.currentUBO = gl3state.uniLightsUBO;
 }
 
-qboolean GL3_InitShaders(void)
+static qboolean createShaders(void)
 {
-	initUBOs();
-
 	if(!initShader2D(&gl3state.si2D, vertexSrc2D, fragmentSrc2D))
 	{
 		R_Printf(PRINT_ALL, "WARNING: Failed to create shader program for textured 2D rendering!\n");
@@ -1053,7 +1063,14 @@ qboolean GL3_InitShaders(void)
 		R_Printf(PRINT_ALL, "WARNING: Failed to create shader program for rendering flat-colored models!\n");
 		return false;
 	}
-	if(!initShader3D(&gl3state.siParticle, vertexSrcParticles, fragmentSrcParticles))
+
+	const char* particleFrag = fragmentSrcParticles;
+	if(gl3_particle_square->value != 0.0f)
+	{
+		particleFrag = fragmentSrcParticlesSquare;
+	}
+
+	if(!initShader3D(&gl3state.siParticle, vertexSrcParticles, particleFrag))
 	{
 		R_Printf(PRINT_ALL, "WARNING: Failed to create shader program for rendering particles!\n");
 		return false;
@@ -1064,7 +1081,14 @@ qboolean GL3_InitShaders(void)
 	return true;
 }
 
-void GL3_ShutdownShaders(void)
+qboolean GL3_InitShaders(void)
+{
+	initUBOs();
+
+	return createShaders();
+}
+
+static void deleteShaders(void)
 {
 	const gl3ShaderInfo_t siZero = {0};
 	for(gl3ShaderInfo_t* si = &gl3state.si2D; si <= &gl3state.siParticle; ++si)
@@ -1072,6 +1096,11 @@ void GL3_ShutdownShaders(void)
 		if(si->shaderProgram != 0)  glDeleteProgram(si->shaderProgram);
 		*si = siZero;
 	}
+}
+
+void GL3_ShutdownShaders(void)
+{
+	deleteShaders();
 
 	// let's (ab)use the fact that all 4 UBO handles are consecutive fields
 	// of the gl3state struct
@@ -1079,6 +1108,13 @@ void GL3_ShutdownShaders(void)
 	gl3state.uniCommonUBO = gl3state.uni2DUBO = gl3state.uni3DUBO = gl3state.uniLightsUBO = 0;
 }
 
+qboolean GL3_RecreateShaders(void)
+{
+	// delete and recreate the existing shaders (but not the UBOs)
+	deleteShaders();
+	return createShaders();
+}
+
 static inline void
 updateUBO(GLuint ubo, GLsizeiptr size, void* data)
 {
diff --git a/src/client/refresh/gl3/header/HandmadeMath.h b/src/client/refresh/gl3/header/HandmadeMath.h
index 9bdc6fe..010dc82 100644
--- a/src/client/refresh/gl3/header/HandmadeMath.h
+++ b/src/client/refresh/gl3/header/HandmadeMath.h
@@ -173,6 +173,8 @@
           (*) Resolved compiler warnings on gcc and g++
      1.1.2
           (*) Fixed invalid HMMDEF's in the function definitions
+     1.1.3
+          (*) Fixed compile error in C mode
           
   LICENSE
   
@@ -198,7 +200,27 @@
    Insofaras (@insofaras)
 */
 
-#ifndef HANDMADE_NO_SSE
+
+// let's figure out if SSE is really available (unless disabled anyway)
+// (it isn't on non-x86/x86_64 platforms or even x86 without explicit SSE support)
+// => only use "#ifdef HANDMADE_MATH__USE_SSE" to check for SSE support below this block!
+#ifndef HANDMADE_MATH_NO_SSE
+
+# ifdef _MSC_VER
+   // MSVC supports SSE in amd64 mode or _M_IX86_FP >= 1 (2 means SSE2)
+#  if defined(_M_AMD64) || ( defined(_M_IX86_FP) && _M_IX86_FP >= 1 )
+#   define HANDMADE_MATH__USE_SSE 1
+#  endif
+# else // not MSVC, probably GCC, clang, icc or something that doesn't support SSE anyway
+#  ifdef __SSE__ // they #define __SSE__ if it's supported
+#   define HANDMADE_MATH__USE_SSE 1
+#  endif //  __SSE__
+# endif // not _MSC_VER
+
+#endif // #ifndef HANDMADE_MATH_NO_SSE
+
+
+#ifdef HANDMADE_MATH__USE_SSE
 #include <xmmintrin.h>
 #endif
 
@@ -755,12 +777,12 @@ HMM_SquareRootF(float Value)
 {
     float Result = 0.0f;
 
-#ifdef HANDMADE_MATH_NO_SSE
-    Result = sqrtf(Value);
-#else        
+#ifdef HANDMADE_MATH__USE_SSE
     __m128 In = _mm_set_ss(Value);
     __m128 Out = _mm_sqrt_ss(In);
     Result = _mm_cvtss_f32(Out);
+#else
+    Result = sqrtf(Value);
 #endif 
 
     return(Result);
@@ -771,12 +793,12 @@ HMM_RSquareRootF(float Value)
 {
     float Result = 0.0f;
 
-#ifdef HANDMADE_MATH_NO_SSE
-    Result = 1.0f/HMM_SquareRootF(Value);
-#else        
+#ifdef HANDMADE_MATH__USE_SSE
     __m128 In = _mm_set_ss(Value);
     __m128 Out = _mm_rsqrt_ss(In);
     Result = _mm_cvtss_f32(Out);
+#else
+    Result = 1.0f/HMM_SquareRootF(Value);
 #endif
 
     return(Result);
@@ -1692,7 +1714,7 @@ HMM_NLerp(hmm_quaternion Left, float Time, hmm_quaternion Right)
     Result.Z = HMM_Lerp(Left.Z, Time, Right.Z);
     Result.W = HMM_Lerp(Left.W, Time, Right.W);
 
-    HMM_NormalizeQuaternion(Result);
+    Result = HMM_NormalizeQuaternion(Result);
 
     return(Result);
 }
diff --git a/src/client/refresh/gl3/header/local.h b/src/client/refresh/gl3/header/local.h
index 2e900b5..5b49be1 100644
--- a/src/client/refresh/gl3/header/local.h
+++ b/src/client/refresh/gl3/header/local.h
@@ -468,6 +468,7 @@ extern void GL3_ShutdownMeshes(void);
 
 // gl3_shaders.c
 
+extern qboolean GL3_RecreateShaders(void);
 extern qboolean GL3_InitShaders(void);
 extern void GL3_ShutdownShaders(void);
 extern void GL3_UpdateUBOCommon(void);
@@ -507,6 +508,7 @@ extern cvar_t *gl_anisotropic;
 extern cvar_t *gl_lightlevel;
 extern cvar_t *gl3_overbrightbits;
 extern cvar_t *gl3_particle_fade_factor;
+extern cvar_t *gl3_particle_square;
 
 extern cvar_t *gl_modulate;
 extern cvar_t *gl_lightmap;
diff --git a/src/common/header/common.h b/src/common/header/common.h
index 19767df..a54d1db 100644
--- a/src/common/header/common.h
+++ b/src/common/header/common.h
@@ -32,8 +32,7 @@
 #include "shared.h"
 #include "crc.h"
 
-/* Should have 4 characters. */
-#define YQ2VERSION "7.00"
+#define YQ2VERSION "7.01"
 #define BASEDIRNAME "baseq2"
 
 #ifndef YQ2OSTYPE
diff --git a/stuff/cvarlist.md b/stuff/cvarlist.md
index ef21d57..8383438 100644
--- a/stuff/cvarlist.md
+++ b/stuff/cvarlist.md
@@ -13,7 +13,8 @@ General:
 
 * **basedir**: Directory from which the game data is loaded. Can be used
   in startup scripts, to test binaries, etc. If not set, the directory
-  containing the binaries is used.
+  containing the binaries is used.  
+  To use this cvar, set it at startup, like `./quake2 +set basedir /path/to/quake2`
 
 * **cl_async**: If set to `1` (the default) the client is asynchronous.
   The client framerate is fixed, the renderer framerate is variable.
@@ -76,7 +77,7 @@ Graphics (all renderers):
   with an aspect ratio of 4:3, regardless what the actual windows size
   or resolution is.
 
-* **cl_gun**: Decides weather the gun is drawn. If set to `0` the gun
+* **cl_gun**: Decides whether the gun is drawn. If set to `0` the gun
   is omitted. If set to `1` the gun is only drawn if the FOV is equal
   or smaller than 90. This was the default with Vanilla Quake II. If set
   to `2` the gun is drawn regardless of the FOV. This is the default
@@ -103,11 +104,11 @@ Graphics (all renderers):
   and `16`. Anisotropic filtering gives a huge improvement to texture
   quality by a negligible performance impact.
 
-* **gl_consolescale** / **gl_hudscale** / **gl_menuscale**: Scale the
-  console, the HUD and the menu. The value given is the scale factor, a
-  factor of `1` means no scaling. Values greater `1` make the objects
-  bigger, values lower 1 smaller. The special value `-1` sets the optimal
-  scaling factor for the current resolution.
+* **gl_consolescale** / **gl_hudscale** / **gl_menuscale**, **crosshair_scale**:
+  Scale the console, the HUD, the menu and the crosshair. The value given
+  is the scale factor, a factor of `1` means no scaling. Values greater
+  `1` make the objects bigger, values lower 1 smaller. The special value
+  `-1` sets the optimal scaling factor for the current resolution.
 
 * **gl_customheight** / **gl_customwidth**: Specifies a custom
   resolution, the windows will be *gl_customheight* pixels high and
@@ -126,8 +127,8 @@ Graphics (all renderers):
 
 * **gl_msaa_samples**: Full scene anti aliasing samples. The number of
   samples depends on the GPU driver, most drivers support at least
-  `2`, `4` and `8` samples. If an invalid value is set the value is
-  reverted the highest number of samples supported. Especially on OpenGL
+  `2`, `4` and `8` samples. If an invalid value is set, the value is
+  reverted to the highest number of samples supported. Especially on OpenGL
   3.2 anti aliasing is expensive and can lead to a huge performance hit,
   so try setting it to a lower value if your framerate is too low.
 
@@ -192,3 +193,8 @@ Graphics (GL3 only):
 * **gl3_particle_fade_factor**: "softness" of particles: higher values
   look less soft. Defaults to `1.2`.  
   A value of `10` looks similar to the GL1 particles.
+
+* **gl3_particle_square**: If set to `1`, particles are rendered as squares,
+  like in the old software renderer or Quake1. Default is `0`.
+
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/yquake2.git



More information about the Pkg-games-commits mailing list