From 8440bc7f037bc232234ef5c18e319b27ac1e507b Mon Sep 17 00:00:00 2001 From: Ian Curtis Date: Fri, 3 Jun 2016 09:33:46 +0000 Subject: [PATCH] support negative exponent --- Src/Graphics/New3D/New3D.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Src/Graphics/New3D/New3D.cpp b/Src/Graphics/New3D/New3D.cpp index 3d418d2..e29d02e 100644 --- a/Src/Graphics/New3D/New3D.cpp +++ b/Src/Graphics/New3D/New3D.cpp @@ -1177,8 +1177,16 @@ void CNew3D::CalcTexOffset(int offX, int offY, int page, int x, int y, int& newX UINT32 CNew3D::ConvertProFloat(UINT32 a1) { - int exponent = ((a1 & 0x7E000000) >> 25) + 127; + int exponent = (a1 & 0x7E000000) >> 25; + if (exponent <= 31) { // positive + exponent += 127; + } + else { // negative exponent + exponent -= 64; + exponent += 127; + } + int mantissa = (a1 & 0x1FFFFFF) >> 2; return (a1 & 0x80000000) | (exponent << 23) | mantissa;