From e567d23a40c3c6d6edd0214ea0f5db3e8fe7aa83 Mon Sep 17 00:00:00 2001 From: Luke Usher Date: Wed, 20 Jun 2018 09:24:04 +0100 Subject: [PATCH] Avoid unnecessary division --- src/CxbxKrnl/EmuD3D8.cpp | 42 +++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/CxbxKrnl/EmuD3D8.cpp b/src/CxbxKrnl/EmuD3D8.cpp index 87a099f69..deabc3e66 100644 --- a/src/CxbxKrnl/EmuD3D8.cpp +++ b/src/CxbxKrnl/EmuD3D8.cpp @@ -4027,12 +4027,11 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData2s) LOG_FORWARD("D3DDevice_SetVertexData4f"); - float fa = a / 32767.0f; - float fb = b / 32767.0f; - - // Special case: If the input register is a color, don't transform! - // Test case: Halo + float fa, fb; + switch (Register) { + // Special case: If the input register is a color, don't transform! + // Test case: Halo case X_D3DVSDE_DIFFUSE: case X_D3DVSDE_SPECULAR: case X_D3DVSDE_BACKDIFFUSE: @@ -4040,6 +4039,10 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData2s) fa = a; fb = b; break; + default: + fa = a / 32767.0f; + fb = b / 32767.0f; + break; } EMUPATCH(D3DDevice_SetVertexData4f)(Register, fa, fb, 0.0f, 1.0f); @@ -4330,23 +4333,26 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexData4s) LOG_FORWARD("D3DDevice_SetVertexData4f"); - float fa = a / 32767.0f; - float fb = b / 32767.0f; - float fc = c / 32767.0f; - float fd = d / 32767.0f; + float fa, fb, fc, fd; // Special case: If the input register is a color, don't transform! // Test case: Halo switch (Register) { - case X_D3DVSDE_DIFFUSE: - case X_D3DVSDE_SPECULAR: - case X_D3DVSDE_BACKDIFFUSE: - case X_D3DVSDE_BACKSPECULAR: - fa = a; - fb = b; - fc = c; - fd = d; - break; + case X_D3DVSDE_DIFFUSE: + case X_D3DVSDE_SPECULAR: + case X_D3DVSDE_BACKDIFFUSE: + case X_D3DVSDE_BACKSPECULAR: + fa = a; + fb = b; + fc = c; + fd = d; + break; + default: + fa = a / 32767.0f; + fb = b / 32767.0f; + fc = c / 32767.0f; + fd = d / 32767.0f; + break; } EMUPATCH(D3DDevice_SetVertexData4f)(Register, fa, fb, fc, fd);