From 97ea3a603ef4df32945dfd33300cedcb04ffa67a Mon Sep 17 00:00:00 2001 From: ezio1900 Date: Mon, 19 Apr 2021 20:20:37 +0800 Subject: VideoCommon: Fix scissorOffset, handle negative value correctly VideoCommon: Change the type of BPMemory.scissorOffset to 10bit signed: S32X10Y10 VideoBackends: Fix Software Clipper.PerspectiveDivide function, use BPMemory.scissorOffset instead of hard code 342 --- Source/Core/VideoBackends/Software/Rasterizer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Source/Core/VideoBackends/Software/Rasterizer.cpp') diff --git a/Source/Core/VideoBackends/Software/Rasterizer.cpp b/Source/Core/VideoBackends/Software/Rasterizer.cpp index e987817c8c..cf5374342b 100644 --- a/Source/Core/VideoBackends/Software/Rasterizer.cpp +++ b/Source/Core/VideoBackends/Software/Rasterizer.cpp @@ -306,22 +306,22 @@ void DrawTriangleFrontFace(const OutputVertexData* v0, const OutputVertexData* v s32 maxy = (std::max(std::max(Y1, Y2), Y3) + 0xF) >> 4; // scissor - int xoff = bpmem.scissorOffset.x * 2 - 342; - int yoff = bpmem.scissorOffset.y * 2 - 342; + s32 xoff = bpmem.scissorOffset.x * 2; + s32 yoff = bpmem.scissorOffset.y * 2; - s32 scissorLeft = bpmem.scissorTL.x - xoff - 342; + s32 scissorLeft = bpmem.scissorTL.x - xoff; if (scissorLeft < 0) scissorLeft = 0; - s32 scissorTop = bpmem.scissorTL.y - yoff - 342; + s32 scissorTop = bpmem.scissorTL.y - yoff; if (scissorTop < 0) scissorTop = 0; - s32 scissorRight = bpmem.scissorBR.x - xoff - 341; + s32 scissorRight = bpmem.scissorBR.x - xoff + 1; if (scissorRight > s32(EFB_WIDTH)) scissorRight = EFB_WIDTH; - s32 scissorBottom = bpmem.scissorBR.y - yoff - 341; + s32 scissorBottom = bpmem.scissorBR.y - yoff + 1; if (scissorBottom > s32(EFB_HEIGHT)) scissorBottom = EFB_HEIGHT; -- cgit v1.2.3