From 4b706847d4ffbaa72b2d2a39130f71b0d2a401b6 Mon Sep 17 00:00:00 2001 From: iCatButler Date: Tue, 3 May 2016 17:02:53 +0100 Subject: Ensure w is reset to 1.f to prevent stale values. --- libpcsxcore/pgxp_gte.c | 15 ++++++++------- plugins/peopsxgl/gpu.c | 3 ++- plugins/peopsxgl/pgxp_gpu.c | 2 ++ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libpcsxcore/pgxp_gte.c b/libpcsxcore/pgxp_gte.c index 5d681d85..3ee5db22 100644 --- a/libpcsxcore/pgxp_gte.c +++ b/libpcsxcore/pgxp_gte.c @@ -306,17 +306,18 @@ void PGXP_RTPS(u32 _n, u32 _v) float MAC2 = TRY + (R21 * VX(_n)) + (R22 * VY(_n)) + (R23 * VZ(_n)); float MAC3 = TRZ + (R31 * VX(_n)) + (R32 * VY(_n)) + (R33 * VZ(_n)); - float H = psxRegs.CP2C.p[26].sw.l; - float SZ3 = max(MAC3, H); - float h_over_sz3 = H / SZ3; + float H = psxRegs.CP2C.p[26].sw.l; // Near plane + float F = 0xFFFF; // Far plane? + float SZ3 = max(MAC3, H); // Clamp SZ3 to near plane because we have no clipping (no proper Z) + // float h_over_sz3 = H / SZ3; // Offsets with 16-bit shift - float OFX = (float)psxRegs.CP2C.p[ 24 ].sd / (float)(1 << 16); - float OFY = (float)psxRegs.CP2C.p[ 25 ].sd / (float)(1 << 16); + float OFX = (float)psxRegs.CP2C.p[24].sd / (float)(1 << 16); + float OFY = (float)psxRegs.CP2C.p[25].sd / (float)(1 << 16); // PSX Screen space X,Y,W components - float sx = OFX + (MAC1 * h_over_sz3) * (Config.Widescreen ? 0.75 : 1); - float sy = OFY + (MAC2 * h_over_sz3); + float sx = OFX + (MAC1 * (H / SZ3)) * (Config.Widescreen ? 0.75 : 1); + float sy = OFY + (MAC2 * (H / SZ3)); float sw = SZ3; PGXP_pushSXYZ2f(sx , sy , sw, _v); diff --git a/plugins/peopsxgl/gpu.c b/plugins/peopsxgl/gpu.c index 2237351d..60be981b 100755 --- a/plugins/peopsxgl/gpu.c +++ b/plugins/peopsxgl/gpu.c @@ -2995,7 +2995,8 @@ ENDVRAM: for (unsigned int i = 0; i < 4; i++) //iCB: remove stale vertex data { vertex[i].x = vertex[i].y = 0.f; - vertex[i].z = 1.f; + vertex[i].z = 0.95f; + vertex[i].w = 1.f; } primFunc[gpuCommand]((unsigned char *)gpuDataM); diff --git a/plugins/peopsxgl/pgxp_gpu.c b/plugins/peopsxgl/pgxp_gpu.c index 98b7a94d..67b381d8 100644 --- a/plugins/peopsxgl/pgxp_gpu.c +++ b/plugins/peopsxgl/pgxp_gpu.c @@ -115,6 +115,8 @@ void PGXP_glVertexfv(GLfloat* pV) // pass complete vertex to OpenGL glVertex4fv(pV); vertexIdx++; + + pV[3] = 1.f; } else { -- cgit v1.2.3