From 6f0736ce9a29ab402b5b0e884055eb81e47e4a4b Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 7 Sep 2017 20:38:10 -0500 Subject: [PATCH] Fix loading renderer DLLs on Windows x86 After 'Fix floating point precision loss in renderer', Windows x86 client won't load the renderer DLLs. The problem is a 64 bit modulus. I couldn't find any reports of this online. However, client with built-in renderer worked with the 64 bit modulus. Only tested with mingw-w64. --- code/renderergl1/tr_shade.c | 7 ++++++- code/renderergl2/tr_shade.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/renderergl1/tr_shade.c b/code/renderergl1/tr_shade.c index 61a6e0b1..57a43c5a 100644 --- a/code/renderergl1/tr_shade.c +++ b/code/renderergl1/tr_shade.c @@ -239,7 +239,12 @@ static void R_BindAnimatedImage( textureBundle_t *bundle ) { if ( index < 0 ) { index = 0; // may happen with shader time offsets } - index %= bundle->numImageAnimations; + + // Windows x86 doesn't load renderer DLL with 64 bit modulus + //index %= bundle->numImageAnimations; + while ( index >= bundle->numImageAnimations ) { + index -= bundle->numImageAnimations; + } GL_Bind( bundle->image[ index ] ); } diff --git a/code/renderergl2/tr_shade.c b/code/renderergl2/tr_shade.c index b0ca8628..03662472 100644 --- a/code/renderergl2/tr_shade.c +++ b/code/renderergl2/tr_shade.c @@ -87,7 +87,12 @@ static void R_BindAnimatedImageToTMU( textureBundle_t *bundle, int tmu ) { if ( index < 0 ) { index = 0; // may happen with shader time offsets } - index %= bundle->numImageAnimations; + + // Windows x86 doesn't load renderer DLL with 64 bit modulus + //index %= bundle->numImageAnimations; + while ( index >= bundle->numImageAnimations ) { + index -= bundle->numImageAnimations; + } GL_BindToTMU( bundle->image[ index ], tmu ); }