From 269a16687f87b2f6ded1ea24562f497269bce5f7 Mon Sep 17 00:00:00 2001 From: Ryan Holtz Date: Sat, 3 Apr 2010 23:08:53 +0000 Subject: [PATCH] Improved Rectangle drawing in the RDP core. [Harmony] --- src/mame/video/n64.c | 16 ++++++++-------- src/mame/video/rdpfrect.c | 24 ++++++++++++------------ src/mame/video/rdptrect.c | 16 ++++++++-------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/mame/video/n64.c b/src/mame/video/n64.c index 4504b9bf01a..2e00afed71c 100644 --- a/src/mame/video/n64.c +++ b/src/mame/video/n64.c @@ -1758,19 +1758,19 @@ void N64::RDP::Processor::CmdTriangleSTZ(UINT32 w1, UINT32 w2) void N64::RDP::Rectangle::InitFromBuffer(UINT32 *data) { - m_xl = ((data[0] >> 12) & 0xfff) >> 2; - m_yl = ((data[0] >> 0) & 0xfff) >> 2; - m_xh = ((data[1] >> 12) & 0xfff) >> 2; - m_yh = ((data[1] >> 0) & 0xfff) >> 2; + m_xl = (data[0] >> 12) & 0xfff; + m_yl = (data[0] >> 0) & 0xfff; + m_xh = (data[1] >> 12) & 0xfff; + m_yh = (data[1] >> 0) & 0xfff; } void N64::RDP::TexRectangle::InitFromBuffer(UINT32 *data) { m_tilenum = (data[1] >> 24) & 0x7; - m_xl = ((data[0] >> 12) & 0xfff) >> 2; - m_yl = ((data[0] >> 0) & 0xfff) >> 2; - m_xh = ((data[1] >> 12) & 0xfff) >> 2; - m_yh = ((data[1] >> 0) & 0xfff) >> 2; + m_xl = (data[0] >> 12) & 0xfff; + m_yl = (data[0] >> 0) & 0xfff; + m_xh = (data[1] >> 12) & 0xfff; + m_yh = (data[1] >> 0) & 0xfff; m_s = (data[2] >> 16) & 0xffff; m_t = (data[2] >> 0) & 0xffff; m_dsdx = (data[3] >> 16) & 0xffff; diff --git a/src/mame/video/rdpfrect.c b/src/mame/video/rdpfrect.c index 9bdc80f1b05..87afa088057 100644 --- a/src/mame/video/rdpfrect.c +++ b/src/mame/video/rdpfrect.c @@ -49,10 +49,10 @@ void Rectangle::Draw1Cycle() UINT8* hb = &m_rdp->GetHiddenBits()[m_misc_state->m_fb_address >> 1]; int index, i, j; - int x1 = m_xh; - int x2 = m_xl; - int y1 = m_yh; - int y2 = m_yl; + int x1 = m_xh >> 2; + int x2 = m_xl >> 2; + int y1 = m_yh >> 2; + int y2 = m_yl >> 2; UINT16 fill_color1 = (m_rdp->GetFillColor32() >> 16) & 0xffff; UINT16 fill_color2 = (m_rdp->GetFillColor32() >> 0) & 0xffff; int fill_cvg1 = (fill_color1 & 1) ? 8 : 1; @@ -196,10 +196,10 @@ void Rectangle::Draw2Cycle() UINT8* hb = &m_rdp->GetHiddenBits()[m_misc_state->m_fb_address >> 1]; int index, i, j; - int x1 = m_xh; - int x2 = m_xl; - int y1 = m_yh; - int y2 = m_yl; + int x1 = m_xh >> 2; + int x2 = m_xl >> 2; + int y1 = m_yh >> 2; + int y2 = m_yl >> 2; UINT16 fill_color1; UINT16 fill_color2; int fill_cvg1; @@ -410,10 +410,10 @@ void Rectangle::DrawFill() UINT8* hb = &m_rdp->GetHiddenBits()[m_misc_state->m_fb_address >> 1]; int index, i, j; - int x1 = m_xh; - int x2 = m_xl; - int y1 = m_yh; - int y2 = m_yl; + int x1 = m_xh >> 2; + int x2 = m_xl >> 2; + int y1 = m_yh >> 2; + int y2 = m_yl >> 2; UINT16 fill_color1; UINT16 fill_color2; int fill_cvg1; diff --git a/src/mame/video/rdptrect.c b/src/mame/video/rdptrect.c index 1540f0e0ad5..4f13f7c2d42 100644 --- a/src/mame/video/rdptrect.c +++ b/src/mame/video/rdptrect.c @@ -51,10 +51,10 @@ void TexRectangle::DrawDefault() UINT32 tilenum2 = 0; N64::RDP::Tile *tex_tile2 = NULL; - int x1 = m_xh; - int x2 = m_xl; - int y1 = m_yh; - int y2 = m_yl; + int x1 = m_xh >> 2; + int x2 = m_xl >> 2; + int y1 = m_yh >> 2; + int y2 = m_yl >> 2; if (x2 <= x1) { @@ -366,10 +366,10 @@ void TexRectangle::DrawCopy() N64::RDP::Tile *tex_tile = &m_rdp->GetTiles()[m_tilenum]; - int x1 = m_xh; - int x2 = m_xl; - int y1 = m_yh; - int y2 = m_yl; + int x1 = m_xh >> 2; + int x2 = m_xl >> 2; + int y1 = m_yh >> 2; + int y2 = m_yl >> 2; if (x2 <= x1) {