1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Correct reject box implementation: add special flag for it in gDP.changed flags.

Fixed Rejection process issues #1954
This commit is contained in:
Sergey Lipskiy 2018-12-09 16:48:53 +07:00
parent 29575624b9
commit 0d3c3c151d
3 changed files with 4 additions and 2 deletions

View File

@ -1553,13 +1553,14 @@ bool GraphicsDrawer::isRejected(s32 _v0, s32 _v1, s32 _v2) const
return false;
static gDPScissor rejectBox;
if (gDP.changed & CHANGED_SCISSOR) {
if ((gDP.changed & CHANGED_REJECT_BOX) != 0) {
const f32 scissorWidth2 = (gDP.scissor.lrx - gDP.scissor.ulx) * (gSP.clipRatio - 1) * 0.5f;
const f32 scissorHeight2 = (gDP.scissor.lry - gDP.scissor.uly) * (gSP.clipRatio - 1) * 0.5f;
rejectBox.ulx = gDP.scissor.ulx - scissorWidth2;
rejectBox.lrx = gDP.scissor.lrx + scissorWidth2;
rejectBox.uly = gDP.scissor.uly - scissorHeight2;
rejectBox.lry = gDP.scissor.lry + scissorHeight2;
gDP.changed ^= CHANGED_REJECT_BOX;
}
s32 verts[3] = { _v0, _v1, _v2 };
for (u32 i = 0; i < 3; ++i) {

View File

@ -675,7 +675,7 @@ void gDPSetScissor( u32 mode, f32 ulx, f32 uly, f32 lrx, f32 lry )
gDP.scissor.lrx = lrx;
gDP.scissor.lry = lry;
gDP.changed |= CHANGED_SCISSOR;
gDP.changed |= CHANGED_SCISSOR | CHANGED_REJECT_BOX;
#ifdef DEBUG_DUMP
DebugMsg( DEBUG_NORMAL, "gDPSetScissor( %s, %.2f, %.2f, %.2f, %.2f );\n",

View File

@ -8,6 +8,7 @@
#define CHANGED_SCISSOR 0x004
#define CHANGED_TMEM 0x008
#define CHANGED_TILE 0x010
#define CHANGED_REJECT_BOX 0x020
//#define CHANGED_COMBINE_COLORS 0x020
#define CHANGED_COMBINE 0x040
#define CHANGED_ALPHACOMPARE 0x080