From fa2b0793e065af2b86ddac441e91d004f109716a Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Wed, 22 Aug 2018 21:48:30 +0700 Subject: [PATCH] Store integer scissor coordinates. --- src/RDP.cpp | 10 +++++----- src/gDP.cpp | 14 +++++++++----- src/gDP.h | 3 ++- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/RDP.cpp b/src/RDP.cpp index 56c2be40..6108a92b 100644 --- a/src/RDP.cpp +++ b/src/RDP.cpp @@ -174,11 +174,11 @@ void RDP_SetPrimDepth( u32 w0, u32 w1 ) void RDP_SetScissor( u32 w0, u32 w1 ) { - gDPSetScissor( _SHIFTR( w1, 24, 2 ), // mode - _FIXED2FLOAT( _SHIFTR( w0, 12, 12 ), 2 ), // ulx - _FIXED2FLOAT( _SHIFTR( w0, 0, 12 ), 2 ), // uly - _FIXED2FLOAT( _SHIFTR( w1, 12, 12 ), 2 ), // lrx - _FIXED2FLOAT( _SHIFTR( w1, 0, 12 ), 2 ) ); // lry + gDPSetScissor( _SHIFTR( w1, 24, 2 ), // mode + _SHIFTR( w0, 12, 12 ), // ulx + _SHIFTR( w0, 0, 12 ), // uly + _SHIFTR( w1, 12, 12 ), // lrx + _SHIFTR( w1, 0, 12 ) ); // lry } void RDP_SetConvert( u32 w0, u32 w1 ) diff --git a/src/gDP.cpp b/src/gDP.cpp index a86c99ff..59d578cd 100644 --- a/src/gDP.cpp +++ b/src/gDP.cpp @@ -667,13 +667,17 @@ void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt ) tile, gDP.tiles[tile].uls, gDP.tiles[tile].ult, gDP.tiles[tile].lrs, gDP.tiles[tile].lrt ); } -void gDPSetScissor( u32 mode, f32 ulx, f32 uly, f32 lrx, f32 lry ) +void gDPSetScissor(u32 mode, s16 xh, s16 yh, s16 xl, s16 yl) { gDP.scissor.mode = mode; - gDP.scissor.ulx = ulx; - gDP.scissor.uly = uly; - gDP.scissor.lrx = lrx; - gDP.scissor.lry = lry; + gDP.scissor.xh = xh; + gDP.scissor.yh = yh; + gDP.scissor.xl = xl; + gDP.scissor.yl = yl; + gDP.scissor.ulx = _FIXED2FLOAT(xh, 2); + gDP.scissor.uly = _FIXED2FLOAT(yh, 2); + gDP.scissor.lrx = _FIXED2FLOAT(xl, 2); + gDP.scissor.lry = _FIXED2FLOAT(yl, 2); gDP.changed |= CHANGED_SCISSOR | CHANGED_REJECT_BOX; diff --git a/src/gDP.h b/src/gDP.h index ce63bdd1..7c664915 100644 --- a/src/gDP.h +++ b/src/gDP.h @@ -116,6 +116,7 @@ struct gDPScissor { u32 mode; f32 ulx, uly, lrx, lry; + s16 xh, yh, xl, yl; }; struct gDPInfo @@ -275,7 +276,7 @@ void gDPSetTileSize( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt ); void gDPLoadTile( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt ); void gDPLoadBlock( u32 tile, u32 uls, u32 ult, u32 lrs, u32 dxt ); void gDPLoadTLUT( u32 tile, u32 uls, u32 ult, u32 lrs, u32 lrt ); -void gDPSetScissor( u32 mode, f32 ulx, f32 uly, f32 lrx, f32 lry ); +void gDPSetScissor( u32 mode, s16 xh, s16 yh, s16 xl, s16 yl); void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry ); void gDPSetConvert( s32 k0, s32 k1, s32 k2, s32 k3, s32 k4, s32 k5 ); void gDPSetKeyR( u32 cR, u32 sR, u32 wR );