diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-06-29 09:48:41 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-06-29 09:48:41 +0200 |
commit | ad58a68fc979524d17858428ea8f755df3d212a5 (patch) | |
tree | 0ecdcbdddba54a430ed42791d59c4d6f53a739ee /src | |
parent | da10f9b3f6cad55dc5b10041be4e54f7d9b9373e (diff) |
3D: fix boxtest coord overflow. fixes #57
Diffstat (limited to 'src')
-rw-r--r-- | src/GPU3D.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/GPU3D.cpp b/src/GPU3D.cpp index ca16faa..a746189 100644 --- a/src/GPU3D.cpp +++ b/src/GPU3D.cpp @@ -1068,12 +1068,12 @@ void BoxTest(u32* params) GXStat &= ~(1<<1); - s32 x0 = (s32)(s16)(params[0] & 0xFFFF); - s32 y0 = ((s32)params[0]) >> 16; - s32 z0 = (s32)(s16)(params[1] & 0xFFFF); - s32 x1 = ((s32)params[1]) >> 16; - s32 y1 = (s32)(s16)(params[2] & 0xFFFF); - s32 z1 = ((s32)params[2]) >> 16; + s16 x0 = (s16)(params[0] & 0xFFFF); + s16 y0 = ((s32)params[0]) >> 16; + s16 z0 = (s16)(params[1] & 0xFFFF); + s16 x1 = ((s32)params[1]) >> 16; + s16 y1 = (s16)(params[2] & 0xFFFF); + s16 z1 = ((s32)params[2]) >> 16; x1 += x0; y1 += y0; @@ -1095,10 +1095,10 @@ void BoxTest(u32* params) s32 y = cube[i].Position[1]; s32 z = cube[i].Position[2]; - cube[i].Position[0] = ((s64)x*ClipMatrix[0] + (s64)y*ClipMatrix[4] + (s64)z*ClipMatrix[8] + 0x1000*ClipMatrix[12]) >> 12; - cube[i].Position[1] = ((s64)x*ClipMatrix[1] + (s64)y*ClipMatrix[5] + (s64)z*ClipMatrix[9] + 0x1000*ClipMatrix[13]) >> 12; - cube[i].Position[2] = ((s64)x*ClipMatrix[2] + (s64)y*ClipMatrix[6] + (s64)z*ClipMatrix[10] + 0x1000*ClipMatrix[14]) >> 12; - cube[i].Position[3] = ((s64)x*ClipMatrix[3] + (s64)y*ClipMatrix[7] + (s64)z*ClipMatrix[11] + 0x1000*ClipMatrix[15]) >> 12; + cube[i].Position[0] = ((s64)x*ClipMatrix[0] + (s64)y*ClipMatrix[4] + (s64)z*ClipMatrix[8] + (s64)0x1000*ClipMatrix[12]) >> 12; + cube[i].Position[1] = ((s64)x*ClipMatrix[1] + (s64)y*ClipMatrix[5] + (s64)z*ClipMatrix[9] + (s64)0x1000*ClipMatrix[13]) >> 12; + cube[i].Position[2] = ((s64)x*ClipMatrix[2] + (s64)y*ClipMatrix[6] + (s64)z*ClipMatrix[10] + (s64)0x1000*ClipMatrix[14]) >> 12; + cube[i].Position[3] = ((s64)x*ClipMatrix[3] + (s64)y*ClipMatrix[7] + (s64)z*ClipMatrix[11] + (s64)0x1000*ClipMatrix[15]) >> 12; } // front face (-Z) |