aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-06-29 09:48:41 +0200
committerStapleButter <thetotalworm@gmail.com>2017-06-29 09:48:41 +0200
commitad58a68fc979524d17858428ea8f755df3d212a5 (patch)
tree0ecdcbdddba54a430ed42791d59c4d6f53a739ee /src
parentda10f9b3f6cad55dc5b10041be4e54f7d9b9373e (diff)
3D: fix boxtest coord overflow. fixes #57
Diffstat (limited to 'src')
-rw-r--r--src/GPU3D.cpp20
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)